diff --git a/dist/uku.js b/dist/uku.js index 086010d..c01ce0c 100644 --- a/dist/uku.js +++ b/dist/uku.js @@ -1,2 +1,2 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=9)}([function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var Selector_1=__webpack_require__(2),ComponentConfiguration_1=__webpack_require__(15),ValueAndParent=function(){function e(e,t){this.value=e,this.parent=t}return e}(),UkuleleUtil=function(){function UkuleleUtil(){}return UkuleleUtil.searchHtmlTag=function(e,t){var n="^<"+t+"[\\s\\S]*>[\\s\\S]*$",r=new RegExp(n);return e.search(r)},UkuleleUtil.getInnerHtml=function(e,t){var n="<"+t+"[\\s\\S]*>[\\s\\S]*",r=new RegExp(n),o=e.match(r);if(o.index>-1){var i=o[0],a=i.search(">"),l=i.substr(a+1),u=l.lastIndexOf("\<]/,n=e.search(t);if(-1===n){var r=/\(.*\)$/;return n=e.search(r)}return-1},UkuleleUtil.isRepeat=function(e){return!!e.getAttribute("uku-repeat")},UkuleleUtil.isInRepeat=function(e){for(var t=Selector_1.Selector.parents(e),n=0;n-1&&n.push(e)}),n},UkuleleUtil.getFinalValue=function(objects,attrName){return function(){var tempScope={};objects.forEach(function(e){tempScope[e._alias]=e;var t=e._alias,n=new RegExp("\\b"+t+"\\b","gm");attrName=attrName.replace(n,"tempScope."+t);var r=new RegExp("\\.tempScope\\."+t,"gm");attrName=attrName.replace(r,"."+t)});var result=eval(attrName);return tempScope=null,result}()},UkuleleUtil.setFinalValue=function(object,attrName,value){return function(){var tempScope={};tempScope[object._alias]=object;var valueString;valueString="string"==typeof value?'"'+value+'"':"object"==typeof value?"JSON.parse('"+JSON.stringify(value)+"')":value;var evalString="tempScope."+attrName+"="+valueString;eval(evalString)}()},UkuleleUtil}();exports.UkuleleUtil=UkuleleUtil},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(3),i=n(0),a=function(e){function t(t,n,r,o){var i=e.call(this,t,r,o)||this;return i.ukuTag=n,i}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=i.UkuleleUtil.getFinalValue(e,t);this.element.setAttribute(this.ukuTag,n)},t}(o.BoundItemBase);t.BoundItemAttribute=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.querySelectorAll=function(e,t){return window.hasOwnProperty("jQuery")&&void 0!==window.jQuery?window.jQuery(e).find(t):e.querySelectorAll(t)},e.fuzzyFind=function(e,t){if(e&&e.attributes)for(var n=0;n-1)return e}return null},e.directText=function(e,t){for(var n="",r=e.childNodes,o=0;o<=r.length-1;o++){var i=r[o];if(3===i.nodeType){if(t||""===t||0===t||!1===t)return void(i.nodeValue=t);n+=i.nodeValue}}return n.trim()},e.parents=function(e){for(var t=[];e.parentNode&&"BODY"!==e.parentNode.tagName;)t.push(e.parentNode),e=e.parentNode;return t},e}();t.Selector=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t,n){this.attributeName=e,this.element=t,this.uku=n}return e.prototype.render=function(e){},e}();t.BoundItemBase=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){this.eventType=e,this.element=t}return e}();t.Event=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){this.eventsPool={}}return e.prototype.getEventsPool=function(){return this.eventsPool},e.prototype.addListener=function(e,t){this.eventsPool[e]||(this.eventsPool[e]=[]),this.eventsPool[e].push(t)},e.prototype.removeListener=function(e,t){if(this.eventsPool[e])for(var n=this.eventsPool[e].length-1;n>=0;n--)if(this.eventsPool[e][n]===t){this.eventsPool[e].splice(n,1);break}},e.prototype.hasListener=function(e){return!!(this.eventsPool[e]&&this.eventsPool[e].length>0)},e.prototype.dispatchEvent=function(e){if(e&&e.eventType){var t=this.eventsPool[e.eventType];if(t)for(var n=0;n0&&a[a.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!a||n[1]>a[0]&&n[1]0)?(i=void 0,"function"==typeof window.define&&window.define.amd&&(i=window.define,window.define=void 0),t.componentControllerScript?[3,2]:(a=r[r.length-1],l=t,[4,this.ajax.get(a)])):[3,7];case 1:l.componentControllerScript=c.sent(),r.pop(),c.label=2;case 2:u=0,c.label=3;case 3:return u-1)return;if(s){f.hasOwnProperty("ukuTag")&&"selected"===f.ukuTag&&(d=d.split("|")[0]);var h=r.UkuleleUtil.getFinalValue([u],d),_=r.UkuleleUtil.getFinalValue([s],d);if(!o.ObjectUtil.compare(_,h)){d=f.attributeName;for(var m=n.getBoundItemsByName(d),v=0;v0&&l.uku.hasListener(i.UkuEventType.REFRESH)&&l.uku.dispatchEvent(new a.Event(i.UkuEventType.REFRESH)),l.defMgr.copyControllerInstance(u,e)}var l=this;if(e){if("string"==typeof e)n(e);else if(o.ObjectUtil.isArray(e))for(var u=0;u0&&a[a.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!a||n[1]>a[0]&&n[1]0){var i=BoundItemAttributeFactory_1.BoundItemAttributeFactory.getInstance().generateInstance(r,t,e,this.uku),a=[];o.forEach(function(r){r.addBoundItem(i),ElementActionBinder_1.elementChangedBinder(e,t,r,n.uku.refresh,n.uku),a.push(r.controllerInstance)}),i.render(a)}},t.uku=e,t.defMgr=t.uku._internal_getDefinitionManager(),t}return __extends(Analyzer,_super),Analyzer.prototype.analyizeElement=function(e){var t=this;this.searchComponent(e).then(function(e){t.searchExpression(e),t.searchUkuAttribute(e),t.defMgr.copyAllController(),t.hasListener(Analyzer.ANALYIZE_COMPLETED)&&t.dispatchEvent(new Event_1.Event(Analyzer.ANALYIZE_COMPLETED,e))})},Analyzer.prototype.sortAttributes=function(e){for(var t=[],n=0;n-1){var f=p.nodeName.split("-");f.shift();var d=f.join("-");"application"!==d&&(0===d.search("on")?UkuleleUtil_1.UkuleleUtil.isRepeat(u)||UkuleleUtil_1.UkuleleUtil.isInRepeat(u)||this.dealWithEvent(u,d):-1!==d.search("repeat")?this.dealWithRepeat(u):UkuleleUtil_1.UkuleleUtil.isRepeat(u)||UkuleleUtil_1.UkuleleUtil.isInRepeat(u)||("text"!==d?this.dealWithAttribute(u,d):this.dealWithInnerText(u)))}}},Analyzer.prototype.searchComponent=function(e){return __awaiter(this,void 0,void 0,function(){var t,n,r,n,r,o,i;return __generator(this,function(a){switch(a.label){case 0:return(t=this.defMgr.getComponent(e.localName))?t.lazy?[3,1]:(n=e.attributes,r=this.defMgr.getComponentsDefinition()[t.tagName],UkuleleUtil_1.UkuleleUtil.isRepeat(e)||UkuleleUtil_1.UkuleleUtil.isInRepeat(e)?[2,e]:[2,this.dealWithComponent(e,r.template,r.controllerClazz,n)]):[3,4];case 1:return[4,this.defMgr.addLazyComponentDefinition(t.tagName,t.templateUrl)];case 2:return a.sent(),n=e.attributes,r=this.defMgr.getComponentsDefinition()[t.tagName],UkuleleUtil_1.UkuleleUtil.isRepeat(e)||UkuleleUtil_1.UkuleleUtil.isInRepeat(e)?[2,e]:[2,this.dealWithComponent(e,r.template,r.controllerClazz,n)];case 3:return[3,10];case 4:if(!(e.children&&e.children.length>0))return[3,9];o=0,a.label=5;case 5:return o1&&(t=i.outerHTML),e.insertAdjacentHTML("beforeBegin",t),a=e.previousElementSibling,a.classList.add(e.localName),n)for(l=new n(this.uku),l._dom=a,l.fire=function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!0);var o=new CustomEvent(e.toLowerCase(),{bubbles:n,cancelable:r});o.data=t,l._dom.dispatchEvent(o)},this.uku.registerController(o,l),u=function(e){var t=r[e];if(0!==UkuleleUtil_1.UkuleleUtil.searchUkuAttrTag(t.nodeName)||-1!==t.nodeName.search("uku-on")||"uku-render"===t.nodeName||"uku-visible"===t.nodeName)a.setAttribute(t.nodeName,t.nodeValue);else{var n=UkuleleUtil_1.UkuleleUtil.getAttrFromUkuTag(t.nodeName,!0),o=s.defMgr.getControllerModelByName(t.nodeValue);if(o&&o.length>0){var i=new BoundItemComponentAttribute_1.BoundItemComponentAttribute(t.nodeValue,n,l,s.uku),u=[];o.forEach(function(e){e.addBoundItem(i),u.push(e.controllerInstance)}),i.render(u)}}},s=this,c=0;c0))return[3,5];f=0,h.label=1;case 1:return f0){var o=new BoundItemExpression_1.BoundItemExpression(n,t,e,this.uku),i=[];r.forEach(function(e){e.addBoundItem(o),i.push(e.controllerInstance)}),o.render(i)}}},Analyzer.prototype.dealWithInnerText=function(e){var t=e.getAttribute("uku-text");if(t){var n=this.defMgr.getControllerModelByName(t);if(n&&n.length>0){var r=new BoundItemInnerText_1.BoundItemInnerText(t,e,this.uku),o=[];n.forEach(function(e){e.addBoundItem(r),o.push(e.controllerInstance)}),r.render(o)}}},Analyzer.prototype.dealWithEvent=function(element,eventName){var _this=this,expression=element.getAttribute("uku-"+eventName),eventNameInListener=eventName.substring(2);eventNameInListener=eventNameInListener.toLowerCase();var controllerModels=this.defMgr.getControllerModelByName(expression);controllerModels&&0!==controllerModels.length||(controllerModels=[]),EventListener_1.EventListener.addEventListener(element,eventNameInListener,function(event){var alias_list=[];controllerModels.forEach(function(e){_this.defMgr.copyControllerInstance(e.controllerInstance,controllerModels.alias),alias_list.push(e.alias)});var index=UkuleleUtil_1.UkuleleUtil.searchUkuFuncArg(expression);if(-1===index){var handler=new Function("event","return "+expression);console.log(handler.toString()),handler(event)}else{var i=expression.search(/\(/),arg="event";")"!==expression[i+1]&&(arg="event,");var arr=expression.split("(");arr[1]=arg+arr[1];var new_expression_1=arr.join("(");!function(e){var tempScope={};tempScope.event=e,eval(new_expression_1),tempScope=null}(event)}_this.uku.refresh(alias_list,element)})},Analyzer.prototype.dealWithRepeat=function(e){var t=e.getAttribute("uku-repeat"),n=t.split(" in "),r=n[0],o=n[1],i=this.defMgr.getControllerModelByName(o);if(i&&i.length>0){var a=[],l=new BoundItemRepeat_1.BoundItemRepeat(o,r,e,this.uku);i.forEach(function(e){e.addBoundItem(l),a.push(e.controllerInstance)}),l.render(a)}},Analyzer.ANALYIZE_COMPLETED="analyizeCompleted",Analyzer}(EventEmitter_1.EventEmitter);exports.Analyzer=Analyzer},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(19),o=n(20),i=n(21),a=n(22),l=n(23),u=n(24),s=n(25),c=n(26),p=n(1),f=function(){function e(){if(e._instance)throw new Error("Error: Instantiation failed: Use BoundItemAttributeFactory.getInstance() instead of new.");e._instance=this}return e.getInstance=function(){return e._instance},e.prototype.generateInstance=function(e,t,n,f){var d;switch(t){case"selected":d=new r.BountItemAttrSelected(e,t,n,f);break;case"data-item":d=new o.BoundItemAttrDataItem(e,t,n,f);break;case"src":d=new i.BoundItemAttrSrc(e,t,n,f);break;case"disabled":d=new a.BoundItemAttrDisabled(e,t,n,f);break;case"render":d=new l.BoundItemAttrRender(e,t,n,f);break;case"style":d=new u.BoundItemAttrStyle(e,t,n,f);break;case"value":d=new s.BoundItemAttrValue(e,t,n,f);break;case"visible":d=new c.BoundItemAttrVisible(e,t,n,f);break;default:d=new p.BoundItemAttribute(e,t,n,f)}return d},e._instance=new e,e}();t.BoundItemAttributeFactory=f},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("selected"!==n)throw new TypeError("it doesn't use uku-selected");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t,n=this.attributeName,r=this.element.tagName;if("SELECT"===r){var o=this.attributeName.split("|");n=o[0],t=o[1];var a=i.UkuleleUtil.getFinalValue(e,n),l=void 0;l=t?a[t]:a,this.element.value=l}if("INPUT"===r&&"radio"===this.element.getAttribute("type")){var a=i.UkuleleUtil.getFinalValue(e,n);this.element.value===a&&this.element.setAttribute("checked","true")}},t}(o.BoundItemAttribute);t.BountItemAttrSelected=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("data-item"!==n)throw new TypeError("it doesn't use uku-item");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=this.element.tagName,r=i.UkuleleUtil.getFinalValue(e,t);"OPTION"===n&&(r=JSON.stringify(r),this.element.setAttribute("data-item",r))},t}(o.BoundItemAttribute);t.BoundItemAttrDataItem=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("src"!==n)throw new TypeError("it doesn't use uku-src");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=this.element.tagName,r=i.UkuleleUtil.getFinalValue(e,t);if("IMG"!==n)throw new Error("uku-src doesn't work with current dom");r&&this.element.setAttribute(this.ukuTag,r)},t}(o.BoundItemAttribute);t.BoundItemAttrSrc=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("disabled"!==n)throw new TypeError("it doesn't use uku-disabled");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=(this.element.tagName,i.UkuleleUtil.getFinalValue(e,t));this.element.disabled=n},t}(o.BoundItemAttribute);t.BoundItemAttrDisabled=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("render"!==n)throw new TypeError("it doesn't use uku-render");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName;this.element.tagName;if(i.UkuleleUtil.getFinalValue(e,t)){var n=this.element.getAttribute("data-old-display");null!==n&&(this.element.style.display=n)}else{var n=this.element.getAttribute("data-old-display");null===n&&(n=this.element.style.display,this.element.setAttribute("data-old-display",n)),this.element.style.display="none"}},t}(o.BoundItemAttribute);t.BoundItemAttrRender=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("style"!==n)throw new TypeError("it doesn't use uku-style");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=(this.element.tagName,i.UkuleleUtil.getFinalValue(e,t));for(var r in n)this.element.style[r]=n[r]},t}(o.BoundItemAttribute);t.BoundItemAttrStyle=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("value"!==n)throw new TypeError("it doesn't use uku-value");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=this.element.tagName,r=i.UkuleleUtil.getFinalValue(e,t);"INPUT"===n&&"checkbox"===this.element.getAttribute("type")?this.element.checked=r:this.element.value=r},t}(o.BoundItemAttribute);t.BoundItemAttrValue=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("visible"!==n)throw new TypeError("it doesn't use uku-visible");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=(this.element.tagName,i.UkuleleUtil.getFinalValue(e,t));this.element.style.visibility=n?"visible":"hidden"},t}(o.BoundItemAttribute);t.BoundItemAttrVisible=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(3),i=n(0),a=n(2),l=function(e){function t(t,n,r,o){var i=e.call(this,t,r,o)||this;return i.expression=n,i}return r(t,e),t.prototype.render=function(e){var t=i.UkuleleUtil.getFinalValue(e,this.attributeName);a.Selector.directText(this.element,t)},t}(o.BoundItemBase);t.BoundItemExpression=l},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(3),i=n(0),a=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.tagName="text",o}return r(t,e),t.prototype.render=function(e){var t=i.UkuleleUtil.getFinalValue(e,this.attributeName);this.element.innerHTML=t},t}(o.BoundItemBase);t.BoundItemInnerText=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(3),i=n(0),a=function(e){function t(t,n,r,o){var i=e.call(this,t,r,o)||this;return i.expression=n,i.renderTemplate=r.outerHTML,i.parentElement=r.parentNode,i.beginCommentString=void 0,i.endCommentString=void 0,i}return r(t,e),t.prototype.render=function(e){function t(){return-1===i.UkuleleUtil.searchHtmlTag(o.renderTemplate,"tr")?document.createElement("div"):document.createElement("tbody")}var n=this,r=i.UkuleleUtil.getFinalValue(e,this.attributeName);if(r){var o=this;if(this.element&&this.element.parentNode){this.beginCommentString="begin uku-repeat: "+this.expression+" in "+this.attributeName;var a=document.createComment(this.beginCommentString);this.element.parentNode.insertBefore(a,this.element),this.endCommentString="end uku-repeat: "+this.expression+" in "+this.attributeName;var l=document.createComment(this.endCommentString);this.element.parentNode.insertBefore(l,this.element.nextSibling),this.element.parentNode.removeChild(this.element)}var u={acceptNode:function(e){return e.nodeValue===o.beginCommentString?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}},s=u.acceptNode;s.acceptNode=u.acceptNode;for(var c=document.createTreeWalker(this.parentElement,NodeFilter.SHOW_COMMENT,s,!1);c.nextNode();){var p=c.currentNode;if(p&&p.nodeValue===this.beginCommentString){for(;p.nextSibling&&p.nextSibling.nodeValue!==this.endCommentString;)p.parentNode.removeChild(p.nextSibling);var f=t(),d=t();p.parentNode.insertBefore(d,p.nextSibling);for(var h=0;h[\\s\\S]*$",r=new RegExp(n);return e.search(r)},UkuleleUtil.getInnerHtml=function(e,t){var n="<"+t+"[\\s\\S]*>[\\s\\S]*",r=new RegExp(n),o=e.match(r);if(o.index>-1){var i=o[0],a=i.search(">"),l=i.substr(a+1),u=l.lastIndexOf("\<]/,n=e.search(t);if(-1===n){var r=/\(.*\)$/;return n=e.search(r)}return-1},UkuleleUtil.isRepeat=function(e){return!!e.getAttribute("uku-repeat")},UkuleleUtil.isInRepeat=function(e){for(var t=Selector_1.Selector.parents(e),n=0;n-1&&n.push(e)}),n},UkuleleUtil.getFinalValue=function(objects,attrName){return function(){var tempScope={};objects.forEach(function(e){tempScope[e._alias]=e;var t=e._alias,n=new RegExp("\\b"+t+"\\b","gm");attrName=attrName.replace(n,"tempScope."+t);var r=new RegExp("\\.tempScope\\."+t,"gm");attrName=attrName.replace(r,"."+t)});var result=eval(attrName);return tempScope=null,result}()},UkuleleUtil.setFinalValue=function(object,attrName,value){return function(){var tempScope={};tempScope[object._alias]=object;var valueString;valueString="string"==typeof value?'"'+value+'"':"object"==typeof value?"JSON.parse('"+JSON.stringify(value)+"')":value;var evalString="tempScope."+attrName+"="+valueString;eval(evalString)}()},UkuleleUtil}();exports.UkuleleUtil=UkuleleUtil},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(3),i=n(0),a=function(e){function t(t,n,r,o){var i=e.call(this,t,r,o)||this;return i.ukuTag=n,i}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=i.UkuleleUtil.getFinalValue(e,t);this.element.setAttribute(this.ukuTag,n)},t}(o.BoundItemBase);t.BoundItemAttribute=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){}return e.querySelectorAll=function(e,t){return window.hasOwnProperty("jQuery")&&void 0!==window.jQuery?window.jQuery(e).find(t):e.querySelectorAll(t)},e.fuzzyFind=function(e,t){if(e&&e.attributes)for(var n=0;n-1)return e}return null},e.directText=function(e,t){for(var n="",r=e.childNodes,o=0;o<=r.length-1;o++){var i=r[o];if(3===i.nodeType){if(t||""===t||0===t||!1===t)return void(i.nodeValue=t);n+=i.nodeValue}}return n.trim()},e.parents=function(e){for(var t=[];e.parentNode&&"BODY"!==e.parentNode.tagName;)t.push(e.parentNode),e=e.parentNode;return t},e}();t.Selector=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t,n){this.attributeName=e,this.element=t,this.uku=n}return e.prototype.render=function(e){},e}();t.BoundItemBase=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e,t){this.eventType=e,this.element=t}return e}();t.Event=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(){this.eventsPool={}}return e.prototype.getEventsPool=function(){return this.eventsPool},e.prototype.addListener=function(e,t){this.eventsPool[e]||(this.eventsPool[e]=[]),this.eventsPool[e].push(t)},e.prototype.removeListener=function(e,t){if(this.eventsPool[e])for(var n=this.eventsPool[e].length-1;n>=0;n--)if(this.eventsPool[e][n]===t){this.eventsPool[e].splice(n,1);break}},e.prototype.hasListener=function(e){return!!(this.eventsPool[e]&&this.eventsPool[e].length>0)},e.prototype.dispatchEvent=function(e){if(e&&e.eventType){var t=this.eventsPool[e.eventType];if(t)for(var n=0;n0&&a[a.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!a||n[1]>a[0]&&n[1]0)?(i=void 0,"function"==typeof window.define&&window.define.amd&&(i=window.define,window.define=void 0),t.componentControllerScript?[3,2]:(a=r[r.length-1],l=t,[4,this.ajax.get(a)])):[3,7];case 1:l.componentControllerScript=c.sent(),r.pop(),c.label=2;case 2:u=0,c.label=3;case 3:return u-1)return;if(s){f.hasOwnProperty("ukuTag")&&"selected"===f.ukuTag&&(d=d.split("|")[0]);var h=r.UkuleleUtil.getFinalValue([u],d),_=r.UkuleleUtil.getFinalValue([s],d);if(!o.ObjectUtil.compare(_,h)){d=f.attributeName;for(var m=n.getBoundItemsByName(d),v=0;v0&&l.uku.hasListener(i.UkuEventType.REFRESH)&&l.uku.dispatchEvent(new a.Event(i.UkuEventType.REFRESH)),l.defMgr.copyControllerInstance(u,e)}var l=this;if(e){if("string"==typeof e)n(e);else if(o.ObjectUtil.isArray(e))for(var u=0;u0&&a[a.length-1])&&(6===n[0]||2===n[0])){u=0;continue}if(3===n[0]&&(!a||n[1]>a[0]&&n[1]0){var i=BoundItemAttributeFactory_1.BoundItemAttributeFactory.getInstance().generateInstance(r,t,e,this.uku),a=[];o.forEach(function(r){r.addBoundItem(i),ElementActionBinder_1.elementChangedBinder(e,t,r,n.uku.refresh,n.uku),a.push(r.controllerInstance)}),i.render(a)}},t.uku=e,t.defMgr=t.uku._internal_getDefinitionManager(),t}return __extends(Analyzer,_super),Analyzer.prototype.analyizeElement=function(e){var t=this;this.searchComponent(e).then(function(e){t.searchExpression(e),t.searchUkuAttribute(e),t.defMgr.copyAllController(),t.hasListener(Analyzer.ANALYIZE_COMPLETED)&&t.dispatchEvent(new Event_1.Event(Analyzer.ANALYIZE_COMPLETED,e))})},Analyzer.prototype.sortAttributes=function(e){for(var t=[],n=0;n-1){var f=p.nodeName.split("-");f.shift();var d=f.join("-");"application"!==d&&(0===d.search("on")?UkuleleUtil_1.UkuleleUtil.isRepeat(u)||UkuleleUtil_1.UkuleleUtil.isInRepeat(u)||this.dealWithEvent(u,d):-1!==d.search("repeat")?this.dealWithRepeat(u):UkuleleUtil_1.UkuleleUtil.isRepeat(u)||UkuleleUtil_1.UkuleleUtil.isInRepeat(u)||("text"!==d?this.dealWithAttribute(u,d):this.dealWithInnerText(u)))}}},Analyzer.prototype.searchComponent=function(e){return __awaiter(this,void 0,void 0,function(){var t,n,r,n,r,o,i;return __generator(this,function(a){switch(a.label){case 0:return(t=this.defMgr.getComponent(e.localName))?t.lazy?[3,1]:(n=e.attributes,r=this.defMgr.getComponentsDefinition()[t.tagName],UkuleleUtil_1.UkuleleUtil.isRepeat(e)||UkuleleUtil_1.UkuleleUtil.isInRepeat(e)?[2,e]:[2,this.dealWithComponent(e,r.template,r.controllerClazz,n)]):[3,4];case 1:return[4,this.defMgr.addLazyComponentDefinition(t.tagName,t.templateUrl)];case 2:return a.sent(),n=e.attributes,r=this.defMgr.getComponentsDefinition()[t.tagName],UkuleleUtil_1.UkuleleUtil.isRepeat(e)||UkuleleUtil_1.UkuleleUtil.isInRepeat(e)?[2,e]:[2,this.dealWithComponent(e,r.template,r.controllerClazz,n)];case 3:return[3,10];case 4:if(!(e.children&&e.children.length>0))return[3,9];o=0,a.label=5;case 5:return o1&&(t=i.outerHTML),e.insertAdjacentHTML("beforeBegin",t),a=e.previousElementSibling,a.classList.add(e.localName),n)for(l=new n(this.uku),l._dom=a,l.fire=function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!0);var o=new CustomEvent(e.toLowerCase(),{bubbles:n,cancelable:r});o.data=t,l._dom.dispatchEvent(o)},this.uku.registerController(o,l),u=function(e){var t=r[e];if(0!==UkuleleUtil_1.UkuleleUtil.searchUkuAttrTag(t.nodeName)||-1!==t.nodeName.search("uku-on")||"uku-render"===t.nodeName||"uku-visible"===t.nodeName)a.setAttribute(t.nodeName,t.nodeValue);else{var n=UkuleleUtil_1.UkuleleUtil.getAttrFromUkuTag(t.nodeName,!0),o=s.defMgr.getControllerModelByName(t.nodeValue);if(o&&o.length>0){var i=new BoundItemComponentAttribute_1.BoundItemComponentAttribute(t.nodeValue,n,l,s.uku),u=[];o.forEach(function(e){e.addBoundItem(i),u.push(e.controllerInstance)}),i.render(u)}}},s=this,c=0;c0))return[3,5];f=0,h.label=1;case 1:return f0){var o=new BoundItemExpression_1.BoundItemExpression(n,t,e,this.uku),i=[];r.forEach(function(e){e.addBoundItem(o),i.push(e.controllerInstance)}),o.render(i)}}},Analyzer.prototype.dealWithInnerText=function(e){var t=e.getAttribute("uku-text");if(t){var n=this.defMgr.getControllerModelByName(t);if(n&&n.length>0){var r=new BoundItemInnerText_1.BoundItemInnerText(t,e,this.uku),o=[];n.forEach(function(e){e.addBoundItem(r),o.push(e.controllerInstance)}),r.render(o)}}},Analyzer.prototype.dealWithEvent=function(element,eventName){var _this=this,expression=element.getAttribute("uku-"+eventName),eventNameInListener=eventName.substring(2);eventNameInListener=eventNameInListener.toLowerCase();var controllerModels=this.defMgr.getControllerModelByName(expression);controllerModels&&0!==controllerModels.length||(controllerModels=[]),EventListener_1.EventListener.addEventListener(element,eventNameInListener,function(event){var alias_list=[];controllerModels.forEach(function(e){_this.defMgr.copyControllerInstance(e.controllerInstance,controllerModels.alias),alias_list.push(e.alias)});var index=UkuleleUtil_1.UkuleleUtil.searchUkuFuncArg(expression);if(-1===index){var handler=new Function("event","return "+expression);console.log(handler.toString()),handler(event)}else{var i=expression.search(/\(/),arg="event";")"!==expression[i+1]&&(arg="event,");var arr=expression.split("(");arr[1]=arg+arr[1];var new_expression_1=arr.join("(");!function(e){var tempScope={};tempScope.event=e,eval(new_expression_1),tempScope=null}(event)}_this.uku.refresh(alias_list,element)})},Analyzer.prototype.dealWithRepeat=function(e){var t=e.getAttribute("uku-repeat"),n=t.split(" in "),r=n[0],o=n[1],i=this.defMgr.getControllerModelByName(o);if(i&&i.length>0){var a=[],l=new BoundItemRepeat_1.BoundItemRepeat(o,r,e,this.uku);i.forEach(function(e){e.addBoundItem(l),a.push(e.controllerInstance)}),l.render(a)}},Analyzer.ANALYIZE_COMPLETED="analyizeCompleted",Analyzer}(EventEmitter_1.EventEmitter);exports.Analyzer=Analyzer},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(19),o=n(20),i=n(21),a=n(22),l=n(23),u=n(24),s=n(25),c=n(26),p=n(1),f=function(){function e(){if(e._instance)throw new Error("Error: Instantiation failed: Use BoundItemAttributeFactory.getInstance() instead of new.");e._instance=this}return e.getInstance=function(){return e._instance},e.prototype.generateInstance=function(e,t,n,f){var d;switch(t){case"selected":d=new r.BountItemAttrSelected(e,t,n,f);break;case"data-item":d=new o.BoundItemAttrDataItem(e,t,n,f);break;case"src":d=new i.BoundItemAttrSrc(e,t,n,f);break;case"disabled":d=new a.BoundItemAttrDisabled(e,t,n,f);break;case"render":d=new l.BoundItemAttrRender(e,t,n,f);break;case"style":d=new u.BoundItemAttrStyle(e,t,n,f);break;case"value":d=new s.BoundItemAttrValue(e,t,n,f);break;case"visible":d=new c.BoundItemAttrVisible(e,t,n,f);break;default:d=new p.BoundItemAttribute(e,t,n,f)}return d},e._instance=new e,e}();t.BoundItemAttributeFactory=f},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("selected"!==n)throw new TypeError("it doesn't use uku-selected");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t,n=this.attributeName,r=this.element.tagName;if("SELECT"===r){var o=this.attributeName.split("|");n=o[0],t=o[1];var a=i.UkuleleUtil.getFinalValue(e,n),l=void 0;l=t?a[t]:a,this.element.value=l}if("INPUT"===r&&"radio"===this.element.getAttribute("type")){var a=i.UkuleleUtil.getFinalValue(e,n);this.element.value===a&&this.element.setAttribute("checked","true")}},t}(o.BoundItemAttribute);t.BountItemAttrSelected=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("data-item"!==n)throw new TypeError("it doesn't use uku-item");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=this.element.tagName,r=i.UkuleleUtil.getFinalValue(e,t);"OPTION"===n&&(r=JSON.stringify(r),this.element.setAttribute("data-item",r))},t}(o.BoundItemAttribute);t.BoundItemAttrDataItem=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("src"!==n)throw new TypeError("it doesn't use uku-src");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=this.element.tagName,r=i.UkuleleUtil.getFinalValue(e,t);if("IMG"!==n)throw new Error("uku-src doesn't work with current dom");r&&this.element.setAttribute(this.ukuTag,r)},t}(o.BoundItemAttribute);t.BoundItemAttrSrc=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("disabled"!==n)throw new TypeError("it doesn't use uku-disabled");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=(this.element.tagName,i.UkuleleUtil.getFinalValue(e,t));this.element.disabled=n},t}(o.BoundItemAttribute);t.BoundItemAttrDisabled=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("render"!==n)throw new TypeError("it doesn't use uku-render");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName;this.element.tagName;if(i.UkuleleUtil.getFinalValue(e,t)){var n=this.element.getAttribute("data-old-display");null!==n&&(this.element.style.display=n)}else{var n=this.element.getAttribute("data-old-display");null===n&&(n=this.element.style.display,this.element.setAttribute("data-old-display",n)),this.element.style.display="none"}},t}(o.BoundItemAttribute);t.BoundItemAttrRender=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("style"!==n)throw new TypeError("it doesn't use uku-style");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=(this.element.tagName,i.UkuleleUtil.getFinalValue(e,t));for(var r in n)this.element.style[r]=n[r]},t}(o.BoundItemAttribute);t.BoundItemAttrStyle=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("value"!==n)throw new TypeError("it doesn't use uku-value");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=this.element.tagName,r=i.UkuleleUtil.getFinalValue(e,t);"INPUT"===n&&"checkbox"===this.element.getAttribute("type")?this.element.checked=r:this.element.value=r},t}(o.BoundItemAttribute);t.BoundItemAttrValue=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(0),a=function(e){function t(t,n,r,o){if("visible"!==n)throw new TypeError("it doesn't use uku-visible");return e.call(this,t,n,r,o)||this}return r(t,e),t.prototype.render=function(e){var t=this.attributeName,n=(this.element.tagName,i.UkuleleUtil.getFinalValue(e,t));this.element.style.visibility=n?"visible":"hidden"},t}(o.BoundItemAttribute);t.BoundItemAttrVisible=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(3),i=n(0),a=n(2),l=function(e){function t(t,n,r,o){var i=e.call(this,t,r,o)||this;return i.expression=n,i}return r(t,e),t.prototype.render=function(e){var t=i.UkuleleUtil.getFinalValue(e,this.attributeName);a.Selector.directText(this.element,t)},t}(o.BoundItemBase);t.BoundItemExpression=l},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(3),i=n(0),a=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.tagName="text",o}return r(t,e),t.prototype.render=function(e){var t=i.UkuleleUtil.getFinalValue(e,this.attributeName);this.element.innerHTML=t},t}(o.BoundItemBase);t.BoundItemInnerText=a},function(e,t,n){"use strict";var r=this&&this.__extends||function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();Object.defineProperty(t,"__esModule",{value:!0});var o=n(3),i=n(0),a=function(e){function t(t,n,r,o){var i=e.call(this,t,r,o)||this;return i.expression=n,i.renderTemplate=r.outerHTML,i.parentElement=r.parentNode,i.beginCommentString=void 0,i.endCommentString=void 0,i}return r(t,e),t.prototype.render=function(e){function t(){return-1===i.UkuleleUtil.searchHtmlTag(o.renderTemplate,"tr")?document.createElement("div"):document.createElement("tbody")}var n=this,r=i.UkuleleUtil.getFinalValue(e,this.attributeName);if(r){var o=this;if(this.element&&this.element.parentNode){this.beginCommentString="begin uku-repeat: "+this.expression+" in "+this.attributeName;var a=document.createComment(this.beginCommentString);this.element.parentNode.insertBefore(a,this.element),this.endCommentString="end uku-repeat: "+this.expression+" in "+this.attributeName;var l=document.createComment(this.endCommentString);this.element.parentNode.insertBefore(l,this.element.nextSibling),this.element.parentNode.removeChild(this.element)}var u={acceptNode:function(e){return e.nodeValue===o.beginCommentString?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}},s=u.acceptNode;s.acceptNode=u.acceptNode;for(var c=document.createTreeWalker(this.parentElement,NodeFilter.SHOW_COMMENT,s,!1);c.nextNode();){var p=c.currentNode;if(p&&p.nodeValue===this.beginCommentString){for(;p.nextSibling&&p.nextSibling.nodeValue!==this.endCommentString;)p.parentNode.removeChild(p.nextSibling);var f=t(),d=t();p.parentNode.insertBefore(d,p.nextSibling);for(var h=0;h = expression.split(\".\");\r\n let isParent:string = temp.shift();\r\n if (isParent === \"parent\") {\r\n return UkuleleUtil.getFinalAttribute(temp.join(\".\"));\r\n }\r\n return temp.join(\".\");\r\n } */\r\n UkuleleUtil.searchHtmlTag = function (htmlString, tagName) {\r\n var reTemp = \"^<\" + tagName + \"[\\\\s\\\\S]*>\" + \"[\\\\s\\\\S]*$\";\r\n var re = new RegExp(reTemp);\r\n var index = htmlString.search(re);\r\n return index;\r\n };\r\n UkuleleUtil.getInnerHtml = function (htmlString, tagName) {\r\n var reTemp = \"<\" + tagName + \"[\\\\s\\\\S]*>\" + \"[\\\\s\\\\S]*\";\r\n var re = new RegExp(reTemp);\r\n var match = htmlString.match(re);\r\n if (match.index > -1) {\r\n var matchString = match[0];\r\n var index = matchString.search(\">\");\r\n var tempString = matchString.substr(index + 1);\r\n var index2 = tempString.lastIndexOf(\"\\<]/;\r\n var index = htmlString.search(re1);\r\n if (index === -1) {\r\n var re2 = /\\(.*\\)$/;\r\n index = htmlString.search(re2);\r\n return index;\r\n }\r\n else {\r\n return -1;\r\n }\r\n };\r\n UkuleleUtil.isRepeat = function (element) {\r\n if (element.getAttribute(\"uku-repeat\")) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n UkuleleUtil.isInRepeat = function (element) {\r\n var parents = Selector_1.Selector.parents(element);\r\n for (var i = 0; i < parents.length; i++) {\r\n var parent_1 = parents[i];\r\n if (parent_1.nodeType !== 9) {\r\n var b = parent_1.getAttribute(\"uku-repeat\");\r\n if (b) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n UkuleleUtil.getBoundModelInstantName = function (expression) {\r\n var controlInstName = expression.split('.')[0];\r\n if (controlInstName) {\r\n return controlInstName;\r\n }\r\n return undefined;\r\n };\r\n UkuleleUtil.getBoundModelInstantNames = function (controller_alias_list, expression) {\r\n var arr = [];\r\n controller_alias_list.forEach(function (alias) {\r\n var pattern = new RegExp(\"\\\\b\" + alias, \"gm\");\r\n if (expression.search(pattern) > -1) {\r\n arr.push(alias);\r\n }\r\n });\r\n return arr;\r\n };\r\n UkuleleUtil.getFinalValue = function (objects, attrName) {\r\n return (function () {\r\n var tempScope = {};\r\n objects.forEach(function (object) {\r\n tempScope[object['_alias']] = object;\r\n var alias = object['_alias'];\r\n var pattern = new RegExp(\"\\\\b\" + alias + \"\\\\b\", \"gm\");\r\n attrName = attrName.replace(pattern, \"tempScope.\" + alias);\r\n var pattern2 = new RegExp(\"\\\\.tempScope\\\\.\" + alias, \"gm\");\r\n attrName = attrName.replace(pattern2, \".\" + alias);\r\n });\r\n var result = eval(attrName);\r\n tempScope = null;\r\n return result;\r\n })();\r\n };\r\n UkuleleUtil.setFinalValue = function (object, attrName, value) {\r\n return (function () {\r\n var tempScope = {};\r\n tempScope[object['_alias']] = object;\r\n var valueString;\r\n if (typeof value === \"string\") {\r\n valueString = '\"' + value + '\"';\r\n }\r\n else if (typeof value === \"object\") {\r\n valueString = \"JSON.parse('\" + JSON.stringify(value) + \"')\";\r\n }\r\n else {\r\n valueString = value;\r\n }\r\n var evalString = \"tempScope.\" + attrName + \"=\" + valueString;\r\n eval(evalString);\r\n })();\r\n };\r\n return UkuleleUtil;\r\n}());\r\nexports.UkuleleUtil = UkuleleUtil;\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\n//import {SelectedDecorator} from \"./decorator/SelectedDecorator\";\r\nvar BoundItemAttribute = (function (_super) {\r\n __extends(BoundItemAttribute, _super);\r\n function BoundItemAttribute(attrName, ukuTag, element, uku) {\r\n var _this = _super.call(this, attrName, element, uku) || this;\r\n _this.ukuTag = ukuTag;\r\n return _this;\r\n }\r\n BoundItemAttribute.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n this.element.setAttribute(this.ukuTag, finalValue);\r\n };\r\n return BoundItemAttribute;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemAttribute = BoundItemAttribute;\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Selector = (function () {\r\n function Selector() {\r\n }\r\n Selector.querySelectorAll = function (element, query) {\r\n if (window.hasOwnProperty('jQuery') && typeof window['jQuery'] !== \"undefined\") {\r\n return window['jQuery'](element).find(query);\r\n }\r\n else {\r\n return element.querySelectorAll(query);\r\n }\r\n };\r\n Selector.fuzzyFind = function (element, text) {\r\n if (element && element.attributes) {\r\n for (var i = 0; i < element.attributes.length; i++) {\r\n var attr = element.attributes[i];\r\n if (attr.nodeName.search(text) > -1) {\r\n return element;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n Selector.directText = function (element, text) {\r\n var o = \"\";\r\n var nodes = element.childNodes;\r\n for (var i = 0; i <= nodes.length - 1; i++) {\r\n var node = nodes[i];\r\n if (node.nodeType === 3) {\r\n if (text || text === \"\" || text === 0 || text === false) {\r\n node.nodeValue = text;\r\n return;\r\n }\r\n else {\r\n o += node.nodeValue;\r\n }\r\n }\r\n }\r\n return o.trim();\r\n };\r\n Selector.parents = function (element) {\r\n var parents = [];\r\n while (element.parentNode && element.parentNode.tagName !== 'BODY') {\r\n parents.push(element.parentNode);\r\n element = element.parentNode;\r\n }\r\n return parents;\r\n };\r\n return Selector;\r\n}());\r\nexports.Selector = Selector;\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase = (function () {\r\n function BoundItemBase(_attrName, _element, _uku) {\r\n this.attributeName = _attrName;\r\n this.element = _element;\r\n this.uku = _uku;\r\n }\r\n BoundItemBase.prototype.render = function (controllers) {\r\n };\r\n return BoundItemBase;\r\n}());\r\nexports.BoundItemBase = BoundItemBase;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event = (function () {\r\n function Event(_eventType, _element) {\r\n this.eventType = _eventType;\r\n this.element = _element;\r\n }\r\n return Event;\r\n}());\r\nexports.Event = Event;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventEmitter = (function () {\r\n function EventEmitter() {\r\n this.eventsPool = {};\r\n }\r\n EventEmitter.prototype.getEventsPool = function () {\r\n return this.eventsPool;\r\n };\r\n EventEmitter.prototype.addListener = function (eventType, handler) {\r\n if (!this.eventsPool[eventType]) {\r\n this.eventsPool[eventType] = [];\r\n }\r\n this.eventsPool[eventType].push(handler);\r\n };\r\n EventEmitter.prototype.removeListener = function (eventType, handler) {\r\n if (this.eventsPool[eventType]) {\r\n for (var i = this.eventsPool[eventType].length - 1; i >= 0; i--) {\r\n if (this.eventsPool[eventType][i] === handler) {\r\n this.eventsPool[eventType].splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n EventEmitter.prototype.hasListener = function (eventType) {\r\n if (this.eventsPool[eventType] && this.eventsPool[eventType].length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n EventEmitter.prototype.dispatchEvent = function (event) {\r\n if (event && event.eventType) {\r\n var handlers = this.eventsPool[event.eventType];\r\n if (handlers) {\r\n for (var i = 0; i < handlers.length; i++) {\r\n handlers[i].call(this, event);\r\n }\r\n }\r\n }\r\n };\r\n return EventEmitter;\r\n}());\r\nexports.EventEmitter = EventEmitter;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ObjectUtil = (function () {\r\n function ObjectUtil() {\r\n }\r\n ObjectUtil.isArray = function (obj) {\r\n return Object.prototype.toString.call(obj) === '[object Array]';\r\n };\r\n ObjectUtil.getType = function (obj) {\r\n var type = typeof (obj);\r\n if (type === \"object\") {\r\n if (ObjectUtil.isArray(obj)) {\r\n return \"array\";\r\n }\r\n else {\r\n return type;\r\n }\r\n }\r\n else {\r\n return type;\r\n }\r\n };\r\n ObjectUtil.compare = function (objA, objB) {\r\n var type = ObjectUtil.getType(objA);\r\n var typeB = ObjectUtil.getType(objB);\r\n var result = true;\r\n if (type !== typeB) {\r\n return false;\r\n }\r\n else {\r\n switch (type) {\r\n case \"object\":\r\n if (objA === null && objB === null) {\r\n result = true;\r\n }\r\n else if (objA === null || objB === null) {\r\n result = false;\r\n }\r\n else {\r\n var keys_a = Object.keys(objA);\r\n var keys_b = Object.keys(objB);\r\n if (keys_a.length != keys_b.length) {\r\n result = false;\r\n }\r\n else if (keys_a.length === 0 && keys_b.length === 0) {\r\n result = true;\r\n }\r\n else {\r\n for (var key in objA) {\r\n var valuA = objA[key];\r\n var valuB = objB[key];\r\n var isEqual = ObjectUtil.compare(valuA, valuB);\r\n if (!isEqual) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case \"array\":\r\n if (objA.length === objB.length) {\r\n for (var i = 0; i < objA.length; i++) {\r\n var itemA = objA[i];\r\n var itemB = objB[i];\r\n var isEqual2 = ObjectUtil.compare(itemA, itemB);\r\n if (!isEqual2) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n result = false;\r\n }\r\n break;\r\n case \"function\":\r\n result = objA.toString() === objB.toString();\r\n break;\r\n default:\r\n result = objA === objB;\r\n break;\r\n }\r\n }\r\n return result;\r\n };\r\n ObjectUtil.deepClone = function (obj) {\r\n var o;\r\n var i;\r\n var j;\r\n if (typeof (obj) !== \"object\" || obj === null) {\r\n return obj;\r\n }\r\n if (obj instanceof (Array)) {\r\n o = [];\r\n i = 0;\r\n j = obj.length;\r\n for (; i < j; i++) {\r\n if (typeof (obj[i]) === \"object\" && obj[i] !== null) {\r\n o[i] = ObjectUtil.deepClone(obj[i]);\r\n }\r\n else {\r\n o[i] = obj[i];\r\n }\r\n }\r\n }\r\n else {\r\n o = {};\r\n for (i in obj) {\r\n if (typeof (obj[i]) === \"object\" && obj[i] !== null && i !== \"_dom\") {\r\n o[i] = ObjectUtil.deepClone(obj[i]);\r\n }\r\n else {\r\n o[i] = obj[i];\r\n }\r\n }\r\n }\r\n return o;\r\n };\r\n return ObjectUtil;\r\n}());\r\nexports.ObjectUtil = ObjectUtil;\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UkuEventType = (function () {\r\n function UkuEventType() {\r\n }\r\n UkuEventType.INITIALIZED = 'initialized';\r\n UkuEventType.REFRESH = 'refresh';\r\n UkuEventType.HANDLE_ELEMENT_COMPLETED = \"handle_element_completed\";\r\n return UkuEventType;\r\n}());\r\nexports.UkuEventType = UkuEventType;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventListener = (function () {\r\n function EventListener() {\r\n }\r\n EventListener.addEventListener = function (element, eventType, handler) {\r\n if (window.hasOwnProperty('jQuery') && typeof window['jQuery'] !== undefined) {\r\n return window['jQuery'](element).on(eventType, function (e) {\r\n handler && handler(e);\r\n });\r\n }\r\n else {\r\n return element.addEventListener(eventType, handler);\r\n }\r\n };\r\n return EventListener;\r\n}());\r\nexports.EventListener = EventListener;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventEmitter_1 = __webpack_require__(5);\r\nvar DefinitionManager_1 = __webpack_require__(10);\r\nvar DirtyChecker_1 = __webpack_require__(16);\r\nvar Analyzer_1 = __webpack_require__(17);\r\nvar Selector_1 = __webpack_require__(2);\r\nvar UkuEventType_1 = __webpack_require__(7);\r\nvar Event_1 = __webpack_require__(4);\r\nexports.Ukulele = (_a = (function (_super) {\r\n __extends(Ukulele, _super);\r\n function Ukulele() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.promiseArray = [];\r\n return _this;\r\n }\r\n Ukulele.prototype.init = function () {\r\n var _this = this;\r\n Promise.all(this.promiseArray).then(function () {\r\n _this.manageApplication();\r\n });\r\n };\r\n Ukulele.prototype.handleElement = function (element) {\r\n var _this = this;\r\n this.analyizeElement(element, function (e) {\r\n _this.dispatchEvent(new Event_1.Event(UkuEventType_1.UkuEventType.HANDLE_ELEMENT_COMPLETED, e));\r\n });\r\n };\r\n Ukulele.prototype.registerController = function (instanceName, controllerInst) {\r\n window[instanceName] = controllerInst;\r\n this._internal_getDefinitionManager().addControllerDefinition(instanceName, controllerInst);\r\n };\r\n Ukulele.prototype.getController = function (instanceName) {\r\n return this._internal_getDefinitionManager().getControllerDefinition(instanceName).controllerInstance;\r\n };\r\n Ukulele.prototype.registerComponent = function (tag, templateUrl, preload) {\r\n var p = this._internal_getDefinitionManager().addComponentDefinition(tag, templateUrl, preload);\r\n this.promiseArray.push(p);\r\n };\r\n Ukulele.prototype.getComponent = function (tagName) {\r\n return this._internal_getDefinitionManager().getComponent(tagName);\r\n };\r\n Ukulele.prototype.getComponentController = function (componentId) {\r\n return this._internal_getDefinitionManager().getControllerInstByDomId(componentId);\r\n };\r\n Ukulele.prototype.refresh = function (alias, excludeElement) {\r\n if (!this.dirtyChecker) {\r\n this.dirtyChecker = new DirtyChecker_1.DirtyChecker(this);\r\n }\r\n this.dirtyChecker.runDirtyChecking(alias, excludeElement);\r\n };\r\n //internal function\r\n Ukulele.prototype._internal_getDefinitionManager = function () {\r\n if (!this.defMgr) {\r\n this.defMgr = new DefinitionManager_1.DefinitionManager(this);\r\n }\r\n return this.defMgr;\r\n };\r\n Ukulele.prototype._internal_dealWithElement = function (element, callback) {\r\n this.analyizeElement(element, callback);\r\n };\r\n Ukulele.prototype.manageApplication = function () {\r\n var _this = this;\r\n var apps = Selector_1.Selector.querySelectorAll(document, \"[uku-application]\");\r\n if (apps.length === 1) {\r\n this.analyizeElement(apps[0], function (ele) {\r\n _this.dispatchEvent(new Event_1.Event(UkuEventType_1.UkuEventType.INITIALIZED, ele));\r\n });\r\n }\r\n else {\r\n throw new Error(\"Only one 'uku-application' can be declared in a whole html.\");\r\n }\r\n };\r\n Ukulele.prototype.analyizeElement = function (element, callback) {\r\n var anylyzer = new Analyzer_1.Analyzer(this);\r\n if (callback) {\r\n (function (retFunc) {\r\n anylyzer.addListener(Analyzer_1.Analyzer.ANALYIZE_COMPLETED, function (e) {\r\n retFunc(e.element);\r\n });\r\n })(callback);\r\n }\r\n anylyzer.analyizeElement(element);\r\n };\r\n return Ukulele;\r\n }(EventEmitter_1.EventEmitter)),\r\n _a.INITIALIZED = 'initialized',\r\n _a.REFRESH = 'refresh',\r\n _a.HANDLE_ELEMENT_COMPLETED = \"handle_element_completed\",\r\n _a);\r\nvar _a;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ObjectUtil_1 = __webpack_require__(6);\r\nvar Ajax_1 = __webpack_require__(11);\r\nvar ControllerModel_1 = __webpack_require__(12);\r\nvar ComponentModel_1 = __webpack_require__(13);\r\nvar ComponentPoolItem_1 = __webpack_require__(14);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar DefinitionManager = (function () {\r\n function DefinitionManager(_uku) {\r\n this.controllersDefinition = {};\r\n this.componentsDefinition = {};\r\n this.componentsPool = {};\r\n this.copyControllers = {};\r\n this.dependentScriptsCache = {};\r\n this.ajax = new Ajax_1.Ajax();\r\n this.uku = _uku;\r\n }\r\n DefinitionManager.prototype.getComponentsDefinition = function () {\r\n return this.componentsDefinition;\r\n };\r\n DefinitionManager.prototype.getComponentsPool = function () {\r\n return this.componentsPool;\r\n };\r\n DefinitionManager.prototype.setComponentsPool = function (pool) {\r\n this.componentsPool = pool;\r\n };\r\n DefinitionManager.prototype.setComponentsDefinition = function (value) {\r\n this.componentsDefinition = value;\r\n };\r\n DefinitionManager.prototype.getComponentDefinition = function (tagName) {\r\n return this.componentsDefinition[tagName];\r\n };\r\n DefinitionManager.prototype.getControllerDefinition = function (instanceName) {\r\n return this.controllersDefinition[instanceName];\r\n };\r\n DefinitionManager.prototype.getControllersDefinition = function () {\r\n return this.controllersDefinition;\r\n };\r\n DefinitionManager.prototype.getComponent = function (tagName) {\r\n return this.componentsPool[tagName];\r\n };\r\n DefinitionManager.prototype.getCopyControllers = function () {\r\n return this.copyControllers;\r\n };\r\n DefinitionManager.prototype.copyAllController = function () {\r\n for (var alias in this.controllersDefinition) {\r\n var controllerModel = this.controllersDefinition[alias];\r\n var controller = controllerModel.controllerInstance;\r\n this.copyControllerInstance(controller, alias);\r\n }\r\n };\r\n DefinitionManager.prototype.copyControllerInstance = function (controller, alias) {\r\n var previousCtrlInst = ObjectUtil_1.ObjectUtil.deepClone(controller);\r\n delete this.copyControllers[alias];\r\n this.copyControllers[alias] = previousCtrlInst;\r\n };\r\n DefinitionManager.prototype.addControllerDefinition = function (instanceName, controllerInst) {\r\n var controllerModel = new ControllerModel_1.ControllerModel(instanceName, controllerInst);\r\n controllerInst._alias = instanceName;\r\n this.controllersDefinition[instanceName] = controllerModel;\r\n };\r\n DefinitionManager.prototype.getControllerInstByDomId = function (domId) {\r\n for (var alias in this.controllersDefinition) {\r\n var controllerModel = this.controllersDefinition[alias];\r\n var controller = controllerModel.controllerInstance;\r\n if (controller._dom && controller._dom.id === domId) {\r\n return controller;\r\n }\r\n }\r\n return undefined;\r\n };\r\n DefinitionManager.prototype.addComponentDefinition = function (tag, templateUrl, preload) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (!preload) {\r\n _this.componentsPool[tag] = new ComponentPoolItem_1.ComponentPoolItem(tag, templateUrl, true);\r\n resolve();\r\n }\r\n else {\r\n _this.componentsPool[tag] = new ComponentPoolItem_1.ComponentPoolItem(tag, templateUrl, false);\r\n return _this.ajax.get(templateUrl).then(function (result) {\r\n var componentConfig = UkuleleUtil_1.UkuleleUtil.getComponentConfiguration(result);\r\n return _this.analyizeComponent(tag, componentConfig);\r\n });\r\n }\r\n });\r\n };\r\n DefinitionManager.prototype.addLazyComponentDefinition = function (tag, templateUrl) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n return _this.ajax.get(templateUrl).then(function (result) {\r\n var componentConfig = UkuleleUtil_1.UkuleleUtil.getComponentConfiguration(result);\r\n return _this.analyizeComponent(tag, componentConfig).then(function () {\r\n _this.componentsPool[tag] = { 'tagName': tag, 'templateUrl': templateUrl, 'lazy': false };\r\n resolve();\r\n });\r\n });\r\n });\r\n };\r\n DefinitionManager.prototype.getBoundAttributeValue = function (attr) {\r\n var additionalArgu = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n additionalArgu[_i - 1] = arguments[_i];\r\n }\r\n var controllerModels = this.getControllerModelByName(attr);\r\n var controllers = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllers.push(controllerModel.controllerInstance);\r\n });\r\n var parameters = [this.uku, controllers, attr];\r\n parameters = parameters.concat(additionalArgu);\r\n var result = UkuleleUtil_1.UkuleleUtil.getFinalValue.apply(null, parameters);\r\n return result;\r\n };\r\n ;\r\n DefinitionManager.prototype.getControllerModelByName = function (expression) {\r\n return this.getBoundControllerModelByName(expression);\r\n };\r\n ;\r\n DefinitionManager.prototype.getFinalValueByExpression = function (expression) {\r\n var controllerModels = this.getControllerModelByName(expression);\r\n var controllers = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllers.push(controllerModel.controllerInstance);\r\n });\r\n return UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, expression);\r\n };\r\n ;\r\n DefinitionManager.prototype.getBoundControllerModelByName = function (attrName) {\r\n var _this = this;\r\n var alias_list = Object.keys(this.controllersDefinition);\r\n var instanceNames = UkuleleUtil_1.UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\r\n var arr = [];\r\n instanceNames.forEach(function (instanceName) {\r\n var controllerModel = _this.controllersDefinition[instanceName];\r\n arr.push(controllerModel);\r\n });\r\n return arr;\r\n };\r\n DefinitionManager.prototype.analyizeComponent = function (tag, config) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n function loadDependentScript(src) {\r\n return new Promise(function (resolve, reject) {\r\n if (!self.dependentScriptsCache[src]) {\r\n var head = document.getElementsByTagName('HEAD')[0];\r\n var script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.charset = 'utf-8';\r\n script.async = true;\r\n script.src = src;\r\n script.onload = function (e) {\r\n self.dependentScriptsCache[e.target['src']] = true;\r\n resolve();\r\n };\r\n head.appendChild(script);\r\n }\r\n else {\r\n resolve();\r\n }\r\n });\r\n }\r\n var deps, self, tmpAMD, ccsExternal, _a, i, dep;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n deps = config.dependentScripts;\r\n self = this;\r\n if (!(deps && deps.length > 0)) return [3 /*break*/, 7];\r\n tmpAMD = void 0;\r\n if (typeof window['define'] === 'function' && window['define'].amd) {\r\n tmpAMD = window['define'];\r\n window['define'] = undefined;\r\n }\r\n if (!!config.componentControllerScript) return [3 /*break*/, 2];\r\n ccsExternal = deps[deps.length - 1];\r\n _a = config;\r\n return [4 /*yield*/, this.ajax.get(ccsExternal)];\r\n case 1:\r\n _a.componentControllerScript = _b.sent();\r\n deps.pop();\r\n _b.label = 2;\r\n case 2:\r\n i = 0;\r\n _b.label = 3;\r\n case 3:\r\n if (!(i < deps.length)) return [3 /*break*/, 6];\r\n dep = deps[i];\r\n return [4 /*yield*/, loadDependentScript(dep)];\r\n case 4:\r\n _b.sent();\r\n _b.label = 5;\r\n case 5:\r\n i++;\r\n return [3 /*break*/, 3];\r\n case 6:\r\n if (tmpAMD) {\r\n window['define'] = tmpAMD;\r\n }\r\n this.buildeComponentModel(tag, config.template, config.componentControllerScript, config.stylesheet);\r\n return [2 /*return*/];\r\n case 7:\r\n this.buildeComponentModel(tag, config.template, config.componentControllerScript, config.stylesheet);\r\n return [2 /*return*/];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n DefinitionManager.prototype.buildeComponentModel = function (tag, template, script, style) {\r\n var debugComment = \"//# sourceURL=\" + tag + \".js\";\r\n try {\r\n var controllerClazz = void 0;\r\n if (script) {\r\n script += debugComment;\r\n controllerClazz = eval(script);\r\n }\r\n var newComp = new ComponentModel_1.ComponentModel(tag, template, controllerClazz);\r\n this.componentsDefinition[tag] = newComp;\r\n if (style) {\r\n dealWithShadowStyle(tag, style);\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n function dealWithShadowStyle(tagName, stylesheet) {\r\n var head = document.getElementsByTagName('HEAD')[0];\r\n var style = document.createElement('style');\r\n style.type = 'text/css';\r\n var styleArray = stylesheet.split(\"}\");\r\n var newArray = [];\r\n styleArray.forEach(function (value, index) {\r\n var newValue = value.replace(/^\\s*/, \"\");\r\n if (newValue) {\r\n newArray.push(newValue);\r\n }\r\n });\r\n stylesheet = newArray.join(\"}\\n\" + \".\" + tagName + \" \");\r\n stylesheet = \".\" + tagName + \" \" + stylesheet + \"}\";\r\n style.innerHTML = stylesheet;\r\n head.appendChild(style);\r\n }\r\n };\r\n return DefinitionManager;\r\n}());\r\nexports.DefinitionManager = DefinitionManager;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Ajax = (function () {\r\n function Ajax() {\r\n }\r\n Ajax.prototype.get = function (url) {\r\n return new Promise(function (resolve, reject) {\r\n var request = new XMLHttpRequest();\r\n request.onreadystatechange = function () {\r\n if (request.readyState === 4) {\r\n if (request.status === 200) {\r\n resolve(request.responseText);\r\n }\r\n else {\r\n reject();\r\n }\r\n }\r\n };\r\n request.open(\"GET\", url, true);\r\n request.send(null);\r\n });\r\n };\r\n return Ajax;\r\n}());\r\nexports.Ajax = Ajax;\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ControllerModel = (function () {\r\n function ControllerModel(alias, ctrlInst) {\r\n this.alias = alias;\r\n this.controllerInstance = ctrlInst;\r\n this.boundItems = [];\r\n }\r\n ControllerModel.prototype.addBoundItem = function (boundItem) {\r\n this.boundItems.push(boundItem);\r\n };\r\n ControllerModel.prototype.getBoundItemsByName = function (name) {\r\n var tempBoundItems = [];\r\n for (var i = 0; i < this.boundItems.length; i++) {\r\n var boundItem = this.boundItems[i];\r\n if (boundItem.attributeName === name) {\r\n tempBoundItems.push(boundItem);\r\n }\r\n }\r\n return tempBoundItems;\r\n };\r\n return ControllerModel;\r\n}());\r\nexports.ControllerModel = ControllerModel;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ComponentModel = (function () {\r\n function ComponentModel(tagName, template, clazz) {\r\n this.tagName = tagName;\r\n this.template = template;\r\n this.controllerClazz = clazz;\r\n }\r\n return ComponentModel;\r\n}());\r\nexports.ComponentModel = ComponentModel;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ComponentPoolItem = (function () {\r\n function ComponentPoolItem(_tagName, _templateUrl, _lazy) {\r\n this.tagName = _tagName;\r\n this.templateUrl = _templateUrl;\r\n this.lazy = _lazy;\r\n }\r\n return ComponentPoolItem;\r\n}());\r\nexports.ComponentPoolItem = ComponentPoolItem;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ComponentConfiguration = (function () {\r\n function ComponentConfiguration(_template, _dependentScripts, _componentControllerScript, _stylesheet) {\r\n if (_stylesheet === void 0) { _stylesheet = undefined; }\r\n this.template = _template;\r\n this.dependentScripts = _dependentScripts;\r\n this.componentControllerScript = _componentControllerScript;\r\n this.stylesheet = _stylesheet;\r\n }\r\n return ComponentConfiguration;\r\n}());\r\nexports.ComponentConfiguration = ComponentConfiguration;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar ObjectUtil_1 = __webpack_require__(6);\r\nvar UkuEventType_1 = __webpack_require__(7);\r\nvar Event_1 = __webpack_require__(4);\r\nvar DirtyChecker = (function () {\r\n function DirtyChecker(_uku) {\r\n this.uku = _uku;\r\n this.defMgr = this.uku._internal_getDefinitionManager();\r\n }\r\n DirtyChecker.prototype.runDirtyChecking = function (ctrlAliasName, excludeElement) {\r\n var _this = this;\r\n if (ctrlAliasName) {\r\n if (typeof (ctrlAliasName) === \"string\") {\r\n watchController(ctrlAliasName);\r\n }\r\n else if (ObjectUtil_1.ObjectUtil.isArray(ctrlAliasName)) {\r\n for (var i = 0; i < ctrlAliasName.length; i++) {\r\n watchController(ctrlAliasName[i]);\r\n }\r\n }\r\n }\r\n else {\r\n for (var alias in this.defMgr.getControllersDefinition()) {\r\n watchController(alias);\r\n }\r\n }\r\n function watchController(alias) {\r\n var controllerModel = _this.defMgr.getControllersDefinition()[alias];\r\n if (!controllerModel) {\r\n if (_this.uku.parentUku) {\r\n _this.uku.parentUku.refresh(alias);\r\n }\r\n return;\r\n }\r\n var controller = controllerModel.controllerInstance;\r\n var previousCtrlModel = _this.defMgr.getCopyControllers()[alias];\r\n var changedElementCount = 0;\r\n for (var i = 0; i < controllerModel.boundItems.length; i++) {\r\n var boundItem = controllerModel.boundItems[i];\r\n var attrName = boundItem.attributeName;\r\n if (attrName.search('parent.') > -1) {\r\n return;\r\n }\r\n if (previousCtrlModel) {\r\n if (boundItem.hasOwnProperty('ukuTag') && boundItem['ukuTag'] === \"selected\") {\r\n attrName = attrName.split(\"|\")[0];\r\n }\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue([controller], attrName);\r\n var previousFinalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue([previousCtrlModel], attrName);\r\n if (!ObjectUtil_1.ObjectUtil.compare(previousFinalValue, finalValue)) {\r\n attrName = boundItem.attributeName;\r\n var changedBoundItems = controllerModel.getBoundItemsByName(attrName);\r\n for (var j = 0; j < changedBoundItems.length; j++) {\r\n var changedBoundItem = changedBoundItems[j];\r\n if (changedBoundItem.element !== excludeElement || (boundItem.hasOwnProperty('ukuTag') && changedBoundItem['ukuTag'] !== \"value\")) {\r\n changedElementCount++;\r\n changedBoundItem.render([controller]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (changedElementCount > 0 && _this.uku.hasListener(UkuEventType_1.UkuEventType.REFRESH)) {\r\n _this.uku.dispatchEvent(new Event_1.Event(UkuEventType_1.UkuEventType.REFRESH));\r\n }\r\n _this.defMgr.copyControllerInstance(controller, alias);\r\n }\r\n };\r\n ;\r\n return DirtyChecker;\r\n}());\r\nexports.DirtyChecker = DirtyChecker;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventEmitter_1 = __webpack_require__(5);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttributeFactory_1 = __webpack_require__(18);\r\nvar BoundItemExpression_1 = __webpack_require__(27);\r\nvar BoundItemInnerText_1 = __webpack_require__(28);\r\nvar BoundItemRepeat_1 = __webpack_require__(29);\r\nvar BoundItemComponentAttribute_1 = __webpack_require__(30);\r\nvar ElementActionBinder_1 = __webpack_require__(31);\r\nvar EventListener_1 = __webpack_require__(8);\r\nvar Selector_1 = __webpack_require__(2);\r\nvar Event_1 = __webpack_require__(4);\r\nvar Analyzer = (function (_super) {\r\n __extends(Analyzer, _super);\r\n function Analyzer(_uku) {\r\n var _this = _super.call(this) || this;\r\n //处理绑定的attribute\r\n _this.dealWithAttribute = function (element, tagName) {\r\n var _this = this;\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n //let elementName = element.tagName;\r\n var controllerModels = this.defMgr.getControllerModelByName(attr);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var boundItem_1 = BoundItemAttributeFactory_1.BoundItemAttributeFactory.getInstance().generateInstance(attr, tagName, element, this.uku);\r\n var controllers_1 = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_1);\r\n ElementActionBinder_1.elementChangedBinder(element, tagName, controllerModel, _this.uku.refresh, _this.uku);\r\n controllers_1.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_1.render(controllers_1);\r\n }\r\n };\r\n _this.uku = _uku;\r\n _this.defMgr = _this.uku._internal_getDefinitionManager();\r\n return _this;\r\n }\r\n Analyzer.prototype.analyizeElement = function (ele) {\r\n var _this = this;\r\n this.searchComponent(ele).then(function (element) {\r\n _this.searchExpression(element);\r\n _this.searchUkuAttribute(element);\r\n _this.defMgr.copyAllController();\r\n if (_this.hasListener(Analyzer.ANALYIZE_COMPLETED)) {\r\n _this.dispatchEvent(new Event_1.Event(Analyzer.ANALYIZE_COMPLETED, element));\r\n }\r\n });\r\n };\r\n Analyzer.prototype.sortAttributes = function (subElement) {\r\n var orderAttrs = [];\r\n for (var i = 0; i < subElement.attributes.length; i++) {\r\n var attribute = subElement.attributes[i];\r\n if (attribute.nodeName.search(\"uku-on\") !== -1) {\r\n orderAttrs.push(attribute);\r\n }\r\n else {\r\n orderAttrs.unshift(attribute);\r\n }\r\n }\r\n return orderAttrs;\r\n };\r\n Analyzer.prototype.searchUkuAttribute = function (element) {\r\n var subElements = [];\r\n //scan element which has uku-* tag\r\n var isSelfHasUkuTag = Selector_1.Selector.fuzzyFind(element, 'uku-');\r\n if (isSelfHasUkuTag) {\r\n subElements.push(isSelfHasUkuTag);\r\n }\r\n var allChildren = Selector_1.Selector.querySelectorAll(element, \"*\");\r\n for (var i = 0; i < allChildren.length; i++) {\r\n var child = allChildren[i];\r\n var matchElement = Selector_1.Selector.fuzzyFind(child, 'uku-');\r\n if (matchElement && !UkuleleUtil_1.UkuleleUtil.isInRepeat(matchElement)) {\r\n subElements.push(matchElement);\r\n }\r\n }\r\n //解析绑定 attribute,注册event\r\n for (var n = 0; n < subElements.length; n++) {\r\n var subElement = subElements[n];\r\n var orderAttrs = this.sortAttributes(subElement);\r\n for (var j = 0; j < orderAttrs.length; j++) {\r\n var attribute = orderAttrs[j];\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuAttrTag(attribute.nodeName) > -1) {\r\n var tempArr = attribute.nodeName.split('-');\r\n tempArr.shift();\r\n var attrName = tempArr.join('-');\r\n if (attrName !== \"application\") {\r\n if (attrName.search('on') === 0) {\r\n //is an event\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(subElement) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(subElement)) {\r\n this.dealWithEvent(subElement, attrName);\r\n }\r\n }\r\n else if (attrName.search('repeat') !== -1) {\r\n //is an repeat\r\n this.dealWithRepeat(subElement);\r\n }\r\n else {\r\n //is an attribute\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(subElement) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(subElement)) {\r\n if (attrName !== \"text\") {\r\n this.dealWithAttribute(subElement, attrName);\r\n }\r\n else {\r\n this.dealWithInnerText(subElement);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n Analyzer.prototype.searchComponent = function (element) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var comp, attrs, compDef, attrs, compDef, i, child;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n comp = this.defMgr.getComponent(element.localName);\r\n if (!comp) return [3 /*break*/, 4];\r\n if (!!comp.lazy) return [3 /*break*/, 1];\r\n attrs = element.attributes;\r\n compDef = this.defMgr.getComponentsDefinition()[comp.tagName];\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(element) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(element)) {\r\n return [2 /*return*/, this.dealWithComponent(element, compDef.template, compDef.controllerClazz, attrs)];\r\n }\r\n else {\r\n return [2 /*return*/, element];\r\n }\r\n return [3 /*break*/, 3];\r\n case 1: return [4 /*yield*/, this.defMgr.addLazyComponentDefinition(comp.tagName, comp.templateUrl)];\r\n case 2:\r\n _a.sent();\r\n attrs = element.attributes;\r\n compDef = this.defMgr.getComponentsDefinition()[comp.tagName];\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(element) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(element)) {\r\n return [2 /*return*/, this.dealWithComponent(element, compDef.template, compDef.controllerClazz, attrs)];\r\n }\r\n else {\r\n return [2 /*return*/, element];\r\n }\r\n _a.label = 3;\r\n case 3: return [3 /*break*/, 10];\r\n case 4:\r\n if (!(element.children && element.children.length > 0)) return [3 /*break*/, 9];\r\n i = 0;\r\n _a.label = 5;\r\n case 5:\r\n if (!(i < element.children.length)) return [3 /*break*/, 8];\r\n child = element.children[i];\r\n return [4 /*yield*/, this.searchComponent(child)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7:\r\n i++;\r\n return [3 /*break*/, 5];\r\n case 8: return [2 /*return*/, element];\r\n case 9: return [2 /*return*/, element];\r\n case 10: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Analyzer.prototype.dealWithComponent = function (tag, template, Clazz, attrs) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var randomAlias, tempFragment, htmlDom, cc, _loop_1, this_1, i, i, attr, j, child;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n randomAlias = 'cc_' + Math.floor(10000 * Math.random()).toString();\r\n //should consider white space between characters\r\n template = template.replace(new RegExp(\"\\'cc\\\\.\", 'gm'), \"'\" + randomAlias + '.');\r\n template = template.replace(new RegExp('\"cc\\\\.', 'gm'), '\"' + randomAlias + '.');\r\n template = template.replace(new RegExp('\\{\\{cc\\\\.', 'gm'), \"{{\" + randomAlias + '.');\r\n template = template.replace(new RegExp(' cc\\\\.', 'gm'), ' ' + randomAlias + '.');\r\n template = template.replace(new RegExp('\\\\(cc\\\\.', 'gm'), '(' + randomAlias + '.');\r\n template = template.replace(new RegExp('\\\\,cc\\\\.', 'gm'), ',' + randomAlias + '.');\r\n template = template.replace(new RegExp('\\\\.cc\\\\.', 'gm'), '.' + randomAlias + '.');\r\n tempFragment = document.createElement('div');\r\n tempFragment.insertAdjacentHTML('afterBegin', template);\r\n if (tempFragment.children.length > 1) {\r\n template = tempFragment.outerHTML;\r\n }\r\n tag.insertAdjacentHTML('beforeBegin', template);\r\n htmlDom = tag.previousElementSibling;\r\n htmlDom.classList.add(tag.localName);\r\n if (Clazz) {\r\n cc = new Clazz(this.uku);\r\n cc._dom = htmlDom;\r\n cc.fire = function (eventType, data, bubbles, cancelable) {\r\n if (bubbles === void 0) { bubbles = false; }\r\n if (cancelable === void 0) { cancelable = true; }\r\n var event = new CustomEvent(eventType.toLowerCase(), { \"bubbles\": bubbles, \"cancelable\": cancelable });\r\n event['data'] = data;\r\n cc._dom.dispatchEvent(event);\r\n };\r\n this.uku.registerController(randomAlias, cc);\r\n _loop_1 = function (i) {\r\n var attr = attrs[i];\r\n //todo need Refactor\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuAttrTag(attr.nodeName) !== 0\r\n || attr.nodeName.search(\"uku-on\") !== -1\r\n || attr.nodeName === \"uku-render\"\r\n || attr.nodeName === \"uku-visible\") {\r\n htmlDom.setAttribute(attr.nodeName, attr.nodeValue);\r\n }\r\n else {\r\n var tagName = UkuleleUtil_1.UkuleleUtil.getAttrFromUkuTag(attr.nodeName, true);\r\n var controllerModels = this_1.defMgr.getControllerModelByName(attr.nodeValue);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var boundItem_2 = new BoundItemComponentAttribute_1.BoundItemComponentAttribute(attr.nodeValue, tagName, cc, this_1.uku);\r\n var controllers_2 = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_2);\r\n controllers_2.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_2.render(controllers_2);\r\n }\r\n }\r\n };\r\n this_1 = this;\r\n for (i = 0; i < attrs.length; i++) {\r\n _loop_1(i);\r\n }\r\n }\r\n else {\r\n for (i = 0; i < attrs.length; i++) {\r\n attr = attrs[i];\r\n //todo:need Refactor\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuAttrTag(attr.nodeName) !== 0\r\n || attr.nodeName.search(\"uku-on\") !== -1\r\n || attr.nodeName === \"uku-render\"\r\n || attr.nodeName === \"uku-visible\") {\r\n htmlDom.setAttribute(attr.nodeName, attr.nodeValue);\r\n }\r\n }\r\n }\r\n tag.parentNode.removeChild(tag);\r\n if (!(htmlDom.children && htmlDom.children.length > 0)) return [3 /*break*/, 5];\r\n j = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(j < htmlDom.children.length)) return [3 /*break*/, 4];\r\n child = htmlDom.children[j];\r\n return [4 /*yield*/, this.searchComponent(child)];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n j++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (cc && cc._initialized && typeof (cc._initialized) === 'function') {\r\n cc._initialized(randomAlias, cc._dom);\r\n }\r\n return [2 /*return*/, htmlDom];\r\n case 5:\r\n if (cc && cc._initialized && typeof (cc._initialized) === 'function') {\r\n cc._initialized(randomAlias, cc._dom);\r\n }\r\n return [2 /*return*/, htmlDom];\r\n }\r\n });\r\n });\r\n };\r\n //todo: 处理 tag之间使用{{}}括起的表达式,用以显示文字\r\n Analyzer.prototype.searchExpression = function (element) {\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuExpTag(Selector_1.Selector.directText(element)) !== -1) {\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(element) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(element)) {\r\n //normal expression\r\n this.dealWithExpression(element);\r\n }\r\n }\r\n for (var i = 0; i < element.children.length; i++) {\r\n this.searchExpression(element.children[i]);\r\n }\r\n };\r\n Analyzer.prototype.dealWithExpression = function (element) {\r\n //通常的花括号声明方式\r\n var expression = Selector_1.Selector.directText(element);\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuExpTag(expression) !== -1) {\r\n var attr = expression.slice(2, -2);\r\n var controllerModels = this.defMgr.getControllerModelByName(attr);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var boundItem_3 = new BoundItemExpression_1.BoundItemExpression(attr, expression, element, this.uku);\r\n var controllers_3 = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_3);\r\n controllers_3.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_3.render(controllers_3);\r\n }\r\n }\r\n };\r\n //处理 uku-text\r\n Analyzer.prototype.dealWithInnerText = function (element) {\r\n var attr = element.getAttribute(\"uku-text\");\r\n if (attr) {\r\n var controllerModels = this.defMgr.getControllerModelByName(attr);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var boundItem_4 = new BoundItemInnerText_1.BoundItemInnerText(attr, element, this.uku);\r\n var controllers_4 = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_4);\r\n controllers_4.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_4.render(controllers_4);\r\n }\r\n }\r\n };\r\n //处理 事件 event\r\n Analyzer.prototype.dealWithEvent = function (element, eventName) {\r\n var _this = this;\r\n var expression = element.getAttribute(\"uku-\" + eventName);\r\n var eventNameInListener = eventName.substring(2);\r\n eventNameInListener = eventNameInListener.toLowerCase();\r\n var controllerModels = this.defMgr.getControllerModelByName(expression);\r\n if (!controllerModels || controllerModels.length === 0) {\r\n controllerModels = [];\r\n }\r\n EventListener_1.EventListener.addEventListener(element, eventNameInListener, function (event) {\r\n var alias_list = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n _this.defMgr.copyControllerInstance(controllerModel.controllerInstance, controllerModels.alias);\r\n alias_list.push(controllerModel.alias);\r\n });\r\n var index = UkuleleUtil_1.UkuleleUtil.searchUkuFuncArg(expression);\r\n if (index === -1) {\r\n // is an expression, not a function\r\n var handler = new Function(\"event\", \"return \" + expression);\r\n console.log(handler.toString());\r\n handler(event);\r\n }\r\n else {\r\n // is a function\r\n var i = expression.search(/\\(/);\r\n var arg = 'event';\r\n if (expression[i + 1] !== ')') {\r\n // has argument\r\n arg = 'event,';\r\n }\r\n var arr = expression.split('(');\r\n arr[1] = arg + arr[1];\r\n var new_expression_1 = arr.join(\"(\");\r\n (function (e) {\r\n var tempScope = {};\r\n tempScope['event'] = e;\r\n eval(new_expression_1);\r\n tempScope = null;\r\n })(event);\r\n }\r\n _this.uku.refresh(alias_list, element);\r\n });\r\n };\r\n //处理 repeat\r\n Analyzer.prototype.dealWithRepeat = function (element) {\r\n var repeatExpression = element.getAttribute(\"uku-repeat\");\r\n var tempArr = repeatExpression.split(' in ');\r\n var itemName = tempArr[0];\r\n var attr = tempArr[1];\r\n var controllerModels = this.defMgr.getControllerModelByName(attr);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var controllers_5 = [];\r\n //let controllerInst = controllerModel.controllerInstance;\r\n var boundItem_5 = new BoundItemRepeat_1.BoundItemRepeat(attr, itemName, element, this.uku);\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_5);\r\n controllers_5.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_5.render(controllers_5);\r\n }\r\n };\r\n Analyzer.ANALYIZE_COMPLETED = 'analyizeCompleted';\r\n return Analyzer;\r\n}(EventEmitter_1.EventEmitter));\r\nexports.Analyzer = Analyzer;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttrSelected_1 = __webpack_require__(19);\r\nvar BoundItemAttrDataItem_1 = __webpack_require__(20);\r\nvar BoundItemAttrSrc_1 = __webpack_require__(21);\r\nvar BoundItemAttrDisabled_1 = __webpack_require__(22);\r\nvar BoundItemAttrRender_1 = __webpack_require__(23);\r\nvar BoundItemAttrStyle_1 = __webpack_require__(24);\r\nvar BoundItemAttrValue_1 = __webpack_require__(25);\r\nvar BoundItemAttrVisible_1 = __webpack_require__(26);\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar BoundItemAttributeFactory = (function () {\r\n function BoundItemAttributeFactory() {\r\n if (BoundItemAttributeFactory._instance) {\r\n throw new Error(\"Error: Instantiation failed: Use BoundItemAttributeFactory.getInstance() instead of new.\");\r\n }\r\n BoundItemAttributeFactory._instance = this;\r\n }\r\n BoundItemAttributeFactory.getInstance = function () {\r\n return BoundItemAttributeFactory._instance;\r\n };\r\n BoundItemAttributeFactory.prototype.generateInstance = function (attr, tagName, element, uku) {\r\n var instance;\r\n switch (tagName) {\r\n case \"selected\":\r\n instance = new BoundItemAttrSelected_1.BountItemAttrSelected(attr, tagName, element, uku);\r\n break;\r\n case \"data-item\":\r\n instance = new BoundItemAttrDataItem_1.BoundItemAttrDataItem(attr, tagName, element, uku);\r\n break;\r\n case \"src\":\r\n instance = new BoundItemAttrSrc_1.BoundItemAttrSrc(attr, tagName, element, uku);\r\n break;\r\n case \"disabled\":\r\n instance = new BoundItemAttrDisabled_1.BoundItemAttrDisabled(attr, tagName, element, uku);\r\n break;\r\n case \"render\":\r\n instance = new BoundItemAttrRender_1.BoundItemAttrRender(attr, tagName, element, uku);\r\n break;\r\n case \"style\":\r\n instance = new BoundItemAttrStyle_1.BoundItemAttrStyle(attr, tagName, element, uku);\r\n break;\r\n case \"value\":\r\n instance = new BoundItemAttrValue_1.BoundItemAttrValue(attr, tagName, element, uku);\r\n break;\r\n case \"visible\":\r\n instance = new BoundItemAttrVisible_1.BoundItemAttrVisible(attr, tagName, element, uku);\r\n break;\r\n default:\r\n instance = new BoundItemAttribute_1.BoundItemAttribute(attr, tagName, element, uku);\r\n }\r\n return instance;\r\n };\r\n BoundItemAttributeFactory._instance = new BoundItemAttributeFactory();\r\n return BoundItemAttributeFactory;\r\n}());\r\nexports.BoundItemAttributeFactory = BoundItemAttributeFactory;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BountItemAttrSelected = (function (_super) {\r\n __extends(BountItemAttrSelected, _super);\r\n function BountItemAttrSelected(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"selected\") {\r\n throw new TypeError(\"it doesn't use uku-selected\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BountItemAttrSelected.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var key;\r\n var elementName = this.element.tagName;\r\n if (elementName === \"SELECT\") {\r\n var tempArr = this.attributeName.split(\"|\");\r\n attr = tempArr[0];\r\n key = tempArr[1];\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n var value = void 0;\r\n if (key) {\r\n value = finalValue[key];\r\n }\r\n else {\r\n value = finalValue;\r\n }\r\n this.element.value = value;\r\n }\r\n if (elementName === \"INPUT\" && this.element.getAttribute(\"type\") === \"radio\") {\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (this.element.value === finalValue) {\r\n this.element.setAttribute(\"checked\", \"true\");\r\n }\r\n }\r\n };\r\n return BountItemAttrSelected;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BountItemAttrSelected = BountItemAttrSelected;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrDataItem = (function (_super) {\r\n __extends(BoundItemAttrDataItem, _super);\r\n function BoundItemAttrDataItem(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"data-item\") {\r\n throw new TypeError(\"it doesn't use uku-item\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrDataItem.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (elementName === \"OPTION\") {\r\n finalValue = JSON.stringify(finalValue);\r\n this.element.setAttribute('data-item', finalValue);\r\n }\r\n };\r\n return BoundItemAttrDataItem;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrDataItem = BoundItemAttrDataItem;\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrSrc = (function (_super) {\r\n __extends(BoundItemAttrSrc, _super);\r\n function BoundItemAttrSrc(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"src\") {\r\n throw new TypeError(\"it doesn't use uku-src\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrSrc.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (elementName === \"IMG\") {\r\n if (finalValue) {\r\n this.element.setAttribute(this.ukuTag, finalValue);\r\n }\r\n }\r\n else {\r\n throw new Error(\"uku-src doesn't work with current dom\");\r\n }\r\n };\r\n return BoundItemAttrSrc;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrSrc = BoundItemAttrSrc;\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrDisabled = (function (_super) {\r\n __extends(BoundItemAttrDisabled, _super);\r\n function BoundItemAttrDisabled(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"disabled\") {\r\n throw new TypeError(\"it doesn't use uku-disabled\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrDisabled.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n this.element.disabled = finalValue;\r\n };\r\n return BoundItemAttrDisabled;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrDisabled = BoundItemAttrDisabled;\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrRender = (function (_super) {\r\n __extends(BoundItemAttrRender, _super);\r\n function BoundItemAttrRender(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"render\") {\r\n throw new TypeError(\"it doesn't use uku-render\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrRender.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (finalValue) {\r\n var oldDisplaySetting = this.element.getAttribute(\"data-old-display\");\r\n if (oldDisplaySetting !== null) {\r\n this.element.style.display = oldDisplaySetting;\r\n }\r\n }\r\n else {\r\n var oldDisplaySetting = this.element.getAttribute(\"data-old-display\");\r\n if (oldDisplaySetting === null) {\r\n oldDisplaySetting = this.element.style.display;\r\n this.element.setAttribute(\"data-old-display\", oldDisplaySetting);\r\n }\r\n this.element.style.display = \"none\";\r\n }\r\n };\r\n return BoundItemAttrRender;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrRender = BoundItemAttrRender;\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrStyle = (function (_super) {\r\n __extends(BoundItemAttrStyle, _super);\r\n function BoundItemAttrStyle(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"style\") {\r\n throw new TypeError(\"it doesn't use uku-style\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrStyle.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n for (var cssName in finalValue) {\r\n this.element.style[cssName] = finalValue[cssName];\r\n }\r\n };\r\n return BoundItemAttrStyle;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrStyle = BoundItemAttrStyle;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrValue = (function (_super) {\r\n __extends(BoundItemAttrValue, _super);\r\n function BoundItemAttrValue(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"value\") {\r\n throw new TypeError(\"it doesn't use uku-value\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrValue.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (elementName === \"INPUT\" && this.element.getAttribute(\"type\") === \"checkbox\") {\r\n this.element.checked = finalValue;\r\n }\r\n else {\r\n this.element.value = finalValue;\r\n }\r\n };\r\n return BoundItemAttrValue;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrValue = BoundItemAttrValue;\r\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrVisible = (function (_super) {\r\n __extends(BoundItemAttrVisible, _super);\r\n function BoundItemAttrVisible(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"visible\") {\r\n throw new TypeError(\"it doesn't use uku-visible\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrVisible.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (finalValue) {\r\n this.element.style.visibility = \"visible\";\r\n }\r\n else {\r\n this.element.style.visibility = \"hidden\";\r\n }\r\n };\r\n return BoundItemAttrVisible;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrVisible = BoundItemAttrVisible;\r\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar Selector_1 = __webpack_require__(2);\r\nvar BoundItemExpression = (function (_super) {\r\n __extends(BoundItemExpression, _super);\r\n function BoundItemExpression(attrName, expression, element, uku) {\r\n var _this = _super.call(this, attrName, element, uku) || this;\r\n _this.expression = expression;\r\n return _this;\r\n }\r\n BoundItemExpression.prototype.render = function (controllers) {\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, this.attributeName);\r\n Selector_1.Selector.directText(this.element, finalValue);\r\n };\r\n return BoundItemExpression;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemExpression = BoundItemExpression;\r\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemInnerText = (function (_super) {\r\n __extends(BoundItemInnerText, _super);\r\n function BoundItemInnerText(attrName, element, uku) {\r\n var _this = _super.call(this, attrName, element, uku) || this;\r\n _this.tagName = 'text';\r\n return _this;\r\n }\r\n BoundItemInnerText.prototype.render = function (controllers) {\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, this.attributeName);\r\n this.element.innerHTML = finalValue;\r\n };\r\n return BoundItemInnerText;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemInnerText = BoundItemInnerText;\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemRepeat = (function (_super) {\r\n __extends(BoundItemRepeat, _super);\r\n function BoundItemRepeat(attrName, itemName, element, uku) {\r\n var _this = _super.call(this, attrName, element, uku) || this;\r\n _this.expression = itemName;\r\n _this.renderTemplate = element.outerHTML;\r\n _this.parentElement = element.parentNode;\r\n _this.beginCommentString = undefined;\r\n _this.endCommentString = undefined;\r\n return _this;\r\n }\r\n BoundItemRepeat.prototype.render = function (controllers) {\r\n var _this = this;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, this.attributeName);\r\n if (!finalValue) {\r\n return;\r\n }\r\n var self = this;\r\n if (this.element && this.element.parentNode) {\r\n //create repeate begin comment\r\n this.beginCommentString = \"begin uku-repeat: \" + this.expression + \" in \" + this.attributeName;\r\n var beginComment = document.createComment(this.beginCommentString);\r\n this.element.parentNode.insertBefore(beginComment, this.element);\r\n //create repeate end comment\r\n this.endCommentString = \"end uku-repeat: \" + this.expression + \" in \" + this.attributeName;\r\n var endComment = document.createComment(this.endCommentString);\r\n this.element.parentNode.insertBefore(endComment, this.element.nextSibling);\r\n //remove definition dom\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n var filter = { acceptNode: function (node) {\r\n if (node.nodeValue === self.beginCommentString) {\r\n return NodeFilter.FILTER_ACCEPT;\r\n }\r\n return NodeFilter.FILTER_SKIP;\r\n } };\r\n var safeFilter = filter.acceptNode;\r\n safeFilter.acceptNode = filter.acceptNode;\r\n var treeWalker = document.createTreeWalker(this.parentElement, NodeFilter.SHOW_COMMENT, safeFilter, false);\r\n /*function filter(node:Node) :any{\r\n if (node.nodeValue === self.beginCommentString) {\r\n return (NodeFilter.FILTER_ACCEPT);\r\n }\r\n return (NodeFilter.FILTER_SKIP);\r\n }*/\r\n function generateTempContainer() {\r\n var index = UkuleleUtil_1.UkuleleUtil.searchHtmlTag(self.renderTemplate, \"tr\");\r\n if (index === -1) {\r\n return document.createElement(\"div\");\r\n }\r\n else {\r\n return document.createElement(\"tbody\");\r\n }\r\n }\r\n while (treeWalker.nextNode()) {\r\n var commentNode = treeWalker.currentNode;\r\n if (commentNode && commentNode.nodeValue === this.beginCommentString) {\r\n //remove overtime dom.\r\n while (commentNode.nextSibling && commentNode.nextSibling.nodeValue !== this.endCommentString) {\r\n commentNode.parentNode.removeChild(commentNode.nextSibling);\r\n }\r\n //create new dom\r\n var tempDiv = generateTempContainer();\r\n var blankDiv = generateTempContainer();\r\n commentNode.parentNode.insertBefore(blankDiv, commentNode.nextSibling);\r\n for (var i = 0; i < finalValue.length; i++) {\r\n tempDiv.insertAdjacentHTML('beforeEnd', this.renderTemplate);\r\n if (i === finalValue.length - 1) {\r\n var childrenHTML = tempDiv.innerHTML;\r\n blankDiv.insertAdjacentHTML('beforeBegin', childrenHTML);\r\n commentNode.parentNode.removeChild(blankDiv);\r\n tempDiv = null;\r\n blankDiv = null;\r\n }\r\n }\r\n var child = commentNode.nextSibling;\r\n for (var j = 0; j < finalValue.length; j++) {\r\n child.removeAttribute(\"uku-repeat\");\r\n var Uku_Clazz = this.uku.constructor;\r\n var ukulele = new Uku_Clazz(); //new Ukulele();\r\n ukulele.parentUku = this.uku;\r\n var compDef = ukulele.parentUku._internal_getDefinitionManager().getComponentsDefinition();\r\n var compPool = ukulele.parentUku._internal_getDefinitionManager().getComponentsPool();\r\n ukulele._internal_getDefinitionManager().setComponentsDefinition(compDef);\r\n ukulele._internal_getDefinitionManager().setComponentsPool(compPool);\r\n var sibling = child.nextSibling;\r\n var itemType = typeof finalValue[j];\r\n var alias = \"repeatItem_\" + Math.floor(10000 * Math.random()).toString() + \"_\" + this.expression;\r\n if (itemType === \"object\") {\r\n ukulele.registerController(alias, finalValue[j]);\r\n }\r\n else {\r\n ukulele.registerController(alias, { 'value': finalValue[j] });\r\n alias = alias + \".value\";\r\n }\r\n var pattern = new RegExp(\"\\\\b\" + this.expression + \"(?!\\\\-|\\\\s|\\\\w|\\\\=)\", \"gm\");\r\n var newOuterHtml = child.outerHTML.replace(pattern, alias);\r\n child.insertAdjacentHTML('afterend', newOuterHtml);\r\n var newItemDom = child.nextSibling;\r\n child.parentNode.removeChild(child);\r\n child = newItemDom;\r\n ukulele._internal_dealWithElement(child, function (element) {\r\n if (_this.element.tagName === \"OPTION\") {\r\n var expression = _this.parentElement.getAttribute(\"uku-selected\");\r\n var tempArr = expression.split(\"|\");\r\n expression = tempArr[0];\r\n var key = tempArr[1];\r\n var value = _this.uku._internal_getDefinitionManager().getFinalValueByExpression(expression);\r\n if (key) {\r\n _this.parentElement.value = value[key];\r\n }\r\n else {\r\n _this.parentElement.value = value;\r\n }\r\n }\r\n });\r\n child = sibling;\r\n }\r\n }\r\n }\r\n };\r\n return BoundItemRepeat;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemRepeat = BoundItemRepeat;\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemComponentAttribute = (function (_super) {\r\n __extends(BoundItemComponentAttribute, _super);\r\n function BoundItemComponentAttribute(attrName, ukuTag, cc, uku) {\r\n var _this = _super.call(this, attrName, null, uku) || this;\r\n _this.ukuTag = ukuTag;\r\n _this.componentController = cc;\r\n return _this;\r\n }\r\n BoundItemComponentAttribute.prototype.render = function (controllers) {\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, this.attributeName);\r\n this.componentController[this.ukuTag] = finalValue;\r\n this.uku.refresh(this.componentController._alias);\r\n };\r\n return BoundItemComponentAttribute;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemComponentAttribute = BoundItemComponentAttribute;\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar EventListener_1 = __webpack_require__(8);\r\nvar Selector_1 = __webpack_require__(2);\r\nfunction elementChangedBinder(element, tagName, controllerModel, handler, host) {\r\n var elementStrategies = [inputTextCase, textareaCase, selectCase, checkboxCase, radioCase];\r\n for (var i = 0; i < elementStrategies.length; i++) {\r\n var func = elementStrategies[i];\r\n var goon = func.apply(this, arguments);\r\n if (goon) {\r\n break;\r\n }\r\n }\r\n}\r\nexports.elementChangedBinder = elementChangedBinder;\r\nfunction inputTextCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if (elementName === \"INPUT\" && isSupportInputType(element) && tagName === \"value\") {\r\n var eventType = 'change';\r\n var inputType = element.getAttribute('type');\r\n if (inputType === \"text\") {\r\n eventType = 'input';\r\n }\r\n EventListener_1.EventListener.addEventListener(element, eventType, function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSupportInputType(element) {\r\n var type = element.getAttribute(\"type\");\r\n if (type !== \"checkbox\" && type !== \"radio\") {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction textareaCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if (elementName === \"TEXTAREA\" && tagName === \"value\") {\r\n EventListener_1.EventListener.addEventListener(element, 'input', function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction selectCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if ((elementName === \"SELECT\" && tagName === \"selected\")) {\r\n EventListener_1.EventListener.addEventListener(element, 'change', function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n var key;\r\n var tmpArr = attr.split(\"|\");\r\n attr = tmpArr[0];\r\n var options = Selector_1.Selector.querySelectorAll(element, \"option\");\r\n for (var j = 0; j < options.length; j++) {\r\n var option = options[j];\r\n if (option.selected) {\r\n var selectedItem = JSON.parse(option.getAttribute(\"data-item\"));\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, selectedItem);\r\n }\r\n }\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction checkboxCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if (elementName === \"INPUT\" && tagName === \"value\" && element.getAttribute(\"type\") === \"checkbox\") {\r\n EventListener_1.EventListener.addEventListener(element, 'change', function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.checked);\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction radioCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if (elementName === \"INPUT\" && tagName === \"selected\" && element.getAttribute(\"type\") === \"radio\") {\r\n EventListener_1.EventListener.addEventListener(element, 'change', function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n if (element.checked) {\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// uku.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 4b788c9d3737d0774ca6","import { Selector } from \"../extend/Selector\";\nimport { ArgumentUtil } from \"./ArgumentUtil\";\nimport { ComponentConfiguration } from \"../model/ComponentConfiguration\";\nimport { IUkulele } from \"../core/IUkulele\";\nimport { ControllerModel } from \"../model/ControllerModel\";\nclass ValueAndParent {\n value: any;\n parent: Object;\n constructor(_value: any, _parant: Object) {\n this.value = _value;\n this.parent = _parant;\n }\n}\nexport class UkuleleUtil {\n /* static getFinalAttribute(expression:string):string {\n let temp:Array = expression.split(\".\");\n let isParent:string = temp.shift();\n if (isParent === \"parent\") {\n return UkuleleUtil.getFinalAttribute(temp.join(\".\"));\n }\n return temp.join(\".\");\n } */\n\n static searchHtmlTag(htmlString: string, tagName: string): number {\n let reTemp: string = \"^<\" + tagName + \"[\\\\s\\\\S]*>\" + \"[\\\\s\\\\S]*$\";\n let re: RegExp = new RegExp(reTemp);\n let index: number = htmlString.search(re);\n return index;\n }\n\n static getInnerHtml(htmlString: string, tagName: string): string {\n let reTemp: string = \"<\" + tagName + \"[\\\\s\\\\S]*>\" + \"[\\\\s\\\\S]*\";\n let re: RegExp = new RegExp(reTemp);\n let match: RegExpMatchArray = htmlString.match(re);\n if (match.index > -1) {\n let matchString: string = match[0];\n let index: number = matchString.search(\">\");\n let tempString = matchString.substr(index + 1);\n let index2: number = tempString.lastIndexOf(\" = [];\n let ccs: string = null;\n for (let i = 0; i < scripts.length; i++) {\n let script: HTMLScriptElement = scripts[i] as HTMLScriptElement;\n if (script.src !== \"\") {\n deps.push(script.src);\n } else {\n ccs = script.innerHTML;\n }\n }\n if (stylesheet && stylesheet[0]) {\n return new ComponentConfiguration((tpl[0] as HTMLElement).innerHTML, deps, ccs, (stylesheet[0] as HTMLElement).innerHTML);\n } else {\n return new ComponentConfiguration((tpl[0] as HTMLElement).innerHTML, deps, ccs);\n }\n\n }\n\n static searchUkuAttrTag(htmlString: string): number {\n let re: RegExp = /^uku\\-.*/;\n let index: number = htmlString.search(re);\n return index;\n }\n\n static getAttrFromUkuTag(ukuTag: string, camelCase: boolean = false) {\n if (UkuleleUtil.searchUkuAttrTag(ukuTag) === 0) {\n ukuTag = ukuTag.replace('uku-', '');\n }\n if (camelCase) {\n let names: Array = ukuTag.split('-');\n ukuTag = names[0];\n for (let i = 1; i < names.length; i++) {\n let firstLetter: string = names[i].charAt(0).toUpperCase();\n ukuTag = ukuTag + firstLetter + names[i].substr(1);\n }\n }\n return ukuTag;\n }\n\n static searchUkuExpTag(expression: string): number {\n let re: RegExp = /^\\{\\{.*\\}\\}$/;\n let index: number = expression.search(re);\n return index;\n }\n\n static searchUkuFuncArg(htmlString: string): number {\n let re1: RegExp = /[\\+\\-\\*\\/\\%\\?\\:\\>\\<]/;\n let index = htmlString.search(re1);\n if (index === -1) {\n let re2: RegExp = /\\(.*\\)$/;\n index = htmlString.search(re2);\n return index;\n } else {\n return -1;\n }\n }\n\n static isRepeat(element: HTMLElement): boolean {\n if (element.getAttribute(\"uku-repeat\")) {\n return true;\n }\n return false;\n }\n\n static isInRepeat(element: HTMLElement): boolean {\n let parents: Array = Selector.parents(element);\n for (let i = 0; i < parents.length; i++) {\n let parent: HTMLElement = parents[i] as HTMLElement;\n if (parent.nodeType !== 9) {\n let b: string = parent.getAttribute(\"uku-repeat\");\n if (b) {\n return true;\n }\n }\n }\n return false;\n }\n\n static getBoundModelInstantName(expression: string): string {\n let controlInstName: string = expression.split('.')[0];\n if (controlInstName) {\n return controlInstName;\n }\n return undefined;\n }\n\n static getBoundModelInstantNames(controller_alias_list, expression): any {\n let arr = [];\n controller_alias_list.forEach(alias => {\n let pattern = new RegExp(\"\\\\b\" + alias, \"gm\");\n if (expression.search(pattern) > -1) {\n arr.push(alias);\n }\n });\n return arr;\n }\n\n static getFinalValue(objects: Object[], attrName: string) {\n return (function () {\n var tempScope = {};\n objects.forEach(object => {\n tempScope[object['_alias']] = object;\n let alias = object['_alias'];\n let pattern = new RegExp(\"\\\\b\" + alias + \"\\\\b\", \"gm\");\n attrName = attrName.replace(pattern, \"tempScope.\" + alias);\n\n let pattern2 = new RegExp(\"\\\\.tempScope\\\\.\" + alias, \"gm\");\n attrName = attrName.replace(pattern2, \".\" + alias);\n\n });\n\n var result = eval(attrName);\n tempScope = null;\n return result;\n })();\n }\n\n static setFinalValue(object: Object, attrName: string, value: any) {\n return (function () {\n var tempScope = {};\n tempScope[object['_alias']] = object;\n \n let valueString;\n if(typeof value === \"string\"){\n valueString = '\"' + value + '\"';\n }else if(typeof value === \"object\"){\n valueString = \"JSON.parse('\" + JSON.stringify(value) + \"')\";\n }else{\n valueString = value;\n }\n\n let evalString = \"tempScope.\" + attrName + \"=\" + valueString;\n eval(evalString);\n })();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/util/UkuleleUtil.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\n//import {SelectedDecorator} from \"./decorator/SelectedDecorator\";\nexport class BoundItemAttribute extends BoundItemBase{\n ukuTag:string;\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n super(attrName,element,uku);\n this.ukuTag = ukuTag;\n }\n \n render(controllers):void{\n let attr:string = this.attributeName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n this.element.setAttribute(this.ukuTag, finalValue);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemAttribute.ts","export class Selector{\n static querySelectorAll(element:HTMLBodyElement|HTMLDocument|HTMLElement,query:string):NodeList{\n if(window.hasOwnProperty('jQuery') && typeof window['jQuery'] !== \"undefined\"){\n return window['jQuery'](element).find(query);\n }else{\n return element.querySelectorAll(query);\n }\n }\n\n static fuzzyFind(element:HTMLElement,text:string):HTMLElement {\n if (element && element.attributes) {\n for (let i = 0; i < element.attributes.length; i++) {\n let attr = element.attributes[i];\n if (attr.nodeName.search(text) > -1) {\n return element;\n }\n }\n }\n return null;\n }\n\n static directText(element:HTMLElement,text?:any):string {\n let o = \"\";\n let nodes = element.childNodes;\n for (let i = 0; i <= nodes.length - 1; i++) {\n let node = nodes[i];\n if (node.nodeType === 3) {\n if (text || text ===\"\" || text === 0 || text === false) {\n node.nodeValue = text;\n return;\n } else {\n o += node.nodeValue;\n }\n }\n }\n return o.trim();\n }\n\n static parents(element:HTMLElement):Array{\n let parents = [];\n while(element.parentNode && (element.parentNode as HTMLElement).tagName !== 'BODY'){\n parents.push(element.parentNode as HTMLElement);\n element = element.parentNode as HTMLElement;\n }\n return parents;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/extend/Selector.ts","import {IUkulele} from \"../core/IUkulele\";\nexport class BoundItemBase{\n attributeName:string;\n element:HTMLElement;\n uku:IUkulele;\n constructor(_attrName:string, _element:HTMLElement, _uku:IUkulele){\n this.attributeName = _attrName;\n this.element = _element;\n this.uku = _uku;\n }\n render(controllers:Object[]):void{\n \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemBase.ts","export class Event{\n eventType:string;\n element:HTMLElement;\n \n constructor(_eventType,_element?:HTMLElement){\n this.eventType = _eventType;\n this.element = _element;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/Event.ts","import {IEventEmitter} from \"./IEventEmitter\";\nimport {Event} from \"./Event\";\nexport class EventEmitter implements IEventEmitter{\n private eventsPool:Object;\n \n constructor(){\n this.eventsPool = {};\n }\n \n getEventsPool():Object{\n return this.eventsPool;\n }\n addListener(eventType:string, handler:Function):void{\n if(!this.eventsPool[eventType]){\n this.eventsPool[eventType] = [];\n }\n this.eventsPool[eventType].push(handler);\n }\n removeListener(eventType:string, handler:Function):void{\n if(this.eventsPool[eventType]){\n for(let i=this.eventsPool[eventType].length-1;i>=0;i--){\n if(this.eventsPool[eventType][i] === handler){\n this.eventsPool[eventType].splice(i,1);\n break;\n }\n }\n }\n }\n hasListener(eventType:string):boolean{\n if(this.eventsPool[eventType] && this.eventsPool[eventType].length > 0){\n return true;\n }\n return false;\n }\n dispatchEvent(event:Event):void{\n if(event && event.eventType){\n let handlers:Array = this.eventsPool[event.eventType];\n if(handlers){\n for(let i=0;i{\n handler && handler(e);\n });\n }else{\n return element.addEventListener(eventType,handler);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/extend/EventListener.ts","import { EventEmitter } from \"./EventEmitter\";\nimport { DefinitionManager } from \"./DefinitionManager\";\nimport { DirtyChecker } from \"./DirtyChecker\";\nimport { Analyzer } from \"./Analyzer\";\nimport { Selector } from \"../extend/Selector\";\nimport { UkuEventType } from \"./UkuEventType\";\nimport { IUkulele } from \"./IUkulele\";\nimport { Event } from \"./Event\";\n\nexport let Ukulele = class Ukulele extends EventEmitter implements IUkulele {\n\tprivate defMgr: DefinitionManager;\n\tprivate dirtyChecker: DirtyChecker;\n\tprivate promiseArray = [];\n\tpublic parentUku: IUkulele;\n\tstatic INITIALIZED: string = 'initialized';\n\tstatic REFRESH: string = 'refresh';\n\tstatic HANDLE_ELEMENT_COMPLETED: string = \"handle_element_completed\";\n\n\tpublic init(): void {\n\t\tPromise.all(this.promiseArray).then(() => {\n\t\t\tthis.manageApplication();\n\t\t});\n\t}\n\n\tpublic handleElement(element: HTMLElement): void {\n\t\tthis.analyizeElement(element, (e) => {\n\t\t\tthis.dispatchEvent(new Event(UkuEventType.HANDLE_ELEMENT_COMPLETED, e));\n\t\t});\n\t}\n\n\tpublic registerController(instanceName: string, controllerInst: Object): void {\n\t\twindow[instanceName] = controllerInst;\n\t\tthis._internal_getDefinitionManager().addControllerDefinition(instanceName, controllerInst);\n\t}\n\n\tpublic getController(instanceName: string) {\n\t\treturn this._internal_getDefinitionManager().getControllerDefinition(instanceName).controllerInstance;\n\t}\n\n\tpublic registerComponent(tag: string, templateUrl: string, preload: boolean): void {\n\t\tvar p: Promise = this._internal_getDefinitionManager().addComponentDefinition(tag, templateUrl, preload);\n\t\tthis.promiseArray.push(p);\n\t}\n\n\tpublic getComponent(tagName: string) {\n\t\treturn this._internal_getDefinitionManager().getComponent(tagName);\n\t}\n\n\tpublic getComponentController(componentId: string): Object {\n\t\treturn this._internal_getDefinitionManager().getControllerInstByDomId(componentId);\n\t}\n\n\tpublic refresh(alias?: string | Array, excludeElement?: HTMLElement) {\n\t\tif (!this.dirtyChecker) {\n\t\t\tthis.dirtyChecker = new DirtyChecker(this);\n\t\t}\n\t\tthis.dirtyChecker.runDirtyChecking(alias, excludeElement);\n\t}\n\t//internal function\n\tpublic _internal_getDefinitionManager(): DefinitionManager {\n\t\tif (!this.defMgr) {\n\t\t\tthis.defMgr = new DefinitionManager(this);\n\t\t}\n\t\treturn this.defMgr;\n\t}\n\tpublic _internal_dealWithElement(element: HTMLElement, callback: Function): void {\n\t\tthis.analyizeElement(element, callback);\n\t}\n\n\tprivate manageApplication(): void {\n\t\tlet apps: NodeList = Selector.querySelectorAll(document, \"[uku-application]\");\n\t\tif (apps.length === 1) {\n\t\t\tthis.analyizeElement(apps[0] as HTMLElement, (ele) => {\n\t\t\t\tthis.dispatchEvent(new Event(UkuEventType.INITIALIZED, ele));\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new Error(\"Only one 'uku-application' can be declared in a whole html.\");\n\t\t}\n\t}\n\tprivate analyizeElement(element: HTMLElement, callback?: Function): void {\n\t\tlet anylyzer = new Analyzer(this);\n\t\tif (callback) {\n\t\t\t((retFunc: Function) => {\n\t\t\t\tanylyzer.addListener(Analyzer.ANALYIZE_COMPLETED, (e) => {\n\t\t\t\t\tretFunc(e.element);\n\t\t\t\t});\n\t\t\t})(callback);\n\t\t}\n\t\tanylyzer.analyizeElement(element);\n\t}\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/Ukulele.ts","import {ObjectUtil} from \"../util/ObjectUtil\";\nimport {Ajax} from \"../extend/Ajax\";\nimport {ControllerModel} from \"../model/ControllerModel\";\nimport {ComponentModel} from \"../model/ComponentModel\";\nimport {ComponentPoolItem} from \"../model/ComponentPoolItem\";\nimport {ComponentConfiguration} from \"../model/ComponentConfiguration\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {IUkulele} from \"./IUkulele\";\nexport class DefinitionManager{\n\tprivate uku:IUkulele;\n\tconstructor(_uku:IUkulele){\n\t\tthis.uku = _uku;\n\t}\n private controllersDefinition:Object = {};\n\tprivate componentsDefinition:Object = {};\n\tprivate componentsPool:Object = {};\n\tprivate copyControllers:Object = {};\n\tprivate dependentScriptsCache:Object = {};\n private ajax:Ajax = new Ajax();\n\n getComponentsDefinition():Object{\n return this.componentsDefinition;\n }\n\t\n\tgetComponentsPool():Object{\n\t\treturn this.componentsPool;\n\t}\n\t\n\tsetComponentsPool(pool):void{\n\t\tthis.componentsPool = pool;\n\t}\n\t\n setComponentsDefinition(value:Object):void{\n this.componentsDefinition = value;\n }\n\n\tgetComponentDefinition(tagName:string):ComponentModel{\n\t\treturn this.componentsDefinition[tagName] as ComponentModel;\n\t}\n\n getControllerDefinition(instanceName:string):ControllerModel{\n return this.controllersDefinition[instanceName] as ControllerModel;\n }\n\n\tgetControllersDefinition():Object{\n\t\treturn this.controllersDefinition;\n\t}\n\n\tgetComponent(tagName:string){\n\t\treturn this.componentsPool[tagName];\n\t}\n\n getCopyControllers():Object{\n return this.copyControllers;\n }\n\n copyAllController():void{\n\t\tfor (let alias in this.controllersDefinition) {\n\t\t\tlet controllerModel = this.controllersDefinition[alias];\n\t\t\tlet controller = controllerModel.controllerInstance;\n\t\t\tthis.copyControllerInstance(controller, alias);\n\t\t}\n\t}\n\n\tcopyControllerInstance(controller:Object, alias:string):void{\n\t\tlet previousCtrlInst = ObjectUtil.deepClone(controller);\n\t\tdelete this.copyControllers[alias];\n\t\tthis.copyControllers[alias] = previousCtrlInst;\n\t}\n\n addControllerDefinition(instanceName:string, controllerInst):void{\n let controllerModel = new ControllerModel(instanceName, controllerInst);\n\t\tcontrollerInst._alias = instanceName;\n\t\tthis.controllersDefinition[instanceName] = controllerModel;\n\t}\n\t\n\tgetControllerInstByDomId(domId:string):Object{\n\t\tfor (let alias in this.controllersDefinition) {\n\t\t\tlet controllerModel = this.controllersDefinition[alias];\n\t\t\tlet controller = controllerModel.controllerInstance;\n\t\t\tif(controller._dom && controller._dom.id === domId){\n\t\t\t\treturn controller;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t\n addComponentDefinition(tag:string,templateUrl:string,preload:boolean):Promise{\n\t\treturn new Promise((resolve,reject) => {\n\t\t\tif(!preload){\n\t\t\t\tthis.componentsPool[tag] = new ComponentPoolItem(tag,templateUrl,true);\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tthis.componentsPool[tag] = new ComponentPoolItem(tag,templateUrl,false);\n\t\t\t\treturn this.ajax.get(templateUrl).then((result) => {\n\t\t\t\t\tlet componentConfig = UkuleleUtil.getComponentConfiguration(result);\n\t\t\t\t\treturn this.analyizeComponent(tag,componentConfig);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n }\n\n addLazyComponentDefinition(tag:string,templateUrl:string):Promise{\n\t\treturn new Promise((resolve ,reject) => {\n\t\t\treturn this.ajax.get(templateUrl).then((result)=>{\n\t\t\t\tlet componentConfig = UkuleleUtil.getComponentConfiguration(result);\n\t\t\t\treturn this.analyizeComponent(tag,componentConfig).then(()=>{\n\t\t\t\t\tthis.componentsPool[tag] = {'tagName':tag,'templateUrl':templateUrl,'lazy':false};\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\n\n\tgetBoundAttributeValue(attr:string, ...additionalArgu):any{\n\t\tlet controllerModels = this.getControllerModelByName(attr);\n\t\tlet controllers = [];\n\t\tcontrollerModels.forEach( controllerModel => {\n\t\t\tcontrollers.push(controllerModel.controllerInstance);\n\t\t});\n\t\tlet parameters:Array = [this.uku,controllers,attr];\n\t\tparameters = parameters.concat(additionalArgu);\n\t\tlet result = UkuleleUtil.getFinalValue.apply(null,parameters);\n\t\treturn result;\n\t};\n\n\n\tgetControllerModelByName(expression:string):ControllerModel[] {\n\t\treturn this.getBoundControllerModelByName(expression);\n\t};\n\n\n\tgetFinalValueByExpression(expression:string):any{\n\t\tlet controllerModels = this.getControllerModelByName(expression);\n\t\tlet controllers = [];\n\t\tcontrollerModels.forEach( controllerModel => {\n\t\t\tcontrollers.push(controllerModel.controllerInstance);\n\t\t});\n\t\t\n\t\treturn UkuleleUtil.getFinalValue(controllers, expression);\n\t};\n\n private getBoundControllerModelByName(attrName:string):ControllerModel[]{\n\t\tlet alias_list:string[] = Object.keys(this.controllersDefinition);\n\t\tlet instanceNames:string[] = UkuleleUtil.getBoundModelInstantNames(alias_list,attrName);\n\t\tlet arr = [];\n\t\tinstanceNames.forEach(instanceName => {\n\t\t\tlet controllerModel:ControllerModel = this.controllersDefinition[instanceName];\n\t\t\tarr.push(controllerModel);\n\t\t});\n\t\treturn arr;\n\t}\n\t\n private async analyizeComponent(tag:string,config:ComponentConfiguration):Promise{\n\t\tlet deps:Array = config.dependentScripts;\n\t\tlet self:DefinitionManager = this;\n\t\tif(deps && deps.length > 0){\n\t\t\tlet tmpAMD;\n\t\t\tif(typeof window['define'] === 'function' && window['define'].amd){\n\t\t\t\ttmpAMD = window['define'];\n\t\t\t\twindow['define'] = undefined;\n\t\t\t}\n\t\t\tif(!config.componentControllerScript){\n\t\t\t\tlet ccsExternal = deps[deps.length-1];\n\t\t\t\tconfig.componentControllerScript = await this.ajax.get(ccsExternal);\n\t\t\t\tdeps.pop();\n\t\t\t}\n\t\t\tfor (let i = 0; i < deps.length; i++) {\n\t\t\t\tlet dep = deps[i];\n\t\t\t\tawait loadDependentScript(dep);\n\t\t\t}\n\t\t\tif(tmpAMD){\n\t\t\t\twindow['define'] = tmpAMD;\n\t\t\t}\n\t\t\tthis.buildeComponentModel(tag,config.template,config.componentControllerScript,config.stylesheet);\n\t\t\treturn;\n\t\t}else{\n\t\t\tthis.buildeComponentModel(tag,config.template,config.componentControllerScript,config.stylesheet);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tfunction loadDependentScript(src:string):Promise{\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif(!self.dependentScriptsCache[src]){\n\t\t\t\t\tlet head = document.getElementsByTagName('HEAD')[0];\n\t\t\t\t\tlet script = document.createElement('script');\n\t\t\t\t\tscript.type = 'text/javascript';\n\t\t\t\t\tscript.charset = 'utf-8';\n\t\t\t\t\tscript.async = true;\n\t\t\t\t\tscript.src = src;\n\t\t\t\t\tscript.onload = (e)=>{\n\t\t\t\t\t\tself.dependentScriptsCache[e.target['src']] = true;\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\thead.appendChild(script);\n\t\t\t\t}else{\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate buildeComponentModel(tag:string,template:string,script:string,style:string):void{\n\t\tlet debugComment = \"//# sourceURL=\"+tag+\".js\";\n\t\ttry{\n\t\t\tlet controllerClazz\n\t\t\tif(script){\n\t\t\t\tscript += debugComment;\n\t\t\t\tcontrollerClazz = eval(script);\n\t\t\t}\n\t\t\tlet newComp = new ComponentModel(tag, template,controllerClazz);\n\t\t\tthis.componentsDefinition[tag] = newComp;\n\t\t\tif(style){\n\t\t\t\tdealWithShadowStyle(tag,style);\n\t\t\t}\n\t\t}catch(e){\n\t\t\tconsole.error(e);\n\t\t}\n\n\t\tfunction dealWithShadowStyle(tagName:string,stylesheet:string):void{\n\t\t\tlet head = document.getElementsByTagName('HEAD')[0];\n\t\t\tlet style = document.createElement('style');\n\t\t\tstyle.type = 'text/css';\n\t\t\tvar styleArray = stylesheet.split(\"}\");\n\t\t\tvar newArray = [];\n\t\t\tstyleArray.forEach((value:string,index:number)=>{\n\t\t\t\tvar newValue = value.replace(/^\\s*/,\"\");\n\t\t\t\tif(newValue){\n\t\t\t\t\tnewArray.push(newValue);\n\t\t\t\t}\n\t\t\t});\n\t\t\tstylesheet = newArray.join(\"}\\n\" + \".\" + tagName + \" \");\n\t\t\tstylesheet = \".\" + tagName + \" \" + stylesheet + \"}\";\n\t\t\tstyle.innerHTML = stylesheet;\n\t\t\thead.appendChild(style);\n\t\t}\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/DefinitionManager.ts","export class Ajax {\n get(url:string):Promise {\n return new Promise((resolve, reject)=>{\n let request:XMLHttpRequest = new XMLHttpRequest();\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n resolve(request.responseText);\n } else {\n reject();\n }\n }\n };\n request.open(\"GET\", url, true);\n request.send(null);\n });\n \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/extend/Ajax.ts","import {BoundItemBase} from \"./BoundItemBase\";\nexport class ControllerModel{\n alias:string;\n controllerInstance:Object;\n boundItems:Array;\n constructor(alias:string ,ctrlInst:Object){\n this.alias = alias;\n this.controllerInstance = ctrlInst;\n this.boundItems = [];\n }\n addBoundItem(boundItem:BoundItemBase) :void{\n this.boundItems.push(boundItem);\n }\n\n getBoundItemsByName(name):Array {\n let tempBoundItems:Array = [];\n for (let i = 0; i < this.boundItems.length; i++) {\n let boundItem:BoundItemBase = this.boundItems[i];\n if (boundItem.attributeName === name) {\n tempBoundItems.push(boundItem);\n }\n }\n return tempBoundItems;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/ControllerModel.ts","export class ComponentModel{\n tagName:string;\n template:string;\n controllerClazz:Function;\n constructor(tagName,template,clazz){\n this.tagName = tagName;\n this.template = template;\n this.controllerClazz = clazz;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/ComponentModel.ts","export class ComponentPoolItem{\n tagName:string;\n templateUrl:string;\n lazy:boolean;\n \n constructor(_tagName,_templateUrl,_lazy){\n this.tagName = _tagName;\n this.templateUrl = _templateUrl;\n this.lazy = _lazy;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/ComponentPoolItem.ts","export class ComponentConfiguration{\n template:string;\n dependentScripts:Array;\n componentControllerScript:string;\n stylesheet:string;\n \n constructor(_template:string,_dependentScripts:Array,_componentControllerScript:string,_stylesheet:string = undefined){\n this.template = _template;\n this.dependentScripts = _dependentScripts;\n this.componentControllerScript = _componentControllerScript;\n this.stylesheet = _stylesheet;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/ComponentConfiguration.ts","import {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {ObjectUtil} from \"../util/ObjectUtil\";\nimport {UkuEventType} from \"./UkuEventType\";\nimport {IUkulele} from \"./IUkulele\";\nimport {EventEmitter} from \"./EventEmitter\";\nimport {ControllerModel} from \"../model/ControllerModel\";\nimport {BoundItemBase} from \"../model/BoundItemBase\";\nimport {Event} from \"./Event\";\nexport class DirtyChecker{\n\tprivate uku:IUkulele;\n\tprivate defMgr;\n\tconstructor(_uku:IUkulele){\n\t\tthis.uku = _uku;\n\t\tthis.defMgr = this.uku._internal_getDefinitionManager();\n\t}\n \n\trunDirtyChecking(ctrlAliasName?:string|Array, excludeElement?:HTMLElement):void {\n\t\tlet _this:DirtyChecker = this;\n\t\tif (ctrlAliasName) {\n\t\t\tif (typeof (ctrlAliasName) === \"string\") {\n\t\t\t\twatchController(ctrlAliasName as string);\n\t\t\t} else if (ObjectUtil.isArray(ctrlAliasName)) {\n\t\t\t\tfor (let i = 0; i < ctrlAliasName.length; i++) {\n\t\t\t\t\twatchController(ctrlAliasName[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let alias in this.defMgr.getControllersDefinition()) {\n\t\t\t\twatchController(alias);\n\t\t\t}\n\t\t}\n\n\t\tfunction watchController(alias:string) {\n\t\t\tlet controllerModel:ControllerModel = _this.defMgr.getControllersDefinition()[alias];\n\t\t\tif (!controllerModel) {\n\t\t\t\tif (_this.uku.parentUku) {\n\t\t\t\t\t_this.uku.parentUku.refresh(alias);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet controller:Object = controllerModel.controllerInstance;\n\t\t\tlet previousCtrlModel:ControllerModel = _this.defMgr.getCopyControllers()[alias];\n\t\t\tlet changedElementCount = 0;\n\t\t\tfor (let i = 0; i < controllerModel.boundItems.length; i++) {\n\t\t\t\tlet boundItem:BoundItemBase = controllerModel.boundItems[i] as BoundItemBase;\n\t\t\t\tlet attrName:string = boundItem.attributeName;\n\t\t\t\tif(attrName.search('parent.') > -1){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (previousCtrlModel) {\n\t\t\t\t\tif (boundItem.hasOwnProperty('ukuTag') && boundItem['ukuTag'] === \"selected\") {\n\t\t\t\t\t\tattrName = attrName.split(\"|\")[0];\n\t\t\t\t\t}\n\t\t\t\t\tlet finalValue = UkuleleUtil.getFinalValue( [controller], attrName);\n\t\t\t\t\tlet previousFinalValue = UkuleleUtil.getFinalValue([previousCtrlModel], attrName);\n\t\t\t\t\tif (!ObjectUtil.compare(previousFinalValue, finalValue)) {\n\t\t\t\t\t\tattrName = boundItem.attributeName;\n\t\t\t\t\t\tlet changedBoundItems:Array = controllerModel.getBoundItemsByName(attrName);\n\t\t\t\t\t\tfor (let j = 0; j < changedBoundItems.length; j++) {\n\t\t\t\t\t\t\tlet changedBoundItem:BoundItemBase = changedBoundItems[j] as BoundItemBase;\n\t\t\t\t\t\t\tif(changedBoundItem.element !== excludeElement || (boundItem.hasOwnProperty('ukuTag') && changedBoundItem['ukuTag'] !== \"value\")){\n\t\t\t\t\t\t\t\tchangedElementCount++;\n\t\t\t\t\t\t\t\tchangedBoundItem.render([controller]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(changedElementCount > 0 && _this.uku.hasListener(UkuEventType.REFRESH)){\n\t\t\t\t_this.uku.dispatchEvent(new Event(UkuEventType.REFRESH));\n\t\t\t}\n\t\t\t_this.defMgr.copyControllerInstance(controller, alias);\n\t\t}\n\t};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/DirtyChecker.ts","import { EventEmitter } from \"./EventEmitter\";\nimport { UkuleleUtil } from \"../util/UkuleleUtil\";\nimport { BoundItemAttributeFactory } from './BoundItemAttributeFactory';\nimport { BoundItemExpression } from '../model/BoundItemExpression';\nimport { BoundItemInnerText } from '../model/BoundItemInnerText';\nimport { BoundItemRepeat } from '../model/BoundItemRepeat';\nimport { BoundItemComponentAttribute } from \"../model/BoundItemComponentAttribute\";\nimport { elementChangedBinder } from \"./ElementActionBinder\";\nimport { IUkulele } from \"./IUkulele\";\nimport { EventListener } from \"../extend/EventListener\";\nimport { Selector } from \"../extend/Selector\";\nimport { Event as UkuEvent } from \"./Event\";\nexport class Analyzer extends EventEmitter {\n private uku: IUkulele;\n private defMgr;\n static ANALYIZE_COMPLETED: string = 'analyizeCompleted';\n constructor(_uku: IUkulele) {\n super();\n this.uku = _uku;\n this.defMgr = this.uku._internal_getDefinitionManager();\n }\n\n public analyizeElement(ele): void {\n this.searchComponent(ele).then((element) => {\n this.searchExpression(element);\n this.searchUkuAttribute(element);\n this.defMgr.copyAllController();\n if (this.hasListener(Analyzer.ANALYIZE_COMPLETED)) {\n this.dispatchEvent(new UkuEvent(Analyzer.ANALYIZE_COMPLETED, element));\n }\n });\n }\n\n private sortAttributes(subElement): Array {\n let orderAttrs = [];\n for (let i = 0; i < subElement.attributes.length; i++) {\n let attribute = subElement.attributes[i];\n if (attribute.nodeName.search(\"uku-on\") !== -1) {\n orderAttrs.push(attribute);\n } else {\n orderAttrs.unshift(attribute);\n }\n }\n return orderAttrs;\n }\n\n private searchUkuAttribute(element): void {\n let subElements = [];\n //scan element which has uku-* tag\n let isSelfHasUkuTag = Selector.fuzzyFind(element, 'uku-');\n if (isSelfHasUkuTag) {\n subElements.push(isSelfHasUkuTag);\n }\n let allChildren = Selector.querySelectorAll(element, \"*\");\n for (let i = 0; i < allChildren.length; i++) {\n let child: HTMLElement = allChildren[i] as HTMLElement;\n let matchElement = Selector.fuzzyFind(child, 'uku-');\n if (matchElement && !UkuleleUtil.isInRepeat(matchElement)) {\n subElements.push(matchElement);\n }\n }\n //解析绑定 attribute,注册event\n for (let n = 0; n < subElements.length; n++) {\n let subElement = subElements[n];\n let orderAttrs = this.sortAttributes(subElement);\n for (let j = 0; j < orderAttrs.length; j++) {\n let attribute = orderAttrs[j];\n if (UkuleleUtil.searchUkuAttrTag(attribute.nodeName) > -1) {\n let tempArr = attribute.nodeName.split('-');\n tempArr.shift();\n let attrName = tempArr.join('-');\n if (attrName !== \"application\") {\n if (attrName.search('on') === 0) {\n //is an event\n if (!UkuleleUtil.isRepeat(subElement) && !UkuleleUtil.isInRepeat(subElement)) {\n this.dealWithEvent(subElement, attrName);\n }\n } else if (attrName.search('repeat') !== -1) {\n //is an repeat\n this.dealWithRepeat(subElement);\n } else {\n //is an attribute\n if (!UkuleleUtil.isRepeat(subElement) && !UkuleleUtil.isInRepeat(subElement)) {\n if (attrName !== \"text\") {\n this.dealWithAttribute(subElement, attrName);\n } else {\n this.dealWithInnerText(subElement);\n }\n }\n }\n }\n }\n }\n }\n }\n\n\n private async searchComponent(element): Promise {\n let comp = this.defMgr.getComponent(element.localName);\n if (comp) {\n if (!comp.lazy) {\n let attrs = element.attributes;\n let compDef = this.defMgr.getComponentsDefinition()[comp.tagName];\n if (!UkuleleUtil.isRepeat(element) && !UkuleleUtil.isInRepeat(element)) {\n return this.dealWithComponent(element, compDef.template, compDef.controllerClazz, attrs);\n } else {\n return element;\n }\n } else {\n await this.defMgr.addLazyComponentDefinition(comp.tagName, comp.templateUrl);\n let attrs = element.attributes;\n let compDef = this.defMgr.getComponentsDefinition()[comp.tagName];\n if (!UkuleleUtil.isRepeat(element) && !UkuleleUtil.isInRepeat(element)) {\n return this.dealWithComponent(element, compDef.template, compDef.controllerClazz, attrs);\n } else {\n return element;\n }\n }\n } else {\n if (element.children && element.children.length > 0) {\n for (let i = 0; i < element.children.length; i++) {\n let child = element.children[i];\n await this.searchComponent(child);\n }\n return element;\n } else {\n return element;\n }\n }\n }\n\n private async dealWithComponent(tag, template, Clazz, attrs): Promise {\n let randomAlias = 'cc_' + Math.floor(10000 * Math.random()).toString();\n\n //should consider white space between characters\n template = template.replace(new RegExp(\"\\'cc\\\\.\", 'gm'), \"'\" + randomAlias + '.');\n template = template.replace(new RegExp('\"cc\\\\.', 'gm'), '\"' + randomAlias + '.');\n template = template.replace(new RegExp('\\{\\{cc\\\\.', 'gm'), \"{{\" + randomAlias + '.');\n template = template.replace(new RegExp(' cc\\\\.', 'gm'), ' ' + randomAlias + '.');\n template = template.replace(new RegExp('\\\\(cc\\\\.', 'gm'), '(' + randomAlias + '.');\n template = template.replace(new RegExp('\\\\,cc\\\\.', 'gm'), ',' + randomAlias + '.');\n template = template.replace(new RegExp('\\\\.cc\\\\.', 'gm'), '.' + randomAlias + '.');\n let tempFragment = document.createElement('div');\n tempFragment.insertAdjacentHTML('afterBegin' as InsertPosition, template);\n if (tempFragment.children.length > 1) {\n template = tempFragment.outerHTML;\n }\n tag.insertAdjacentHTML('beforeBegin', template);\n let htmlDom = tag.previousElementSibling;\n htmlDom.classList.add(tag.localName);\n let cc;\n if (Clazz) {\n cc = new Clazz(this.uku);\n cc._dom = htmlDom;\n cc.fire = (eventType: string, data: any, bubbles: boolean = false, cancelable: boolean = true) => {\n let event = new CustomEvent(eventType.toLowerCase(), { \"bubbles\": bubbles, \"cancelable\": cancelable });\n event['data'] = data;\n cc._dom.dispatchEvent(event);\n };\n this.uku.registerController(randomAlias, cc);\n for (let i = 0; i < attrs.length; i++) {\n let attr = attrs[i];\n //todo need Refactor\n if (UkuleleUtil.searchUkuAttrTag(attr.nodeName) !== 0\n || attr.nodeName.search(\"uku-on\") !== -1\n || attr.nodeName === \"uku-render\"\n || attr.nodeName === \"uku-visible\") {\n htmlDom.setAttribute(attr.nodeName, attr.nodeValue);\n } else {\n let tagName = UkuleleUtil.getAttrFromUkuTag(attr.nodeName, true);\n let controllerModels = this.defMgr.getControllerModelByName(attr.nodeValue);\n if (controllerModels && controllerModels.length > 0) {\n let boundItem = new BoundItemComponentAttribute(attr.nodeValue, tagName, cc, this.uku);\n let controllers = [];\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n controllers.push(controllerModel.controllerInstance);\n });\n \n boundItem.render(controllers);\n }\n }\n }\n } else {\n for (let i = 0; i < attrs.length; i++) {\n let attr = attrs[i];\n //todo:need Refactor\n if (UkuleleUtil.searchUkuAttrTag(attr.nodeName) !== 0\n || attr.nodeName.search(\"uku-on\") !== -1\n || attr.nodeName === \"uku-render\"\n || attr.nodeName === \"uku-visible\") {\n htmlDom.setAttribute(attr.nodeName, attr.nodeValue);\n }\n }\n }\n\n tag.parentNode.removeChild(tag);\n if (htmlDom.children && htmlDom.children.length > 0) {\n for (let j = 0; j < htmlDom.children.length; j++) {\n let child = htmlDom.children[j];\n await this.searchComponent(child);\n }\n if (cc && cc._initialized && typeof (cc._initialized) === 'function') {\n cc._initialized(randomAlias,cc._dom);\n }\n return htmlDom;\n } else {\n if (cc && cc._initialized && typeof (cc._initialized) === 'function') {\n cc._initialized(randomAlias,cc._dom);\n }\n return htmlDom;\n }\n }\n //todo: 处理 tag之间使用{{}}括起的表达式,用以显示文字\n private searchExpression(element: HTMLElement): void {\n if (UkuleleUtil.searchUkuExpTag(Selector.directText(element)) !== -1) {\n if (!UkuleleUtil.isRepeat(element) && !UkuleleUtil.isInRepeat(element)) {\n //normal expression\n this.dealWithExpression(element);\n }\n }\n for (let i = 0; i < element.children.length; i++) {\n this.searchExpression(element.children[i] as HTMLElement);\n }\n\n\n }\n\n private dealWithExpression(element) {\n //通常的花括号声明方式\n let expression = Selector.directText(element);\n if (UkuleleUtil.searchUkuExpTag(expression) !== -1) {\n let attr = expression.slice(2, -2);\n let controllerModels = this.defMgr.getControllerModelByName(attr);\n if (controllerModels && controllerModels.length > 0) {\n let boundItem = new BoundItemExpression(attr, expression, element, this.uku);\n let controllers = [];\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n controllers.push(controllerModel.controllerInstance);\n }); \n boundItem.render(controllers);\n }\n }\n }\n\n //处理绑定的attribute\n private dealWithAttribute: Function = function (element, tagName) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n //let elementName = element.tagName;\n let controllerModels = this.defMgr.getControllerModelByName(attr);\n if (controllerModels && controllerModels.length > 0) {\n let boundItem = BoundItemAttributeFactory.getInstance().generateInstance(attr, tagName, element, this.uku);\n let controllers = [];\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n elementChangedBinder(element, tagName, controllerModel, this.uku.refresh, this.uku);\n controllers.push(controllerModel.controllerInstance)\n }); \n boundItem.render(controllers);\n \n }\n }\n\n //处理 uku-text\n private dealWithInnerText(element) {\n let attr = element.getAttribute(\"uku-text\");\n if (attr) {\n let controllerModels = this.defMgr.getControllerModelByName(attr);\n if (controllerModels && controllerModels.length > 0) {\n let boundItem = new BoundItemInnerText(attr, element, this.uku);\n let controllers = [];\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n controllers.push(controllerModel.controllerInstance);\n });\n boundItem.render(controllers);\n }\n }\n }\n\n\n //处理 事件 event\n private dealWithEvent(element, eventName) {\n let expression = element.getAttribute(\"uku-\" + eventName);\n let eventNameInListener = eventName.substring(2);\n eventNameInListener = eventNameInListener.toLowerCase();\n let controllerModels = this.defMgr.getControllerModelByName(expression);\n if(!controllerModels || controllerModels.length === 0){\n controllerModels = [];\n } \n EventListener.addEventListener(element, eventNameInListener, (event) => {\n let alias_list = [];\n controllerModels.forEach(controllerModel => {\n this.defMgr.copyControllerInstance(controllerModel.controllerInstance, controllerModels.alias);\n alias_list.push(controllerModel.alias);\n });\n \n let index = UkuleleUtil.searchUkuFuncArg(expression);\n if(index === -1){\n // is an expression, not a function\n let handler = new Function(\"event\",\"return \" + expression);\n console.log(handler.toString());\n handler(event);\n }else{\n // is a function\n let i = expression.search(/\\(/);\n let arg = 'event';\n if(expression[i+1] !== ')'){\n // has argument\n arg = 'event,'\n }\n let arr = expression.split('(');\n arr[1] = arg + arr[1];\n let new_expression = arr.join(\"(\");\n (function(e){\n let tempScope = {};\n tempScope['event'] = e;\n eval(new_expression);\n tempScope = null;\n })(event);\n }\n this.uku.refresh(alias_list, element);\n });\n }\n //处理 repeat\n private dealWithRepeat(element) {\n let repeatExpression = element.getAttribute(\"uku-repeat\");\n let tempArr = repeatExpression.split(' in ');\n let itemName = tempArr[0];\n let attr = tempArr[1];\n let controllerModels = this.defMgr.getControllerModelByName(attr);\n if (controllerModels && controllerModels.length > 0) {\n let controllers = [];\n //let controllerInst = controllerModel.controllerInstance;\n let boundItem = new BoundItemRepeat(attr, itemName, element, this.uku);\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n controllers.push(controllerModel.controllerInstance);\n }); \n boundItem.render(controllers);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/Analyzer.ts","import {BountItemAttrSelected} from \"../model/directive/BoundItemAttrSelected\";\nimport {BoundItemAttrDataItem} from \"../model/directive/BoundItemAttrDataItem\";\nimport {BoundItemAttrSrc} from \"../model/directive/BoundItemAttrSrc\";\nimport {BoundItemAttrDisabled} from \"../model/directive/BoundItemAttrDisabled\";\nimport {BoundItemAttrRender} from \"../model/directive/BoundItemAttrRender\";\nimport {BoundItemAttrStyle} from \"../model/directive/BoundItemAttrStyle\";\nimport {BoundItemAttrValue} from \"../model/directive/BoundItemAttrValue\";\nimport {BoundItemAttrVisible} from \"../model/directive/BoundItemAttrVisible\";\nimport {BoundItemAttribute} from \"../model/BoundItemAttribute\";\nexport class BoundItemAttributeFactory{\n private static _instance = new BoundItemAttributeFactory();\n constructor(){\n if(BoundItemAttributeFactory._instance){\n throw new Error(\"Error: Instantiation failed: Use BoundItemAttributeFactory.getInstance() instead of new.\"); \n }\n BoundItemAttributeFactory._instance = this;\n\n }\n static getInstance():BoundItemAttributeFactory{\n return BoundItemAttributeFactory._instance;\n }\n generateInstance(attr, tagName, element, uku){\n let instance;\n switch (tagName) {\n case \"selected\":\n instance = new BountItemAttrSelected(attr, tagName, element, uku);\n break;\n case \"data-item\":\n instance = new BoundItemAttrDataItem(attr, tagName, element, uku);\n break;\n case \"src\":\n instance = new BoundItemAttrSrc(attr, tagName, element, uku);\n break;\n case \"disabled\":\n instance = new BoundItemAttrDisabled(attr, tagName, element, uku);\n break;\n case \"render\":\n instance = new BoundItemAttrRender(attr, tagName, element, uku);\n break;\n case \"style\":\n instance = new BoundItemAttrStyle(attr, tagName, element, uku);\n break;\n case \"value\":\n instance = new BoundItemAttrValue(attr, tagName, element, uku);\n break;\n case \"visible\":\n instance = new BoundItemAttrVisible(attr, tagName, element, uku);\n break;\n default:\n instance = new BoundItemAttribute(attr, tagName, element, uku);\n }\n return instance;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/BoundItemAttributeFactory.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BountItemAttrSelected extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"selected\"){\n throw new TypeError(\"it doesn't use uku-selected\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let key:string;\n let elementName:string = this.element.tagName;\n if(elementName === \"SELECT\"){\n let tempArr:Array = this.attributeName.split(\"|\");\n attr = tempArr[0];\n key = tempArr[1];\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n let value;\n \tif(key){\n \t\tvalue = finalValue[key];\n \t}else{\n \t\tvalue = finalValue;\n \t}\n (this.element as HTMLSelectElement).value = value;\n }\n\n if(elementName === \"INPUT\" && this.element.getAttribute(\"type\") === \"radio\"){\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if((this.element as HTMLInputElement).value === finalValue){\n (this.element as HTMLInputElement).setAttribute(\"checked\",\"true\");\n }\n } \n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrSelected.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrDataItem extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"data-item\"){\n throw new TypeError(\"it doesn't use uku-item\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(elementName === \"OPTION\"){\n \tfinalValue = JSON.stringify(finalValue);\n this.element.setAttribute('data-item',finalValue);\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrDataItem.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrSrc extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"src\"){\n throw new TypeError(\"it doesn't use uku-src\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(elementName === \"IMG\"){\n \t\tif(finalValue){\n this.element.setAttribute(this.ukuTag,finalValue);\n }\n \t}else{\n throw new Error(\"uku-src doesn't work with current dom\");\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrSrc.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrDisabled extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"disabled\"){\n throw new TypeError(\"it doesn't use uku-disabled\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n (this.element as HTMLInputElement).disabled = finalValue;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrDisabled.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrRender extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"render\"){\n throw new TypeError(\"it doesn't use uku-render\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(finalValue){\n let oldDisplaySetting = this.element.getAttribute(\"data-old-display\");\n if(oldDisplaySetting !== null){\n this.element.style.display = oldDisplaySetting;\n }\n }else{\n let oldDisplaySetting = this.element.getAttribute(\"data-old-display\");\n if(oldDisplaySetting === null){\n oldDisplaySetting = this.element.style.display;\n this.element.setAttribute(\"data-old-display\",oldDisplaySetting);\n }\n this.element.style.display = \"none\";\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrRender.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrStyle extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"style\"){\n throw new TypeError(\"it doesn't use uku-style\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n for(let cssName in finalValue){\n this.element.style[cssName] = finalValue[cssName];\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrStyle.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrValue extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"value\"){\n throw new TypeError(\"it doesn't use uku-value\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(elementName === \"INPUT\" && this.element.getAttribute(\"type\") === \"checkbox\"){\n \t\t(this.element as HTMLInputElement).checked = finalValue;\n \t}\n \telse{\n (this.element as HTMLInputElement).value = finalValue;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrValue.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrVisible extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"visible\"){\n throw new TypeError(\"it doesn't use uku-visible\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(finalValue){\n this.element.style.visibility = \"visible\";\n }else{\n this.element.style.visibility = \"hidden\";\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrVisible.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {Selector} from \"../extend/Selector\";\nimport {IUkulele} from \"../core/IUkulele\";\nexport class BoundItemExpression extends BoundItemBase{\n expression:string;\n constructor(attrName:string, expression:string, element:HTMLElement, uku:IUkulele){\n super(attrName,element,uku);\n this.expression = expression;\n }\n\n render(controllers) :void{\n let finalValue = UkuleleUtil.getFinalValue(controllers,this.attributeName);\n Selector.directText(this.element,finalValue);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemExpression.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {IUkulele} from \"../core/IUkulele\";\nexport class BoundItemInnerText extends BoundItemBase{\n tagName:string;\n constructor(attrName:string, element:HTMLElement, uku:IUkulele){\n super(attrName,element,uku);\n this.tagName = 'text';\n }\n\n render(controllers):void {\n let finalValue = UkuleleUtil.getFinalValue(controllers,this.attributeName);\n this.element.innerHTML = finalValue;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemInnerText.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {IUkulele} from \"../core/IUkulele\";\n\nexport class BoundItemRepeat extends BoundItemBase{\n expression:string;\n renderTemplate:string;\n parentElement:Node;\n beginCommentString:string;\n endCommentString:string;\n constructor(attrName, itemName, element, uku){\n super(attrName, element, uku);\n this.expression = itemName;\n this.renderTemplate = element.outerHTML;\n this.parentElement = element.parentNode;\n this.beginCommentString = undefined;\n this.endCommentString = undefined;\n }\n\n render(controllers) {\n let finalValue = UkuleleUtil.getFinalValue(controllers, this.attributeName);\n if (!finalValue) {\n return;\n }\n\n let self = this;\n if (this.element && this.element.parentNode) {\n //create repeate begin comment\n this.beginCommentString = \"begin uku-repeat: \" + this.expression + \" in \" + this.attributeName;\n let beginComment = document.createComment(this.beginCommentString);\n this.element.parentNode.insertBefore(beginComment, this.element);\n //create repeate end comment\n this.endCommentString = \"end uku-repeat: \" + this.expression + \" in \" + this.attributeName;\n let endComment = document.createComment(this.endCommentString);\n this.element.parentNode.insertBefore(endComment, this.element.nextSibling);\n //remove definition dom\n this.element.parentNode.removeChild(this.element);\n }\n let filter:NodeFilter = {acceptNode: function(node){\n if (node.nodeValue === self.beginCommentString) {\n return NodeFilter.FILTER_ACCEPT;\n }\n return NodeFilter.FILTER_SKIP;\n }};\n let safeFilter:any = filter.acceptNode;\n safeFilter.acceptNode = filter.acceptNode;\n let treeWalker = document.createTreeWalker(this.parentElement,\n NodeFilter.SHOW_COMMENT,\n safeFilter,\n false);\n \n /*function filter(node:Node) :any{\n if (node.nodeValue === self.beginCommentString) {\n return (NodeFilter.FILTER_ACCEPT);\n }\n return (NodeFilter.FILTER_SKIP);\n }*/\n\n function generateTempContainer():HTMLElement{\n let index = UkuleleUtil.searchHtmlTag(self.renderTemplate,\"tr\");\n if(index === -1){\n return document.createElement(\"div\");\n }else{\n return document.createElement(\"tbody\");\n }\n }\n\n while (treeWalker.nextNode()) {\n let commentNode = treeWalker.currentNode;\n if (commentNode && commentNode.nodeValue === this.beginCommentString) {\n //remove overtime dom.\n while (commentNode.nextSibling && commentNode.nextSibling.nodeValue !== this.endCommentString) {\n commentNode.parentNode.removeChild(commentNode.nextSibling);\n }\n //create new dom\n let tempDiv = generateTempContainer();\n let blankDiv = generateTempContainer();\n commentNode.parentNode.insertBefore(blankDiv, commentNode.nextSibling);\n for (let i = 0; i < finalValue.length; i++) {\n tempDiv.insertAdjacentHTML('beforeEnd' as InsertPosition, this.renderTemplate);\n if (i === finalValue.length - 1) {\n let childrenHTML = tempDiv.innerHTML;\n blankDiv.insertAdjacentHTML('beforeBegin' as InsertPosition, childrenHTML);\n commentNode.parentNode.removeChild(blankDiv);\n tempDiv = null;\n blankDiv = null;\n }\n }\n\n let child:HTMLElement = commentNode.nextSibling as HTMLElement;\n for (let j = 0; j < finalValue.length; j++) {\n child.removeAttribute(\"uku-repeat\");\n var Uku_Clazz = (this.uku).constructor;\n let ukulele:IUkulele = new Uku_Clazz(); //new Ukulele();\n ukulele.parentUku = this.uku;\n let compDef = ukulele.parentUku._internal_getDefinitionManager().getComponentsDefinition();\n let compPool = ukulele.parentUku._internal_getDefinitionManager().getComponentsPool();\n ukulele._internal_getDefinitionManager().setComponentsDefinition(compDef);\n ukulele._internal_getDefinitionManager().setComponentsPool(compPool);\n let sibling:HTMLElement = child.nextSibling as HTMLElement;\n let itemType = typeof finalValue[j];\n let alias = \"repeatItem_\"+Math.floor(10000 * Math.random()).toString() + \"_\" + this.expression;\n if(itemType === \"object\"){\n ukulele.registerController(alias, finalValue[j]);\n }else {\n ukulele.registerController(alias, {'value':finalValue[j]});\n alias = alias + \".value\";\n }\n let pattern = new RegExp(\"\\\\b\"+ this.expression + \"(?!\\\\-|\\\\s|\\\\w|\\\\=)\",\"gm\");\n let newOuterHtml = child.outerHTML.replace(pattern,alias);\n child.insertAdjacentHTML('afterend',newOuterHtml);\n let newItemDom:HTMLElement = child.nextSibling as HTMLElement;\n child.parentNode.removeChild(child);\n child = newItemDom;\n ukulele._internal_dealWithElement(child,(element)=>{\n if (this.element.tagName === \"OPTION\") {\n let expression = (this.parentElement as HTMLInputElement).getAttribute(\"uku-selected\");\n let tempArr = expression.split(\"|\");\n expression = tempArr[0];\n let key = tempArr[1];\n let value = this.uku._internal_getDefinitionManager().getFinalValueByExpression(expression);\n if (key) {\n (this.parentElement as HTMLInputElement).value = value[key];\n } else {\n (this.parentElement as HTMLInputElement).value = value;\n }\n }\n });\n child = sibling;\n }\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemRepeat.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {IUkulele} from \"../core/IUkulele\";\nexport class BoundItemComponentAttribute extends BoundItemBase{\n ukuTag:string;\n componentController:any;\n constructor(attrName:string, ukuTag:string, cc:any, uku:IUkulele){\n super(attrName,null,uku);\n this.ukuTag = ukuTag;\n this.componentController = cc;\n }\n render(controllers) :void{\n let finalValue = UkuleleUtil.getFinalValue(controllers,this.attributeName);\n this.componentController[this.ukuTag] = finalValue;\n this.uku.refresh(this.componentController._alias);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemComponentAttribute.ts","import { UkuleleUtil } from '../util/UkuleleUtil';\nimport { EventListener } from '../extend/EventListener';\nimport { Selector } from '../extend/Selector';\n\nfunction elementChangedBinder(element, tagName, controllerModel, handler, host) {\n let elementStrategies = [inputTextCase, textareaCase, selectCase, checkboxCase, radioCase];\n for (let i = 0; i < elementStrategies.length; i++) {\n let func = elementStrategies[i];\n let goon = func.apply(this, arguments);\n if (goon) {\n break;\n }\n }\n}\n\n\nfunction inputTextCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n if (elementName === \"INPUT\" && isSupportInputType(element) && tagName === \"value\") {\n let eventType = 'change';\n let inputType = element.getAttribute('type');\n if (inputType === \"text\") {\n eventType = 'input';\n }\n EventListener.addEventListener(element, eventType, (e) => {\n let attr = element.getAttribute(\"uku-\" + tagName);\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n });\n return true;\n }\n return false;\n}\n\nfunction isSupportInputType(element) {\n let type = element.getAttribute(\"type\");\n if (type !== \"checkbox\" && type !== \"radio\") {\n return true;\n }\n return false;\n}\n\nfunction textareaCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n if (elementName === \"TEXTAREA\" && tagName === \"value\") {\n EventListener.addEventListener(element, 'input', function (e) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n });\n return true;\n }\n return false;\n}\n\nfunction selectCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n if ((elementName === \"SELECT\" && tagName === \"selected\")) {\n EventListener.addEventListener(element, 'change', function (e) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n let key;\n let tmpArr = attr.split(\"|\");\n attr = tmpArr[0];\n\n let options = Selector.querySelectorAll(element, \"option\");\n for (let j = 0; j < options.length; j++) {\n let option: HTMLOptionElement = options[j] as HTMLOptionElement;\n if (option.selected) {\n let selectedItem = JSON.parse(option.getAttribute(\"data-item\"));\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, selectedItem);\n\n }\n }\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n });\n return true;\n }\n return false;\n}\n\nfunction checkboxCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n\n if (elementName === \"INPUT\" && tagName === \"value\" && element.getAttribute(\"type\") === \"checkbox\") {\n EventListener.addEventListener(element, 'change', function (e) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.checked);\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n });\n return true;\n }\n return false;\n}\n\nfunction radioCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n\n if (elementName === \"INPUT\" && tagName === \"selected\" && element.getAttribute(\"type\") === \"radio\") {\n EventListener.addEventListener(element, 'change', function (e) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n\n if (element.checked) {\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n }\n });\n return true;\n }\n return false;\n}\n\nexport { elementChangedBinder };\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/ElementActionBinder.ts"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///uku.js","webpack:///webpack/bootstrap 6e2259ee34abb82e4975","webpack:///./src/util/UkuleleUtil.ts","webpack:///./src/model/BoundItemAttribute.ts","webpack:///./src/extend/Selector.ts","webpack:///./src/model/BoundItemBase.ts","webpack:///./src/core/Event.ts","webpack:///./src/core/EventEmitter.ts","webpack:///./src/util/ObjectUtil.ts","webpack:///./src/core/UkuEventType.ts","webpack:///./src/extend/EventListener.ts","webpack:///./src/core/Ukulele.ts","webpack:///./src/core/DefinitionManager.ts","webpack:///./src/extend/Ajax.ts","webpack:///./src/model/ControllerModel.ts","webpack:///./src/model/ComponentModel.ts","webpack:///./src/model/ComponentPoolItem.ts","webpack:///./src/model/ComponentConfiguration.ts","webpack:///./src/core/DirtyChecker.ts","webpack:///./src/core/Analyzer.ts","webpack:///./src/core/BoundItemAttributeFactory.ts","webpack:///./src/model/directive/BoundItemAttrSelected.ts","webpack:///./src/model/directive/BoundItemAttrDataItem.ts","webpack:///./src/model/directive/BoundItemAttrSrc.ts","webpack:///./src/model/directive/BoundItemAttrDisabled.ts","webpack:///./src/model/directive/BoundItemAttrRender.ts","webpack:///./src/model/directive/BoundItemAttrStyle.ts","webpack:///./src/model/directive/BoundItemAttrValue.ts","webpack:///./src/model/directive/BoundItemAttrVisible.ts","webpack:///./src/model/BoundItemExpression.ts","webpack:///./src/model/BoundItemInnerText.ts","webpack:///./src/model/BoundItemRepeat.ts","webpack:///./src/model/BoundItemComponentAttribute.ts","webpack:///./src/core/ElementActionBinder.ts"],"names":["root","factory","exports","module","define","amd","a","i","this","modules","__webpack_require__","moduleId","installedModules","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","Selector_1","ComponentConfiguration_1","ValueAndParent","_value","_parant","parent","UkuleleUtil","searchHtmlTag","htmlString","tagName","reTemp","re","RegExp","search","getInnerHtml","match","index","matchString","tempString","substr","index2","lastIndexOf","substring","replace","getComponentConfiguration","tempDom","document","createElement","innerHTML","tpl","Selector","querySelectorAll","scripts","stylesheet","deps","ccs","length","script","src","push","ComponentConfiguration","searchUkuAttrTag","getAttrFromUkuTag","ukuTag","camelCase","names","split","charAt","toUpperCase","searchUkuExpTag","expression","searchUkuFuncArg","re1","re2","isRepeat","element","getAttribute","isInRepeat","parents","parent_1","nodeType","getBoundModelInstantName","controlInstName","getBoundModelInstantNames","controller_alias_list","arr","forEach","alias","pattern","getFinalValue","objects","attrName","tempScope","pattern2","result","eval","setFinalValue","valueString","JSON","stringify","evalString","__extends","extendStatics","setPrototypeOf","__proto__","Array","b","__","constructor","create","BoundItemBase_1","UkuleleUtil_1","BoundItemAttribute","_super","uku","_this","render","controllers","attr","attributeName","finalValue","setAttribute","BoundItemBase","query","window","find","fuzzyFind","text","attributes","nodeName","directText","nodes","childNodes","node","nodeValue","trim","parentNode","_attrName","_element","_uku","Event","_eventType","eventType","EventEmitter","eventsPool","getEventsPool","addListener","handler","removeListener","splice","hasListener","dispatchEvent","event","handlers","ObjectUtil","isArray","obj","toString","getType","type","compare","objA","objB","typeB","keys_a","keys","keys_b","key","valuA","valuB","isEqual","itemA","itemB","isEqual2","deepClone","j","UkuEventType","INITIALIZED","REFRESH","HANDLE_ELEMENT_COMPLETED","EventListener","addEventListener","undefined","on","e","EventEmitter_1","DefinitionManager_1","DirtyChecker_1","Analyzer_1","UkuEventType_1","Event_1","Ukulele","_a","apply","arguments","promiseArray","init","Promise","all","then","manageApplication","handleElement","analyizeElement","registerController","instanceName","controllerInst","_internal_getDefinitionManager","addControllerDefinition","getController","getControllerDefinition","controllerInstance","registerComponent","tag","templateUrl","preload","addComponentDefinition","getComponent","getComponentController","componentId","getControllerInstByDomId","refresh","excludeElement","dirtyChecker","DirtyChecker","runDirtyChecking","defMgr","DefinitionManager","_internal_dealWithElement","callback","apps","Error","ele","anylyzer","Analyzer","retFunc","ANALYIZE_COMPLETED","__awaiter","thisArg","_arguments","P","generator","resolve","reject","fulfilled","step","next","rejected","done","__generator","body","verb","v","op","f","TypeError","_","y","t","label","ops","pop","trys","g","sent","throw","return","Symbol","iterator","ObjectUtil_1","Ajax_1","ControllerModel_1","ComponentModel_1","ComponentPoolItem_1","controllersDefinition","componentsDefinition","componentsPool","copyControllers","dependentScriptsCache","ajax","Ajax","getComponentsDefinition","getComponentsPool","setComponentsPool","pool","setComponentsDefinition","getComponentDefinition","getControllersDefinition","getCopyControllers","copyAllController","controllerModel","controller","copyControllerInstance","previousCtrlInst","ControllerModel","_alias","domId","_dom","id","ComponentPoolItem","componentConfig","analyizeComponent","addLazyComponentDefinition","lazy","getBoundAttributeValue","additionalArgu","_i","controllerModels","getControllerModelByName","parameters","concat","getBoundControllerModelByName","getFinalValueByExpression","alias_list","instanceNames","config","loadDependentScript","self","head","getElementsByTagName","charset","async","onload","target","appendChild","tmpAMD","ccsExternal","dep","_b","dependentScripts","componentControllerScript","buildeComponentModel","template","style","dealWithShadowStyle","styleArray","newArray","newValue","join","debugComment","controllerClazz","newComp","ComponentModel","console","error","url","request","XMLHttpRequest","onreadystatechange","readyState","status","responseText","open","send","ctrlInst","boundItems","addBoundItem","boundItem","getBoundItemsByName","tempBoundItems","clazz","_tagName","_templateUrl","_lazy","_template","_dependentScripts","_componentControllerScript","_stylesheet","ctrlAliasName","watchController","parentUku","previousCtrlModel","changedElementCount","previousFinalValue","changedBoundItems","changedBoundItem","BoundItemAttributeFactory_1","BoundItemExpression_1","BoundItemInnerText_1","BoundItemRepeat_1","BoundItemComponentAttribute_1","ElementActionBinder_1","EventListener_1","dealWithAttribute","boundItem_1","BoundItemAttributeFactory","getInstance","generateInstance","controllers_1","elementChangedBinder","searchComponent","searchExpression","searchUkuAttribute","sortAttributes","subElement","orderAttrs","attribute","unshift","subElements","isSelfHasUkuTag","allChildren","child","matchElement","tempArr","shift","dealWithEvent","dealWithRepeat","dealWithInnerText","comp","attrs","compDef","localName","dealWithComponent","children","Clazz","randomAlias","tempFragment","htmlDom","cc","_loop_1","this_1","Math","floor","random","insertAdjacentHTML","outerHTML","previousElementSibling","classList","add","fire","data","bubbles","cancelable","CustomEvent","toLowerCase","boundItem_2","BoundItemComponentAttribute","controllers_2","removeChild","_initialized","dealWithExpression","slice","boundItem_3","BoundItemExpression","controllers_3","boundItem_4","BoundItemInnerText","controllers_4","eventName","eventNameInListener","Function","log","arg","new_expression_1","repeatExpression","itemName","controllers_5","boundItem_5","BoundItemRepeat","BoundItemAttrSelected_1","BoundItemAttrDataItem_1","BoundItemAttrSrc_1","BoundItemAttrDisabled_1","BoundItemAttrRender_1","BoundItemAttrStyle_1","BoundItemAttrValue_1","BoundItemAttrVisible_1","BoundItemAttribute_1","_instance","instance","BountItemAttrSelected","BoundItemAttrDataItem","BoundItemAttrSrc","BoundItemAttrDisabled","BoundItemAttrRender","BoundItemAttrStyle","BoundItemAttrValue","BoundItemAttrVisible","elementName","disabled","oldDisplaySetting","display","cssName","checked","visibility","renderTemplate","parentElement","beginCommentString","endCommentString","generateTempContainer","beginComment","createComment","insertBefore","endComment","nextSibling","filter","acceptNode","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","safeFilter","treeWalker","createTreeWalker","SHOW_COMMENT","nextNode","commentNode","currentNode","tempDiv","blankDiv","childrenHTML","nextElementSibling","removeAttribute","Uku_Clazz","ukulele","compPool","sibling","itemType","newOuterHtml","newItemDom","componentController","host","elementStrategies","inputTextCase","textareaCase","selectCase","checkboxCase","radioCase","isSupportInputType","options","option","selected","selectedItem","parse"],"mappings":"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","file":"uku.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 9);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Selector_1 = __webpack_require__(2);\r\nvar ComponentConfiguration_1 = __webpack_require__(15);\r\nvar ValueAndParent = (function () {\r\n function ValueAndParent(_value, _parant) {\r\n this.value = _value;\r\n this.parent = _parant;\r\n }\r\n return ValueAndParent;\r\n}());\r\nvar UkuleleUtil = (function () {\r\n function UkuleleUtil() {\r\n }\r\n UkuleleUtil.searchHtmlTag = function (htmlString, tagName) {\r\n var reTemp = \"^<\" + tagName + \"[\\\\s\\\\S]*>\" + \"[\\\\s\\\\S]*$\";\r\n var re = new RegExp(reTemp);\r\n var index = htmlString.search(re);\r\n return index;\r\n };\r\n UkuleleUtil.getInnerHtml = function (htmlString, tagName) {\r\n var reTemp = \"<\" + tagName + \"[\\\\s\\\\S]*>\" + \"[\\\\s\\\\S]*\";\r\n var re = new RegExp(reTemp);\r\n var match = htmlString.match(re);\r\n if (match.index > -1) {\r\n var matchString = match[0];\r\n var index = matchString.search(\">\");\r\n var tempString = matchString.substr(index + 1);\r\n var index2 = tempString.lastIndexOf(\"\\<]/;\r\n var index = htmlString.search(re1);\r\n if (index === -1) {\r\n var re2 = /\\(.*\\)$/;\r\n index = htmlString.search(re2);\r\n return index;\r\n }\r\n else {\r\n return -1;\r\n }\r\n };\r\n UkuleleUtil.isRepeat = function (element) {\r\n if (element.getAttribute(\"uku-repeat\")) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n UkuleleUtil.isInRepeat = function (element) {\r\n var parents = Selector_1.Selector.parents(element);\r\n for (var i = 0; i < parents.length; i++) {\r\n var parent_1 = parents[i];\r\n if (parent_1.nodeType !== 9) {\r\n var b = parent_1.getAttribute(\"uku-repeat\");\r\n if (b) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n UkuleleUtil.getBoundModelInstantName = function (expression) {\r\n var controlInstName = expression.split('.')[0];\r\n if (controlInstName) {\r\n return controlInstName;\r\n }\r\n return undefined;\r\n };\r\n UkuleleUtil.getBoundModelInstantNames = function (controller_alias_list, expression) {\r\n var arr = [];\r\n controller_alias_list.forEach(function (alias) {\r\n var pattern = new RegExp(\"\\\\b\" + alias, \"gm\");\r\n if (expression.search(pattern) > -1) {\r\n arr.push(alias);\r\n }\r\n });\r\n return arr;\r\n };\r\n UkuleleUtil.getFinalValue = function (objects, attrName) {\r\n return (function () {\r\n var tempScope = {};\r\n objects.forEach(function (object) {\r\n tempScope[object['_alias']] = object;\r\n var alias = object['_alias'];\r\n var pattern = new RegExp(\"\\\\b\" + alias + \"\\\\b\", \"gm\");\r\n attrName = attrName.replace(pattern, \"tempScope.\" + alias);\r\n var pattern2 = new RegExp(\"\\\\.tempScope\\\\.\" + alias, \"gm\");\r\n attrName = attrName.replace(pattern2, \".\" + alias);\r\n });\r\n var result = eval(attrName);\r\n tempScope = null;\r\n return result;\r\n })();\r\n };\r\n UkuleleUtil.setFinalValue = function (object, attrName, value) {\r\n return (function () {\r\n var tempScope = {};\r\n tempScope[object['_alias']] = object;\r\n var valueString;\r\n if (typeof value === \"string\") {\r\n valueString = '\"' + value + '\"';\r\n }\r\n else if (typeof value === \"object\") {\r\n valueString = \"JSON.parse('\" + JSON.stringify(value) + \"')\";\r\n }\r\n else {\r\n valueString = value;\r\n }\r\n var evalString = \"tempScope.\" + attrName + \"=\" + valueString;\r\n eval(evalString);\r\n })();\r\n };\r\n return UkuleleUtil;\r\n}());\r\nexports.UkuleleUtil = UkuleleUtil;\r\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\n//import {SelectedDecorator} from \"./decorator/SelectedDecorator\";\r\nvar BoundItemAttribute = (function (_super) {\r\n __extends(BoundItemAttribute, _super);\r\n function BoundItemAttribute(attrName, ukuTag, element, uku) {\r\n var _this = _super.call(this, attrName, element, uku) || this;\r\n _this.ukuTag = ukuTag;\r\n return _this;\r\n }\r\n BoundItemAttribute.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n this.element.setAttribute(this.ukuTag, finalValue);\r\n };\r\n return BoundItemAttribute;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemAttribute = BoundItemAttribute;\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Selector = (function () {\r\n function Selector() {\r\n }\r\n Selector.querySelectorAll = function (element, query) {\r\n if (window.hasOwnProperty('jQuery') && typeof window['jQuery'] !== \"undefined\") {\r\n return window['jQuery'](element).find(query);\r\n }\r\n else {\r\n return element.querySelectorAll(query);\r\n }\r\n };\r\n Selector.fuzzyFind = function (element, text) {\r\n if (element && element.attributes) {\r\n for (var i = 0; i < element.attributes.length; i++) {\r\n var attr = element.attributes[i];\r\n if (attr.nodeName.search(text) > -1) {\r\n return element;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n Selector.directText = function (element, text) {\r\n var o = \"\";\r\n var nodes = element.childNodes;\r\n for (var i = 0; i <= nodes.length - 1; i++) {\r\n var node = nodes[i];\r\n if (node.nodeType === 3) {\r\n if (text || text === \"\" || text === 0 || text === false) {\r\n node.nodeValue = text;\r\n return;\r\n }\r\n else {\r\n o += node.nodeValue;\r\n }\r\n }\r\n }\r\n return o.trim();\r\n };\r\n Selector.parents = function (element) {\r\n var parents = [];\r\n while (element.parentNode && element.parentNode.tagName !== 'BODY') {\r\n parents.push(element.parentNode);\r\n element = element.parentNode;\r\n }\r\n return parents;\r\n };\r\n return Selector;\r\n}());\r\nexports.Selector = Selector;\r\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase = (function () {\r\n function BoundItemBase(_attrName, _element, _uku) {\r\n this.attributeName = _attrName;\r\n this.element = _element;\r\n this.uku = _uku;\r\n }\r\n BoundItemBase.prototype.render = function (controllers) {\r\n };\r\n return BoundItemBase;\r\n}());\r\nexports.BoundItemBase = BoundItemBase;\r\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Event = (function () {\r\n function Event(_eventType, _element) {\r\n this.eventType = _eventType;\r\n this.element = _element;\r\n }\r\n return Event;\r\n}());\r\nexports.Event = Event;\r\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventEmitter = (function () {\r\n function EventEmitter() {\r\n this.eventsPool = {};\r\n }\r\n EventEmitter.prototype.getEventsPool = function () {\r\n return this.eventsPool;\r\n };\r\n EventEmitter.prototype.addListener = function (eventType, handler) {\r\n if (!this.eventsPool[eventType]) {\r\n this.eventsPool[eventType] = [];\r\n }\r\n this.eventsPool[eventType].push(handler);\r\n };\r\n EventEmitter.prototype.removeListener = function (eventType, handler) {\r\n if (this.eventsPool[eventType]) {\r\n for (var i = this.eventsPool[eventType].length - 1; i >= 0; i--) {\r\n if (this.eventsPool[eventType][i] === handler) {\r\n this.eventsPool[eventType].splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n EventEmitter.prototype.hasListener = function (eventType) {\r\n if (this.eventsPool[eventType] && this.eventsPool[eventType].length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n EventEmitter.prototype.dispatchEvent = function (event) {\r\n if (event && event.eventType) {\r\n var handlers = this.eventsPool[event.eventType];\r\n if (handlers) {\r\n for (var i = 0; i < handlers.length; i++) {\r\n handlers[i].call(this, event);\r\n }\r\n }\r\n }\r\n };\r\n return EventEmitter;\r\n}());\r\nexports.EventEmitter = EventEmitter;\r\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ObjectUtil = (function () {\r\n function ObjectUtil() {\r\n }\r\n ObjectUtil.isArray = function (obj) {\r\n return Object.prototype.toString.call(obj) === '[object Array]';\r\n };\r\n ObjectUtil.getType = function (obj) {\r\n var type = typeof (obj);\r\n if (type === \"object\") {\r\n if (ObjectUtil.isArray(obj)) {\r\n return \"array\";\r\n }\r\n else {\r\n return type;\r\n }\r\n }\r\n else {\r\n return type;\r\n }\r\n };\r\n ObjectUtil.compare = function (objA, objB) {\r\n var type = ObjectUtil.getType(objA);\r\n var typeB = ObjectUtil.getType(objB);\r\n var result = true;\r\n if (type !== typeB) {\r\n return false;\r\n }\r\n else {\r\n switch (type) {\r\n case \"object\":\r\n if (objA === null && objB === null) {\r\n result = true;\r\n }\r\n else if (objA === null || objB === null) {\r\n result = false;\r\n }\r\n else {\r\n var keys_a = Object.keys(objA);\r\n var keys_b = Object.keys(objB);\r\n if (keys_a.length != keys_b.length) {\r\n result = false;\r\n }\r\n else if (keys_a.length === 0 && keys_b.length === 0) {\r\n result = true;\r\n }\r\n else {\r\n for (var key in objA) {\r\n var valuA = objA[key];\r\n var valuB = objB[key];\r\n var isEqual = ObjectUtil.compare(valuA, valuB);\r\n if (!isEqual) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n case \"array\":\r\n if (objA.length === objB.length) {\r\n for (var i = 0; i < objA.length; i++) {\r\n var itemA = objA[i];\r\n var itemB = objB[i];\r\n var isEqual2 = ObjectUtil.compare(itemA, itemB);\r\n if (!isEqual2) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n result = false;\r\n }\r\n break;\r\n case \"function\":\r\n result = objA.toString() === objB.toString();\r\n break;\r\n default:\r\n result = objA === objB;\r\n break;\r\n }\r\n }\r\n return result;\r\n };\r\n ObjectUtil.deepClone = function (obj) {\r\n var o;\r\n var i;\r\n var j;\r\n if (typeof (obj) !== \"object\" || obj === null) {\r\n return obj;\r\n }\r\n if (obj instanceof (Array)) {\r\n o = [];\r\n i = 0;\r\n j = obj.length;\r\n for (; i < j; i++) {\r\n if (typeof (obj[i]) === \"object\" && obj[i] !== null) {\r\n o[i] = ObjectUtil.deepClone(obj[i]);\r\n }\r\n else {\r\n o[i] = obj[i];\r\n }\r\n }\r\n }\r\n else {\r\n o = {};\r\n for (i in obj) {\r\n if (typeof (obj[i]) === \"object\" && obj[i] !== null && i !== \"_dom\") {\r\n o[i] = ObjectUtil.deepClone(obj[i]);\r\n }\r\n else {\r\n o[i] = obj[i];\r\n }\r\n }\r\n }\r\n return o;\r\n };\r\n return ObjectUtil;\r\n}());\r\nexports.ObjectUtil = ObjectUtil;\r\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UkuEventType = (function () {\r\n function UkuEventType() {\r\n }\r\n UkuEventType.INITIALIZED = 'initialized';\r\n UkuEventType.REFRESH = 'refresh';\r\n UkuEventType.HANDLE_ELEMENT_COMPLETED = \"handle_element_completed\";\r\n return UkuEventType;\r\n}());\r\nexports.UkuEventType = UkuEventType;\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventListener = (function () {\r\n function EventListener() {\r\n }\r\n EventListener.addEventListener = function (element, eventType, handler) {\r\n if (window.hasOwnProperty('jQuery') && typeof window['jQuery'] !== undefined) {\r\n return window['jQuery'](element).on(eventType, function (e) {\r\n handler && handler(e);\r\n });\r\n }\r\n else {\r\n return element.addEventListener(eventType, handler);\r\n }\r\n };\r\n return EventListener;\r\n}());\r\nexports.EventListener = EventListener;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventEmitter_1 = __webpack_require__(5);\r\nvar DefinitionManager_1 = __webpack_require__(10);\r\nvar DirtyChecker_1 = __webpack_require__(16);\r\nvar Analyzer_1 = __webpack_require__(17);\r\nvar Selector_1 = __webpack_require__(2);\r\nvar UkuEventType_1 = __webpack_require__(7);\r\nvar Event_1 = __webpack_require__(4);\r\nexports.Ukulele = (_a = (function (_super) {\r\n __extends(Ukulele, _super);\r\n function Ukulele() {\r\n var _this = _super !== null && _super.apply(this, arguments) || this;\r\n _this.promiseArray = [];\r\n return _this;\r\n }\r\n Ukulele.prototype.init = function () {\r\n var _this = this;\r\n Promise.all(this.promiseArray).then(function () {\r\n _this.manageApplication();\r\n });\r\n };\r\n Ukulele.prototype.handleElement = function (element) {\r\n var _this = this;\r\n this.analyizeElement(element, function (e) {\r\n _this.dispatchEvent(new Event_1.Event(UkuEventType_1.UkuEventType.HANDLE_ELEMENT_COMPLETED, e));\r\n });\r\n };\r\n Ukulele.prototype.registerController = function (instanceName, controllerInst) {\r\n window[instanceName] = controllerInst;\r\n this._internal_getDefinitionManager().addControllerDefinition(instanceName, controllerInst);\r\n };\r\n Ukulele.prototype.getController = function (instanceName) {\r\n return this._internal_getDefinitionManager().getControllerDefinition(instanceName).controllerInstance;\r\n };\r\n Ukulele.prototype.registerComponent = function (tag, templateUrl, preload) {\r\n var p = this._internal_getDefinitionManager().addComponentDefinition(tag, templateUrl, preload);\r\n this.promiseArray.push(p);\r\n };\r\n Ukulele.prototype.getComponent = function (tagName) {\r\n return this._internal_getDefinitionManager().getComponent(tagName);\r\n };\r\n Ukulele.prototype.getComponentController = function (componentId) {\r\n return this._internal_getDefinitionManager().getControllerInstByDomId(componentId);\r\n };\r\n Ukulele.prototype.refresh = function (alias, excludeElement) {\r\n if (!this.dirtyChecker) {\r\n this.dirtyChecker = new DirtyChecker_1.DirtyChecker(this);\r\n }\r\n this.dirtyChecker.runDirtyChecking(alias, excludeElement);\r\n };\r\n //internal function\r\n Ukulele.prototype._internal_getDefinitionManager = function () {\r\n if (!this.defMgr) {\r\n this.defMgr = new DefinitionManager_1.DefinitionManager(this);\r\n }\r\n return this.defMgr;\r\n };\r\n Ukulele.prototype._internal_dealWithElement = function (element, callback) {\r\n this.analyizeElement(element, callback);\r\n };\r\n Ukulele.prototype.manageApplication = function () {\r\n var _this = this;\r\n var apps = Selector_1.Selector.querySelectorAll(document, \"[uku-application]\");\r\n if (apps.length === 1) {\r\n this.analyizeElement(apps[0], function (ele) {\r\n _this.dispatchEvent(new Event_1.Event(UkuEventType_1.UkuEventType.INITIALIZED, ele));\r\n });\r\n }\r\n else {\r\n throw new Error(\"Only one 'uku-application' can be declared in a whole html.\");\r\n }\r\n };\r\n Ukulele.prototype.analyizeElement = function (element, callback) {\r\n var anylyzer = new Analyzer_1.Analyzer(this);\r\n if (callback) {\r\n (function (retFunc) {\r\n anylyzer.addListener(Analyzer_1.Analyzer.ANALYIZE_COMPLETED, function (e) {\r\n retFunc(e.element);\r\n });\r\n })(callback);\r\n }\r\n anylyzer.analyizeElement(element);\r\n };\r\n return Ukulele;\r\n }(EventEmitter_1.EventEmitter)),\r\n _a.INITIALIZED = 'initialized',\r\n _a.REFRESH = 'refresh',\r\n _a.HANDLE_ELEMENT_COMPLETED = \"handle_element_completed\",\r\n _a);\r\nvar _a;\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ObjectUtil_1 = __webpack_require__(6);\r\nvar Ajax_1 = __webpack_require__(11);\r\nvar ControllerModel_1 = __webpack_require__(12);\r\nvar ComponentModel_1 = __webpack_require__(13);\r\nvar ComponentPoolItem_1 = __webpack_require__(14);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar DefinitionManager = (function () {\r\n function DefinitionManager(_uku) {\r\n this.controllersDefinition = {};\r\n this.componentsDefinition = {};\r\n this.componentsPool = {};\r\n this.copyControllers = {};\r\n this.dependentScriptsCache = {};\r\n this.ajax = new Ajax_1.Ajax();\r\n this.uku = _uku;\r\n }\r\n DefinitionManager.prototype.getComponentsDefinition = function () {\r\n return this.componentsDefinition;\r\n };\r\n DefinitionManager.prototype.getComponentsPool = function () {\r\n return this.componentsPool;\r\n };\r\n DefinitionManager.prototype.setComponentsPool = function (pool) {\r\n this.componentsPool = pool;\r\n };\r\n DefinitionManager.prototype.setComponentsDefinition = function (value) {\r\n this.componentsDefinition = value;\r\n };\r\n DefinitionManager.prototype.getComponentDefinition = function (tagName) {\r\n return this.componentsDefinition[tagName];\r\n };\r\n DefinitionManager.prototype.getControllerDefinition = function (instanceName) {\r\n return this.controllersDefinition[instanceName];\r\n };\r\n DefinitionManager.prototype.getControllersDefinition = function () {\r\n return this.controllersDefinition;\r\n };\r\n DefinitionManager.prototype.getComponent = function (tagName) {\r\n return this.componentsPool[tagName];\r\n };\r\n DefinitionManager.prototype.getCopyControllers = function () {\r\n return this.copyControllers;\r\n };\r\n DefinitionManager.prototype.copyAllController = function () {\r\n for (var alias in this.controllersDefinition) {\r\n var controllerModel = this.controllersDefinition[alias];\r\n var controller = controllerModel.controllerInstance;\r\n this.copyControllerInstance(controller, alias);\r\n }\r\n };\r\n DefinitionManager.prototype.copyControllerInstance = function (controller, alias) {\r\n var previousCtrlInst = ObjectUtil_1.ObjectUtil.deepClone(controller);\r\n delete this.copyControllers[alias];\r\n this.copyControllers[alias] = previousCtrlInst;\r\n };\r\n DefinitionManager.prototype.addControllerDefinition = function (instanceName, controllerInst) {\r\n var controllerModel = new ControllerModel_1.ControllerModel(instanceName, controllerInst);\r\n controllerInst._alias = instanceName;\r\n this.controllersDefinition[instanceName] = controllerModel;\r\n };\r\n DefinitionManager.prototype.getControllerInstByDomId = function (domId) {\r\n for (var alias in this.controllersDefinition) {\r\n var controllerModel = this.controllersDefinition[alias];\r\n var controller = controllerModel.controllerInstance;\r\n if (controller._dom && controller._dom.id === domId) {\r\n return controller;\r\n }\r\n }\r\n return undefined;\r\n };\r\n DefinitionManager.prototype.addComponentDefinition = function (tag, templateUrl, preload) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (!preload) {\r\n _this.componentsPool[tag] = new ComponentPoolItem_1.ComponentPoolItem(tag, templateUrl, true);\r\n resolve();\r\n }\r\n else {\r\n _this.componentsPool[tag] = new ComponentPoolItem_1.ComponentPoolItem(tag, templateUrl, false);\r\n return _this.ajax.get(templateUrl).then(function (result) {\r\n var componentConfig = UkuleleUtil_1.UkuleleUtil.getComponentConfiguration(result);\r\n return _this.analyizeComponent(tag, componentConfig);\r\n });\r\n }\r\n });\r\n };\r\n DefinitionManager.prototype.addLazyComponentDefinition = function (tag, templateUrl) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n return _this.ajax.get(templateUrl).then(function (result) {\r\n var componentConfig = UkuleleUtil_1.UkuleleUtil.getComponentConfiguration(result);\r\n return _this.analyizeComponent(tag, componentConfig).then(function () {\r\n _this.componentsPool[tag] = { 'tagName': tag, 'templateUrl': templateUrl, 'lazy': false };\r\n resolve();\r\n });\r\n });\r\n });\r\n };\r\n DefinitionManager.prototype.getBoundAttributeValue = function (attr) {\r\n var additionalArgu = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n additionalArgu[_i - 1] = arguments[_i];\r\n }\r\n var controllerModels = this.getControllerModelByName(attr);\r\n var controllers = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllers.push(controllerModel.controllerInstance);\r\n });\r\n var parameters = [this.uku, controllers, attr];\r\n parameters = parameters.concat(additionalArgu);\r\n var result = UkuleleUtil_1.UkuleleUtil.getFinalValue.apply(null, parameters);\r\n return result;\r\n };\r\n ;\r\n DefinitionManager.prototype.getControllerModelByName = function (expression) {\r\n return this.getBoundControllerModelByName(expression);\r\n };\r\n ;\r\n DefinitionManager.prototype.getFinalValueByExpression = function (expression) {\r\n var controllerModels = this.getControllerModelByName(expression);\r\n var controllers = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllers.push(controllerModel.controllerInstance);\r\n });\r\n return UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, expression);\r\n };\r\n ;\r\n DefinitionManager.prototype.getBoundControllerModelByName = function (attrName) {\r\n var _this = this;\r\n var alias_list = Object.keys(this.controllersDefinition);\r\n var instanceNames = UkuleleUtil_1.UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\r\n var arr = [];\r\n instanceNames.forEach(function (instanceName) {\r\n var controllerModel = _this.controllersDefinition[instanceName];\r\n arr.push(controllerModel);\r\n });\r\n return arr;\r\n };\r\n DefinitionManager.prototype.analyizeComponent = function (tag, config) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n function loadDependentScript(src) {\r\n return new Promise(function (resolve, reject) {\r\n if (!self.dependentScriptsCache[src]) {\r\n var head = document.getElementsByTagName('HEAD')[0];\r\n var script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.charset = 'utf-8';\r\n script.async = true;\r\n script.src = src;\r\n script.onload = function (e) {\r\n self.dependentScriptsCache[e.target['src']] = true;\r\n resolve();\r\n };\r\n head.appendChild(script);\r\n }\r\n else {\r\n resolve();\r\n }\r\n });\r\n }\r\n var deps, self, tmpAMD, ccsExternal, _a, i, dep;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n deps = config.dependentScripts;\r\n self = this;\r\n if (!(deps && deps.length > 0)) return [3 /*break*/, 7];\r\n tmpAMD = void 0;\r\n if (typeof window['define'] === 'function' && window['define'].amd) {\r\n tmpAMD = window['define'];\r\n window['define'] = undefined;\r\n }\r\n if (!!config.componentControllerScript) return [3 /*break*/, 2];\r\n ccsExternal = deps[deps.length - 1];\r\n _a = config;\r\n return [4 /*yield*/, this.ajax.get(ccsExternal)];\r\n case 1:\r\n _a.componentControllerScript = _b.sent();\r\n deps.pop();\r\n _b.label = 2;\r\n case 2:\r\n i = 0;\r\n _b.label = 3;\r\n case 3:\r\n if (!(i < deps.length)) return [3 /*break*/, 6];\r\n dep = deps[i];\r\n return [4 /*yield*/, loadDependentScript(dep)];\r\n case 4:\r\n _b.sent();\r\n _b.label = 5;\r\n case 5:\r\n i++;\r\n return [3 /*break*/, 3];\r\n case 6:\r\n if (tmpAMD) {\r\n window['define'] = tmpAMD;\r\n }\r\n this.buildeComponentModel(tag, config.template, config.componentControllerScript, config.stylesheet);\r\n return [2 /*return*/];\r\n case 7:\r\n this.buildeComponentModel(tag, config.template, config.componentControllerScript, config.stylesheet);\r\n return [2 /*return*/];\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n DefinitionManager.prototype.buildeComponentModel = function (tag, template, script, style) {\r\n var debugComment = \"//# sourceURL=\" + tag + \".js\";\r\n try {\r\n var controllerClazz = void 0;\r\n if (script) {\r\n script += debugComment;\r\n controllerClazz = eval(script);\r\n }\r\n var newComp = new ComponentModel_1.ComponentModel(tag, template, controllerClazz);\r\n this.componentsDefinition[tag] = newComp;\r\n if (style) {\r\n dealWithShadowStyle(tag, style);\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n function dealWithShadowStyle(tagName, stylesheet) {\r\n var head = document.getElementsByTagName('HEAD')[0];\r\n var style = document.createElement('style');\r\n style.type = 'text/css';\r\n var styleArray = stylesheet.split(\"}\");\r\n var newArray = [];\r\n styleArray.forEach(function (value, index) {\r\n var newValue = value.replace(/^\\s*/, \"\");\r\n if (newValue) {\r\n newArray.push(newValue);\r\n }\r\n });\r\n stylesheet = newArray.join(\"}\\n\" + \".\" + tagName + \" \");\r\n stylesheet = \".\" + tagName + \" \" + stylesheet + \"}\";\r\n style.innerHTML = stylesheet;\r\n head.appendChild(style);\r\n }\r\n };\r\n return DefinitionManager;\r\n}());\r\nexports.DefinitionManager = DefinitionManager;\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Ajax = (function () {\r\n function Ajax() {\r\n }\r\n Ajax.prototype.get = function (url) {\r\n return new Promise(function (resolve, reject) {\r\n var request = new XMLHttpRequest();\r\n request.onreadystatechange = function () {\r\n if (request.readyState === 4) {\r\n if (request.status === 200) {\r\n resolve(request.responseText);\r\n }\r\n else {\r\n reject();\r\n }\r\n }\r\n };\r\n request.open(\"GET\", url, true);\r\n request.send(null);\r\n });\r\n };\r\n return Ajax;\r\n}());\r\nexports.Ajax = Ajax;\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ControllerModel = (function () {\r\n function ControllerModel(alias, ctrlInst) {\r\n this.alias = alias;\r\n this.controllerInstance = ctrlInst;\r\n this.boundItems = [];\r\n }\r\n ControllerModel.prototype.addBoundItem = function (boundItem) {\r\n this.boundItems.push(boundItem);\r\n };\r\n ControllerModel.prototype.getBoundItemsByName = function (name) {\r\n var tempBoundItems = [];\r\n for (var i = 0; i < this.boundItems.length; i++) {\r\n var boundItem = this.boundItems[i];\r\n if (boundItem.attributeName === name) {\r\n tempBoundItems.push(boundItem);\r\n }\r\n }\r\n return tempBoundItems;\r\n };\r\n return ControllerModel;\r\n}());\r\nexports.ControllerModel = ControllerModel;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ComponentModel = (function () {\r\n function ComponentModel(tagName, template, clazz) {\r\n this.tagName = tagName;\r\n this.template = template;\r\n this.controllerClazz = clazz;\r\n }\r\n return ComponentModel;\r\n}());\r\nexports.ComponentModel = ComponentModel;\r\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ComponentPoolItem = (function () {\r\n function ComponentPoolItem(_tagName, _templateUrl, _lazy) {\r\n this.tagName = _tagName;\r\n this.templateUrl = _templateUrl;\r\n this.lazy = _lazy;\r\n }\r\n return ComponentPoolItem;\r\n}());\r\nexports.ComponentPoolItem = ComponentPoolItem;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar ComponentConfiguration = (function () {\r\n function ComponentConfiguration(_template, _dependentScripts, _componentControllerScript, _stylesheet) {\r\n if (_stylesheet === void 0) { _stylesheet = undefined; }\r\n this.template = _template;\r\n this.dependentScripts = _dependentScripts;\r\n this.componentControllerScript = _componentControllerScript;\r\n this.stylesheet = _stylesheet;\r\n }\r\n return ComponentConfiguration;\r\n}());\r\nexports.ComponentConfiguration = ComponentConfiguration;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar ObjectUtil_1 = __webpack_require__(6);\r\nvar UkuEventType_1 = __webpack_require__(7);\r\nvar Event_1 = __webpack_require__(4);\r\nvar DirtyChecker = (function () {\r\n function DirtyChecker(_uku) {\r\n this.uku = _uku;\r\n this.defMgr = this.uku._internal_getDefinitionManager();\r\n }\r\n DirtyChecker.prototype.runDirtyChecking = function (ctrlAliasName, excludeElement) {\r\n var _this = this;\r\n if (ctrlAliasName) {\r\n if (typeof (ctrlAliasName) === \"string\") {\r\n watchController(ctrlAliasName);\r\n }\r\n else if (ObjectUtil_1.ObjectUtil.isArray(ctrlAliasName)) {\r\n for (var i = 0; i < ctrlAliasName.length; i++) {\r\n watchController(ctrlAliasName[i]);\r\n }\r\n }\r\n }\r\n else {\r\n for (var alias in this.defMgr.getControllersDefinition()) {\r\n watchController(alias);\r\n }\r\n }\r\n function watchController(alias) {\r\n var controllerModel = _this.defMgr.getControllersDefinition()[alias];\r\n if (!controllerModel) {\r\n if (_this.uku.parentUku) {\r\n _this.uku.parentUku.refresh(alias);\r\n }\r\n return;\r\n }\r\n var controller = controllerModel.controllerInstance;\r\n var previousCtrlModel = _this.defMgr.getCopyControllers()[alias];\r\n var changedElementCount = 0;\r\n for (var i = 0; i < controllerModel.boundItems.length; i++) {\r\n var boundItem = controllerModel.boundItems[i];\r\n var attrName = boundItem.attributeName;\r\n if (attrName.search('parent.') > -1) {\r\n return;\r\n }\r\n if (previousCtrlModel) {\r\n if (boundItem.hasOwnProperty('ukuTag') && boundItem['ukuTag'] === \"selected\") {\r\n attrName = attrName.split(\"|\")[0];\r\n }\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue([controller], attrName);\r\n var previousFinalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue([previousCtrlModel], attrName);\r\n if (!ObjectUtil_1.ObjectUtil.compare(previousFinalValue, finalValue)) {\r\n attrName = boundItem.attributeName;\r\n var changedBoundItems = controllerModel.getBoundItemsByName(attrName);\r\n for (var j = 0; j < changedBoundItems.length; j++) {\r\n var changedBoundItem = changedBoundItems[j];\r\n if (changedBoundItem.element !== excludeElement || (boundItem.hasOwnProperty('ukuTag') && changedBoundItem['ukuTag'] !== \"value\")) {\r\n changedElementCount++;\r\n changedBoundItem.render([controller]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (changedElementCount > 0 && _this.uku.hasListener(UkuEventType_1.UkuEventType.REFRESH)) {\r\n _this.uku.dispatchEvent(new Event_1.Event(UkuEventType_1.UkuEventType.REFRESH));\r\n }\r\n _this.defMgr.copyControllerInstance(controller, alias);\r\n }\r\n };\r\n ;\r\n return DirtyChecker;\r\n}());\r\nexports.DirtyChecker = DirtyChecker;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar EventEmitter_1 = __webpack_require__(5);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttributeFactory_1 = __webpack_require__(18);\r\nvar BoundItemExpression_1 = __webpack_require__(27);\r\nvar BoundItemInnerText_1 = __webpack_require__(28);\r\nvar BoundItemRepeat_1 = __webpack_require__(29);\r\nvar BoundItemComponentAttribute_1 = __webpack_require__(30);\r\nvar ElementActionBinder_1 = __webpack_require__(31);\r\nvar EventListener_1 = __webpack_require__(8);\r\nvar Selector_1 = __webpack_require__(2);\r\nvar Event_1 = __webpack_require__(4);\r\nvar Analyzer = (function (_super) {\r\n __extends(Analyzer, _super);\r\n function Analyzer(_uku) {\r\n var _this = _super.call(this) || this;\r\n //处理绑定的attribute\r\n _this.dealWithAttribute = function (element, tagName) {\r\n var _this = this;\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n //let elementName = element.tagName;\r\n var controllerModels = this.defMgr.getControllerModelByName(attr);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var boundItem_1 = BoundItemAttributeFactory_1.BoundItemAttributeFactory.getInstance().generateInstance(attr, tagName, element, this.uku);\r\n var controllers_1 = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_1);\r\n ElementActionBinder_1.elementChangedBinder(element, tagName, controllerModel, _this.uku.refresh, _this.uku);\r\n controllers_1.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_1.render(controllers_1);\r\n }\r\n };\r\n _this.uku = _uku;\r\n _this.defMgr = _this.uku._internal_getDefinitionManager();\r\n return _this;\r\n }\r\n Analyzer.prototype.analyizeElement = function (ele) {\r\n var _this = this;\r\n this.searchComponent(ele).then(function (element) {\r\n _this.searchExpression(element);\r\n _this.searchUkuAttribute(element);\r\n _this.defMgr.copyAllController();\r\n if (_this.hasListener(Analyzer.ANALYIZE_COMPLETED)) {\r\n _this.dispatchEvent(new Event_1.Event(Analyzer.ANALYIZE_COMPLETED, element));\r\n }\r\n });\r\n };\r\n Analyzer.prototype.sortAttributes = function (subElement) {\r\n var orderAttrs = [];\r\n for (var i = 0; i < subElement.attributes.length; i++) {\r\n var attribute = subElement.attributes[i];\r\n if (attribute.nodeName.search(\"uku-on\") !== -1) {\r\n orderAttrs.push(attribute);\r\n }\r\n else {\r\n orderAttrs.unshift(attribute);\r\n }\r\n }\r\n return orderAttrs;\r\n };\r\n Analyzer.prototype.searchUkuAttribute = function (element) {\r\n var subElements = [];\r\n //scan element which has uku-* tag\r\n var isSelfHasUkuTag = Selector_1.Selector.fuzzyFind(element, 'uku-');\r\n if (isSelfHasUkuTag) {\r\n subElements.push(isSelfHasUkuTag);\r\n }\r\n var allChildren = Selector_1.Selector.querySelectorAll(element, \"*\");\r\n for (var i = 0; i < allChildren.length; i++) {\r\n var child = allChildren[i];\r\n var matchElement = Selector_1.Selector.fuzzyFind(child, 'uku-');\r\n if (matchElement && !UkuleleUtil_1.UkuleleUtil.isInRepeat(matchElement)) {\r\n subElements.push(matchElement);\r\n }\r\n }\r\n //解析绑定 attribute,注册event\r\n for (var n = 0; n < subElements.length; n++) {\r\n var subElement = subElements[n];\r\n var orderAttrs = this.sortAttributes(subElement);\r\n for (var j = 0; j < orderAttrs.length; j++) {\r\n var attribute = orderAttrs[j];\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuAttrTag(attribute.nodeName) > -1) {\r\n var tempArr = attribute.nodeName.split('-');\r\n tempArr.shift();\r\n var attrName = tempArr.join('-');\r\n if (attrName !== \"application\") {\r\n if (attrName.search('on') === 0) {\r\n //is an event\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(subElement) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(subElement)) {\r\n this.dealWithEvent(subElement, attrName);\r\n }\r\n }\r\n else if (attrName.search('repeat') !== -1) {\r\n //is an repeat\r\n this.dealWithRepeat(subElement);\r\n }\r\n else {\r\n //is an attribute\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(subElement) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(subElement)) {\r\n if (attrName !== \"text\") {\r\n this.dealWithAttribute(subElement, attrName);\r\n }\r\n else {\r\n this.dealWithInnerText(subElement);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n Analyzer.prototype.searchComponent = function (element) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var comp, attrs, compDef, attrs, compDef, i, child;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n comp = this.defMgr.getComponent(element.localName);\r\n if (!comp) return [3 /*break*/, 4];\r\n if (!!comp.lazy) return [3 /*break*/, 1];\r\n attrs = element.attributes;\r\n compDef = this.defMgr.getComponentsDefinition()[comp.tagName];\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(element) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(element)) {\r\n return [2 /*return*/, this.dealWithComponent(element, compDef.template, compDef.controllerClazz, attrs)];\r\n }\r\n else {\r\n return [2 /*return*/, element];\r\n }\r\n return [3 /*break*/, 3];\r\n case 1: return [4 /*yield*/, this.defMgr.addLazyComponentDefinition(comp.tagName, comp.templateUrl)];\r\n case 2:\r\n _a.sent();\r\n attrs = element.attributes;\r\n compDef = this.defMgr.getComponentsDefinition()[comp.tagName];\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(element) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(element)) {\r\n return [2 /*return*/, this.dealWithComponent(element, compDef.template, compDef.controllerClazz, attrs)];\r\n }\r\n else {\r\n return [2 /*return*/, element];\r\n }\r\n _a.label = 3;\r\n case 3: return [3 /*break*/, 10];\r\n case 4:\r\n if (!(element.children && element.children.length > 0)) return [3 /*break*/, 9];\r\n i = 0;\r\n _a.label = 5;\r\n case 5:\r\n if (!(i < element.children.length)) return [3 /*break*/, 8];\r\n child = element.children[i];\r\n return [4 /*yield*/, this.searchComponent(child)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7:\r\n i++;\r\n return [3 /*break*/, 5];\r\n case 8: return [2 /*return*/, element];\r\n case 9: return [2 /*return*/, element];\r\n case 10: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Analyzer.prototype.dealWithComponent = function (tag, template, Clazz, attrs) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var randomAlias, tempFragment, htmlDom, cc, _loop_1, this_1, i, i, attr, j, child;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n randomAlias = 'cc_' + Math.floor(10000 * Math.random()).toString();\r\n //should consider white space between characters\r\n template = template.replace(new RegExp(\"\\'cc\\\\.\", 'gm'), \"'\" + randomAlias + '.');\r\n template = template.replace(new RegExp('\"cc\\\\.', 'gm'), '\"' + randomAlias + '.');\r\n template = template.replace(new RegExp('\\{\\{cc\\\\.', 'gm'), \"{{\" + randomAlias + '.');\r\n template = template.replace(new RegExp(' cc\\\\.', 'gm'), ' ' + randomAlias + '.');\r\n template = template.replace(new RegExp('\\\\(cc\\\\.', 'gm'), '(' + randomAlias + '.');\r\n template = template.replace(new RegExp('\\\\,cc\\\\.', 'gm'), ',' + randomAlias + '.');\r\n template = template.replace(new RegExp('\\\\.cc\\\\.', 'gm'), '.' + randomAlias + '.');\r\n tempFragment = document.createElement('div');\r\n tempFragment.insertAdjacentHTML('afterBegin', template);\r\n if (tempFragment.children.length > 1) {\r\n template = tempFragment.outerHTML;\r\n }\r\n tag.insertAdjacentHTML('beforeBegin', template);\r\n htmlDom = tag.previousElementSibling;\r\n htmlDom.classList.add(tag.localName);\r\n if (Clazz) {\r\n cc = new Clazz(this.uku);\r\n cc._dom = htmlDom;\r\n cc.fire = function (eventType, data, bubbles, cancelable) {\r\n if (bubbles === void 0) { bubbles = false; }\r\n if (cancelable === void 0) { cancelable = true; }\r\n var event = new CustomEvent(eventType.toLowerCase(), { \"bubbles\": bubbles, \"cancelable\": cancelable });\r\n event['data'] = data;\r\n cc._dom.dispatchEvent(event);\r\n };\r\n this.uku.registerController(randomAlias, cc);\r\n _loop_1 = function (i) {\r\n var attr = attrs[i];\r\n //todo need Refactor\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuAttrTag(attr.nodeName) !== 0\r\n || attr.nodeName.search(\"uku-on\") !== -1\r\n || attr.nodeName === \"uku-render\"\r\n || attr.nodeName === \"uku-visible\") {\r\n htmlDom.setAttribute(attr.nodeName, attr.nodeValue);\r\n }\r\n else {\r\n var tagName = UkuleleUtil_1.UkuleleUtil.getAttrFromUkuTag(attr.nodeName, true);\r\n var controllerModels = this_1.defMgr.getControllerModelByName(attr.nodeValue);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var boundItem_2 = new BoundItemComponentAttribute_1.BoundItemComponentAttribute(attr.nodeValue, tagName, cc, this_1.uku);\r\n var controllers_2 = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_2);\r\n controllers_2.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_2.render(controllers_2);\r\n }\r\n }\r\n };\r\n this_1 = this;\r\n for (i = 0; i < attrs.length; i++) {\r\n _loop_1(i);\r\n }\r\n }\r\n else {\r\n for (i = 0; i < attrs.length; i++) {\r\n attr = attrs[i];\r\n //todo:need Refactor\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuAttrTag(attr.nodeName) !== 0\r\n || attr.nodeName.search(\"uku-on\") !== -1\r\n || attr.nodeName === \"uku-render\"\r\n || attr.nodeName === \"uku-visible\") {\r\n htmlDom.setAttribute(attr.nodeName, attr.nodeValue);\r\n }\r\n }\r\n }\r\n tag.parentNode.removeChild(tag);\r\n if (!(htmlDom.children && htmlDom.children.length > 0)) return [3 /*break*/, 5];\r\n j = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(j < htmlDom.children.length)) return [3 /*break*/, 4];\r\n child = htmlDom.children[j];\r\n return [4 /*yield*/, this.searchComponent(child)];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n j++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (cc && cc._initialized && typeof (cc._initialized) === 'function') {\r\n cc._initialized(randomAlias, cc._dom);\r\n }\r\n return [2 /*return*/, htmlDom];\r\n case 5:\r\n if (cc && cc._initialized && typeof (cc._initialized) === 'function') {\r\n cc._initialized(randomAlias, cc._dom);\r\n }\r\n return [2 /*return*/, htmlDom];\r\n }\r\n });\r\n });\r\n };\r\n //todo: 处理 tag之间使用{{}}括起的表达式,用以显示文字\r\n Analyzer.prototype.searchExpression = function (element) {\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuExpTag(Selector_1.Selector.directText(element)) !== -1) {\r\n if (!UkuleleUtil_1.UkuleleUtil.isRepeat(element) && !UkuleleUtil_1.UkuleleUtil.isInRepeat(element)) {\r\n //normal expression\r\n this.dealWithExpression(element);\r\n }\r\n }\r\n for (var i = 0; i < element.children.length; i++) {\r\n this.searchExpression(element.children[i]);\r\n }\r\n };\r\n Analyzer.prototype.dealWithExpression = function (element) {\r\n //通常的花括号声明方式\r\n var expression = Selector_1.Selector.directText(element);\r\n if (UkuleleUtil_1.UkuleleUtil.searchUkuExpTag(expression) !== -1) {\r\n var attr = expression.slice(2, -2);\r\n var controllerModels = this.defMgr.getControllerModelByName(attr);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var boundItem_3 = new BoundItemExpression_1.BoundItemExpression(attr, expression, element, this.uku);\r\n var controllers_3 = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_3);\r\n controllers_3.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_3.render(controllers_3);\r\n }\r\n }\r\n };\r\n //处理 uku-text\r\n Analyzer.prototype.dealWithInnerText = function (element) {\r\n var attr = element.getAttribute(\"uku-text\");\r\n if (attr) {\r\n var controllerModels = this.defMgr.getControllerModelByName(attr);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var boundItem_4 = new BoundItemInnerText_1.BoundItemInnerText(attr, element, this.uku);\r\n var controllers_4 = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_4);\r\n controllers_4.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_4.render(controllers_4);\r\n }\r\n }\r\n };\r\n //处理 事件 event\r\n Analyzer.prototype.dealWithEvent = function (element, eventName) {\r\n var _this = this;\r\n var expression = element.getAttribute(\"uku-\" + eventName);\r\n var eventNameInListener = eventName.substring(2);\r\n eventNameInListener = eventNameInListener.toLowerCase();\r\n var controllerModels = this.defMgr.getControllerModelByName(expression);\r\n if (!controllerModels || controllerModels.length === 0) {\r\n controllerModels = [];\r\n }\r\n EventListener_1.EventListener.addEventListener(element, eventNameInListener, function (event) {\r\n var alias_list = [];\r\n controllerModels.forEach(function (controllerModel) {\r\n _this.defMgr.copyControllerInstance(controllerModel.controllerInstance, controllerModels.alias);\r\n alias_list.push(controllerModel.alias);\r\n });\r\n var index = UkuleleUtil_1.UkuleleUtil.searchUkuFuncArg(expression);\r\n if (index === -1) {\r\n // is an expression, not a function\r\n var handler = new Function(\"event\", \"return \" + expression);\r\n console.log(handler.toString());\r\n handler(event);\r\n }\r\n else {\r\n // is a function\r\n var i = expression.search(/\\(/);\r\n var arg = 'event';\r\n if (expression[i + 1] !== ')') {\r\n // has argument\r\n arg = 'event,';\r\n }\r\n var arr = expression.split('(');\r\n arr[1] = arg + arr[1];\r\n var new_expression_1 = arr.join(\"(\");\r\n (function (e) {\r\n var tempScope = {};\r\n tempScope['event'] = e;\r\n eval(new_expression_1);\r\n tempScope = null;\r\n })(event);\r\n }\r\n _this.uku.refresh(alias_list, element);\r\n });\r\n };\r\n //处理 repeat\r\n Analyzer.prototype.dealWithRepeat = function (element) {\r\n var repeatExpression = element.getAttribute(\"uku-repeat\");\r\n var tempArr = repeatExpression.split(' in ');\r\n var itemName = tempArr[0];\r\n var attr = tempArr[1];\r\n var controllerModels = this.defMgr.getControllerModelByName(attr);\r\n if (controllerModels && controllerModels.length > 0) {\r\n var controllers_5 = [];\r\n //let controllerInst = controllerModel.controllerInstance;\r\n var boundItem_5 = new BoundItemRepeat_1.BoundItemRepeat(attr, itemName, element, this.uku);\r\n controllerModels.forEach(function (controllerModel) {\r\n controllerModel.addBoundItem(boundItem_5);\r\n controllers_5.push(controllerModel.controllerInstance);\r\n });\r\n boundItem_5.render(controllers_5);\r\n }\r\n };\r\n Analyzer.ANALYIZE_COMPLETED = 'analyizeCompleted';\r\n return Analyzer;\r\n}(EventEmitter_1.EventEmitter));\r\nexports.Analyzer = Analyzer;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttrSelected_1 = __webpack_require__(19);\r\nvar BoundItemAttrDataItem_1 = __webpack_require__(20);\r\nvar BoundItemAttrSrc_1 = __webpack_require__(21);\r\nvar BoundItemAttrDisabled_1 = __webpack_require__(22);\r\nvar BoundItemAttrRender_1 = __webpack_require__(23);\r\nvar BoundItemAttrStyle_1 = __webpack_require__(24);\r\nvar BoundItemAttrValue_1 = __webpack_require__(25);\r\nvar BoundItemAttrVisible_1 = __webpack_require__(26);\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar BoundItemAttributeFactory = (function () {\r\n function BoundItemAttributeFactory() {\r\n if (BoundItemAttributeFactory._instance) {\r\n throw new Error(\"Error: Instantiation failed: Use BoundItemAttributeFactory.getInstance() instead of new.\");\r\n }\r\n BoundItemAttributeFactory._instance = this;\r\n }\r\n BoundItemAttributeFactory.getInstance = function () {\r\n return BoundItemAttributeFactory._instance;\r\n };\r\n BoundItemAttributeFactory.prototype.generateInstance = function (attr, tagName, element, uku) {\r\n var instance;\r\n switch (tagName) {\r\n case \"selected\":\r\n instance = new BoundItemAttrSelected_1.BountItemAttrSelected(attr, tagName, element, uku);\r\n break;\r\n case \"data-item\":\r\n instance = new BoundItemAttrDataItem_1.BoundItemAttrDataItem(attr, tagName, element, uku);\r\n break;\r\n case \"src\":\r\n instance = new BoundItemAttrSrc_1.BoundItemAttrSrc(attr, tagName, element, uku);\r\n break;\r\n case \"disabled\":\r\n instance = new BoundItemAttrDisabled_1.BoundItemAttrDisabled(attr, tagName, element, uku);\r\n break;\r\n case \"render\":\r\n instance = new BoundItemAttrRender_1.BoundItemAttrRender(attr, tagName, element, uku);\r\n break;\r\n case \"style\":\r\n instance = new BoundItemAttrStyle_1.BoundItemAttrStyle(attr, tagName, element, uku);\r\n break;\r\n case \"value\":\r\n instance = new BoundItemAttrValue_1.BoundItemAttrValue(attr, tagName, element, uku);\r\n break;\r\n case \"visible\":\r\n instance = new BoundItemAttrVisible_1.BoundItemAttrVisible(attr, tagName, element, uku);\r\n break;\r\n default:\r\n instance = new BoundItemAttribute_1.BoundItemAttribute(attr, tagName, element, uku);\r\n }\r\n return instance;\r\n };\r\n BoundItemAttributeFactory._instance = new BoundItemAttributeFactory();\r\n return BoundItemAttributeFactory;\r\n}());\r\nexports.BoundItemAttributeFactory = BoundItemAttributeFactory;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BountItemAttrSelected = (function (_super) {\r\n __extends(BountItemAttrSelected, _super);\r\n function BountItemAttrSelected(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"selected\") {\r\n throw new TypeError(\"it doesn't use uku-selected\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BountItemAttrSelected.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var key;\r\n var elementName = this.element.tagName;\r\n if (elementName === \"SELECT\") {\r\n var tempArr = this.attributeName.split(\"|\");\r\n attr = tempArr[0];\r\n key = tempArr[1];\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n var value = void 0;\r\n if (key) {\r\n value = finalValue[key];\r\n }\r\n else {\r\n value = finalValue;\r\n }\r\n this.element.value = value;\r\n }\r\n if (elementName === \"INPUT\" && this.element.getAttribute(\"type\") === \"radio\") {\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (this.element.value === finalValue) {\r\n this.element.setAttribute(\"checked\", \"true\");\r\n }\r\n }\r\n };\r\n return BountItemAttrSelected;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BountItemAttrSelected = BountItemAttrSelected;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrDataItem = (function (_super) {\r\n __extends(BoundItemAttrDataItem, _super);\r\n function BoundItemAttrDataItem(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"data-item\") {\r\n throw new TypeError(\"it doesn't use uku-item\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrDataItem.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (elementName === \"OPTION\") {\r\n finalValue = JSON.stringify(finalValue);\r\n this.element.setAttribute('data-item', finalValue);\r\n }\r\n };\r\n return BoundItemAttrDataItem;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrDataItem = BoundItemAttrDataItem;\r\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrSrc = (function (_super) {\r\n __extends(BoundItemAttrSrc, _super);\r\n function BoundItemAttrSrc(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"src\") {\r\n throw new TypeError(\"it doesn't use uku-src\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrSrc.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (elementName === \"IMG\") {\r\n if (finalValue) {\r\n this.element.setAttribute(this.ukuTag, finalValue);\r\n }\r\n }\r\n else {\r\n throw new Error(\"uku-src doesn't work with current dom\");\r\n }\r\n };\r\n return BoundItemAttrSrc;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrSrc = BoundItemAttrSrc;\r\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrDisabled = (function (_super) {\r\n __extends(BoundItemAttrDisabled, _super);\r\n function BoundItemAttrDisabled(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"disabled\") {\r\n throw new TypeError(\"it doesn't use uku-disabled\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrDisabled.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n this.element.disabled = finalValue;\r\n };\r\n return BoundItemAttrDisabled;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrDisabled = BoundItemAttrDisabled;\r\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrRender = (function (_super) {\r\n __extends(BoundItemAttrRender, _super);\r\n function BoundItemAttrRender(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"render\") {\r\n throw new TypeError(\"it doesn't use uku-render\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrRender.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (finalValue) {\r\n var oldDisplaySetting = this.element.getAttribute(\"data-old-display\");\r\n if (oldDisplaySetting !== null) {\r\n this.element.style.display = oldDisplaySetting;\r\n }\r\n }\r\n else {\r\n var oldDisplaySetting = this.element.getAttribute(\"data-old-display\");\r\n if (oldDisplaySetting === null) {\r\n oldDisplaySetting = this.element.style.display;\r\n this.element.setAttribute(\"data-old-display\", oldDisplaySetting);\r\n }\r\n this.element.style.display = \"none\";\r\n }\r\n };\r\n return BoundItemAttrRender;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrRender = BoundItemAttrRender;\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrStyle = (function (_super) {\r\n __extends(BoundItemAttrStyle, _super);\r\n function BoundItemAttrStyle(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"style\") {\r\n throw new TypeError(\"it doesn't use uku-style\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrStyle.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n for (var cssName in finalValue) {\r\n this.element.style[cssName] = finalValue[cssName];\r\n }\r\n };\r\n return BoundItemAttrStyle;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrStyle = BoundItemAttrStyle;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrValue = (function (_super) {\r\n __extends(BoundItemAttrValue, _super);\r\n function BoundItemAttrValue(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"value\") {\r\n throw new TypeError(\"it doesn't use uku-value\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrValue.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (elementName === \"INPUT\" && this.element.getAttribute(\"type\") === \"checkbox\") {\r\n this.element.checked = finalValue;\r\n }\r\n else {\r\n this.element.value = finalValue;\r\n }\r\n };\r\n return BoundItemAttrValue;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrValue = BoundItemAttrValue;\r\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemAttribute_1 = __webpack_require__(1);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemAttrVisible = (function (_super) {\r\n __extends(BoundItemAttrVisible, _super);\r\n function BoundItemAttrVisible(attrName, ukuTag, element, uku) {\r\n var _this = this;\r\n if (ukuTag !== \"visible\") {\r\n throw new TypeError(\"it doesn't use uku-visible\");\r\n }\r\n _this = _super.call(this, attrName, ukuTag, element, uku) || this;\r\n return _this;\r\n }\r\n BoundItemAttrVisible.prototype.render = function (controllers) {\r\n var attr = this.attributeName;\r\n var elementName = this.element.tagName;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, attr);\r\n if (finalValue) {\r\n this.element.style.visibility = \"visible\";\r\n }\r\n else {\r\n this.element.style.visibility = \"hidden\";\r\n }\r\n };\r\n return BoundItemAttrVisible;\r\n}(BoundItemAttribute_1.BoundItemAttribute));\r\nexports.BoundItemAttrVisible = BoundItemAttrVisible;\r\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar Selector_1 = __webpack_require__(2);\r\nvar BoundItemExpression = (function (_super) {\r\n __extends(BoundItemExpression, _super);\r\n function BoundItemExpression(attrName, expression, element, uku) {\r\n var _this = _super.call(this, attrName, element, uku) || this;\r\n _this.expression = expression;\r\n return _this;\r\n }\r\n BoundItemExpression.prototype.render = function (controllers) {\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, this.attributeName);\r\n Selector_1.Selector.directText(this.element, finalValue);\r\n };\r\n return BoundItemExpression;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemExpression = BoundItemExpression;\r\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemInnerText = (function (_super) {\r\n __extends(BoundItemInnerText, _super);\r\n function BoundItemInnerText(attrName, element, uku) {\r\n var _this = _super.call(this, attrName, element, uku) || this;\r\n _this.tagName = 'text';\r\n return _this;\r\n }\r\n BoundItemInnerText.prototype.render = function (controllers) {\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, this.attributeName);\r\n this.element.innerHTML = finalValue;\r\n };\r\n return BoundItemInnerText;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemInnerText = BoundItemInnerText;\r\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemRepeat = (function (_super) {\r\n __extends(BoundItemRepeat, _super);\r\n function BoundItemRepeat(attrName, itemName, element, uku) {\r\n var _this = _super.call(this, attrName, element, uku) || this;\r\n _this.expression = itemName;\r\n _this.renderTemplate = element.outerHTML;\r\n _this.parentElement = element.parentNode;\r\n _this.beginCommentString = undefined;\r\n _this.endCommentString = undefined;\r\n return _this;\r\n }\r\n BoundItemRepeat.prototype.render = function (controllers) {\r\n var _this = this;\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, this.attributeName);\r\n if (!finalValue) {\r\n return;\r\n }\r\n var self = this;\r\n if (this.element && this.element.parentNode) {\r\n //create repeate begin comment\r\n this.beginCommentString = \"begin uku-repeat: \" + this.expression + \" in \" + this.attributeName;\r\n var beginComment = document.createComment(this.beginCommentString);\r\n this.element.parentNode.insertBefore(beginComment, this.element);\r\n //create repeate end comment\r\n this.endCommentString = \"end uku-repeat: \" + this.expression + \" in \" + this.attributeName;\r\n var endComment = document.createComment(this.endCommentString);\r\n this.element.parentNode.insertBefore(endComment, this.element.nextSibling);\r\n //remove definition dom\r\n this.element.parentNode.removeChild(this.element);\r\n }\r\n var filter = { acceptNode: function (node) {\r\n if (node.nodeValue === self.beginCommentString) {\r\n return NodeFilter.FILTER_ACCEPT;\r\n }\r\n return NodeFilter.FILTER_SKIP;\r\n } };\r\n var safeFilter = filter.acceptNode;\r\n safeFilter.acceptNode = filter.acceptNode;\r\n var treeWalker = document.createTreeWalker(this.parentElement, NodeFilter.SHOW_COMMENT, safeFilter, false);\r\n /*function filter(node:Node) :any{\r\n if (node.nodeValue === self.beginCommentString) {\r\n return (NodeFilter.FILTER_ACCEPT);\r\n }\r\n return (NodeFilter.FILTER_SKIP);\r\n }*/\r\n function generateTempContainer() {\r\n var index = UkuleleUtil_1.UkuleleUtil.searchHtmlTag(self.renderTemplate, \"tr\");\r\n if (index === -1) {\r\n return document.createElement(\"div\");\r\n }\r\n else {\r\n return document.createElement(\"tbody\");\r\n }\r\n }\r\n while (treeWalker.nextNode()) {\r\n var commentNode = treeWalker.currentNode;\r\n if (commentNode && commentNode.nodeValue === this.beginCommentString) {\r\n //remove overtime dom.\r\n while (commentNode.nextSibling && commentNode.nextSibling.nodeValue !== this.endCommentString) {\r\n commentNode.parentNode.removeChild(commentNode.nextSibling);\r\n }\r\n //create new dom\r\n var tempDiv = generateTempContainer();\r\n var blankDiv = generateTempContainer();\r\n commentNode.parentNode.insertBefore(blankDiv, commentNode.nextSibling);\r\n for (var i = 0; i < finalValue.length; i++) {\r\n tempDiv.insertAdjacentHTML('beforeEnd', this.renderTemplate);\r\n if (i === finalValue.length - 1) {\r\n var childrenHTML = tempDiv.innerHTML;\r\n blankDiv.insertAdjacentHTML('beforeBegin', childrenHTML);\r\n commentNode.parentNode.removeChild(blankDiv);\r\n tempDiv = null;\r\n blankDiv = null;\r\n }\r\n }\r\n var child = commentNode.nextElementSibling;\r\n for (var j = 0; j < finalValue.length; j++) {\r\n child.removeAttribute(\"uku-repeat\");\r\n var Uku_Clazz = this.uku.constructor;\r\n var ukulele = new Uku_Clazz(); //new Ukulele();\r\n ukulele.parentUku = this.uku;\r\n var compDef = ukulele.parentUku._internal_getDefinitionManager().getComponentsDefinition();\r\n var compPool = ukulele.parentUku._internal_getDefinitionManager().getComponentsPool();\r\n ukulele._internal_getDefinitionManager().setComponentsDefinition(compDef);\r\n ukulele._internal_getDefinitionManager().setComponentsPool(compPool);\r\n var sibling = child.nextSibling;\r\n var itemType = typeof finalValue[j];\r\n var alias = \"repeatItem_\" + Math.floor(10000 * Math.random()).toString() + \"_\" + this.expression;\r\n if (itemType === \"object\") {\r\n ukulele.registerController(alias, finalValue[j]);\r\n }\r\n else {\r\n ukulele.registerController(alias, { 'value': finalValue[j] });\r\n alias = alias + \".value\";\r\n }\r\n var pattern = new RegExp(\"\\\\b\" + this.expression + \"(?!\\\\-|\\\\s|\\\\w|\\\\=)\", \"gm\");\r\n var newOuterHtml = child.outerHTML.replace(pattern, alias);\r\n child.insertAdjacentHTML('afterend', newOuterHtml);\r\n var newItemDom = child.nextSibling;\r\n child.parentNode.removeChild(child);\r\n child = newItemDom;\r\n ukulele._internal_dealWithElement(child, function (element) {\r\n if (_this.element.tagName === \"OPTION\") {\r\n var expression = _this.parentElement.getAttribute(\"uku-selected\");\r\n var tempArr = expression.split(\"|\");\r\n expression = tempArr[0];\r\n var key = tempArr[1];\r\n var value = _this.uku._internal_getDefinitionManager().getFinalValueByExpression(expression);\r\n if (key) {\r\n _this.parentElement.value = value[key];\r\n }\r\n else {\r\n _this.parentElement.value = value;\r\n }\r\n }\r\n });\r\n child = sibling;\r\n }\r\n }\r\n }\r\n };\r\n return BoundItemRepeat;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemRepeat = BoundItemRepeat;\r\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar BoundItemBase_1 = __webpack_require__(3);\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar BoundItemComponentAttribute = (function (_super) {\r\n __extends(BoundItemComponentAttribute, _super);\r\n function BoundItemComponentAttribute(attrName, ukuTag, cc, uku) {\r\n var _this = _super.call(this, attrName, null, uku) || this;\r\n _this.ukuTag = ukuTag;\r\n _this.componentController = cc;\r\n return _this;\r\n }\r\n BoundItemComponentAttribute.prototype.render = function (controllers) {\r\n var finalValue = UkuleleUtil_1.UkuleleUtil.getFinalValue(controllers, this.attributeName);\r\n this.componentController[this.ukuTag] = finalValue;\r\n this.uku.refresh(this.componentController._alias);\r\n };\r\n return BoundItemComponentAttribute;\r\n}(BoundItemBase_1.BoundItemBase));\r\nexports.BoundItemComponentAttribute = BoundItemComponentAttribute;\r\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar UkuleleUtil_1 = __webpack_require__(0);\r\nvar EventListener_1 = __webpack_require__(8);\r\nvar Selector_1 = __webpack_require__(2);\r\nfunction elementChangedBinder(element, tagName, controllerModel, handler, host) {\r\n var elementStrategies = [inputTextCase, textareaCase, selectCase, checkboxCase, radioCase];\r\n for (var i = 0; i < elementStrategies.length; i++) {\r\n var func = elementStrategies[i];\r\n var goon = func.apply(this, arguments);\r\n if (goon) {\r\n break;\r\n }\r\n }\r\n}\r\nexports.elementChangedBinder = elementChangedBinder;\r\nfunction inputTextCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if (elementName === \"INPUT\" && isSupportInputType(element) && tagName === \"value\") {\r\n var eventType = 'change';\r\n var inputType = element.getAttribute('type');\r\n if (inputType === \"text\") {\r\n eventType = 'input';\r\n }\r\n EventListener_1.EventListener.addEventListener(element, eventType, function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSupportInputType(element) {\r\n var type = element.getAttribute(\"type\");\r\n if (type !== \"checkbox\" && type !== \"radio\") {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction textareaCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if (elementName === \"TEXTAREA\" && tagName === \"value\") {\r\n EventListener_1.EventListener.addEventListener(element, 'input', function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction selectCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if ((elementName === \"SELECT\" && tagName === \"selected\")) {\r\n EventListener_1.EventListener.addEventListener(element, 'change', function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n var key;\r\n var tmpArr = attr.split(\"|\");\r\n attr = tmpArr[0];\r\n var options = Selector_1.Selector.querySelectorAll(element, \"option\");\r\n for (var j = 0; j < options.length; j++) {\r\n var option = options[j];\r\n if (option.selected) {\r\n var selectedItem = JSON.parse(option.getAttribute(\"data-item\"));\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, selectedItem);\r\n }\r\n }\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction checkboxCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if (elementName === \"INPUT\" && tagName === \"value\" && element.getAttribute(\"type\") === \"checkbox\") {\r\n EventListener_1.EventListener.addEventListener(element, 'change', function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.checked);\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction radioCase(element, tagName, controllerModel, handler, host) {\r\n var elementName = element.tagName;\r\n if (elementName === \"INPUT\" && tagName === \"selected\" && element.getAttribute(\"type\") === \"radio\") {\r\n EventListener_1.EventListener.addEventListener(element, 'change', function (e) {\r\n var attr = element.getAttribute(\"uku-\" + tagName);\r\n if (element.checked) {\r\n UkuleleUtil_1.UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\r\n if (handler) {\r\n handler.call(host, controllerModel.alias, element);\r\n }\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n}\r\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// uku.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6e2259ee34abb82e4975","import { Selector } from \"../extend/Selector\";\nimport { ComponentConfiguration } from \"../model/ComponentConfiguration\";\nimport { IUkulele } from \"../core/IUkulele\";\nimport { ControllerModel } from \"../model/ControllerModel\";\nclass ValueAndParent {\n value: any;\n parent: Object;\n constructor(_value: any, _parant: Object) {\n this.value = _value;\n this.parent = _parant;\n }\n}\nexport class UkuleleUtil {\n\n static searchHtmlTag(htmlString: string, tagName: string): number {\n let reTemp: string = \"^<\" + tagName + \"[\\\\s\\\\S]*>\" + \"[\\\\s\\\\S]*$\";\n let re: RegExp = new RegExp(reTemp);\n let index: number = htmlString.search(re);\n return index;\n }\n\n static getInnerHtml(htmlString: string, tagName: string): string {\n let reTemp: string = \"<\" + tagName + \"[\\\\s\\\\S]*>\" + \"[\\\\s\\\\S]*\";\n let re: RegExp = new RegExp(reTemp);\n let match: RegExpMatchArray = htmlString.match(re);\n if (match.index > -1) {\n let matchString: string = match[0];\n let index: number = matchString.search(\">\");\n let tempString = matchString.substr(index + 1);\n let index2: number = tempString.lastIndexOf(\" = [];\n let ccs: string = null;\n for (let i = 0; i < scripts.length; i++) {\n let script: HTMLScriptElement = scripts[i] as HTMLScriptElement;\n if (script.src !== \"\") {\n deps.push(script.src);\n } else {\n ccs = script.innerHTML;\n }\n }\n if (stylesheet && stylesheet[0]) {\n return new ComponentConfiguration((tpl[0] as HTMLElement).innerHTML, deps, ccs, (stylesheet[0] as HTMLElement).innerHTML);\n } else {\n return new ComponentConfiguration((tpl[0] as HTMLElement).innerHTML, deps, ccs);\n }\n\n }\n\n static searchUkuAttrTag(htmlString: string): number {\n let re: RegExp = /^uku\\-.*/;\n let index: number = htmlString.search(re);\n return index;\n }\n\n static getAttrFromUkuTag(ukuTag: string, camelCase: boolean = false) {\n if (UkuleleUtil.searchUkuAttrTag(ukuTag) === 0) {\n ukuTag = ukuTag.replace('uku-', '');\n }\n if (camelCase) {\n let names: Array = ukuTag.split('-');\n ukuTag = names[0];\n for (let i = 1; i < names.length; i++) {\n let firstLetter: string = names[i].charAt(0).toUpperCase();\n ukuTag = ukuTag + firstLetter + names[i].substr(1);\n }\n }\n return ukuTag;\n }\n\n static searchUkuExpTag(expression: string): number {\n let re: RegExp = /^\\{\\{.*\\}\\}$/;\n let index: number = expression.search(re);\n return index;\n }\n\n static searchUkuFuncArg(htmlString: string): number {\n let re1: RegExp = /[\\+\\-\\*\\/\\%\\?\\:\\>\\<]/;\n let index = htmlString.search(re1);\n if (index === -1) {\n let re2: RegExp = /\\(.*\\)$/;\n index = htmlString.search(re2);\n return index;\n } else {\n return -1;\n }\n }\n\n static isRepeat(element: HTMLElement): boolean {\n if (element.getAttribute(\"uku-repeat\")) {\n return true;\n }\n return false;\n }\n\n static isInRepeat(element: HTMLElement): boolean {\n let parents: Array = Selector.parents(element);\n for (let i = 0; i < parents.length; i++) {\n let parent: HTMLElement = parents[i] as HTMLElement;\n if (parent.nodeType !== 9) {\n let b: string = parent.getAttribute(\"uku-repeat\");\n if (b) {\n return true;\n }\n }\n }\n return false;\n }\n\n static getBoundModelInstantName(expression: string): string {\n let controlInstName: string = expression.split('.')[0];\n if (controlInstName) {\n return controlInstName;\n }\n return undefined;\n }\n\n static getBoundModelInstantNames(controller_alias_list, expression): any {\n let arr = [];\n controller_alias_list.forEach(alias => {\n let pattern = new RegExp(\"\\\\b\" + alias, \"gm\");\n if (expression.search(pattern) > -1) {\n arr.push(alias);\n }\n });\n return arr;\n }\n\n static getFinalValue(objects: Object[], attrName: string) {\n return (function () {\n var tempScope = {};\n objects.forEach(object => {\n tempScope[object['_alias']] = object;\n let alias = object['_alias'];\n let pattern = new RegExp(\"\\\\b\" + alias + \"\\\\b\", \"gm\");\n attrName = attrName.replace(pattern, \"tempScope.\" + alias);\n\n let pattern2 = new RegExp(\"\\\\.tempScope\\\\.\" + alias, \"gm\");\n attrName = attrName.replace(pattern2, \".\" + alias);\n\n });\n\n var result = eval(attrName);\n tempScope = null;\n return result;\n })();\n }\n\n static setFinalValue(object: Object, attrName: string, value: any) {\n return (function () {\n var tempScope = {};\n tempScope[object['_alias']] = object;\n \n let valueString;\n if(typeof value === \"string\"){\n valueString = '\"' + value + '\"';\n }else if(typeof value === \"object\"){\n valueString = \"JSON.parse('\" + JSON.stringify(value) + \"')\";\n }else{\n valueString = value;\n }\n\n let evalString = \"tempScope.\" + attrName + \"=\" + valueString;\n eval(evalString);\n })();\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/util/UkuleleUtil.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\n//import {SelectedDecorator} from \"./decorator/SelectedDecorator\";\nexport class BoundItemAttribute extends BoundItemBase{\n ukuTag:string;\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n super(attrName,element,uku);\n this.ukuTag = ukuTag;\n }\n \n render(controllers):void{\n let attr:string = this.attributeName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n this.element.setAttribute(this.ukuTag, finalValue);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemAttribute.ts","export class Selector{\n static querySelectorAll(element:HTMLBodyElement|HTMLDocument|HTMLElement,query:string):NodeList{\n if(window.hasOwnProperty('jQuery') && typeof window['jQuery'] !== \"undefined\"){\n return window['jQuery'](element).find(query);\n }else{\n return element.querySelectorAll(query);\n }\n }\n\n static fuzzyFind(element:HTMLElement,text:string):HTMLElement {\n if (element && element.attributes) {\n for (let i = 0; i < element.attributes.length; i++) {\n let attr = element.attributes[i];\n if (attr.nodeName.search(text) > -1) {\n return element;\n }\n }\n }\n return null;\n }\n\n static directText(element:HTMLElement,text?:any):string {\n let o = \"\";\n let nodes = element.childNodes;\n for (let i = 0; i <= nodes.length - 1; i++) {\n let node = nodes[i];\n if (node.nodeType === 3) {\n if (text || text ===\"\" || text === 0 || text === false) {\n node.nodeValue = text;\n return;\n } else {\n o += node.nodeValue;\n }\n }\n }\n return o.trim();\n }\n\n static parents(element:HTMLElement):Array{\n let parents = [];\n while(element.parentNode && (element.parentNode as HTMLElement).tagName !== 'BODY'){\n parents.push(element.parentNode as HTMLElement);\n element = element.parentNode as HTMLElement;\n }\n return parents;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/extend/Selector.ts","import {IUkulele} from \"../core/IUkulele\";\nexport class BoundItemBase{\n attributeName:string;\n element:HTMLElement;\n uku:IUkulele;\n constructor(_attrName:string, _element:HTMLElement, _uku:IUkulele){\n this.attributeName = _attrName;\n this.element = _element;\n this.uku = _uku;\n }\n render(controllers:Object[]):void{\n \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemBase.ts","export class Event{\n eventType:string;\n element:HTMLElement;\n \n constructor(_eventType,_element?:HTMLElement){\n this.eventType = _eventType;\n this.element = _element;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/Event.ts","import {IEventEmitter} from \"./IEventEmitter\";\nimport {Event} from \"./Event\";\nexport class EventEmitter implements IEventEmitter{\n private eventsPool:Object;\n \n constructor(){\n this.eventsPool = {};\n }\n \n getEventsPool():Object{\n return this.eventsPool;\n }\n addListener(eventType:string, handler:Function):void{\n if(!this.eventsPool[eventType]){\n this.eventsPool[eventType] = [];\n }\n this.eventsPool[eventType].push(handler);\n }\n removeListener(eventType:string, handler:Function):void{\n if(this.eventsPool[eventType]){\n for(let i=this.eventsPool[eventType].length-1;i>=0;i--){\n if(this.eventsPool[eventType][i] === handler){\n this.eventsPool[eventType].splice(i,1);\n break;\n }\n }\n }\n }\n hasListener(eventType:string):boolean{\n if(this.eventsPool[eventType] && this.eventsPool[eventType].length > 0){\n return true;\n }\n return false;\n }\n dispatchEvent(event:Event):void{\n if(event && event.eventType){\n let handlers:Array = this.eventsPool[event.eventType];\n if(handlers){\n for(let i=0;i{\n handler && handler(e);\n });\n }else{\n return element.addEventListener(eventType,handler);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/extend/EventListener.ts","import { EventEmitter } from \"./EventEmitter\";\nimport { DefinitionManager } from \"./DefinitionManager\";\nimport { DirtyChecker } from \"./DirtyChecker\";\nimport { Analyzer } from \"./Analyzer\";\nimport { Selector } from \"../extend/Selector\";\nimport { UkuEventType } from \"./UkuEventType\";\nimport { IUkulele } from \"./IUkulele\";\nimport { Event } from \"./Event\";\n\nexport let Ukulele = class Ukulele extends EventEmitter implements IUkulele {\n\tprivate defMgr: DefinitionManager;\n\tprivate dirtyChecker: DirtyChecker;\n\tprivate promiseArray = [];\n\tpublic parentUku: IUkulele;\n\tstatic INITIALIZED: string = 'initialized';\n\tstatic REFRESH: string = 'refresh';\n\tstatic HANDLE_ELEMENT_COMPLETED: string = \"handle_element_completed\";\n\n\tpublic init(): void {\n\t\tPromise.all(this.promiseArray).then(() => {\n\t\t\tthis.manageApplication();\n\t\t});\n\t}\n\n\tpublic handleElement(element: HTMLElement): void {\n\t\tthis.analyizeElement(element, (e) => {\n\t\t\tthis.dispatchEvent(new Event(UkuEventType.HANDLE_ELEMENT_COMPLETED, e));\n\t\t});\n\t}\n\n\tpublic registerController(instanceName: string, controllerInst: Object): void {\n\t\twindow[instanceName] = controllerInst;\n\t\tthis._internal_getDefinitionManager().addControllerDefinition(instanceName, controllerInst);\n\t}\n\n\tpublic getController(instanceName: string) {\n\t\treturn this._internal_getDefinitionManager().getControllerDefinition(instanceName).controllerInstance;\n\t}\n\n\tpublic registerComponent(tag: string, templateUrl: string, preload: boolean): void {\n\t\tvar p: Promise = this._internal_getDefinitionManager().addComponentDefinition(tag, templateUrl, preload);\n\t\tthis.promiseArray.push(p);\n\t}\n\n\tpublic getComponent(tagName: string) {\n\t\treturn this._internal_getDefinitionManager().getComponent(tagName);\n\t}\n\n\tpublic getComponentController(componentId: string): Object {\n\t\treturn this._internal_getDefinitionManager().getControllerInstByDomId(componentId);\n\t}\n\n\tpublic refresh(alias?: string | Array, excludeElement?: HTMLElement) {\n\t\tif (!this.dirtyChecker) {\n\t\t\tthis.dirtyChecker = new DirtyChecker(this);\n\t\t}\n\t\tthis.dirtyChecker.runDirtyChecking(alias, excludeElement);\n\t}\n\t//internal function\n\tpublic _internal_getDefinitionManager(): DefinitionManager {\n\t\tif (!this.defMgr) {\n\t\t\tthis.defMgr = new DefinitionManager(this);\n\t\t}\n\t\treturn this.defMgr;\n\t}\n\tpublic _internal_dealWithElement(element: HTMLElement, callback: Function): void {\n\t\tthis.analyizeElement(element, callback);\n\t}\n\n\tprivate manageApplication(): void {\n\t\tlet apps: NodeList = Selector.querySelectorAll(document, \"[uku-application]\");\n\t\tif (apps.length === 1) {\n\t\t\tthis.analyizeElement(apps[0] as HTMLElement, (ele) => {\n\t\t\t\tthis.dispatchEvent(new Event(UkuEventType.INITIALIZED, ele));\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new Error(\"Only one 'uku-application' can be declared in a whole html.\");\n\t\t}\n\t}\n\tprivate analyizeElement(element: HTMLElement, callback?: Function): void {\n\t\tlet anylyzer = new Analyzer(this);\n\t\tif (callback) {\n\t\t\t((retFunc: Function) => {\n\t\t\t\tanylyzer.addListener(Analyzer.ANALYIZE_COMPLETED, (e) => {\n\t\t\t\t\tretFunc(e.element);\n\t\t\t\t});\n\t\t\t})(callback);\n\t\t}\n\t\tanylyzer.analyizeElement(element);\n\t}\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/Ukulele.ts","import {ObjectUtil} from \"../util/ObjectUtil\";\nimport {Ajax} from \"../extend/Ajax\";\nimport {ControllerModel} from \"../model/ControllerModel\";\nimport {ComponentModel} from \"../model/ComponentModel\";\nimport {ComponentPoolItem} from \"../model/ComponentPoolItem\";\nimport {ComponentConfiguration} from \"../model/ComponentConfiguration\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {IUkulele} from \"./IUkulele\";\nexport class DefinitionManager{\n\tprivate uku:IUkulele;\n\tconstructor(_uku:IUkulele){\n\t\tthis.uku = _uku;\n\t}\n private controllersDefinition:Object = {};\n\tprivate componentsDefinition:Object = {};\n\tprivate componentsPool:Object = {};\n\tprivate copyControllers:Object = {};\n\tprivate dependentScriptsCache:Object = {};\n private ajax:Ajax = new Ajax();\n\n getComponentsDefinition():Object{\n return this.componentsDefinition;\n }\n\t\n\tgetComponentsPool():Object{\n\t\treturn this.componentsPool;\n\t}\n\t\n\tsetComponentsPool(pool):void{\n\t\tthis.componentsPool = pool;\n\t}\n\t\n setComponentsDefinition(value:Object):void{\n this.componentsDefinition = value;\n }\n\n\tgetComponentDefinition(tagName:string):ComponentModel{\n\t\treturn this.componentsDefinition[tagName] as ComponentModel;\n\t}\n\n getControllerDefinition(instanceName:string):ControllerModel{\n return this.controllersDefinition[instanceName] as ControllerModel;\n }\n\n\tgetControllersDefinition():Object{\n\t\treturn this.controllersDefinition;\n\t}\n\n\tgetComponent(tagName:string){\n\t\treturn this.componentsPool[tagName];\n\t}\n\n getCopyControllers():Object{\n return this.copyControllers;\n }\n\n copyAllController():void{\n\t\tfor (let alias in this.controllersDefinition) {\n\t\t\tlet controllerModel = this.controllersDefinition[alias];\n\t\t\tlet controller = controllerModel.controllerInstance;\n\t\t\tthis.copyControllerInstance(controller, alias);\n\t\t}\n\t}\n\n\tcopyControllerInstance(controller:Object, alias:string):void{\n\t\tlet previousCtrlInst = ObjectUtil.deepClone(controller);\n\t\tdelete this.copyControllers[alias];\n\t\tthis.copyControllers[alias] = previousCtrlInst;\n\t}\n\n addControllerDefinition(instanceName:string, controllerInst):void{\n let controllerModel = new ControllerModel(instanceName, controllerInst);\n\t\tcontrollerInst._alias = instanceName;\n\t\tthis.controllersDefinition[instanceName] = controllerModel;\n\t}\n\t\n\tgetControllerInstByDomId(domId:string):Object{\n\t\tfor (let alias in this.controllersDefinition) {\n\t\t\tlet controllerModel = this.controllersDefinition[alias];\n\t\t\tlet controller = controllerModel.controllerInstance;\n\t\t\tif(controller._dom && controller._dom.id === domId){\n\t\t\t\treturn controller;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t\n addComponentDefinition(tag:string,templateUrl:string,preload:boolean):Promise{\n\t\treturn new Promise((resolve,reject) => {\n\t\t\tif(!preload){\n\t\t\t\tthis.componentsPool[tag] = new ComponentPoolItem(tag,templateUrl,true);\n\t\t\t\tresolve();\n\t\t\t}else{\n\t\t\t\tthis.componentsPool[tag] = new ComponentPoolItem(tag,templateUrl,false);\n\t\t\t\treturn this.ajax.get(templateUrl).then((result) => {\n\t\t\t\t\tlet componentConfig = UkuleleUtil.getComponentConfiguration(result);\n\t\t\t\t\treturn this.analyizeComponent(tag,componentConfig);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n }\n\n addLazyComponentDefinition(tag:string,templateUrl:string):Promise{\n\t\treturn new Promise((resolve ,reject) => {\n\t\t\treturn this.ajax.get(templateUrl).then((result)=>{\n\t\t\t\tlet componentConfig = UkuleleUtil.getComponentConfiguration(result);\n\t\t\t\treturn this.analyizeComponent(tag,componentConfig).then(()=>{\n\t\t\t\t\tthis.componentsPool[tag] = {'tagName':tag,'templateUrl':templateUrl,'lazy':false};\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\n\n\tgetBoundAttributeValue(attr:string, ...additionalArgu):any{\n\t\tlet controllerModels = this.getControllerModelByName(attr);\n\t\tlet controllers = [];\n\t\tcontrollerModels.forEach( controllerModel => {\n\t\t\tcontrollers.push(controllerModel.controllerInstance);\n\t\t});\n\t\tlet parameters:Array = [this.uku,controllers,attr];\n\t\tparameters = parameters.concat(additionalArgu);\n\t\tlet result = UkuleleUtil.getFinalValue.apply(null,parameters);\n\t\treturn result;\n\t};\n\n\n\tgetControllerModelByName(expression:string):ControllerModel[] {\n\t\treturn this.getBoundControllerModelByName(expression);\n\t};\n\n\n\tgetFinalValueByExpression(expression:string):any{\n\t\tlet controllerModels = this.getControllerModelByName(expression);\n\t\tlet controllers = [];\n\t\tcontrollerModels.forEach( controllerModel => {\n\t\t\tcontrollers.push(controllerModel.controllerInstance);\n\t\t});\n\t\t\n\t\treturn UkuleleUtil.getFinalValue(controllers, expression);\n\t};\n\n private getBoundControllerModelByName(attrName:string):ControllerModel[]{\n\t\tlet alias_list:string[] = Object.keys(this.controllersDefinition);\n\t\tlet instanceNames:string[] = UkuleleUtil.getBoundModelInstantNames(alias_list,attrName);\n\t\tlet arr = [];\n\t\tinstanceNames.forEach(instanceName => {\n\t\t\tlet controllerModel:ControllerModel = this.controllersDefinition[instanceName];\n\t\t\tarr.push(controllerModel);\n\t\t});\n\t\treturn arr;\n\t}\n\t\n private async analyizeComponent(tag:string,config:ComponentConfiguration):Promise{\n\t\tlet deps:Array = config.dependentScripts;\n\t\tlet self:DefinitionManager = this;\n\t\tif(deps && deps.length > 0){\n\t\t\tlet tmpAMD;\n\t\t\tif(typeof window['define'] === 'function' && window['define'].amd){\n\t\t\t\ttmpAMD = window['define'];\n\t\t\t\twindow['define'] = undefined;\n\t\t\t}\n\t\t\tif(!config.componentControllerScript){\n\t\t\t\tlet ccsExternal = deps[deps.length-1];\n\t\t\t\tconfig.componentControllerScript = await this.ajax.get(ccsExternal);\n\t\t\t\tdeps.pop();\n\t\t\t}\n\t\t\tfor (let i = 0; i < deps.length; i++) {\n\t\t\t\tlet dep = deps[i];\n\t\t\t\tawait loadDependentScript(dep);\n\t\t\t}\n\t\t\tif(tmpAMD){\n\t\t\t\twindow['define'] = tmpAMD;\n\t\t\t}\n\t\t\tthis.buildeComponentModel(tag,config.template,config.componentControllerScript,config.stylesheet);\n\t\t\treturn;\n\t\t}else{\n\t\t\tthis.buildeComponentModel(tag,config.template,config.componentControllerScript,config.stylesheet);\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tfunction loadDependentScript(src:string):Promise{\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tif(!self.dependentScriptsCache[src]){\n\t\t\t\t\tlet head = document.getElementsByTagName('HEAD')[0];\n\t\t\t\t\tlet script = document.createElement('script');\n\t\t\t\t\tscript.type = 'text/javascript';\n\t\t\t\t\tscript.charset = 'utf-8';\n\t\t\t\t\tscript.async = true;\n\t\t\t\t\tscript.src = src;\n\t\t\t\t\tscript.onload = (e)=>{\n\t\t\t\t\t\tself.dependentScriptsCache[e.target['src']] = true;\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t};\n\t\t\t\t\thead.appendChild(script);\n\t\t\t\t}else{\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate buildeComponentModel(tag:string,template:string,script:string,style:string):void{\n\t\tlet debugComment = \"//# sourceURL=\"+tag+\".js\";\n\t\ttry{\n\t\t\tlet controllerClazz\n\t\t\tif(script){\n\t\t\t\tscript += debugComment;\n\t\t\t\tcontrollerClazz = eval(script);\n\t\t\t}\n\t\t\tlet newComp = new ComponentModel(tag, template,controllerClazz);\n\t\t\tthis.componentsDefinition[tag] = newComp;\n\t\t\tif(style){\n\t\t\t\tdealWithShadowStyle(tag,style);\n\t\t\t}\n\t\t}catch(e){\n\t\t\tconsole.error(e);\n\t\t}\n\n\t\tfunction dealWithShadowStyle(tagName:string,stylesheet:string):void{\n\t\t\tlet head = document.getElementsByTagName('HEAD')[0];\n\t\t\tlet style = document.createElement('style');\n\t\t\tstyle.type = 'text/css';\n\t\t\tvar styleArray = stylesheet.split(\"}\");\n\t\t\tvar newArray = [];\n\t\t\tstyleArray.forEach((value:string,index:number)=>{\n\t\t\t\tvar newValue = value.replace(/^\\s*/,\"\");\n\t\t\t\tif(newValue){\n\t\t\t\t\tnewArray.push(newValue);\n\t\t\t\t}\n\t\t\t});\n\t\t\tstylesheet = newArray.join(\"}\\n\" + \".\" + tagName + \" \");\n\t\t\tstylesheet = \".\" + tagName + \" \" + stylesheet + \"}\";\n\t\t\tstyle.innerHTML = stylesheet;\n\t\t\thead.appendChild(style);\n\t\t}\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/DefinitionManager.ts","export class Ajax {\n get(url:string):Promise {\n return new Promise((resolve, reject)=>{\n let request:XMLHttpRequest = new XMLHttpRequest();\n request.onreadystatechange = function() {\n if (request.readyState === 4) {\n if (request.status === 200) {\n resolve(request.responseText);\n } else {\n reject();\n }\n }\n };\n request.open(\"GET\", url, true);\n request.send(null);\n });\n \n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/extend/Ajax.ts","import {BoundItemBase} from \"./BoundItemBase\";\nexport class ControllerModel{\n alias:string;\n controllerInstance:Object;\n boundItems:Array;\n constructor(alias:string ,ctrlInst:Object){\n this.alias = alias;\n this.controllerInstance = ctrlInst;\n this.boundItems = [];\n }\n addBoundItem(boundItem:BoundItemBase) :void{\n this.boundItems.push(boundItem);\n }\n\n getBoundItemsByName(name):Array {\n let tempBoundItems:Array = [];\n for (let i = 0; i < this.boundItems.length; i++) {\n let boundItem:BoundItemBase = this.boundItems[i];\n if (boundItem.attributeName === name) {\n tempBoundItems.push(boundItem);\n }\n }\n return tempBoundItems;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/ControllerModel.ts","export class ComponentModel{\n tagName:string;\n template:string;\n controllerClazz:Function;\n constructor(tagName,template,clazz){\n this.tagName = tagName;\n this.template = template;\n this.controllerClazz = clazz;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/ComponentModel.ts","export class ComponentPoolItem{\n tagName:string;\n templateUrl:string;\n lazy:boolean;\n \n constructor(_tagName,_templateUrl,_lazy){\n this.tagName = _tagName;\n this.templateUrl = _templateUrl;\n this.lazy = _lazy;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/ComponentPoolItem.ts","export class ComponentConfiguration{\n template:string;\n dependentScripts:Array;\n componentControllerScript:string;\n stylesheet:string;\n \n constructor(_template:string,_dependentScripts:Array,_componentControllerScript:string,_stylesheet:string = undefined){\n this.template = _template;\n this.dependentScripts = _dependentScripts;\n this.componentControllerScript = _componentControllerScript;\n this.stylesheet = _stylesheet;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/ComponentConfiguration.ts","import {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {ObjectUtil} from \"../util/ObjectUtil\";\nimport {UkuEventType} from \"./UkuEventType\";\nimport {IUkulele} from \"./IUkulele\";\nimport {EventEmitter} from \"./EventEmitter\";\nimport {ControllerModel} from \"../model/ControllerModel\";\nimport {BoundItemBase} from \"../model/BoundItemBase\";\nimport {Event} from \"./Event\";\nexport class DirtyChecker{\n\tprivate uku:IUkulele;\n\tprivate defMgr;\n\tconstructor(_uku:IUkulele){\n\t\tthis.uku = _uku;\n\t\tthis.defMgr = this.uku._internal_getDefinitionManager();\n\t}\n \n\trunDirtyChecking(ctrlAliasName?:string|Array, excludeElement?:HTMLElement):void {\n\t\tlet _this:DirtyChecker = this;\n\t\tif (ctrlAliasName) {\n\t\t\tif (typeof (ctrlAliasName) === \"string\") {\n\t\t\t\twatchController(ctrlAliasName as string);\n\t\t\t} else if (ObjectUtil.isArray(ctrlAliasName)) {\n\t\t\t\tfor (let i = 0; i < ctrlAliasName.length; i++) {\n\t\t\t\t\twatchController(ctrlAliasName[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (let alias in this.defMgr.getControllersDefinition()) {\n\t\t\t\twatchController(alias);\n\t\t\t}\n\t\t}\n\n\t\tfunction watchController(alias:string) {\n\t\t\tlet controllerModel:ControllerModel = _this.defMgr.getControllersDefinition()[alias];\n\t\t\tif (!controllerModel) {\n\t\t\t\tif (_this.uku.parentUku) {\n\t\t\t\t\t_this.uku.parentUku.refresh(alias);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet controller:Object = controllerModel.controllerInstance;\n\t\t\tlet previousCtrlModel:ControllerModel = _this.defMgr.getCopyControllers()[alias];\n\t\t\tlet changedElementCount = 0;\n\t\t\tfor (let i = 0; i < controllerModel.boundItems.length; i++) {\n\t\t\t\tlet boundItem:BoundItemBase = controllerModel.boundItems[i] as BoundItemBase;\n\t\t\t\tlet attrName:string = boundItem.attributeName;\n\t\t\t\tif(attrName.search('parent.') > -1){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (previousCtrlModel) {\n\t\t\t\t\tif (boundItem.hasOwnProperty('ukuTag') && boundItem['ukuTag'] === \"selected\") {\n\t\t\t\t\t\tattrName = attrName.split(\"|\")[0];\n\t\t\t\t\t}\n\t\t\t\t\tlet finalValue = UkuleleUtil.getFinalValue( [controller], attrName);\n\t\t\t\t\tlet previousFinalValue = UkuleleUtil.getFinalValue([previousCtrlModel], attrName);\n\t\t\t\t\tif (!ObjectUtil.compare(previousFinalValue, finalValue)) {\n\t\t\t\t\t\tattrName = boundItem.attributeName;\n\t\t\t\t\t\tlet changedBoundItems:Array = controllerModel.getBoundItemsByName(attrName);\n\t\t\t\t\t\tfor (let j = 0; j < changedBoundItems.length; j++) {\n\t\t\t\t\t\t\tlet changedBoundItem:BoundItemBase = changedBoundItems[j] as BoundItemBase;\n\t\t\t\t\t\t\tif(changedBoundItem.element !== excludeElement || (boundItem.hasOwnProperty('ukuTag') && changedBoundItem['ukuTag'] !== \"value\")){\n\t\t\t\t\t\t\t\tchangedElementCount++;\n\t\t\t\t\t\t\t\tchangedBoundItem.render([controller]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(changedElementCount > 0 && _this.uku.hasListener(UkuEventType.REFRESH)){\n\t\t\t\t_this.uku.dispatchEvent(new Event(UkuEventType.REFRESH));\n\t\t\t}\n\t\t\t_this.defMgr.copyControllerInstance(controller, alias);\n\t\t}\n\t};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/DirtyChecker.ts","import { EventEmitter } from \"./EventEmitter\";\nimport { UkuleleUtil } from \"../util/UkuleleUtil\";\nimport { BoundItemAttributeFactory } from './BoundItemAttributeFactory';\nimport { BoundItemExpression } from '../model/BoundItemExpression';\nimport { BoundItemInnerText } from '../model/BoundItemInnerText';\nimport { BoundItemRepeat } from '../model/BoundItemRepeat';\nimport { BoundItemComponentAttribute } from \"../model/BoundItemComponentAttribute\";\nimport { elementChangedBinder } from \"./ElementActionBinder\";\nimport { IUkulele } from \"./IUkulele\";\nimport { EventListener } from \"../extend/EventListener\";\nimport { Selector } from \"../extend/Selector\";\nimport { Event as UkuEvent } from \"./Event\";\nexport class Analyzer extends EventEmitter {\n private uku: IUkulele;\n private defMgr;\n static ANALYIZE_COMPLETED: string = 'analyizeCompleted';\n constructor(_uku: IUkulele) {\n super();\n this.uku = _uku;\n this.defMgr = this.uku._internal_getDefinitionManager();\n }\n\n public analyizeElement(ele): void {\n this.searchComponent(ele).then((element) => {\n this.searchExpression(element);\n this.searchUkuAttribute(element);\n this.defMgr.copyAllController();\n if (this.hasListener(Analyzer.ANALYIZE_COMPLETED)) {\n this.dispatchEvent(new UkuEvent(Analyzer.ANALYIZE_COMPLETED, element));\n }\n });\n }\n\n private sortAttributes(subElement): Array {\n let orderAttrs = [];\n for (let i = 0; i < subElement.attributes.length; i++) {\n let attribute = subElement.attributes[i];\n if (attribute.nodeName.search(\"uku-on\") !== -1) {\n orderAttrs.push(attribute);\n } else {\n orderAttrs.unshift(attribute);\n }\n }\n return orderAttrs;\n }\n\n private searchUkuAttribute(element): void {\n let subElements = [];\n //scan element which has uku-* tag\n let isSelfHasUkuTag = Selector.fuzzyFind(element, 'uku-');\n if (isSelfHasUkuTag) {\n subElements.push(isSelfHasUkuTag);\n }\n let allChildren = Selector.querySelectorAll(element, \"*\");\n for (let i = 0; i < allChildren.length; i++) {\n let child: HTMLElement = allChildren[i] as HTMLElement;\n let matchElement = Selector.fuzzyFind(child, 'uku-');\n if (matchElement && !UkuleleUtil.isInRepeat(matchElement)) {\n subElements.push(matchElement);\n }\n }\n //解析绑定 attribute,注册event\n for (let n = 0; n < subElements.length; n++) {\n let subElement = subElements[n];\n let orderAttrs = this.sortAttributes(subElement);\n for (let j = 0; j < orderAttrs.length; j++) {\n let attribute = orderAttrs[j];\n if (UkuleleUtil.searchUkuAttrTag(attribute.nodeName) > -1) {\n let tempArr = attribute.nodeName.split('-');\n tempArr.shift();\n let attrName = tempArr.join('-');\n if (attrName !== \"application\") {\n if (attrName.search('on') === 0) {\n //is an event\n if (!UkuleleUtil.isRepeat(subElement) && !UkuleleUtil.isInRepeat(subElement)) {\n this.dealWithEvent(subElement, attrName);\n }\n } else if (attrName.search('repeat') !== -1) {\n //is an repeat\n this.dealWithRepeat(subElement);\n } else {\n //is an attribute\n if (!UkuleleUtil.isRepeat(subElement) && !UkuleleUtil.isInRepeat(subElement)) {\n if (attrName !== \"text\") {\n this.dealWithAttribute(subElement, attrName);\n } else {\n this.dealWithInnerText(subElement);\n }\n }\n }\n }\n }\n }\n }\n }\n\n\n private async searchComponent(element): Promise {\n let comp = this.defMgr.getComponent(element.localName);\n if (comp) {\n if (!comp.lazy) {\n let attrs = element.attributes;\n let compDef = this.defMgr.getComponentsDefinition()[comp.tagName];\n if (!UkuleleUtil.isRepeat(element) && !UkuleleUtil.isInRepeat(element)) {\n return this.dealWithComponent(element, compDef.template, compDef.controllerClazz, attrs);\n } else {\n return element;\n }\n } else {\n await this.defMgr.addLazyComponentDefinition(comp.tagName, comp.templateUrl);\n let attrs = element.attributes;\n let compDef = this.defMgr.getComponentsDefinition()[comp.tagName];\n if (!UkuleleUtil.isRepeat(element) && !UkuleleUtil.isInRepeat(element)) {\n return this.dealWithComponent(element, compDef.template, compDef.controllerClazz, attrs);\n } else {\n return element;\n }\n }\n } else {\n if (element.children && element.children.length > 0) {\n for (let i = 0; i < element.children.length; i++) {\n let child = element.children[i];\n await this.searchComponent(child);\n }\n return element;\n } else {\n return element;\n }\n }\n }\n\n private async dealWithComponent(tag, template, Clazz, attrs): Promise {\n let randomAlias = 'cc_' + Math.floor(10000 * Math.random()).toString();\n\n //should consider white space between characters\n template = template.replace(new RegExp(\"\\'cc\\\\.\", 'gm'), \"'\" + randomAlias + '.');\n template = template.replace(new RegExp('\"cc\\\\.', 'gm'), '\"' + randomAlias + '.');\n template = template.replace(new RegExp('\\{\\{cc\\\\.', 'gm'), \"{{\" + randomAlias + '.');\n template = template.replace(new RegExp(' cc\\\\.', 'gm'), ' ' + randomAlias + '.');\n template = template.replace(new RegExp('\\\\(cc\\\\.', 'gm'), '(' + randomAlias + '.');\n template = template.replace(new RegExp('\\\\,cc\\\\.', 'gm'), ',' + randomAlias + '.');\n template = template.replace(new RegExp('\\\\.cc\\\\.', 'gm'), '.' + randomAlias + '.');\n let tempFragment = document.createElement('div');\n tempFragment.insertAdjacentHTML('afterBegin' as InsertPosition, template);\n if (tempFragment.children.length > 1) {\n template = tempFragment.outerHTML;\n }\n tag.insertAdjacentHTML('beforeBegin', template);\n let htmlDom = tag.previousElementSibling;\n htmlDom.classList.add(tag.localName);\n let cc;\n if (Clazz) {\n cc = new Clazz(this.uku);\n cc._dom = htmlDom;\n cc.fire = (eventType: string, data: any, bubbles: boolean = false, cancelable: boolean = true) => {\n let event = new CustomEvent(eventType.toLowerCase(), { \"bubbles\": bubbles, \"cancelable\": cancelable });\n event['data'] = data;\n cc._dom.dispatchEvent(event);\n };\n this.uku.registerController(randomAlias, cc);\n for (let i = 0; i < attrs.length; i++) {\n let attr = attrs[i];\n //todo need Refactor\n if (UkuleleUtil.searchUkuAttrTag(attr.nodeName) !== 0\n || attr.nodeName.search(\"uku-on\") !== -1\n || attr.nodeName === \"uku-render\"\n || attr.nodeName === \"uku-visible\") {\n htmlDom.setAttribute(attr.nodeName, attr.nodeValue);\n } else {\n let tagName = UkuleleUtil.getAttrFromUkuTag(attr.nodeName, true);\n let controllerModels = this.defMgr.getControllerModelByName(attr.nodeValue);\n if (controllerModels && controllerModels.length > 0) {\n let boundItem = new BoundItemComponentAttribute(attr.nodeValue, tagName, cc, this.uku);\n let controllers = [];\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n controllers.push(controllerModel.controllerInstance);\n });\n \n boundItem.render(controllers);\n }\n }\n }\n } else {\n for (let i = 0; i < attrs.length; i++) {\n let attr = attrs[i];\n //todo:need Refactor\n if (UkuleleUtil.searchUkuAttrTag(attr.nodeName) !== 0\n || attr.nodeName.search(\"uku-on\") !== -1\n || attr.nodeName === \"uku-render\"\n || attr.nodeName === \"uku-visible\") {\n htmlDom.setAttribute(attr.nodeName, attr.nodeValue);\n }\n }\n }\n\n tag.parentNode.removeChild(tag);\n if (htmlDom.children && htmlDom.children.length > 0) {\n for (let j = 0; j < htmlDom.children.length; j++) {\n let child = htmlDom.children[j];\n await this.searchComponent(child);\n }\n if (cc && cc._initialized && typeof (cc._initialized) === 'function') {\n cc._initialized(randomAlias,cc._dom);\n }\n return htmlDom;\n } else {\n if (cc && cc._initialized && typeof (cc._initialized) === 'function') {\n cc._initialized(randomAlias,cc._dom);\n }\n return htmlDom;\n }\n }\n //todo: 处理 tag之间使用{{}}括起的表达式,用以显示文字\n private searchExpression(element: HTMLElement): void {\n if (UkuleleUtil.searchUkuExpTag(Selector.directText(element)) !== -1) {\n if (!UkuleleUtil.isRepeat(element) && !UkuleleUtil.isInRepeat(element)) {\n //normal expression\n this.dealWithExpression(element);\n }\n }\n for (let i = 0; i < element.children.length; i++) {\n this.searchExpression(element.children[i] as HTMLElement);\n }\n\n\n }\n\n private dealWithExpression(element) {\n //通常的花括号声明方式\n let expression = Selector.directText(element);\n if (UkuleleUtil.searchUkuExpTag(expression) !== -1) {\n let attr = expression.slice(2, -2);\n let controllerModels = this.defMgr.getControllerModelByName(attr);\n if (controllerModels && controllerModels.length > 0) {\n let boundItem = new BoundItemExpression(attr, expression, element, this.uku);\n let controllers = [];\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n controllers.push(controllerModel.controllerInstance);\n }); \n boundItem.render(controllers);\n }\n }\n }\n\n //处理绑定的attribute\n private dealWithAttribute: Function = function (element, tagName) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n //let elementName = element.tagName;\n let controllerModels = this.defMgr.getControllerModelByName(attr);\n if (controllerModels && controllerModels.length > 0) {\n let boundItem = BoundItemAttributeFactory.getInstance().generateInstance(attr, tagName, element, this.uku);\n let controllers = [];\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n elementChangedBinder(element, tagName, controllerModel, this.uku.refresh, this.uku);\n controllers.push(controllerModel.controllerInstance)\n }); \n boundItem.render(controllers);\n \n }\n }\n\n //处理 uku-text\n private dealWithInnerText(element) {\n let attr = element.getAttribute(\"uku-text\");\n if (attr) {\n let controllerModels = this.defMgr.getControllerModelByName(attr);\n if (controllerModels && controllerModels.length > 0) {\n let boundItem = new BoundItemInnerText(attr, element, this.uku);\n let controllers = [];\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n controllers.push(controllerModel.controllerInstance);\n });\n boundItem.render(controllers);\n }\n }\n }\n\n\n //处理 事件 event\n private dealWithEvent(element, eventName) {\n let expression = element.getAttribute(\"uku-\" + eventName);\n let eventNameInListener = eventName.substring(2);\n eventNameInListener = eventNameInListener.toLowerCase();\n let controllerModels = this.defMgr.getControllerModelByName(expression);\n if(!controllerModels || controllerModels.length === 0){\n controllerModels = [];\n } \n EventListener.addEventListener(element, eventNameInListener, (event) => {\n let alias_list = [];\n controllerModels.forEach(controllerModel => {\n this.defMgr.copyControllerInstance(controllerModel.controllerInstance, controllerModels.alias);\n alias_list.push(controllerModel.alias);\n });\n \n let index = UkuleleUtil.searchUkuFuncArg(expression);\n if(index === -1){\n // is an expression, not a function\n let handler = new Function(\"event\",\"return \" + expression);\n console.log(handler.toString());\n handler(event);\n }else{\n // is a function\n let i = expression.search(/\\(/);\n let arg = 'event';\n if(expression[i+1] !== ')'){\n // has argument\n arg = 'event,'\n }\n let arr = expression.split('(');\n arr[1] = arg + arr[1];\n let new_expression = arr.join(\"(\");\n (function(e){\n let tempScope = {};\n tempScope['event'] = e;\n eval(new_expression);\n tempScope = null;\n })(event);\n }\n this.uku.refresh(alias_list, element);\n });\n }\n //处理 repeat\n private dealWithRepeat(element) {\n let repeatExpression = element.getAttribute(\"uku-repeat\");\n let tempArr = repeatExpression.split(' in ');\n let itemName = tempArr[0];\n let attr = tempArr[1];\n let controllerModels = this.defMgr.getControllerModelByName(attr);\n if (controllerModels && controllerModels.length > 0) {\n let controllers = [];\n //let controllerInst = controllerModel.controllerInstance;\n let boundItem = new BoundItemRepeat(attr, itemName, element, this.uku);\n controllerModels.forEach(controllerModel => {\n controllerModel.addBoundItem(boundItem);\n controllers.push(controllerModel.controllerInstance);\n }); \n boundItem.render(controllers);\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/Analyzer.ts","import {BountItemAttrSelected} from \"../model/directive/BoundItemAttrSelected\";\nimport {BoundItemAttrDataItem} from \"../model/directive/BoundItemAttrDataItem\";\nimport {BoundItemAttrSrc} from \"../model/directive/BoundItemAttrSrc\";\nimport {BoundItemAttrDisabled} from \"../model/directive/BoundItemAttrDisabled\";\nimport {BoundItemAttrRender} from \"../model/directive/BoundItemAttrRender\";\nimport {BoundItemAttrStyle} from \"../model/directive/BoundItemAttrStyle\";\nimport {BoundItemAttrValue} from \"../model/directive/BoundItemAttrValue\";\nimport {BoundItemAttrVisible} from \"../model/directive/BoundItemAttrVisible\";\nimport {BoundItemAttribute} from \"../model/BoundItemAttribute\";\nexport class BoundItemAttributeFactory{\n private static _instance = new BoundItemAttributeFactory();\n constructor(){\n if(BoundItemAttributeFactory._instance){\n throw new Error(\"Error: Instantiation failed: Use BoundItemAttributeFactory.getInstance() instead of new.\"); \n }\n BoundItemAttributeFactory._instance = this;\n\n }\n static getInstance():BoundItemAttributeFactory{\n return BoundItemAttributeFactory._instance;\n }\n generateInstance(attr, tagName, element, uku){\n let instance;\n switch (tagName) {\n case \"selected\":\n instance = new BountItemAttrSelected(attr, tagName, element, uku);\n break;\n case \"data-item\":\n instance = new BoundItemAttrDataItem(attr, tagName, element, uku);\n break;\n case \"src\":\n instance = new BoundItemAttrSrc(attr, tagName, element, uku);\n break;\n case \"disabled\":\n instance = new BoundItemAttrDisabled(attr, tagName, element, uku);\n break;\n case \"render\":\n instance = new BoundItemAttrRender(attr, tagName, element, uku);\n break;\n case \"style\":\n instance = new BoundItemAttrStyle(attr, tagName, element, uku);\n break;\n case \"value\":\n instance = new BoundItemAttrValue(attr, tagName, element, uku);\n break;\n case \"visible\":\n instance = new BoundItemAttrVisible(attr, tagName, element, uku);\n break;\n default:\n instance = new BoundItemAttribute(attr, tagName, element, uku);\n }\n return instance;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/core/BoundItemAttributeFactory.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BountItemAttrSelected extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"selected\"){\n throw new TypeError(\"it doesn't use uku-selected\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let key:string;\n let elementName:string = this.element.tagName;\n if(elementName === \"SELECT\"){\n let tempArr:Array = this.attributeName.split(\"|\");\n attr = tempArr[0];\n key = tempArr[1];\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n let value;\n \tif(key){\n \t\tvalue = finalValue[key];\n \t}else{\n \t\tvalue = finalValue;\n \t}\n (this.element as HTMLSelectElement).value = value;\n }\n\n if(elementName === \"INPUT\" && this.element.getAttribute(\"type\") === \"radio\"){\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if((this.element as HTMLInputElement).value === finalValue){\n (this.element as HTMLInputElement).setAttribute(\"checked\",\"true\");\n }\n } \n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrSelected.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrDataItem extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"data-item\"){\n throw new TypeError(\"it doesn't use uku-item\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(elementName === \"OPTION\"){\n \tfinalValue = JSON.stringify(finalValue);\n this.element.setAttribute('data-item',finalValue);\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrDataItem.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrSrc extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"src\"){\n throw new TypeError(\"it doesn't use uku-src\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(elementName === \"IMG\"){\n \t\tif(finalValue){\n this.element.setAttribute(this.ukuTag,finalValue);\n }\n \t}else{\n throw new Error(\"uku-src doesn't work with current dom\");\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrSrc.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrDisabled extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"disabled\"){\n throw new TypeError(\"it doesn't use uku-disabled\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n (this.element as HTMLInputElement).disabled = finalValue;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrDisabled.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrRender extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"render\"){\n throw new TypeError(\"it doesn't use uku-render\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(finalValue){\n let oldDisplaySetting = this.element.getAttribute(\"data-old-display\");\n if(oldDisplaySetting !== null){\n this.element.style.display = oldDisplaySetting;\n }\n }else{\n let oldDisplaySetting = this.element.getAttribute(\"data-old-display\");\n if(oldDisplaySetting === null){\n oldDisplaySetting = this.element.style.display;\n this.element.setAttribute(\"data-old-display\",oldDisplaySetting);\n }\n this.element.style.display = \"none\";\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrRender.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrStyle extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"style\"){\n throw new TypeError(\"it doesn't use uku-style\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n for(let cssName in finalValue){\n this.element.style[cssName] = finalValue[cssName];\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrStyle.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrValue extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"value\"){\n throw new TypeError(\"it doesn't use uku-value\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(elementName === \"INPUT\" && this.element.getAttribute(\"type\") === \"checkbox\"){\n \t\t(this.element as HTMLInputElement).checked = finalValue;\n \t}\n \telse{\n (this.element as HTMLInputElement).value = finalValue;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrValue.ts","import {BoundItemAttribute} from \"../BoundItemAttribute\";\nimport {UkuleleUtil} from \"../../util/UkuleleUtil\";\n\nexport class BoundItemAttrVisible extends BoundItemAttribute{\n constructor(attrName:string, ukuTag:string, element:HTMLElement, uku:any){\n if(ukuTag !== \"visible\"){\n throw new TypeError(\"it doesn't use uku-visible\");\n }\n super(attrName,ukuTag,element,uku);\n }\n render(controllers):void{\n let attr:string = this.attributeName;\n let elementName:string = this.element.tagName;\n let finalValue = UkuleleUtil.getFinalValue(controllers,attr);\n if(finalValue){\n this.element.style.visibility = \"visible\";\n }else{\n this.element.style.visibility = \"hidden\";\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/model/directive/BoundItemAttrVisible.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {Selector} from \"../extend/Selector\";\nimport {IUkulele} from \"../core/IUkulele\";\nexport class BoundItemExpression extends BoundItemBase{\n expression:string;\n constructor(attrName:string, expression:string, element:HTMLElement, uku:IUkulele){\n super(attrName,element,uku);\n this.expression = expression;\n }\n\n render(controllers) :void{\n let finalValue = UkuleleUtil.getFinalValue(controllers,this.attributeName);\n Selector.directText(this.element,finalValue);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemExpression.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {IUkulele} from \"../core/IUkulele\";\nexport class BoundItemInnerText extends BoundItemBase{\n tagName:string;\n constructor(attrName:string, element:HTMLElement, uku:IUkulele){\n super(attrName,element,uku);\n this.tagName = 'text';\n }\n\n render(controllers):void {\n let finalValue = UkuleleUtil.getFinalValue(controllers,this.attributeName);\n this.element.innerHTML = finalValue;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemInnerText.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {IUkulele} from \"../core/IUkulele\";\n\nexport class BoundItemRepeat extends BoundItemBase{\n expression:string;\n renderTemplate:string;\n parentElement:Node;\n beginCommentString:string;\n endCommentString:string;\n constructor(attrName, itemName, element, uku){\n super(attrName, element, uku);\n this.expression = itemName;\n this.renderTemplate = element.outerHTML;\n this.parentElement = element.parentNode;\n this.beginCommentString = undefined;\n this.endCommentString = undefined;\n }\n\n render(controllers) {\n let finalValue = UkuleleUtil.getFinalValue(controllers, this.attributeName);\n if (!finalValue) {\n return;\n }\n\n let self = this;\n if (this.element && this.element.parentNode) {\n //create repeate begin comment\n this.beginCommentString = \"begin uku-repeat: \" + this.expression + \" in \" + this.attributeName;\n let beginComment = document.createComment(this.beginCommentString);\n this.element.parentNode.insertBefore(beginComment, this.element);\n //create repeate end comment\n this.endCommentString = \"end uku-repeat: \" + this.expression + \" in \" + this.attributeName;\n let endComment = document.createComment(this.endCommentString);\n this.element.parentNode.insertBefore(endComment, this.element.nextSibling);\n //remove definition dom\n this.element.parentNode.removeChild(this.element);\n }\n let filter:NodeFilter = {acceptNode: function(node){\n if (node.nodeValue === self.beginCommentString) {\n return NodeFilter.FILTER_ACCEPT;\n }\n return NodeFilter.FILTER_SKIP;\n }};\n let safeFilter:any = filter.acceptNode;\n safeFilter.acceptNode = filter.acceptNode;\n let treeWalker = document.createTreeWalker(this.parentElement,\n NodeFilter.SHOW_COMMENT,\n safeFilter,\n false);\n \n /*function filter(node:Node) :any{\n if (node.nodeValue === self.beginCommentString) {\n return (NodeFilter.FILTER_ACCEPT);\n }\n return (NodeFilter.FILTER_SKIP);\n }*/\n\n function generateTempContainer():HTMLElement{\n let index = UkuleleUtil.searchHtmlTag(self.renderTemplate,\"tr\");\n if(index === -1){\n return document.createElement(\"div\");\n }else{\n return document.createElement(\"tbody\");\n }\n }\n\n while (treeWalker.nextNode()) {\n let commentNode = treeWalker.currentNode;\n if (commentNode && commentNode.nodeValue === this.beginCommentString) {\n //remove overtime dom.\n while (commentNode.nextSibling && commentNode.nextSibling.nodeValue !== this.endCommentString) {\n commentNode.parentNode.removeChild(commentNode.nextSibling);\n }\n //create new dom\n let tempDiv = generateTempContainer();\n let blankDiv = generateTempContainer();\n commentNode.parentNode.insertBefore(blankDiv, commentNode.nextSibling);\n for (let i = 0; i < finalValue.length; i++) {\n tempDiv.insertAdjacentHTML('beforeEnd' as InsertPosition, this.renderTemplate);\n if (i === finalValue.length - 1) {\n let childrenHTML = tempDiv.innerHTML;\n blankDiv.insertAdjacentHTML('beforeBegin' as InsertPosition, childrenHTML);\n commentNode.parentNode.removeChild(blankDiv);\n tempDiv = null;\n blankDiv = null;\n }\n }\n\n let child:HTMLElement = (commentNode as HTMLElement).nextElementSibling as HTMLElement;\n for (let j = 0; j < finalValue.length; j++) {\n child.removeAttribute(\"uku-repeat\");\n var Uku_Clazz = (this.uku).constructor;\n let ukulele:IUkulele = new Uku_Clazz(); //new Ukulele();\n ukulele.parentUku = this.uku;\n let compDef = ukulele.parentUku._internal_getDefinitionManager().getComponentsDefinition();\n let compPool = ukulele.parentUku._internal_getDefinitionManager().getComponentsPool();\n ukulele._internal_getDefinitionManager().setComponentsDefinition(compDef);\n ukulele._internal_getDefinitionManager().setComponentsPool(compPool);\n let sibling:HTMLElement = child.nextSibling as HTMLElement;\n let itemType = typeof finalValue[j];\n let alias = \"repeatItem_\"+Math.floor(10000 * Math.random()).toString() + \"_\" + this.expression;\n if(itemType === \"object\"){\n ukulele.registerController(alias, finalValue[j]);\n }else {\n ukulele.registerController(alias, {'value':finalValue[j]});\n alias = alias + \".value\";\n }\n let pattern = new RegExp(\"\\\\b\"+ this.expression + \"(?!\\\\-|\\\\s|\\\\w|\\\\=)\",\"gm\");\n let newOuterHtml = child.outerHTML.replace(pattern,alias);\n child.insertAdjacentHTML('afterend',newOuterHtml);\n let newItemDom:HTMLElement = child.nextSibling as HTMLElement;\n child.parentNode.removeChild(child);\n child = newItemDom;\n ukulele._internal_dealWithElement(child,(element)=>{\n if (this.element.tagName === \"OPTION\") {\n let expression = (this.parentElement as HTMLInputElement).getAttribute(\"uku-selected\");\n let tempArr = expression.split(\"|\");\n expression = tempArr[0];\n let key = tempArr[1];\n let value = this.uku._internal_getDefinitionManager().getFinalValueByExpression(expression);\n if (key) {\n (this.parentElement as HTMLInputElement).value = value[key];\n } else {\n (this.parentElement as HTMLInputElement).value = value;\n }\n }\n });\n child = sibling;\n }\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemRepeat.ts","import {BoundItemBase} from \"./BoundItemBase\";\nimport {UkuleleUtil} from \"../util/UkuleleUtil\";\nimport {IUkulele} from \"../core/IUkulele\";\nexport class BoundItemComponentAttribute extends BoundItemBase{\n ukuTag:string;\n componentController:any;\n constructor(attrName:string, ukuTag:string, cc:any, uku:IUkulele){\n super(attrName,null,uku);\n this.ukuTag = ukuTag;\n this.componentController = cc;\n }\n render(controllers) :void{\n let finalValue = UkuleleUtil.getFinalValue(controllers,this.attributeName);\n this.componentController[this.ukuTag] = finalValue;\n this.uku.refresh(this.componentController._alias);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/model/BoundItemComponentAttribute.ts","import { UkuleleUtil } from '../util/UkuleleUtil';\nimport { EventListener } from '../extend/EventListener';\nimport { Selector } from '../extend/Selector';\n\nfunction elementChangedBinder(element, tagName, controllerModel, handler, host) {\n let elementStrategies = [inputTextCase, textareaCase, selectCase, checkboxCase, radioCase];\n for (let i = 0; i < elementStrategies.length; i++) {\n let func = elementStrategies[i];\n let goon = func.apply(this, arguments);\n if (goon) {\n break;\n }\n }\n}\n\n\nfunction inputTextCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n if (elementName === \"INPUT\" && isSupportInputType(element) && tagName === \"value\") {\n let eventType = 'change';\n let inputType = element.getAttribute('type');\n if (inputType === \"text\") {\n eventType = 'input';\n }\n EventListener.addEventListener(element, eventType, (e) => {\n let attr = element.getAttribute(\"uku-\" + tagName);\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n });\n return true;\n }\n return false;\n}\n\nfunction isSupportInputType(element) {\n let type = element.getAttribute(\"type\");\n if (type !== \"checkbox\" && type !== \"radio\") {\n return true;\n }\n return false;\n}\n\nfunction textareaCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n if (elementName === \"TEXTAREA\" && tagName === \"value\") {\n EventListener.addEventListener(element, 'input', function (e) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n });\n return true;\n }\n return false;\n}\n\nfunction selectCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n if ((elementName === \"SELECT\" && tagName === \"selected\")) {\n EventListener.addEventListener(element, 'change', function (e) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n let key;\n let tmpArr = attr.split(\"|\");\n attr = tmpArr[0];\n\n let options = Selector.querySelectorAll(element, \"option\");\n for (let j = 0; j < options.length; j++) {\n let option: HTMLOptionElement = options[j] as HTMLOptionElement;\n if (option.selected) {\n let selectedItem = JSON.parse(option.getAttribute(\"data-item\"));\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, selectedItem);\n\n }\n }\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n });\n return true;\n }\n return false;\n}\n\nfunction checkboxCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n\n if (elementName === \"INPUT\" && tagName === \"value\" && element.getAttribute(\"type\") === \"checkbox\") {\n EventListener.addEventListener(element, 'change', function (e) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.checked);\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n });\n return true;\n }\n return false;\n}\n\nfunction radioCase(element, tagName, controllerModel, handler, host) {\n let elementName = element.tagName;\n\n if (elementName === \"INPUT\" && tagName === \"selected\" && element.getAttribute(\"type\") === \"radio\") {\n EventListener.addEventListener(element, 'change', function (e) {\n let attr = element.getAttribute(\"uku-\" + tagName);\n\n if (element.checked) {\n UkuleleUtil.setFinalValue(controllerModel.controllerInstance, attr, element.value);\n if (handler) {\n handler.call(host, controllerModel.alias, element);\n }\n }\n });\n return true;\n }\n return false;\n}\n\nexport { elementChangedBinder };\n\n\n\n// WEBPACK FOOTER //\n// ./src/core/ElementActionBinder.ts"],"sourceRoot":""} \ No newline at end of file diff --git a/src/model/BoundItemRepeat.ts b/src/model/BoundItemRepeat.ts index b03ebce..0d4fa52 100644 --- a/src/model/BoundItemRepeat.ts +++ b/src/model/BoundItemRepeat.ts @@ -87,7 +87,7 @@ export class BoundItemRepeat extends BoundItemBase{ } } - let child:HTMLElement = commentNode.nextSibling as HTMLElement; + let child:HTMLElement = (commentNode as HTMLElement).nextElementSibling as HTMLElement; for (let j = 0; j < finalValue.length; j++) { child.removeAttribute("uku-repeat"); var Uku_Clazz = (this.uku).constructor;