From 9e9fde4d1433646f3ee02763439ce291be84e989 Mon Sep 17 00:00:00 2001 From: "Jake.Zheng" Date: Tue, 18 Sep 2018 21:33:45 +0800 Subject: [PATCH] fix: --- dist/uku.js | 2 +- dist/uku.js.map | 2 +- src/core/IUkulele.ts | 2 +- src/core/Ukulele.ts | 5 ++++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/dist/uku.js b/dist/uku.js index 45b53c8..e28539c 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;try{result=eval(attrName)}catch(e){result=""}return tempScope=null,result}()},UkuleleUtil.setFinalValue=function(object,attrName,value){return function(){var tempScope={};attrName=attrName.replace("parent.",""),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.wrapScriptInComponent=function(e){if(e){if(0===e.replace(new RegExp("\\s","gm"),"").search(new RegExp("\\(function\\(")))return e;return"\t(function(){\n return function(uku){\n "+e+"\n };\n })();\n "}return""},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);"boolean"==typeof n?!0===n?this.element.setAttribute(this.ukuTag,this.ukuTag):this.element.removeAttribute(this.ukuTag):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 u0&&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=[],r=0;r-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)}else{new BoundItemComponentAttribute_1.BoundItemComponentAttribute(t.nodeValue,n,l,s.uku).render([])}}},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&&"VIDEO"!==n&&"AUDIO"!==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(){var e=i.UkuleleUtil.searchHtmlTag(o.renderTemplate,"tr"),t=i.UkuleleUtil.searchHtmlTag(o.renderTemplate,"th");return-1===e||-1===t?document.createElement("tbody"):document.createElement("div")}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;try{result=eval(attrName)}catch(e){result=""}return tempScope=null,result}()},UkuleleUtil.setFinalValue=function(object,attrName,value){return function(){var tempScope={};attrName=attrName.replace("parent.",""),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.wrapScriptInComponent=function(e){if(e){if(0===e.replace(new RegExp("\\s","gm"),"").search(new RegExp("\\(function\\(")))return e;return"\t(function(){\n return function(uku){\n "+e+"\n };\n })();\n "}return""},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);"boolean"==typeof n?!0===n?this.element.setAttribute(this.ukuTag,this.ukuTag):this.element.removeAttribute(this.ukuTag):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 u0&&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=[],r=0;r-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)}else{new BoundItemComponentAttribute_1.BoundItemComponentAttribute(t.nodeValue,n,l,s.uku).render([])}}},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&&"VIDEO"!==n&&"AUDIO"!==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(){var e=i.UkuleleUtil.searchHtmlTag(o.renderTemplate,"tr"),t=i.UkuleleUtil.searchHtmlTag(o.renderTemplate,"th");return-1===e||-1===t?document.createElement("tbody"):document.createElement("div")}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\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;\r\n try {\r\n result = eval(attrName);\r\n }\r\n catch (err) {\r\n result = '';\r\n }\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 attrName = attrName.replace('parent.', '');\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 UkuleleUtil.wrapScriptInComponent = function (originalScript) {\r\n if (originalScript) {\r\n var trimScript = originalScript.replace(new RegExp('\\\\s', 'gm'), '');\r\n if (trimScript.search(new RegExp('\\\\(function\\\\(')) === 0) {\r\n return originalScript;\r\n }\r\n else {\r\n var selfExcutingFrame = \"\\t(function(){\\n return function(uku){\\n \" + originalScript + \"\\n };\\n })();\\n \";\r\n return selfExcutingFrame;\r\n }\r\n }\r\n else {\r\n return \"\";\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 if (typeof finalValue === 'boolean') {\r\n if (finalValue === true) {\r\n this.element.setAttribute(this.ukuTag, this.ukuTag);\r\n }\r\n else {\r\n this.element.removeAttribute(this.ukuTag);\r\n }\r\n }\r\n else {\r\n this.element.setAttribute(this.ukuTag, finalValue);\r\n }\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 return element.addEventListener(eventType, handler);\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 arr = [];\r\n var alias_list;\r\n var instanceNames;\r\n if (attrName.search('parent.') !== -1) {\r\n var parentDefinitionManager_1 = this.uku.parentUku._internal_getDefinitionManager();\r\n alias_list = Object.keys(parentDefinitionManager_1.controllersDefinition);\r\n instanceNames = UkuleleUtil_1.UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\r\n instanceNames.forEach(function (instanceName) {\r\n var controllerModel = parentDefinitionManager_1.controllersDefinition[instanceName];\r\n arr.push(controllerModel);\r\n });\r\n }\r\n else {\r\n alias_list = Object.keys(this.controllersDefinition);\r\n instanceNames = UkuleleUtil_1.UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\r\n instanceNames.forEach(function (instanceName) {\r\n var controllerModel = _this.controllersDefinition[instanceName];\r\n arr.push(controllerModel);\r\n });\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 = UkuleleUtil_1.UkuleleUtil.wrapScriptInComponent(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 // \treturn;\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 var listenerAttrs = [];\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 listenerAttrs.push(attribute);\r\n }\r\n else {\r\n orderAttrs.push(attribute);\r\n }\r\n }\r\n orderAttrs = orderAttrs.concat(listenerAttrs);\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 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 else {\r\n //native value, not expression\r\n var boundItem = new BoundItemComponentAttribute_1.BoundItemComponentAttribute(attr.nodeValue, tagName, cc, this_1.uku);\r\n boundItem.render([]);\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\" || elementName === \"VIDEO\" || elementName === \"AUDIO\") {\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 var index2 = UkuleleUtil_1.UkuleleUtil.searchHtmlTag(self.renderTemplate, \"th\");\r\n if (index === -1 || index2 === -1) {\r\n return document.createElement(\"tbody\");\r\n }\r\n else {\r\n return document.createElement(\"div\");\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 || inputType === \"text\"\r\n || inputType === \"password\"\r\n || inputType === \"tel\"\r\n || inputType === \"number\"\r\n || inputType === \"search\") {\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 c498707e26063185c762","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 var result;\n try{\n result = eval(attrName);\n }catch(err){\n result = '';\n }\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 attrName = attrName.replace('parent.','');\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 static wrapScriptInComponent(originalScript):string{\n if(originalScript){\n let trimScript = originalScript.replace(new RegExp('\\\\s', 'gm'),'');\n if(trimScript.search(new RegExp('\\\\(function\\\\(')) === 0){\n return originalScript;\n }else{\n let selfExcutingFrame = \n `\t(function(){\n return function(uku){\n ${originalScript}\n };\n })();\n `;\n return selfExcutingFrame;\n }\n }else{\n return \"\";\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 if(typeof finalValue === 'boolean'){\n if(finalValue === true){\n this.element.setAttribute(this.ukuTag, this.ukuTag);\n }else{\n this.element.removeAttribute(this.ukuTag);\n } \n }else{\n this.element.setAttribute(this.ukuTag, finalValue);\n }\n \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\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\tprivate controllersDefinition: Object = {};\n\tprivate componentsDefinition: Object = {};\n\tprivate componentsPool: Object = {};\n\tprivate copyControllers: Object = {};\n\tprivate dependentScriptsCache: Object = {};\n\tprivate ajax: Ajax = new Ajax();\n\n\tgetComponentsDefinition(): Object {\n\t\treturn this.componentsDefinition;\n\t}\n\n\tgetComponentsPool(): Object {\n\t\treturn this.componentsPool;\n\t}\n\n\tsetComponentsPool(pool): void {\n\t\tthis.componentsPool = pool;\n\t}\n\n\tsetComponentsDefinition(value: Object): void {\n\t\tthis.componentsDefinition = value;\n\t}\n\n\tgetComponentDefinition(tagName: string): ComponentModel {\n\t\treturn this.componentsDefinition[tagName] as ComponentModel;\n\t}\n\n\tgetControllerDefinition(instanceName: string): ControllerModel {\n\t\treturn this.controllersDefinition[instanceName] as ControllerModel;\n\t}\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\tgetCopyControllers(): Object {\n\t\treturn this.copyControllers;\n\t}\n\n\tcopyAllController(): 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\taddControllerDefinition(instanceName: string, controllerInst): void {\n\t\tlet controllerModel = new ControllerModel(instanceName, controllerInst);\n\t\tcontrollerInst._alias = instanceName;\n\t\tthis.controllersDefinition[instanceName] = controllerModel;\n\t}\n\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\n\taddComponentDefinition(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\t}\n\n\taddLazyComponentDefinition(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\n\t\treturn UkuleleUtil.getFinalValue(controllers, expression);\n\t};\n\n\tprivate getBoundControllerModelByName(attrName: string): ControllerModel[] {\n\t\tlet arr = [];\n\t\tlet alias_list: string[];\n\t\tlet instanceNames: string[];\n\t\tif (attrName.search('parent.') !== -1) {\n\t\t\tlet parentDefinitionManager = this.uku.parentUku._internal_getDefinitionManager();\n\t\t\talias_list = Object.keys(parentDefinitionManager.controllersDefinition);\n\t\t\tinstanceNames = UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\n\t\t\t\n\t\t\tinstanceNames.forEach(instanceName => {\n\t\t\t\tlet controllerModel: ControllerModel = parentDefinitionManager.controllersDefinition[instanceName];\n\t\t\t\tarr.push(controllerModel);\n\t\t\t});\n\t\t} else {\n\t\t\talias_list = Object.keys(this.controllersDefinition);\n\t\t\tinstanceNames = UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\n\t\t\t\n\t\t\tinstanceNames.forEach(instanceName => {\n\t\t\t\tlet controllerModel: ControllerModel = this.controllersDefinition[instanceName];\n\t\t\t\tarr.push(controllerModel);\n\t\t\t});\n\t\t}\n\n\t\treturn arr;\n\t}\n\n\tprivate 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\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 = UkuleleUtil.wrapScriptInComponent(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\t// if(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 let listenerAttrs = [];\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 listenerAttrs.push(attribute);\n } else {\n orderAttrs.push(attribute);\n }\n }\n orderAttrs = orderAttrs.concat(listenerAttrs);\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 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 }else{\n //native value, not expression\n let boundItem = new BoundItemComponentAttribute(attr.nodeValue, tagName, cc, this.uku);\n boundItem.render([]);\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\" || elementName === \"VIDEO\" || elementName === \"AUDIO\"){\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 let index2 = UkuleleUtil.searchHtmlTag(self.renderTemplate,\"th\");\n if(index === -1 || index2 === -1 ){\n return document.createElement(\"tbody\");\n }else{\n return document.createElement(\"div\");\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 || inputType === \"text\"\n || inputType === \"password\"\n || inputType === \"tel\"\n || inputType === \"number\"\n || inputType === \"search\") {\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 7c5e582866322e9e1e83","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","err","setFinalValue","valueString","JSON","stringify","evalString","wrapScriptInComponent","originalScript","__extends","extendStatics","setPrototypeOf","__proto__","Array","b","__","constructor","create","BoundItemBase_1","UkuleleUtil_1","BoundItemAttribute","_super","uku","_this","render","controllers","attr","attributeName","finalValue","setAttribute","removeAttribute","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","EventEmitter_1","DefinitionManager_1","DirtyChecker_1","Analyzer_1","UkuEventType_1","Event_1","Ukulele","_a","apply","arguments","promiseArray","init","Promise","all","then","manageApplication","handleElement","handleElementCompletedFunc","analyizeElement","e","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","parentDefinitionManager_1","parentUku","config","loadDependentScript","self","head","getElementsByTagName","charset","async","onload","target","appendChild","tmpAMD","ccsExternal","dep","_b","dependentScripts","undefined","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","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","listenerAttrs","attribute","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","Uku_Clazz","ukulele","compPool","sibling","itemType","newOuterHtml","newItemDom","componentController","host","elementStrategies","inputTextCase","textareaCase","selectCase","checkboxCase","radioCase","isSupportInputType","inputType","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;\r\n try {\r\n result = eval(attrName);\r\n }\r\n catch (err) {\r\n result = '';\r\n }\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 attrName = attrName.replace('parent.', '');\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 UkuleleUtil.wrapScriptInComponent = function (originalScript) {\r\n if (originalScript) {\r\n var trimScript = originalScript.replace(new RegExp('\\\\s', 'gm'), '');\r\n if (trimScript.search(new RegExp('\\\\(function\\\\(')) === 0) {\r\n return originalScript;\r\n }\r\n else {\r\n var selfExcutingFrame = \"\\t(function(){\\n return function(uku){\\n \" + originalScript + \"\\n };\\n })();\\n \";\r\n return selfExcutingFrame;\r\n }\r\n }\r\n else {\r\n return \"\";\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 if (typeof finalValue === 'boolean') {\r\n if (finalValue === true) {\r\n this.element.setAttribute(this.ukuTag, this.ukuTag);\r\n }\r\n else {\r\n this.element.removeAttribute(this.ukuTag);\r\n }\r\n }\r\n else {\r\n this.element.setAttribute(this.ukuTag, finalValue);\r\n }\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 return element.addEventListener(eventType, handler);\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, handleElementCompletedFunc) {\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 if (handleElementCompletedFunc && typeof handleElementCompletedFunc === 'function') {\r\n handleElementCompletedFunc(e.element);\r\n }\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 arr = [];\r\n var alias_list;\r\n var instanceNames;\r\n if (attrName.search('parent.') !== -1) {\r\n var parentDefinitionManager_1 = this.uku.parentUku._internal_getDefinitionManager();\r\n alias_list = Object.keys(parentDefinitionManager_1.controllersDefinition);\r\n instanceNames = UkuleleUtil_1.UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\r\n instanceNames.forEach(function (instanceName) {\r\n var controllerModel = parentDefinitionManager_1.controllersDefinition[instanceName];\r\n arr.push(controllerModel);\r\n });\r\n }\r\n else {\r\n alias_list = Object.keys(this.controllersDefinition);\r\n instanceNames = UkuleleUtil_1.UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\r\n instanceNames.forEach(function (instanceName) {\r\n var controllerModel = _this.controllersDefinition[instanceName];\r\n arr.push(controllerModel);\r\n });\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 = UkuleleUtil_1.UkuleleUtil.wrapScriptInComponent(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 // \treturn;\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 var listenerAttrs = [];\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 listenerAttrs.push(attribute);\r\n }\r\n else {\r\n orderAttrs.push(attribute);\r\n }\r\n }\r\n orderAttrs = orderAttrs.concat(listenerAttrs);\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 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 else {\r\n //native value, not expression\r\n var boundItem = new BoundItemComponentAttribute_1.BoundItemComponentAttribute(attr.nodeValue, tagName, cc, this_1.uku);\r\n boundItem.render([]);\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\" || elementName === \"VIDEO\" || elementName === \"AUDIO\") {\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 var index2 = UkuleleUtil_1.UkuleleUtil.searchHtmlTag(self.renderTemplate, \"th\");\r\n if (index === -1 || index2 === -1) {\r\n return document.createElement(\"tbody\");\r\n }\r\n else {\r\n return document.createElement(\"div\");\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 || inputType === \"text\"\r\n || inputType === \"password\"\r\n || inputType === \"tel\"\r\n || inputType === \"number\"\r\n || inputType === \"search\") {\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 7c5e582866322e9e1e83","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 var result;\n try{\n result = eval(attrName);\n }catch(err){\n result = '';\n }\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 attrName = attrName.replace('parent.','');\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 static wrapScriptInComponent(originalScript):string{\n if(originalScript){\n let trimScript = originalScript.replace(new RegExp('\\\\s', 'gm'),'');\n if(trimScript.search(new RegExp('\\\\(function\\\\(')) === 0){\n return originalScript;\n }else{\n let selfExcutingFrame = \n `\t(function(){\n return function(uku){\n ${originalScript}\n };\n })();\n `;\n return selfExcutingFrame;\n }\n }else{\n return \"\";\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 if(typeof finalValue === 'boolean'){\n if(finalValue === true){\n this.element.setAttribute(this.ukuTag, this.ukuTag);\n }else{\n this.element.removeAttribute(this.ukuTag);\n } \n }else{\n this.element.setAttribute(this.ukuTag, finalValue);\n }\n \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\t\t\tthis.manageApplication();\n\t\t});\n\t}\n\n\tpublic handleElement(element: HTMLElement, handleElementCompletedFunc: Function): void {\n\t\tthis.analyizeElement(element, (e) => {\n\t\t\tthis.dispatchEvent(new Event(UkuEventType.HANDLE_ELEMENT_COMPLETED, e));\n\t\t\tif(handleElementCompletedFunc && typeof handleElementCompletedFunc === 'function'){\n\t\t\t\thandleElementCompletedFunc(e.element);\n\t\t\t}\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\tprivate controllersDefinition: Object = {};\n\tprivate componentsDefinition: Object = {};\n\tprivate componentsPool: Object = {};\n\tprivate copyControllers: Object = {};\n\tprivate dependentScriptsCache: Object = {};\n\tprivate ajax: Ajax = new Ajax();\n\n\tgetComponentsDefinition(): Object {\n\t\treturn this.componentsDefinition;\n\t}\n\n\tgetComponentsPool(): Object {\n\t\treturn this.componentsPool;\n\t}\n\n\tsetComponentsPool(pool): void {\n\t\tthis.componentsPool = pool;\n\t}\n\n\tsetComponentsDefinition(value: Object): void {\n\t\tthis.componentsDefinition = value;\n\t}\n\n\tgetComponentDefinition(tagName: string): ComponentModel {\n\t\treturn this.componentsDefinition[tagName] as ComponentModel;\n\t}\n\n\tgetControllerDefinition(instanceName: string): ControllerModel {\n\t\treturn this.controllersDefinition[instanceName] as ControllerModel;\n\t}\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\tgetCopyControllers(): Object {\n\t\treturn this.copyControllers;\n\t}\n\n\tcopyAllController(): 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\taddControllerDefinition(instanceName: string, controllerInst): void {\n\t\tlet controllerModel = new ControllerModel(instanceName, controllerInst);\n\t\tcontrollerInst._alias = instanceName;\n\t\tthis.controllersDefinition[instanceName] = controllerModel;\n\t}\n\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\n\taddComponentDefinition(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\t}\n\n\taddLazyComponentDefinition(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\n\t\treturn UkuleleUtil.getFinalValue(controllers, expression);\n\t};\n\n\tprivate getBoundControllerModelByName(attrName: string): ControllerModel[] {\n\t\tlet arr = [];\n\t\tlet alias_list: string[];\n\t\tlet instanceNames: string[];\n\t\tif (attrName.search('parent.') !== -1) {\n\t\t\tlet parentDefinitionManager = this.uku.parentUku._internal_getDefinitionManager();\n\t\t\talias_list = Object.keys(parentDefinitionManager.controllersDefinition);\n\t\t\tinstanceNames = UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\n\t\t\t\n\t\t\tinstanceNames.forEach(instanceName => {\n\t\t\t\tlet controllerModel: ControllerModel = parentDefinitionManager.controllersDefinition[instanceName];\n\t\t\t\tarr.push(controllerModel);\n\t\t\t});\n\t\t} else {\n\t\t\talias_list = Object.keys(this.controllersDefinition);\n\t\t\tinstanceNames = UkuleleUtil.getBoundModelInstantNames(alias_list, attrName);\n\t\t\t\n\t\t\tinstanceNames.forEach(instanceName => {\n\t\t\t\tlet controllerModel: ControllerModel = this.controllersDefinition[instanceName];\n\t\t\t\tarr.push(controllerModel);\n\t\t\t});\n\t\t}\n\n\t\treturn arr;\n\t}\n\n\tprivate 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\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 = UkuleleUtil.wrapScriptInComponent(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\t// if(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 let listenerAttrs = [];\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 listenerAttrs.push(attribute);\n } else {\n orderAttrs.push(attribute);\n }\n }\n orderAttrs = orderAttrs.concat(listenerAttrs);\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 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 }else{\n //native value, not expression\n let boundItem = new BoundItemComponentAttribute(attr.nodeValue, tagName, cc, this.uku);\n boundItem.render([]);\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\" || elementName === \"VIDEO\" || elementName === \"AUDIO\"){\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 let index2 = UkuleleUtil.searchHtmlTag(self.renderTemplate,\"th\");\n if(index === -1 || index2 === -1 ){\n return document.createElement(\"tbody\");\n }else{\n return document.createElement(\"div\");\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 || inputType === \"text\"\n || inputType === \"password\"\n || inputType === \"tel\"\n || inputType === \"number\"\n || inputType === \"search\") {\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/core/IUkulele.ts b/src/core/IUkulele.ts index dd5e6b6..8de37c5 100644 --- a/src/core/IUkulele.ts +++ b/src/core/IUkulele.ts @@ -7,7 +7,7 @@ export interface IUkulele extends IEventEmitter{ init(); - handleElement(element); + handleElement(element, handleElementCompletedFunc); registerController(instanceName, controllerInst); diff --git a/src/core/Ukulele.ts b/src/core/Ukulele.ts index 27378ce..e293088 100644 --- a/src/core/Ukulele.ts +++ b/src/core/Ukulele.ts @@ -22,9 +22,12 @@ export let Ukulele = class Ukulele extends EventEmitter implements IUkulele { }); } - public handleElement(element: HTMLElement): void { + public handleElement(element: HTMLElement, handleElementCompletedFunc: Function): void { this.analyizeElement(element, (e) => { this.dispatchEvent(new Event(UkuEventType.HANDLE_ELEMENT_COMPLETED, e)); + if(handleElementCompletedFunc && typeof handleElementCompletedFunc === 'function'){ + handleElementCompletedFunc(e.element); + } }); }