@gogocat/data-bind 1.11.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/.editorconfig +14 -14
  2. package/.vscode/launch.json +12 -12
  3. package/CONFIGURATION.md +294 -0
  4. package/REACTIVE_MODE.md +553 -0
  5. package/README.md +266 -829
  6. package/babel.config.json +30 -0
  7. package/dist/js/_escape.d.ts +14 -0
  8. package/dist/js/_escape.d.ts.map +1 -0
  9. package/dist/js/applyBinding.d.ts +11 -0
  10. package/dist/js/applyBinding.d.ts.map +1 -0
  11. package/dist/js/attrBinding.d.ts +12 -0
  12. package/dist/js/attrBinding.d.ts.map +1 -0
  13. package/dist/js/binder.d.ts +67 -0
  14. package/dist/js/binder.d.ts.map +1 -0
  15. package/dist/js/changeBinding.d.ts +19 -0
  16. package/dist/js/changeBinding.d.ts.map +1 -0
  17. package/dist/js/commentWrapper.d.ts +39 -0
  18. package/dist/js/commentWrapper.d.ts.map +1 -0
  19. package/dist/js/config.d.ts +55 -0
  20. package/dist/js/config.d.ts.map +1 -0
  21. package/dist/js/createBindingOption.d.ts +32 -0
  22. package/dist/js/createBindingOption.d.ts.map +1 -0
  23. package/dist/js/createEventBinding.d.ts +10 -0
  24. package/dist/js/createEventBinding.d.ts.map +1 -0
  25. package/dist/js/cssBinding.d.ts +15 -0
  26. package/dist/js/cssBinding.d.ts.map +1 -0
  27. package/dist/js/dataBind.js +2772 -2519
  28. package/dist/js/dataBind.min.js +8 -1
  29. package/dist/js/dataBind.min.js.map +1 -1
  30. package/dist/js/domWalker.d.ts +9 -0
  31. package/dist/js/domWalker.d.ts.map +1 -0
  32. package/dist/js/forOfBinding.d.ts +12 -0
  33. package/dist/js/forOfBinding.d.ts.map +1 -0
  34. package/dist/js/hoverBinding.d.ts +13 -0
  35. package/dist/js/hoverBinding.d.ts.map +1 -0
  36. package/dist/js/ifBinding.d.ts +12 -0
  37. package/dist/js/ifBinding.d.ts.map +1 -0
  38. package/dist/js/index.d.ts +10 -0
  39. package/dist/js/index.d.ts.map +1 -0
  40. package/dist/js/modelBinding.d.ts +12 -0
  41. package/dist/js/modelBinding.d.ts.map +1 -0
  42. package/dist/js/postProcess.d.ts +3 -0
  43. package/dist/js/postProcess.d.ts.map +1 -0
  44. package/dist/js/pubSub.d.ts +11 -0
  45. package/dist/js/pubSub.d.ts.map +1 -0
  46. package/dist/js/reactiveProxy.d.ts +28 -0
  47. package/dist/js/reactiveProxy.d.ts.map +1 -0
  48. package/dist/js/renderForOfBinding.d.ts +8 -0
  49. package/dist/js/renderForOfBinding.d.ts.map +1 -0
  50. package/dist/js/renderIfBinding.d.ts +22 -0
  51. package/dist/js/renderIfBinding.d.ts.map +1 -0
  52. package/dist/js/renderIteration.d.ts +16 -0
  53. package/dist/js/renderIteration.d.ts.map +1 -0
  54. package/dist/js/renderTemplate.d.ts +14 -0
  55. package/dist/js/renderTemplate.d.ts.map +1 -0
  56. package/dist/js/renderTemplatesBinding.d.ts +19 -0
  57. package/dist/js/renderTemplatesBinding.d.ts.map +1 -0
  58. package/dist/js/showBinding.d.ts +13 -0
  59. package/dist/js/showBinding.d.ts.map +1 -0
  60. package/dist/js/switchBinding.d.ts +13 -0
  61. package/dist/js/switchBinding.d.ts.map +1 -0
  62. package/dist/js/textBinding.d.ts +13 -0
  63. package/dist/js/textBinding.d.ts.map +1 -0
  64. package/dist/js/types/_escape.d.ts +14 -0
  65. package/dist/js/types/_escape.d.ts.map +1 -0
  66. package/dist/js/types/applyBinding.d.ts +11 -0
  67. package/dist/js/types/applyBinding.d.ts.map +1 -0
  68. package/dist/js/types/attrBinding.d.ts +12 -0
  69. package/dist/js/types/attrBinding.d.ts.map +1 -0
  70. package/dist/js/types/binder.d.ts +67 -0
  71. package/dist/js/types/binder.d.ts.map +1 -0
  72. package/dist/js/types/changeBinding.d.ts +19 -0
  73. package/dist/js/types/changeBinding.d.ts.map +1 -0
  74. package/dist/js/types/commentWrapper.d.ts +39 -0
  75. package/dist/js/types/commentWrapper.d.ts.map +1 -0
  76. package/dist/js/types/config.d.ts +55 -0
  77. package/dist/js/types/config.d.ts.map +1 -0
  78. package/dist/js/types/createBindingOption.d.ts +32 -0
  79. package/dist/js/types/createBindingOption.d.ts.map +1 -0
  80. package/dist/js/types/createEventBinding.d.ts +10 -0
  81. package/dist/js/types/createEventBinding.d.ts.map +1 -0
  82. package/dist/js/types/cssBinding.d.ts +15 -0
  83. package/dist/js/types/cssBinding.d.ts.map +1 -0
  84. package/dist/js/types/domWalker.d.ts +9 -0
  85. package/dist/js/types/domWalker.d.ts.map +1 -0
  86. package/dist/js/types/forOfBinding.d.ts +12 -0
  87. package/dist/js/types/forOfBinding.d.ts.map +1 -0
  88. package/dist/js/types/hoverBinding.d.ts +13 -0
  89. package/dist/js/types/hoverBinding.d.ts.map +1 -0
  90. package/dist/js/types/ifBinding.d.ts +12 -0
  91. package/dist/js/types/ifBinding.d.ts.map +1 -0
  92. package/dist/js/types/index.d.ts +10 -0
  93. package/dist/js/types/index.d.ts.map +1 -0
  94. package/dist/js/types/modelBinding.d.ts +12 -0
  95. package/dist/js/types/modelBinding.d.ts.map +1 -0
  96. package/dist/js/types/postProcess.d.ts +3 -0
  97. package/dist/js/types/postProcess.d.ts.map +1 -0
  98. package/dist/js/types/pubSub.d.ts +11 -0
  99. package/dist/js/types/pubSub.d.ts.map +1 -0
  100. package/dist/js/types/reactiveProxy.d.ts +28 -0
  101. package/dist/js/types/reactiveProxy.d.ts.map +1 -0
  102. package/dist/js/types/renderForOfBinding.d.ts +8 -0
  103. package/dist/js/types/renderForOfBinding.d.ts.map +1 -0
  104. package/dist/js/types/renderIfBinding.d.ts +22 -0
  105. package/dist/js/types/renderIfBinding.d.ts.map +1 -0
  106. package/dist/js/types/renderIteration.d.ts +16 -0
  107. package/dist/js/types/renderIteration.d.ts.map +1 -0
  108. package/dist/js/types/renderTemplate.d.ts +14 -0
  109. package/dist/js/types/renderTemplate.d.ts.map +1 -0
  110. package/dist/js/types/renderTemplatesBinding.d.ts +19 -0
  111. package/dist/js/types/renderTemplatesBinding.d.ts.map +1 -0
  112. package/dist/js/types/showBinding.d.ts +13 -0
  113. package/dist/js/types/showBinding.d.ts.map +1 -0
  114. package/dist/js/types/switchBinding.d.ts +13 -0
  115. package/dist/js/types/switchBinding.d.ts.map +1 -0
  116. package/dist/js/types/textBinding.d.ts +13 -0
  117. package/dist/js/types/textBinding.d.ts.map +1 -0
  118. package/dist/js/types/types.d.ts +111 -0
  119. package/dist/js/types/types.d.ts.map +1 -0
  120. package/dist/js/types/util.d.ts +119 -0
  121. package/dist/js/types/util.d.ts.map +1 -0
  122. package/dist/js/types.d.ts +111 -0
  123. package/dist/js/types.d.ts.map +1 -0
  124. package/dist/js/util.d.ts +119 -0
  125. package/dist/js/util.d.ts.map +1 -0
  126. package/eslint.config.js +124 -0
  127. package/examples/DBMONSTER_COMPARISON.md +123 -0
  128. package/examples/afterRenderDemo.html +119 -0
  129. package/examples/bootstrap/css/animate.css +1579 -1579
  130. package/examples/bootstrap/css/bootstrap.min.css +6 -6
  131. package/examples/bootstrap/css/homeservices.css +378 -390
  132. package/examples/bootstrap/css/open-iconic.css +511 -511
  133. package/examples/bootstrap/fonts/open-iconic.svg +543 -543
  134. package/examples/bootstrap/js/compMessageDialog.js +20 -19
  135. package/examples/bootstrap/js/compSearchBar.js +12 -19
  136. package/examples/bootstrap/js/compSearchResults.js +50 -46
  137. package/examples/bootstrap/js/featureAdsResult.json +65 -65
  138. package/examples/bootstrap/js/searchResult.json +57 -57
  139. package/examples/bootstrap.html +343 -332
  140. package/examples/css/baseTodo.css +141 -141
  141. package/examples/css/dbMonsterStyles.css +27 -27
  142. package/examples/css/indexTodo.css +374 -374
  143. package/examples/dbmonsterForOfReactive.html +40 -0
  144. package/examples/dbmonsterReact.html +19 -0
  145. package/examples/forOfBindingSimpleDebug.html +45 -0
  146. package/examples/form.html +20 -4
  147. package/examples/globalConfig.html +131 -0
  148. package/examples/js/afterRenderDemo.js +190 -0
  149. package/examples/js/appTodo.js +46 -46
  150. package/examples/js/attrBindingDemo.js +2 -2
  151. package/examples/js/dbMonApp.js +24 -26
  152. package/examples/js/dbMonAppReact.jsx +79 -0
  153. package/examples/js/dbMonAppReactive.js +28 -0
  154. package/examples/js/fiberDemo.js +4 -4
  155. package/examples/js/filtersDemo.js +8 -8
  156. package/examples/js/forOfDemo.js +7 -9
  157. package/examples/js/forOfDemoComplex.js +44 -17
  158. package/examples/js/form.js +44 -12
  159. package/examples/js/globalConfig.js +117 -0
  160. package/examples/js/ifBindingDemo.js +16 -16
  161. package/examples/js/reactiveDemo.js +119 -0
  162. package/examples/js/switchBindingDemo.js +8 -8
  163. package/examples/react-dbmonster/dist/bundle.js +43 -0
  164. package/examples/react-dbmonster/package-lock.json +537 -0
  165. package/examples/react-dbmonster/package.json +16 -0
  166. package/examples/react-dbmonster/src/index.jsx +80 -0
  167. package/examples/reactiveDemo.html +127 -0
  168. package/examples/refreshRateTest.html +75 -75
  169. package/index.html +841 -0
  170. package/package.json +31 -34
  171. package/rollup.config.js +79 -36
  172. package/src/{_escape.js → _escape.ts} +19 -17
  173. package/src/applyBinding.ts +179 -0
  174. package/src/{attrBinding.js → attrBinding.ts} +14 -13
  175. package/src/binder.ts +289 -0
  176. package/src/changeBinding.ts +93 -0
  177. package/src/{commentWrapper.js → commentWrapper.ts} +33 -30
  178. package/src/config.ts +107 -0
  179. package/src/createBindingOption.ts +91 -0
  180. package/src/createEventBinding.ts +88 -0
  181. package/src/{cssBinding.js → cssBinding.ts} +13 -11
  182. package/src/{domWalker.js → domWalker.ts} +44 -30
  183. package/src/{forOfBinding.js → forOfBinding.ts} +4 -3
  184. package/src/hoverBinding.ts +84 -0
  185. package/src/{ifBinding.js → ifBinding.ts} +14 -12
  186. package/src/index.ts +53 -0
  187. package/src/{modelBinding.js → modelBinding.ts} +11 -9
  188. package/src/postProcess.ts +22 -0
  189. package/src/{pubSub.js → pubSub.ts} +24 -15
  190. package/src/reactiveProxy.ts +285 -0
  191. package/src/{renderForOfBinding.js → renderForOfBinding.ts} +55 -33
  192. package/src/{renderIfBinding.js → renderIfBinding.ts} +45 -20
  193. package/src/renderIteration.ts +53 -0
  194. package/src/renderTemplate.ts +165 -0
  195. package/src/renderTemplatesBinding.ts +73 -0
  196. package/src/{showBinding.js → showBinding.ts} +4 -3
  197. package/src/{switchBinding.js → switchBinding.ts} +18 -15
  198. package/src/{textBinding.js → textBinding.ts} +5 -4
  199. package/src/types.ts +124 -0
  200. package/src/util.ts +810 -0
  201. package/test/css/reporter.css +9 -9
  202. package/test/fixtures/dataBindBootstrap.html +2 -2
  203. package/test/fixtures/formBindings.html +9 -1
  204. package/test/globals.d.ts +19 -0
  205. package/test/helpers/testHelper.js +46 -11
  206. package/test/mocks/featureAdsResult.json +65 -65
  207. package/test/mocks/searchResult.json +57 -57
  208. package/test/specs/{attrBinding.spec.js → attrBinding.spec.ts} +103 -106
  209. package/test/specs/{binder.spec.js → binder.spec.ts} +29 -27
  210. package/test/specs/blurBinding.spec.ts +60 -0
  211. package/test/specs/chainableUse.spec.ts +125 -0
  212. package/test/specs/clickBinding.spec.ts +194 -0
  213. package/test/specs/{cssBinding.spec.js → cssBinding.spec.ts} +72 -79
  214. package/test/specs/{dataBindBootstrap.spec.js → dataBindBootstrap.spec.ts} +332 -313
  215. package/test/specs/{filter.spec.js → filter.spec.ts} +75 -76
  216. package/test/specs/{forOfBinding.spec.js → forOfBinding.spec.ts} +208 -219
  217. package/test/specs/formBinding.spec.ts +272 -0
  218. package/test/specs/ifBinding.spec.ts +165 -0
  219. package/test/specs/{nestedComponent.spec.js → nestedComponent.spec.ts} +88 -88
  220. package/test/specs/reactiveProxy.spec.ts +465 -0
  221. package/test/specs/{showBinding.spec.js → showBinding.spec.ts} +148 -149
  222. package/test/specs/{switchBinding.spec.js → switchBinding.spec.ts} +172 -173
  223. package/test/specs/templateBinding.spec.ts +273 -0
  224. package/test/specs/{textBinding.spec.js → textBinding.spec.ts} +47 -48
  225. package/test/tsconfig.json +31 -0
  226. package/test-output.txt +200 -0
  227. package/test-reactive.html +224 -0
  228. package/tsconfig.json +28 -0
  229. package/vendors/lodash.custom.js +4577 -4577
  230. package/vendors/lodash.custom.min.js +45 -45
  231. package/vitest.config.js +27 -0
  232. package/.eslintrc.js +0 -1
  233. package/.grunt/grunt-contrib-jasmine/boot.js +0 -161
  234. package/.grunt/grunt-contrib-jasmine/dist/js/dataBind.js +0 -9
  235. package/.grunt/grunt-contrib-jasmine/grunt-template-jasmine-istanbul/reporter.js +0 -23
  236. package/.grunt/grunt-contrib-jasmine/jasmine-html.js +0 -853
  237. package/.grunt/grunt-contrib-jasmine/jasmine.css +0 -271
  238. package/.grunt/grunt-contrib-jasmine/jasmine.js +0 -9761
  239. package/.grunt/grunt-contrib-jasmine/jasmine_favicon.png +0 -0
  240. package/.grunt/grunt-contrib-jasmine/json2.js +0 -489
  241. package/.grunt/grunt-contrib-jasmine/reporter.js +0 -107
  242. package/coverage/coverage.json +0 -1
  243. package/coverage/lcov/lcov-report/base.css +0 -213
  244. package/coverage/lcov/lcov-report/index.html +0 -93
  245. package/coverage/lcov/lcov-report/js/dataBind.js.html +0 -6596
  246. package/coverage/lcov/lcov-report/js/index.html +0 -93
  247. package/coverage/lcov/lcov-report/prettify.css +0 -1
  248. package/coverage/lcov/lcov-report/prettify.js +0 -1
  249. package/coverage/lcov/lcov-report/sort-arrow-sprite.png +0 -0
  250. package/coverage/lcov/lcov-report/sorter.js +0 -158
  251. package/coverage/lcov/lcov.info +0 -1991
  252. package/eslintrc.json +0 -40
  253. package/examples/bootstrap/js/bootstrap.min.js +0 -6
  254. package/examples/bootstrap/js/popper.min.js +0 -5
  255. package/examples/bootstrap/js/searchSuggestion.js +0 -58
  256. package/examples/bootstrap/js/typeahead.jquery.js +0 -1538
  257. package/gruntfile.js +0 -92
  258. package/gulpfile.js +0 -32
  259. package/src/binder.js +0 -422
  260. package/src/changeBinding.js +0 -57
  261. package/src/config.js +0 -65
  262. package/src/createBindingOption.js +0 -66
  263. package/src/createEventBinding.js +0 -46
  264. package/src/eventSystem.js +0 -46
  265. package/src/hoverBinding.js +0 -57
  266. package/src/index.js +0 -26
  267. package/src/renderTemplate.js +0 -128
  268. package/src/util.js +0 -648
  269. package/test/specs/blurBinding.spec.js +0 -57
  270. package/test/specs/formBinding.spec.js +0 -292
  271. package/test/specs/ifBinding.spec.js +0 -169
  272. package/test/specs/templateBinding.spec.js +0 -117
  273. package/vendors/jasmine-jquery.js +0 -841
  274. package/vendors/jquery-3.2.1.min.js +0 -4
@@ -1,2 +1,9 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dataBind=t()}(this,(function(){"use strict";const e={comp:"data-bind-comp",tmp:"data-bind-tmp",text:"data-bind-text",click:"data-bind-click",dblclick:"data-bind-dblclick",blur:"data-bind-blur",focus:"data-bind-focus",hover:"data-bind-hover",change:"data-bind-change",submit:"data-bind-submit",model:"data-bind-model",show:"data-bind-show",css:"data-bind-css",attr:"data-bind-attr",forOf:"data-bind-for",if:"data-bind-if",switch:"data-bind-switch",case:"data-bind-case",default:"data-bind-default"},t="data-server-rendered",n="data-forOf_",i="data-if_",r="data-case_",o="data-default_",a="_end",l="$root",s="$data",c="$index",d="in",u="out",f="SERVER-RENDERED",p="INIT",h=250,m={ONCE:"once"},g="_parent",b=Array.isArray,y={BAD_TAGS:/<(script|del)(?=[\s>])[\w\W]*?<\/\1\s*>/gi,FOR_OF:/(.*?)\s+(?:in|of)\s+(.*)/,FUNCTION_PARAM:/\((.*?)\)/,HTML_TAG:/^[\s]*<([a-z][^\/\s>]+)/i,OBJECT_LITERAL:/^\{.+\}$/,PIPE:/\|/,WHITE_SPACES:/\s+/g,LINE_BREAKS_TABS:/(\r\n|\n|\r|\t)/gm},v="content"in document.createElement("template"),E={div:["div","<div>","</div>"],thead:["table","<table>","</table>"],col:["colgroup","<table><colgroup>","</colgroup></table>"],tr:["tbody","<table><tbody>","</tbody></table>"],td:["tr","<table><tr>","</tr></table>"]};E.caption=E.colgroup=E.tbody=E.tfoot=E.thead,E.th=E.td;const A=e=>b?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e),w=e=>null!==e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e),C=e=>{if(!w(e))return!1;const t=e.constructor;if("function"!=typeof t)return!1;const n=t.prototype;return!1!==w(n)&&!1!==n.hasOwnProperty("isPrototypeOf")},B=e=>!!w(e)&&0===Object.getOwnPropertyNames(e).length;function P(e){if("string"!=typeof e)return null;if(v){const t=document.createElement("template");return t.innerHTML=function(e=""){return e.replace(y.BAD_TAGS,"")}(e),t.content}const t=document.createDocumentFragment(),n=document.createElement("div"),i=function(e){const t=e.match(y.HTML_TAG);return t?t[1]:null}(e),r=E[i||"div"];if("div"===r[0])return document.createRange().createContextualFragment(e);n.insertAdjacentHTML("beforeend",`${r[1]}${e}${r[2]}`);const o=n.querySelector(r[0]);for(;o.firstChild;)t.appendChild(o.firstChild);return t}const O=(e,t)=>{return n=e,t.replace(/\[/g,".").replace(/]/g,"").split(".").filter(Boolean).every((function(e){return!(e&&void 0===(n=n[e]))}))?n:i;var n,i},S=(e,t,n)=>((e,t,n)=>(Object(e)!==e||(Array.isArray(t)||(t=t.toString().match(/[^.[\]]+/g)||[]),t.slice(0,-1).reduce(((e,n,i)=>Object(e[n])===e[n]?e[n]:e[n]=Math.abs(t[i+1])>>0==+t[i+1]?[]:{}),e)[t[t.length-1]]=n),e))(e,t,n),D=(e,t)=>{let n=t.dataKey,i=t.parameters;const r="!"===n.charAt(0);r&&(n=r?n.substring(1):n);let o=O(e,n);if("function"==typeof o){const r=$(e,n),a=t.elementData?t.elementData.viewModelPropValue:null;i=i?K(e,i):[];const l=i.concat([a,t.el]);o=o.apply(r,l)}return o=r?!Boolean(o):o,o=M({value:o,viewModel:e,bindingCache:t}),o},M=({value:e,viewModel:t,bindingCache:n})=>{let i=e;return n.filters&&x(n.filters,((e,n)=>{const r=$(t,n),o=O.call(r,r,n);try{i=o.call(r,i)}catch(e){j(e,`Invalid filter: ${n}`)}})),i},R=()=>{const e={};return e.promise=new Promise(((t,n)=>{e.resolve=t,e.reject=n})),e},T=(e=!1,t,...n)=>{if(!n.length)return t;const i=n.shift();return void 0===i?t:e?(N(t)&&N(i)&&Object.keys(i).forEach((e=>{N(i[e])?(t[e]||(t[e]={}),T(t[e],i[e])):t[e]=i[e]})),T(!0,t,...n)):Object.assign(t,...n)},x=(e,t)=>{if("object"!=typeof e||"function"!=typeof t)return;let n=[],i=0;const r=A(e);let o,a,l=0;if(r)i=e.length;else{if(!w(e))throw new TypeError("Object is not an array or object");n=Object.keys(e),i=n.length}for(l=0;l<i;l+=1)r?(o=l,a=e[l]):(o=n[l],a=e[o]),t(o,a)},N=e=>w(e)&&!A(e),k=(e,t,n)=>{const i=n&&n.nextSibling?n.nextSibling:null;return e.insertBefore(t,i)},$=(e,t)=>{let n=e;if("string"!=typeof t)return n;const i=t.split(".");return i.length>1&&(i[0]===l?n=e[l]||e:i[0]===s&&(n=e[s]||e)),n},K=(e,t)=>{if(e&&A(t))return t.map((t=>((t=t.trim())===c?t=e[c]:t===s?t=e[s]||e:t===l&&(t=e[l]||e),t)))},I=e=>{if(e&&e.firstChild)for(;e.firstChild;)e.removeChild(e.firstChild);return e},j=(e=null,t="")=>{const n=e&&e.message?e.message:t;return"function"==typeof console.error?console.error(n):console.log(n)};let _=null,V=null,L=0;const F=(e,t,n,i)=>{const r="string"==typeof e.dataKey?(e=>{const t=e.replace(/(\s*?{\s*?|\s*?,\s*?)(['"])?([a-zA-Z0-9]+)(['"])?:/g,'$1"$3":').replace(/'/g,'"');return JSON.parse(t)})(e.dataKey):e.dataKey;let o=r.data;const a=r.append,l=r.prepend;let s;if(e.dataKey=r,o=void 0===o||"$root"===o?t:D(t,{dataKey:r.data,parameters:e.parameters}),!o)return;const c=e.el,d=void 0!==t.$index?t.$index:c.getAttribute("data-index");void 0!==d&&(o.$index=d),_=_||document.createDocumentFragment(),V=V||c;const u=P((e=>{const t=document.getElementById(e);return t?t.innerHTML:""})(r.id));_.childNodes.length?(s=c,a||l||(s=I(s)),l?s.insertBefore(u,s.firstChild):s.appendChild(u)):(s=_,_.appendChild(u));const f=s.querySelectorAll("["+n.tmp+"]"),p=f.length;if(p){L+=p;for(let e=0;e<p;e+=1){const r={el:f[e],dataKey:f[e].getAttribute(n.tmp)};i[n.tmp].push(r),F(r,t,n,i),L-=1}}0===L&&(a||l||(V=I(V)),l?V.insertBefore(_,V.firstChild):V.appendChild(_),_=V=null,"function"==typeof t.afterTemplateRender&&t.afterTemplateRender(o))};const H=/[&<>"'`]/g,W=RegExp(H.source),z={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"};function J(e){return z[e]}const G=(e,t,n,i)=>{const r=e.dataKey;let o=e.parameters;const a=e.el.getAttribute(n.model);let l,s="",c="";const d=t.APP||t.$root.APP;if(!r||!i&&!d.$rootElement.contains(e.el))return;const u=O(t,r);if("function"==typeof u){function n(e){const n=this,i="checkbox"===n.type;var r,d;s=i?n.checked:(r=n.value,(r="string"==typeof(d=r)?d:null==d?"":`${d}`)&&W.test(r)?r.replace(H,J):r),a&&(c=O(t,a),S(t,a,s));const f=[e,e.currentTarget,s,c].concat(o);u.apply(l,f),c=s}l=$(t,r),o=o?K(t,o):[],e.el.removeEventListener("change",n,!1),e.el.addEventListener("change",n,!1)}},Q=(e={},t)=>{if(!e.dataKey)return;const n=((e="")=>y.OBJECT_LITERAL.test(e))(e.dataKey),i=n?((e="")=>{let t=e.trim();const n={};return y.OBJECT_LITERAL.test(e)?(t=t.replace(y.LINE_BREAKS_TABS,"").substring(1),t=t.substring(0,t.length-1),t.split(",").forEach((e=>{const t=e.trim();if(t){const e=t.split(":"),i=e[0].trim();n[i]=`${e[1]}`.trim()}})),n):null})(e.dataKey):D(t,e);if(!C(i))return;if(e.elementData=e.elementData||{},e.elementData.viewModelPropValue=e.elementData.viewModelPropValue||{},JSON.stringify(e.elementData.viewModelPropValue)===JSON.stringify(i))return;n&&x(i,((e,n)=>{i[e]=D(t,{dataKey:n})}));const r=e.elementData.viewModelPropValue;B(r)?x(i,((t,i)=>{void 0!==i&&(e.el.setAttribute(t,i),n||(e.elementData.viewModelPropValue[t]=i))})):(x(r,((t,n)=>{void 0===i[t]&&e.el.removeAttribute(t)})),x(i,((t,o)=>{void 0!==o&&r[t]!==i[t]&&(e.el.setAttribute(t,i[t]),n||(e.elementData.viewModelPropValue[t]=o))}))),n&&(e.elementData.viewModelPropValue=T({},i))};let q;const U=(e,t)=>{let n=!0;for(e=e.firstElementChild;e;)n=t(e),n&&U(e,t),e=e.nextElementSibling},Z=e=>"SVG"===e.tagName,X=(e,t)=>"SVG"===e.tagName||e.hasAttribute(t.comp),Y=({node:e,attrObj:t,bindingCache:n,type:i})=>{let r,o;if(q&&q[i]&&void 0!==t[i]){n[i]=n[i]||[],r=t[i]||"",r&&(r=r.replace(y.LINE_BREAKS_TABS,"").replace(y.WHITE_SPACES," ").trim()),o={el:e,dataKey:r},o=(e=>{if(!e||!e.dataKey||e.dataKey.length>h)return e;const t=e.dataKey.split(y.PIPE);let n;return e.dataKey=t[0].trim(),t.length>1&&(t.shift(0),t.forEach((function(i,r){t[r]=i.trim(),t[r]===m.ONCE&&(e.isOnce=!0,n=r)})),n>=0&&t.splice(n,1),e.filters=t),e})(o);const a=(e=>{if(!e||e.length>h)return;let t=e.match(y.FUNCTION_PARAM);return t&&t[1]&&(t=t[1].split(","),t.forEach((function(e,n){t[n]=e.trim()}))),t})(o.dataKey);a&&(o.parameters=a,o.dataKey=o.dataKey.replace(y.FUNCTION_PARAM,"").trim()),o[g]=n[i],n[i].push(o)}return n},ee=({rootNode:e=null,bindingAttrs:t={},skipCheck:n,isRenderedTemplate:i=!1})=>{let r={};if(!e instanceof window.Node)throw new TypeError("walkDOM: Expected a DOM node");var o;q=q||(o=t,Object.keys(o).reduce((function(e,t){return e[o[t]]=t,e}),{}));const a=(e,o=X)=>{let a=!1;if(1!==e.nodeType||!e.hasAttributes())return!0;if(o(e,t)||"function"==typeof n&&n(e))return!1;const l=(e=>{const t={};return Array.prototype.slice.call(e.attributes).forEach((e=>{t[e.name]=e.value})),t})(e),s=((e={},t)=>[t.forOf,t.if,t.case,t.default].filter((t=>void 0!==e[t])))(l,t);let c=[];if(s.length)a=!0,c=s;else{if(i&&l[t.tmp])return!0;c=Object.keys(l)}return c.forEach((n=>{n!==t.case&&n!==t.default&&(r=Y({node:e,attrObj:l,bindingCache:r,type:n}))})),!a};return a(e,Z)&&U(e,a),r},te=e=>{const t=e.el.cloneNode(!0);return e.fragment=document.createDocumentFragment(),e.fragment.appendChild(t),e},ne=t=>{if(!t||!t.type)return t;let a="";const l=t.dataKey?t.dataKey.replace(y.WHITE_SPACES,"_"):"";switch(t.type){case e.forOf:a=n;break;case e.if:a=i;break;case e.case:a=r;break;case e.default:a=o}return t.commentPrefix=a+l,t},ie=(e,t)=>{t.commentPrefix||ne(t);const n=t.commentPrefix+a;if(e=e.nextSibling){if(8===e.nodeType&&e.textContent===n)return t.docRange.setEndBefore(e);ie(e,t)}},re=(e,t)=>{let n="";e.commentPrefix||ne(e),n=e.commentPrefix;const i=document.createComment(n),r=document.createComment(n+a);return 11===t.nodeType?(t.insertBefore(i,t.firstChild),t.appendChild(r)):t.parentNode&&(t.parentNode.insertBefore(i,t),k(t.parentNode,r,t),e.previousNonTemplateElement=t.previousSibling,e.nextNonTemplateElement=t.nextSibling,e.parentElement=t.previousSibling.parentElement),t},oe=e=>{e.docRange||(e.docRange=document.createRange());try{e.previousNonTemplateElement?(e.docRange.setStartBefore(e.previousNonTemplateElement.nextSibling),ie(e.previousNonTemplateElement.nextSibling,e)):(e.docRange.setStartBefore(e.parentElement.firstChild),ie(e.parentElement.firstChild,e))}catch(e){console.log("error removeElemnetsByCommentWrap: ",e.message)}return e.docRange.deleteContents()},ae=(e,t)=>{e.previousNonTemplateElement?k(e.parentElement,t,e.previousNonTemplateElement):e.nextNonTemplateElement?e.parentElement.insertBefore(t,e.nextNonTemplateElement):e.parentElement&&e.parentElement.appendChild(t)},le=({bindingData:e,viewModel:t,iterationData:n,keys:i,index:r})=>{const o={};return o[e.iterator.alias]=i?n[i[r]]:n[r],o[l]=t.$root||t,o[s]=o[e.iterator.alias],o[c]=r,o},se=(e,t,n,i,r)=>{const o=document.createDocumentFragment(),a=e.iterationSize;let l,s,c,d=0;for(A(e.iterationBindingCache)?e.iterationBindingCache.length=0:e.iterationBindingCache=[],d=0;d<a;d+=1)l=e.el.cloneNode(!0),c=ee({rootNode:l,bindingAttrs:n}),e.iterationBindingCache.push(c),B(c)||(s=le({bindingData:e,viewModel:t,iterationData:i,keys:r,index:d}),Ce({elementCache:e.iterationBindingCache[d],iterationVm:s,bindingAttrs:n,isRegenerate:!0})),o.appendChild(l);return o},ce=(t,n,i)=>{const r=t.dataKey;if(r&&!(r.length>h)){if(!t.iterator){if(r.length>h)return;t.dataKey=t.dataKey.replace(y.WHITE_SPACES," ");const e=r.match(y.FOR_OF);if(!e)return;t.iterator={},t.iterator.alias=e[1].trim(),e[2]&&(t.iterator.dataKey=e[2].trim(),t.parentElement=t.el.parentElement,t.previousNonTemplateElement=t.el.previousSibling,t.nextNonTemplateElement=t.el.nextSibling)}(({bindingData:t,viewModel:n,bindingAttrs:i})=>{if(!t||!n||!i)return;let r,o;const a=D(n,t.iterator);let l=!1;if(A(a))o=a.length;else{if(!C(a))return j(null,"iterationData is not an plain object or array");r=Object.keys(a),o=r.length}if(t.type||(t.type=e.forOf,re(t,t.el)),void 0===t.iterationSize?(t.iterationSize=o,t.el.removeAttribute(i.forOf),l=!0):(l=t.iterationSize!==o,t.iterationSize=o),!l)return void t.iterationBindingCache.forEach((function(e,o){if(!B(e)){const l=le({bindingData:t,viewModel:n,iterationData:a,keys:r,index:o});Ce({elementCache:e,iterationVm:l,bindingAttrs:i,isRegenerate:!1})}}));const s=se(t,n,i,a,r);oe(t),ae(t,s)})({bindingData:t,viewModel:n,bindingAttrs:i})}},de=({bindingData:e,viewModel:t,bindingAttrs:n})=>{if(!e.fragment)return;const i=(e=>{let t=!1;if(e&&e.previousNonTemplateElement){const n=e.previousNonTemplateElement.textContent,i=e.previousNonTemplateElement.nextSibling;8===i.nodeType&&i.textContent===n+a&&(t=!0)}return t})(e);let r=e.el;i||e.isOnce||(ue(e),r=e.fragment.firstChild.cloneNode(!0)),e.iterationBindingCache&&e.hasIterationBindingCache||(e.iterationBindingCache=ee({rootNode:r,bindingAttrs:n})),B(e.iterationBindingCache)||(e.hasIterationBindingCache=!0,Ce({elementCache:e.iterationBindingCache,iterationVm:t,bindingAttrs:n,isRegenerate:!0})),ae(e,r)},ue=e=>{oe(e),e.hasIterationBindingCache&&(delete e.iterationBindingCache,delete e.hasIterationBindingCache)},fe=({viewModel:e,cache:t})=>{let n=!1;return e.APP.postProcessQueue&&(e.APP.postProcessQueue.push(((e,t)=>()=>{e[g].splice(t,1)})(t,t[g].indexOf(t))),n=!0),n};function pe(e,t){e.forEach(((e,n)=>{n===t&&void 0!==t||(ue(e),e.hasIterationBindingCache&&(e.iterationBindingCache=null,e.hasIterationBindingCache=!1))}))}function he(e,t){return{el:e,dataKey:e.getAttribute(t),type:t}}const me=({cache:e={},forceRender:t=!1,type:n="",viewModel:i={}})=>{const r=e.dataKey;let o,a=e.parameters;const l=i.APP||i.$root.APP;if(!n||!r||!t&&!l.$rootElement.contains(e.el))return;const s=O(i,r);if("function"==typeof s){o=$(i,r),a=a?K(i,a):[];const t=e=>{let t,i=[];"submit"===n?(t=(e=>{const t={};return!e instanceof HTMLFormElement||new FormData(e).forEach(((e,n)=>{Object.prototype.hasOwnProperty.call(Object,n)?(Array.isArray(t[n])||(t[n]=[t[n]]),t[n].push(e)):t[n]=e})),t})(e.currentTarget),i=[e,e.currentTarget,t].concat(a)):i=[e,e.currentTarget].concat(a),s.apply(o,i)};e.el.removeEventListener(n,t,!1),e.el.addEventListener(n,t,!1)}};function ge(e="",t={}){const n={templateBinding:!1,textBinding:!0,cssBinding:!0,ifBinding:!0,showBinding:!0,modelBinding:!0,attrBinding:!0,forOfBinding:!0,switchBinding:!0},i={changeBinding:!0,clickBinding:!0,dblclickBinding:!0,blurBinding:!0,focusBinding:!0,hoverBinding:!0,submitBinding:!0},r={templateBinding:!1,textBinding:!1,cssBinding:!1,ifBinding:!1,showBinding:!1,modelBinding:!1,attrBinding:!1,forOfBinding:!1,switchBinding:!1};let o={};switch(e){case f:o=T({},i,r,t);break;case p:t.templateBinding=!0,o=T({},n,i,t);break;default:o=T({},n,t)}return o}const be={},ye=(e=null,t="",n,i=!1)=>{if(!e||!e.compId||!t||"function"!=typeof n)return;let r,o=!1;t=t.replace(y.WHITE_SPACES,""),be[t]=be[t]||[],o=be[t].some((t=>{if(t[e.compId])return t[e.compId]=n.bind(e.viewModel),t.isOnce=i,!0})),o||(r={},r[e.compId]=n.bind(e.viewModel),r.isOnce=i,be[t].push(r))},ve=(e="",t="")=>{if(!e||!t)return;let n,i=0,r=0;if(t=t.replace(y.WHITE_SPACES,""),be[t])for(r=be[t].length,i=0;i<r;i+=1)if(n=be[t][i],n[e]){be[t].splice(i,1);break}be[t].length||delete be[t]};let Ee=0;class Ae{constructor(e,n,i){if(!e||1!==e.nodeType||null===n||"object"!=typeof n)throw new TypeError("$rootElement or viewModel is invalid");return this.initRendered=!1,this.compId=Ee+=1,this.$rootElement=e,this.viewModel=n,this.bindingAttrs=i,this.render=((e,t=null)=>function(e,t){let n=R(),i=0;return function(){const r=Array.from?Array.from(arguments):Array.prototype.slice.call(arguments);return window.cancelAnimationFrame(i),i=window.requestAnimationFrame((()=>{try{e.apply(t,r),n.resolve(t)}catch(e){console.error("error in rendering: ",e),n.reject(e)}n=R(),window.cancelAnimationFrame(i)})),n.promise}}(e,t))(this.render,this),this.isServerRendered=null!==this.$rootElement.getAttribute(t),this.viewModel.APP=this,this.viewModel.$root=this.viewModel,this.parseView(),this.$rootElement[l]=this.viewModel,this}parseView(){return this.elementCache=ee({rootNode:this.$rootElement,bindingAttrs:this.bindingAttrs}),this.isServerRendered&&!this.initRendered&&this.updateElementCache({templateCache:!0}),this}updateElementCache(e={}){const t=e.elementCache||this.elementCache;e.allCache&&(this.elementCache=ee({rootNode:this.$rootElement,bindingAttrs:this.bindingAttrs})),(e.allCache||e.templateCache)&&t[this.bindingAttrs.tmp]&&t[this.bindingAttrs.tmp].length&&t[this.bindingAttrs.tmp].forEach((t=>{let n=null;t.el.hasAttribute(this.bindingAttrs.forOf)&&(n=()=>!0),t.bindingCache=ee({rootNode:t.el,bindingAttrs:this.bindingAttrs,skipCheck:n,isRenderedTemplate:e.isRenderedTemplates})}))}render(e={}){let n={};this.initRendered?n=ge("",e):this.isServerRendered?(this.$rootElement.removeAttribute(t),n=ge(f,e)):n=ge(p,e),this.postProcessQueue=[];const i={ctx:this,elementCache:this.elementCache,updateOption:n,bindingAttrs:this.bindingAttrs,viewModel:this.viewModel};we(i),Ae.applyBinding(i),Ae.postProcess(this.postProcessQueue),this.postProcessQueue.length=0,delete this.postProcessQueue,this.initRendered=!0}static applyBinding({ctx:t,elementCache:n,updateOption:i,bindingAttrs:r,viewModel:o}){n&&i&&(i.forOfBinding&&n[r.forOf]&&n[r.forOf].length&&n[r.forOf].forEach((e=>{ce(e,o,r,i.forceRender)})),i.attrBinding&&n[r.attr]&&n[r.attr].length&&n[r.attr].forEach((e=>{Q(e,o,i.forceRender)})),i.ifBinding&&n[r.if]&&n[r.if].length&&n[r.if].forEach((t=>{((t,n,i)=>{if(!t.dataKey||t.isOnce&&!1===t.hasIterationBindingCache)return;t.elementData=t.elementData||{},t.type=t.type||e.if;const r=t.elementData.viewModelPropValue,o=D(n,t)||!1;if(r===o&&!t.hasIterationBindingCache)return;const a=Boolean(o);if(!a&&t.isOnce&&t.el.parentNode)return(l=t.el)&&l.parentNode&&l.parentNode.removeChild(l),void fe({viewModel:n,cache:t});var l;t.elementData.viewModelPropValue=o,t.fragment||(re(t,t.el),t.el.removeAttribute(i.if),te(t)),a?(de({bindingData:t,viewModel:n,bindingAttrs:i}),t.isOnce&&!t.hasIterationBindingCache&&fe({viewModel:n,cache:t})):ue(t)})(t,o,r,i.forceRender)})),i.showBinding&&n[r.show]&&n[r.show].length&&n[r.show].forEach((e=>{((e,t,n)=>{let i={},r="",o=!0;if(!e.dataKey)return;e.elementData=e.elementData||{};const a=e.elementData.viewModelPropValue;if(void 0===e.elementData.displayStyle||void 0===e.elementData.computedStyle)if(i=e.el.style,r=i.display,r)e.elementData.displayStyle="none"===r?"block":r,e.elementData.computedStyle=null;else{const t=window.getComputedStyle(e.el,null).getPropertyValue("display");e.elementData.displayStyle=null,e.elementData.computedStyle=t}o=D(t,e),o=Boolean(o),a!==o&&(o?e.elementData.computedStyle||"none"===e.el.style.display?"none"===e.elementData.computedStyle?e.el.style.setProperty("display","block"):i.length>1?e.el.style.removeProperty("display"):e.el.removeAttribute("style"):e.el.style.setProperty("display",e.elementData.displayStyle):"none"!==e.el.style.display&&e.el.style.setProperty("display","none"),e.elementData.viewModelPropValue=o)})(e,o,0,i.forceRender)})),i.switchBinding&&n[r.switch]&&n[r.switch].length&&n[r.switch].forEach((e=>{((e,t,n)=>{if(!e.dataKey)return;e.elementData=e.elementData||{};const i=D(t,e);if(i!==e.elementData.viewModelPropValue){if(e.elementData.viewModelPropValue=i,!e.cases){const t=e.el.children;if(!t.length)return;e.cases=[];for(let i=0,r=t.length;i<r;i+=1){let r=null;t[i].hasAttribute(n.case)?r=he(t[i],n.case):t[i].hasAttribute(n.default)&&(r=he(t[i],n.default),r.isDefault=!0),r&&(re(r,r.el),r.isDefault?r.el.removeAttribute(n.default):r.el.removeAttribute(n.case),te(r),e.cases.push(r))}}if(e.cases.length){let i=!1;for(let r=0,o=e.cases.length;r<o;r+=1){let o;if(e.cases[r].dataKey&&(o=D(t,e.cases[r])||e.cases[r].dataKey),o===e.elementData.viewModelPropValue||e.cases[r].isDefault){i=!0,de({bindingData:e.cases[r],viewModel:t,bindingAttrs:n}),pe(e.cases,r);break}}i||pe(e.cases)}}})(e,o,r,i.forceRender)})),i.textBinding&&n[r.text]&&n[r.text].length&&n[r.text].forEach((e=>{((e,t,n,i)=>{const r=e.dataKey,o=t.APP||t.$root.APP;if(!r||!i&&!o.$rootElement.contains(e.el))return;const a=D(t,e),l=e.el.textContent;void 0!==a&&"object"!=typeof a&&null!==a&&a!==l&&(e.el.textContent=a)})(e,o,0,i.forceRender)})),i.cssBinding&&n[r.css]&&n[r.css].length&&n[r.css].forEach((e=>{((e,t,n,i)=>{const r=e.dataKey,o=t.APP||t.$root.APP;if(!r||!i&&!o.$rootElement.contains(e.el))return;e.elementData=e.elementData||{},e.elementData.viewModelPropValue=e.elementData.viewModelPropValue||"";const a=e.elementData.viewModelPropValue;let l="";const s=D(t,e);let c=[],d=!1,u=!1,f=[];if("string"==typeof s)u=!0;else{if(!C(s))return;d=!0}if(d?l=JSON.stringify(s):(l=s.replace(/\s\s+/g," ").trim(),c=l.split(" ")),a===l)return;const p=e.el.classList,h=p.length;for(let e=0;e<h;e+=1)f.push(p[e]);var m;d?x(s,(function(e,t){const n=f.indexOf(e);!0===t?f.push(e):-1!==n&&f.splice(n,1)})):u&&(m=a,f=f.filter(((e,t)=>m.indexOf(e)<0)),f=f.concat(c)),f=f.filter(((e,t,n)=>n.indexOf(e)===t)),f=f.join(" "),e.elementData.viewModelPropValue=l,e.el.setAttribute("class",f)})(e,o,0,i.forceRender)})),i.modelBinding&&n[r.model]&&n[r.model].length&&n[r.model].forEach((e=>{((e,t,n,i)=>{const r=e.dataKey;let o="";const a=t.APP||t.$root.APP;if(r&&(i||a.$rootElement.contains(e.el))&&(o=O(t,r),null!=o)){const t=e.el,n="checkbox"===t.type,i="radio"===t.type,r=t.name,l=i?a.$rootElement.querySelectorAll(`input[name="${r}"]`):[];if(o!==(n?t.checked:t.value))if(n)t.checked=Boolean(o);else if(i){let e=0;const t=l.length;for(e=0;e<t;e+=1)if(l[e].value===o){l[e].checked=!0;break}}else t.value=o}})(e,o,0,i.forceRender)})),i.changeBinding&&n[r.change]&&n[r.change].length&&n[r.change].forEach((e=>{G(e,o,r,i.forceRender)})),i.submitBinding&&n[r.submit]&&n[r.submit].length&&n[r.submit].forEach((e=>{me({cache:e,forceRender:i.forceRender,type:"submit",viewModel:o})})),i.clickBinding&&n[r.click]&&n[r.click].length&&n[r.click].forEach((e=>{me({cache:e,forceRender:i.forceRender,type:"click",viewModel:o})})),i.dblclickBinding&&n[r.dblclick]&&n[r.dblclick].length&&n[r.dblclick].forEach((e=>{me({cache:e,forceRender:i.forceRender,type:"dblclick",viewModel:o})})),i.blurBinding&&n[r.blur]&&n[r.blur].length&&n[r.blur].forEach((e=>{me({cache:e,forceRender:i.forceRender,type:"blur",viewModel:o})})),i.focusBinding&&n[r.focus]&&n[r.focus].length&&n[r.focus].forEach((e=>{me({cache:e,forceRender:i.forceRender,type:"focus",viewModel:o})})),i.hoverBinding&&n[r.hover]&&n[r.hover].length&&n[r.hover].forEach((e=>{((e,t,n,i)=>{const r=e.dataKey;let o=e.parameters;const a=d,l=u;let s;const c=t.APP||t.$root.APP;if(e.elementData=e.elementData||{},!r||!i&&!c.$rootElement.contains(e.el))return;const f=O(t,r);if(f&&"function"==typeof f[a]&&"function"==typeof f[l]){function n(t){const n=[t,e.el].concat(o);f[a].apply(s,n)}function i(t){const n=[t,e.el].concat(o);f[l].apply(s,n)}s=$(t,r),o=o?K(t,o):[],e.el.removeEventListener("mouseenter",n,!1),e.el.removeEventListener("mouseleave",i,!1),e.el.addEventListener("mouseenter",n,!1),e.el.addEventListener("mouseleave",i,!1)}})(e,o,0,i.forceRender)})))}static postProcess(e){e&&e.length&&x(e,((e,t)=>{if("function"==typeof t)try{t()}catch(e){j(e,"Error postProcess: "+String(t))}}))}subscribe(e="",t){return ye(this,e,t),this}subscribeOnce(e="",t){return((e=null,t="",n)=>{ye(e,t,n,!0)})(this,e,t),this}unsubscribe(e=""){return ve(this.compId,e),this}unsubscribeAll(){return((e="")=>{e&&Object.keys(be).forEach((t=>{ve(e,t)}))})(this.compId),this}publish(e="",...t){return((e="",...t)=>{e&&be[e]&&(e=e.replace(y.WHITE_SPACES,""),be[e].forEach((n=>{Object.keys(n).forEach((i=>{if("function"==typeof n[i]){const r=n[i](...t);return n.isOnce&&ve(i,e),r}}))})))})(e,...t),this}}const we=({ctx:e,elementCache:t,updateOption:n,bindingAttrs:i,viewModel:r})=>!(!t||!i)&&(t[i.tmp]&&t[i.tmp].length&&(n.templateBinding&&(n=ge(p),t[i.tmp].forEach((e=>{F(e,r,i,t)})),e.updateElementCache({templateCache:!0,elementCache:t,isRenderedTemplates:!0})),n.forceRender=!0,t[i.tmp].forEach((e=>{Ae.applyBinding({elementCache:e.bindingCache,updateOption:n,bindingAttrs:i,viewModel:r})}))),!0),Ce=({elementCache:e,iterationVm:t,bindingAttrs:n,isRegenerate:i})=>{const r=i?ge(p):ge();r.forceRender=!0,we({ctx:t.$root?t.$root.APP:t.APP,elementCache:e,updateOption:r,bindingAttrs:n,viewModel:t}),Ae.applyBinding({elementCache:e,updateOption:r,bindingAttrs:n,viewModel:t})},Be="function"==typeof window.Promise;let Pe=e;return{use:(e={})=>{e.bindingAttrs&&(Pe=T({},e.bindingAttrs))},init:(e,t=null)=>Be?new Ae(e,t,Pe):console.warn("Browser not support Promise"),version:"1.11.0"}}));
1
+ /*
2
+ @gogocat/data-bind
3
+ version 2.0.0
4
+ By Adam Chow
5
+ link https://gogocat.github.io/dataBind/
6
+ license MIT
7
+ */
8
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dataBind=t()}(this,function(){"use strict";function e(){return e=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},e.apply(null,arguments)}const t={comp:"data-bind-comp",tmp:"data-bind-tmp",text:"data-bind-text",click:"data-bind-click",dblclick:"data-bind-dblclick",blur:"data-bind-blur",focus:"data-bind-focus",hover:"data-bind-hover",input:"data-bind-input",change:"data-bind-change",submit:"data-bind-submit",model:"data-bind-model",show:"data-bind-show",css:"data-bind-css",attr:"data-bind-attr",forOf:"data-bind-for",if:"data-bind-if",switch:"data-bind-switch",case:"data-bind-case",default:"data-bind-default"},n="data-server-rendered",r="data-forOf_",i="data-if_",o="data-case_",a="data-default_",l="_end",s="$root",c="$data",d="$index",u="in",f="out",p="SERVER-RENDERED",h="INIT",m=250,g={ONCE:"once"},y="_parent",b=Array.isArray,v={BAD_TAGS:/<(script|del)(?=[\s>])[\w\W]*?<\/\1\s*>/gi,FOR_OF:/(.*?)\s+(?:in|of)\s+(.*)/,FUNCTION_PARAM:/\((.*?)\)/,HTML_TAG:/^[\s]*<([a-z][^\/\s>]+)/i,OBJECT_LITERAL:/^\{.+\}$/,PIPE:/\|/,WHITE_SPACES:/\s+/g,LINE_BREAKS_TABS:/(\r\n|\n|\r|\t)/gm},A="content"in document.createElement("template"),E={div:["div","<div>","</div>"],thead:["table","<table>","</table>"],col:["colgroup","<table><colgroup>","</colgroup></table>"],tr:["tbody","<table><tbody>","</tbody></table>"],td:["tr","<table><tr>","</tr></table>"]};E.caption=E.colgroup=E.tbody=E.tfoot=E.thead,E.th=E.td;const C=e=>b?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e),w=e=>null!==e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e),P=e=>{if(!w(e))return!1;const t=e.constructor;if("function"!=typeof t)return!1;const n=t.prototype;return!1!==w(n)&&!1!==n.hasOwnProperty("isPrototypeOf")},B=e=>!!w(e)&&0===Object.getOwnPropertyNames(e).length,S=e=>{if("string"!=typeof e)return null;if(A){const t=document.createElement("template");return t.innerHTML=((e="")=>e.replace(v.BAD_TAGS,""))(e),t.content}const t=document.createDocumentFragment(),n=document.createElement("div"),r=(e=>{const t=e.match(v.HTML_TAG);return t?t[1]:null})(e),i=E[r||"div"];if("div"===i[0])return document.createRange().createContextualFragment(e);n.insertAdjacentHTML("beforeend",`${i[1]}${e}${i[2]}`);const o=n.querySelector(i[0]);for(;o&&o.firstChild;)t.appendChild(o.firstChild);return t},R=["__proto__","constructor","prototype"],O=e=>!R.includes(e),T=(e,t)=>((e,t,n)=>{const r=t.replace(/\[/g,".").replace(/]/g,"").split(".").filter(Boolean);let i=e;for(const e of r){if(!e||!O(e))return n;if(null==i)return n;if(i=i[e],void 0===i)return n}return i})(e,t),M=(e,t,n)=>((e,t,n)=>{if(Object(e)!==e)return e;let r;r=Array.isArray(t)?t:t.toString().match(/[^.[\]]+/g)||[];for(const t of r)if(!O(t))return console.warn(`Blocked attempt to set dangerous property: ${t}`),e;const i=r[r.length-1],o=r.slice(0,-1).reduce((e,t,n)=>{if(!O(t))return e;if(Object(e[t])===e[t])return e[t];const i=r[n+1];return e[t]=(0|Math.abs(Number(i)))===+i?[]:{},e[t]},e);return O(i)&&(o[i]=n),e})(e,t,n),D=(e,t)=>{let n=t.dataKey,r=t.parameters;const i=n&&"!"===n.charAt(0);i&&n&&(n=i?n.substring(1):n);let o=n?T(e,n):void 0;if("function"==typeof o){const i=K(e,n||""),a=t.elementData?t.elementData.viewModelPropValue:null;r=r?V(e,r):[];const l=r.concat([a,t.el]);o=o.apply(i,l)}return o=i?!o:o,o=k({value:o,viewModel:e,bindingCache:t}),o},k=({value:e,viewModel:t,bindingCache:n})=>{let r=e;return n.filters&&N(n.filters,(e,n)=>{const i=K(t,n),o=T.call(i,i,n);try{r=o.call(i,r)}catch(e){J(e,`Invalid filter: ${n}`)}}),r},$=()=>{const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},x=(t=!1,n,...r)=>{if(!r.length)return n||{};const i=r.shift();return void 0===i?n||{}:t?(_(n)&&_(i)&&Object.keys(i).forEach(e=>{_(i[e])?(n[e]||(n[e]={}),x(!0,n[e],i[e])):n[e]=i[e]}),x(!0,n,...r)):e(n||{},i,...r)},N=(e,t)=>{if("object"!=typeof e||"function"!=typeof t)return;let n=[],r=0;const i=C(e);let o,a,l=0;if(i)r=e.length;else{if(!w(e))throw new TypeError("Object is not an array or object");n=Object.keys(e),r=n.length}for(l=0;l<r;l+=1)i?(o=l,a=e[l]):(o=n[l],a=e[o]),t(o,a)},_=e=>w(e)&&!C(e),j=e=>e.cloneNode(!0),I=(e,t,n)=>{const r=n&&n.nextSibling?n.nextSibling:null;return e.insertBefore(t,r)},K=(e,t)=>{let n=e;if("string"!=typeof t)return n;const r=t.split(".");return r.length>1&&(r[0]===s?n=e[s]||e:r[0]===c&&(n=e[c]||e)),n},V=(e,t)=>{if(e&&C(t))return t.map(t=>{let n=t;return"string"==typeof t&&(n=t.trim(),n===d?n=e[d]:n===c?n=e[c]||e:n===s&&(n=e[s]||e)),n})},L=e=>{if(e&&e.firstChild)for(;e.firstChild;)e.removeChild(e.firstChild);return e},F=(e,t)=>{if(e.nodeType!==t.nodeType)return!1;if(3===e.nodeType)return e.nodeValue===t.nodeValue;if(1===e.nodeType){const n=t;return e.tagName===n.tagName}return e.nodeValue===t.nodeValue},H=(e,t)=>{const n=t.attributes,r=n.length;for(let t=0;t<r;t+=1){const r=n[t];if(r&&r.name){e.getAttribute(r.name)!==r.value&&e.setAttribute(r.name,r.value||"")}}},W=e=>{const t=document.createDocumentFragment();return Array.from(e.childNodes).forEach(e=>{t.appendChild(e.cloneNode(!0))}),t},z=(e,t)=>{const n=Array.from(t.childNodes),r=Array.from(e.childNodes),i=n.length,o=r.length;for(let t=0;t<i;t+=1){const i=n[t],o=r[t];o?F(o,i)?1===i.nodeType&&1===o.nodeType?(H(o,i),z(o,W(i))):3===i.nodeType&&o.nodeValue!==i.nodeValue&&(o.nodeValue=i.nodeValue):e.replaceChild(i,o):e.appendChild(i)}for(let t=o-1;t>=i;t-=1)r[t]&&r[t].parentNode&&e.removeChild(r[t])},J=(e=null,t="")=>{const n=e&&"object"==typeof e&&"message"in e?e.message:t;"function"!=typeof console.error?console.log(n):console.error(n)};let q;const G=(e,t)=>{let n=!0,r=e.firstElementChild;for(;r;)n=t(r),n&&G(r,t),r=r.nextElementSibling},Q=e=>"SVG"===e.tagName,U=(e,t)=>"SVG"===e.tagName||e.hasAttribute(t.comp),Z=({node:e,attrObj:t,bindingCache:n,type:r})=>{let i,o;if(q&&q[r]&&void 0!==t[r]){n[r]=n[r]||[],i=t[r]||"",i&&(i=i.replace(v.LINE_BREAKS_TABS,"").replace(v.WHITE_SPACES," ").trim()),o={el:e,dataKey:i},o=(e=>{if(!e||!e.dataKey||e.dataKey.length>m)return e;const t=e.dataKey.split(v.PIPE);let n;return e.dataKey=t[0].trim(),t.length>1&&(t.shift(),t.forEach((r,i)=>{t[i]=r.trim(),t[i]===g.ONCE&&(e.isOnce=!0,n=i)}),void 0!==n&&n>=0&&t.splice(n,1),e.filters=t),e})(o);const a=(e=>{if(!e||e.length>m)return;const t=e.match(v.FUNCTION_PARAM);if(t&&t[1]){const e=t[1].split(",");return e.forEach((t,n)=>{e[n]=t.trim()}),e}})(o.dataKey||"");a&&(o.parameters=a,o.dataKey=(o.dataKey||"").replace(v.FUNCTION_PARAM,"").trim()),o[y]=n[r],n[r].push(o)}return n},X=({rootNode:e=null,bindingAttrs:t={},skipCheck:n,isRenderedTemplate:r=!1})=>{let i={};if(!(e instanceof window.Node))throw new TypeError("walkDOM: Expected a DOM node");var o;q=q||(o=t,Object.keys(o).reduce((e,t)=>{const n=o[t];return"string"==typeof n&&O(n)&&(e[n]=t),e},{}));const a=(e,o=U)=>{let a=!1;if(1!==e.nodeType||!e.hasAttributes())return!0;if(o(e,t)||"function"==typeof n&&n(e))return!1;const l=(e=>{const t={};return Array.prototype.slice.call(e.attributes).forEach(e=>{t[e.name]=e.value}),t})(e),s=((e={},t)=>[t.forOf,t.if,t.case,t.default].filter(t=>void 0!==e[t]))(l,t);let c=[];if(s.length)a=!0,c=s;else{if(r&&l[t.tmp])return!0;c=Object.keys(l)}return c.forEach(n=>{n!==t.case&&n!==t.default&&(i=Z({node:e,attrObj:l,bindingCache:i,type:n}))}),!a};return a(e,Q)&&G(e,a),i},Y=(e="",t={})=>{const n={templateBinding:!1,textBinding:!0,cssBinding:!0,ifBinding:!0,showBinding:!0,modelBinding:!0,attrBinding:!0,forOfBinding:!0,switchBinding:!0},r={changeBinding:!0,clickBinding:!0,dblclickBinding:!0,blurBinding:!0,focusBinding:!0,hoverBinding:!0,inputBinding:!0,submitBinding:!0},i={templateBinding:!1,textBinding:!1,cssBinding:!1,ifBinding:!1,showBinding:!1,modelBinding:!1,attrBinding:!1,forOfBinding:!1,switchBinding:!1};let o={};switch(e){case p:o=x(!1,{},r,i,t);break;case h:t.templateBinding=!0,t.forceRender=!0,o=x(!1,{},n,r,t);break;default:o=x(!1,{},n,t)}return o},ee=/[&<>"'`]/g,te=RegExp(ee.source),ne={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},re=e=>ne[e],ie=(e,t,n,r,i)=>{let o="",a="";return function(l){const s=this,c="checkbox"===s.type;a=c?s.checked:(e=>{const t="string"==typeof(n=e)?n:null==n?"":`${n}`;var n;return t&&te.test(t)?t.replace(ee,re):t})(s.value),t&&(o=T(e,t),M(e,t,a));const d=[l,l.currentTarget,a,o,...n];r.apply(i,d),o=a}},oe=({cache:e,viewModel:t,bindingAttrs:n,forceRender:r,type:i="change"})=>{var o;const a=e.dataKey;let l=e.parameters;const s=e.el.getAttribute(n.model);let c;const d=t.APP||(null===(o=t.$root)||void 0===o?void 0:o.APP),u=null==d?void 0:d.$rootElement;if(!a||!r&&u&&!u.contains(e.el))return;const f=T(t,a);if("function"==typeof f){c=K(t,a),l=l?V(t,l):[];const n=ie(t,s,l,f,c);e.el.removeEventListener(i,n,!1),e.el.addEventListener(i,n,!1)}},ae=(e={},t,n,r)=>{if(!e.dataKey)return;const i=((e="")=>v.OBJECT_LITERAL.test(e))(e.dataKey),o=i?((e="")=>{let t=e.trim();const n={};return v.OBJECT_LITERAL.test(e)?(t=t.replace(v.LINE_BREAKS_TABS,"").substring(1),t=t.substring(0,t.length-1),t.split(",").forEach(e=>{const t=e.trim();if(t){const e=t.split(":"),r=e[0].trim();n[r]=`${e[1]}`.trim()}}),n):null})(e.dataKey):D(t,e);if(!P(o))return;if(e.elementData=e.elementData||{},e.elementData.viewModelPropValue=e.elementData.viewModelPropValue||{},JSON.stringify(e.elementData.viewModelPropValue)===JSON.stringify(o))return;i&&N(o,(n,r)=>{o[n]=D(t,{dataKey:r,el:e.el})});const a=e.elementData.viewModelPropValue;B(a)?N(o,(t,n)=>{void 0!==n&&(e.el.setAttribute(t,String(n)),!i&&e.elementData&&(e.elementData.viewModelPropValue[t]=n))}):(N(a,(t,n)=>{void 0===o[t]&&e.el.removeAttribute(t)}),N(o,(t,n)=>{void 0!==n&&a[t]!==o[t]&&(e.el.setAttribute(t,String(o[t])),!i&&e.elementData&&(e.elementData.viewModelPropValue[t]=n))})),i&&(e.elementData.viewModelPropValue=x(!1,{},o))};let le=null,se=null,ce=!1,de=!1,ue=0;const fe=(e,t,n,r)=>{const i="string"==typeof e.dataKey?(e=>{const t=e.replace(/(\s*?{\s*?|\s*?,\s*?)(['"])?([a-zA-Z0-9]+)(['"])?:/g,'$1"$3":').replace(/'/g,'"');return JSON.parse(t)})(e.dataKey):e.dataKey;let o=i.data;const a=i.append,l=i.prepend;let s;if(e.dataKey=i,o=void 0===o||"$root"===o?t:D(t,{dataKey:i.data,parameters:e.parameters}),!o)return;const c=e.el,d=c.getAttribute("data-index"),u=void 0!==t.$index?t.$index:d?parseInt(d,10):void 0;void 0!==u&&o&&"object"==typeof o&&(o.$index=u),le=le||document.createDocumentFragment(),se||(se=c,ce=Boolean(l),de=Boolean(a));const f=(e=>{const t=document.getElementById(e);return t?t.innerHTML:""})(i.id),p=S(f);if(!p)return;le.childNodes.length?(s=c,a||l||(s=L(s)),l?s.insertBefore(p,s.firstChild):s.appendChild(p)):(s=le,le.appendChild(p));const h=s.querySelectorAll(`[${n.tmp}]`),m=h.length;if(m){ue+=m;for(let e=0;e<m;e+=1){const i={el:h[e],dataKey:h[e].getAttribute(n.tmp)};r[n.tmp].push(i),fe(i,t,n,r),ue-=1}}if(0===ue){if(de||ce)ce?se.insertBefore(le,se.firstChild):se.appendChild(le);else{se.hasAttribute("data-template-rendered")?z(se,le):(se=L(se),se.appendChild(le),se.setAttribute("data-template-rendered","true"))}le=se=null,ce=de=!1,t.afterTemplateRender&&"function"==typeof t.afterTemplateRender&&t.afterTemplateRender(o)}},pe=({ctx:e,elementCache:t,updateOption:n,bindingAttrs:r,viewModel:i})=>{if(!t||!r)return!1;if(t[r.tmp]&&t[r.tmp].length){n.templateBinding&&(n=Y(h),t[r.tmp].forEach(e=>{fe(e,i,r,t)}),e.updateElementCache({templateCache:!0,elementCache:t,isRenderedTemplates:!0})),n.forceRender=!0;for(let o=0;o<t[r.tmp].length;o++)De({ctx:e,elementCache:t[r.tmp][o].bindingCache,updateOption:n,bindingAttrs:r,viewModel:i})}return!0},he=({elementCache:e,iterationVm:t,bindingAttrs:n,isRegenerate:r})=>{const i=r?Y(h):Y();i.forceRender=!0,pe({ctx:t.$root?t.$root.APP:t.APP,elementCache:e,updateOption:i,bindingAttrs:n,viewModel:t}),De({ctx:t.$root?t.$root.APP:t.APP,elementCache:e,updateOption:i,bindingAttrs:n,viewModel:t})},me=e=>{const t=e.el.cloneNode(!0);return e.fragment=document.createDocumentFragment(),e.fragment.appendChild(t),e},ge=e=>{if(!e||!e.type)return e;let n="";const l=e.dataKey?e.dataKey.replace(v.WHITE_SPACES,"_"):"";switch(e.type){case t.forOf:n=r;break;case t.if:n=i;break;case t.case:n=o;break;case t.default:n=a}return e.commentPrefix=n+l,e},ye=(e,t)=>{t.commentPrefix||ge(t);const n=t.commentPrefix+l;if(e=e.nextSibling){if(8===e.nodeType&&e.textContent===n)return t.docRange.setEndBefore(e);ye(e,t)}},be=(e,t)=>{let n="";e.commentPrefix||ge(e),n=e.commentPrefix;const r=document.createComment(n),i=document.createComment(n+l);return 11===t.nodeType?(t.insertBefore(r,t.firstChild),t.appendChild(i)):t.parentNode&&(t.parentNode.insertBefore(r,t),I(t.parentNode,i,t),e.previousNonTemplateElement=t.previousSibling,e.nextNonTemplateElement=t.nextSibling,e.parentElement=t.previousSibling.parentElement),t},ve=e=>{e.docRange||(e.docRange=document.createRange());const t=e.docRange;try{e.previousNonTemplateElement?(t.setStartBefore(e.previousNonTemplateElement.nextSibling),ye(e.previousNonTemplateElement.nextSibling,e)):(t.setStartBefore(e.parentElement.firstChild),ye(e.parentElement.firstChild,e))}catch(e){console.log("error removeElemnetsByCommentWrap: ",e instanceof Error?e.message:String(e))}t.deleteContents()},Ae=(e,t)=>{e.previousNonTemplateElement?I(e.parentElement,t,e.previousNonTemplateElement):e.nextNonTemplateElement?e.parentElement.insertBefore(t,e.nextNonTemplateElement):e.parentElement&&e.parentElement.appendChild(t)},Ee=({bindingData:e,viewModel:t,iterationData:n,keys:r,index:i})=>{var o;const a={},l=null===(o=e.iterator)||void 0===o?void 0:o.alias;return l&&(a[l]=r?n[r[i]]:n[i]),a[s]=t.$root||t,a[c]=l?a[l]:void 0,a[d]=i,a},Ce=(e,t,n,r,i)=>{const o=document.createDocumentFragment(),a=e.iterationSize;let l,s,c,d=0;for(C(e.iterationBindingCache)?e.iterationBindingCache.length=0:e.iterationBindingCache=[],d=0;d<a;d+=1)l=j(e.el),c=X({rootNode:l,bindingAttrs:n}),e.iterationBindingCache.push(c),B(c)||(s=Ee({bindingData:e,viewModel:t,iterationData:r,keys:i,index:d}),he({elementCache:e.iterationBindingCache[d],iterationVm:s,bindingAttrs:n,isRegenerate:!0})),o.appendChild(l);return o},we=(e,n,r,i)=>{const o=e.dataKey;if(o&&!(o.length>m)){if(!e.iterator){if(o.length>m)return;e.dataKey=e.dataKey.replace(v.WHITE_SPACES," ");const t=o.match(v.FOR_OF);if(!t)return;e.iterator={},e.iterator.alias=t[1].trim(),t[2]&&(e.iterator.dataKey=t[2].trim(),e.parentElement=e.el.parentElement,e.previousNonTemplateElement=e.el.previousSibling,e.nextNonTemplateElement=e.el.nextSibling)}(({bindingData:e,viewModel:n,bindingAttrs:r})=>{var i;if(!e||!n||!r)return;let o,a;const l=D(n,e.iterator);let s=!1;if(C(l))a=l.length;else{if(!P(l))return J(null,"iterationData is not an plain object or array");o=Object.keys(l),a=o.length}if(e.type||(e.type=t.forOf,be(e,e.el)),void 0===e.iterationSize?(e.iterationSize=a,e.el.removeAttribute(r.forOf),s=!0):(s=e.iterationSize!==a,e.iterationSize=a),!s)return void(null===(i=e.iterationBindingCache)||void 0===i||i.forEach((t,i)=>{if(!B(t)){const a=Ee({bindingData:e,viewModel:n,iterationData:l,keys:o,index:i});he({elementCache:t,iterationVm:a,bindingAttrs:r,isRegenerate:!1})}}));const c=Ce(e,n,r,l,o);ve(e),Ae(e,c)})({bindingData:e,viewModel:n,bindingAttrs:r})}},Pe=e=>{ve(e),e.hasIterationBindingCache&&(delete e.iterationBindingCache,delete e.hasIterationBindingCache)},Be=({bindingData:e,viewModel:t,bindingAttrs:n})=>{if(!e.fragment)return;const r=(e=>{let t=!1;if(e&&e.previousNonTemplateElement){const n=e.previousNonTemplateElement.textContent,r=e.previousNonTemplateElement.nextSibling;r&&8===r.nodeType&&r.textContent===n+l&&(t=!0)}return t})(e);let i=e.el;if(!r&&!e.isOnce){Pe(e);const t=e.fragment.firstChild;t&&(i=t.cloneNode(!0))}e.iterationBindingCache&&e.hasIterationBindingCache||(e.iterationBindingCache=X({rootNode:i,bindingAttrs:n})),B(e.iterationBindingCache)||(e.hasIterationBindingCache=!0,he({elementCache:e.iterationBindingCache,iterationVm:t,bindingAttrs:n,isRegenerate:!0})),Ae(e,i)},Se=({viewModel:e,cache:t})=>{var n;let r=!1;if(null===(n=e.APP)||void 0===n?void 0:n.postProcessQueue){const n=t[y];e.APP.postProcessQueue.push((i=n.indexOf(t),()=>{n.splice(i,1)})),r=!0}var i;return r},Re=(e,t)=>{e.forEach((e,n)=>{n===t&&void 0!==t||(Pe(e),e.hasIterationBindingCache&&(e.iterationBindingCache=null,e.hasIterationBindingCache=!1))})},Oe=(e,t)=>({el:e,dataKey:e.getAttribute(t),type:t}),Te=(e,t,n,r)=>function(i){let o,a=[];"submit"===e?(o=(e=>{const t={};return e instanceof HTMLFormElement?(new FormData(e).forEach((e,n)=>{Object.prototype.hasOwnProperty.call(Object,n)?(Array.isArray(t[n])||(t[n]=[t[n]]),t[n].push(e)):t[n]=e}),t):t})(i.currentTarget),a=[i,i.currentTarget,o,...t]):a=[i,i.currentTarget,...t],n.apply(r,a)},Me=({cache:e={},forceRender:t=!1,type:n="",viewModel:r={}})=>{var i;const o=e.dataKey;let a,l=e.parameters;const s=r.APP||(null===(i=r.$root)||void 0===i?void 0:i.APP),c=null==s?void 0:s.$rootElement;if(!n||!o||!t&&c&&!c.contains(e.el))return;const d=T(r,o);if("function"==typeof d){a=K(r,o),l=l?V(r,l):[];const t=`_db_${n}Handler`,i=e.el;i[t]&&i.removeEventListener(n,i[t],!1);const s=Te(n,l,d,a);i[t]=s,i.addEventListener(n,s,!1)}},De=({ctx:e,elementCache:n,updateOption:r,bindingAttrs:i,viewModel:o})=>{n&&r&&(r.forOfBinding&&n[i.forOf]&&n[i.forOf].length&&n[i.forOf].forEach(e=>{we(e,o,i,r.forceRender)}),r.attrBinding&&n[i.attr]&&n[i.attr].length&&n[i.attr].forEach(e=>{ae(e,o,0,r.forceRender)}),r.ifBinding&&n[i.if]&&n[i.if].length&&n[i.if].forEach(e=>{((e,n,r)=>{if(!e.dataKey||e.isOnce&&!1===e.hasIterationBindingCache)return;e.elementData=e.elementData||{},e.type=e.type||t.if;const i=e.elementData.viewModelPropValue,o=D(n,e)||!1;if(i===o&&!e.hasIterationBindingCache)return;const a=Boolean(o);if(!a&&e.isOnce&&e.el.parentNode)return(l=e.el)&&l.parentNode&&l.parentNode.removeChild(l),void Se({viewModel:n,cache:e});var l;e.elementData.viewModelPropValue=o,e.fragment||(be(e,e.el),e.el.removeAttribute(r.if),me(e)),a?(Be({bindingData:e,viewModel:n,bindingAttrs:r}),e.isOnce&&!e.hasIterationBindingCache&&Se({viewModel:n,cache:e})):Pe(e)})(e,o,i,r.forceRender)}),r.showBinding&&n[i.show]&&n[i.show].length&&n[i.show].forEach(e=>{((e,t)=>{let n={},r="",i=!0;if(!e.dataKey)return;e.elementData=e.elementData||{};const o=e.elementData.viewModelPropValue;if(void 0===e.elementData.displayStyle||void 0===e.elementData.computedStyle)if(n=e.el.style,r=n.display,r)e.elementData.displayStyle="none"===r?"block":r,e.elementData.computedStyle=null;else{const t=window.getComputedStyle(e.el,null).getPropertyValue("display");e.elementData.displayStyle=null,e.elementData.computedStyle=t}i=D(t,e),i=Boolean(i),o!==i&&(i?e.elementData.computedStyle||"none"===e.el.style.display?"none"===e.elementData.computedStyle?e.el.style.setProperty("display","block"):n.length>1?e.el.style.removeProperty("display"):e.el.removeAttribute("style"):e.el.style.setProperty("display",e.elementData.displayStyle):"none"!==e.el.style.display&&e.el.style.setProperty("display","none"),e.elementData.viewModelPropValue=i)})(e,o,0,r.forceRender)}),r.switchBinding&&n[i.switch]&&n[i.switch].length&&n[i.switch].forEach(e=>{((e,t,n)=>{if(!e.dataKey)return;e.elementData=e.elementData||{};const r=D(t,e);if(r!==e.elementData.viewModelPropValue){if(e.elementData.viewModelPropValue=r,!e.cases){const t=e.el.children;if(!t.length)return;e.cases=[];for(let r=0,i=t.length;r<i;r+=1){let i=null;const o=t[r];o.hasAttribute(n.case)?i=Oe(o,n.case):o.hasAttribute(n.default)&&(i=Oe(o,n.default),i.isDefault=!0),i&&(be(i,i.el),i.isDefault?i.el.removeAttribute(n.default):i.el.removeAttribute(n.case),me(i),e.cases.push(i))}}if(e.cases.length){let r=!1;for(let i=0,o=e.cases.length;i<o;i+=1){let o;if(e.cases[i].dataKey&&(o=D(t,e.cases[i])||e.cases[i].dataKey),o===e.elementData.viewModelPropValue||e.cases[i].isDefault){r=!0,Be({bindingData:e.cases[i],viewModel:t,bindingAttrs:n}),Re(e.cases,i);break}}r||Re(e.cases)}}})(e,o,i,r.forceRender)}),r.textBinding&&n[i.text]&&n[i.text].length&&n[i.text].forEach(e=>{((e,t,n,r)=>{var i,o;const a=e.dataKey,l=t.APP||(null===(i=t.$root)||void 0===i?void 0:i.APP);if(!a||!r&&!(null===(o=null==l?void 0:l.$rootElement)||void 0===o?void 0:o.contains(e.el)))return;const s=D(t,e),c=e.el.textContent;void 0!==s&&"object"!=typeof s&&null!==s&&s!==c&&(e.el.textContent=String(s))})(e,o,0,r.forceRender)}),r.cssBinding&&n[i.css]&&n[i.css].length&&n[i.css].forEach(e=>{((e,t,n,r)=>{var i,o;const a=e.dataKey,l=t.APP||(null===(i=t.$root)||void 0===i?void 0:i.APP);if(!a||!r&&!(null===(o=null==l?void 0:l.$rootElement)||void 0===o?void 0:o.contains(e.el)))return;e.elementData=e.elementData||{},e.elementData.viewModelPropValue=e.elementData.viewModelPropValue||"";const s=e.elementData.viewModelPropValue;let c="";const d=D(t,e);let u=[],f=!1,p=!1,h=[];if("string"==typeof d)p=!0;else{if(!P(d))return;f=!0}if(f?c=JSON.stringify(d):(c=d.replace(/\s\s+/g," ").trim(),u=c.split(" ")),s===c)return;const m=e.el.classList,g=m.length;for(let e=0;e<g;e+=1)h.push(m[e]);if(f)N(d,(e,t)=>{const n=h.indexOf(e);!0===t?h.push(e):-1!==n&&h.splice(n,1)});else if(p){const e="string"==typeof s&&s?s.split(" "):[];y=e,h=h.filter((e,t)=>y.indexOf(e)<0),h=h.concat(u)}var y;h=h.filter((e,t,n)=>n.indexOf(e)===t);const b=h.join(" ");e.elementData.viewModelPropValue=c,e.el.setAttribute("class",b)})(e,o,0,r.forceRender)}),r.modelBinding&&n[i.model]&&n[i.model].length&&n[i.model].forEach(e=>{((e,t,n,r)=>{var i,o;const a=e.dataKey;let l="";const s=t.APP||(null===(i=t.$root)||void 0===i?void 0:i.APP);if(a&&(r||(null===(o=null==s?void 0:s.$rootElement)||void 0===o?void 0:o.contains(e.el)))&&(l=T(t,a),null!=l)){const t=e.el,n="checkbox"===t.type,r="radio"===t.type,i=t.name,o=r?(null==s?void 0:s.$rootElement).querySelectorAll(`input[name="${i}"]`):[];if(l!==(n?t.checked:t.value))if(n)t.checked=Boolean(l);else if(r){let e=0;const t=o.length;for(e=0;e<t;e+=1){const t=o[e];if(t.value===l){t.checked=!0;break}}}else t.value=String(l)}})(e,o,0,r.forceRender)}),r.changeBinding&&n[i.change]&&n[i.change].length&&n[i.change].forEach(e=>{oe({bindingAttrs:i,cache:e,forceRender:r.forceRender,type:"change",viewModel:o})}),r.submitBinding&&n[i.submit]&&n[i.submit].length&&n[i.submit].forEach(e=>{Me({cache:e,forceRender:r.forceRender,type:"submit",viewModel:o})}),r.clickBinding&&n[i.click]&&n[i.click].length&&n[i.click].forEach(e=>{Me({cache:e,forceRender:r.forceRender,type:"click",viewModel:o})}),r.dblclickBinding&&n[i.dblclick]&&n[i.dblclick].length&&n[i.dblclick].forEach(e=>{Me({cache:e,forceRender:r.forceRender,type:"dblclick",viewModel:o})}),r.blurBinding&&n[i.blur]&&n[i.blur].length&&n[i.blur].forEach(e=>{Me({cache:e,forceRender:r.forceRender,type:"blur",viewModel:o})}),r.focusBinding&&n[i.focus]&&n[i.focus].length&&n[i.focus].forEach(e=>{Me({cache:e,forceRender:r.forceRender,type:"focus",viewModel:o})}),r.hoverBinding&&n[i.hover]&&n[i.hover].length&&n[i.hover].forEach(e=>{((e,t,n,r)=>{var i;const o=e.dataKey;let a=e.parameters;const l=u,s=f;let c;const d=t.APP||(null===(i=t.$root)||void 0===i?void 0:i.APP);e.elementData=e.elementData||{};const p=null==d?void 0:d.$rootElement;if(!o||!r&&p&&!p.contains(e.el))return;const h=T(t,o);if(h&&"function"==typeof h[l]&&"function"==typeof h[s]){c=K(t,o),a=a?V(t,a):[];const n=((e,t,n,r,i)=>function(o){const a=[o,e.el,...i];t[n].apply(r,a)})(e,h,l,c,a),r=((e,t,n,r,i)=>function(o){const a=[o,e.el,...i];t[n].apply(r,a)})(e,h,s,c,a);e.el.removeEventListener("mouseenter",n,!1),e.el.removeEventListener("mouseleave",r,!1),e.el.addEventListener("mouseenter",n,!1),e.el.addEventListener("mouseleave",r,!1)}})(e,o,0,r.forceRender)}),r.inputBinding&&n[i.input]&&n[i.input].length&&n[i.input].forEach(e=>{oe({bindingAttrs:i,cache:e,forceRender:r.forceRender,type:"input",viewModel:o})}))},ke={},$e=(e=null,t="",n,r=!1)=>{if(!(e&&"object"==typeof e&&"compId"in e&&e.compId&&t&&"function"==typeof n))return;let i,o=!1;t=t.replace(v.WHITE_SPACES,""),ke[t]=ke[t]||[];const a=e;o=ke[t].some(e=>!!e[a.compId]&&(e[a.compId]=n.bind(a.viewModel),e.isOnce=r,!0)),o||(i={},i[a.compId]=n.bind(a.viewModel),i.isOnce=r,ke[t].push(i))},xe=(e="",t="")=>{if(!e||!t)return;let n,r=0,i=0;if(t=t.replace(v.WHITE_SPACES,""),ke[t])for(i=ke[t].length,r=0;r<i;r+=1)if(n=ke[t][r],n[e]){ke[t].splice(r,1);break}ke[t]&&!ke[t].length&&delete ke[t]},Ne=Symbol("isReactiveProxy"),_e=Symbol("originalTarget");function je(e){return null!==e&&"object"==typeof e&&!0===e[Ne]}function Ie(e,t,n="",r){const{onChange:i,deep:o=!0,trackChanges:a=!1}=t;if(null===e||"object"!=typeof e)return e;if(je(e))return e;const l=["APP","$root","__proto__","constructor"];if(l.includes(n))return e;const s=r||(a?{changedPaths:new Set}:void 0),c=new Map;return new Proxy(e,{set(e,t,r){if("symbol"==typeof t)return e[t]=r,!0;if(e[t]===r)return!0;if(e[t]=r,c.delete(t),s){const e=n?`${n}.${String(t)}`:String(t);s.changedPaths.add(e)}return i(),!0},get(e,r){if(r===Ne)return!0;if(r===_e)return e;const a=e[r];if("function"==typeof a||"symbol"==typeof r||l.includes(String(r)))return a;if(o&&null!==a&&"object"==typeof a){if(c.has(r))return c.get(r);const e=n?`${n}.${String(r)}`:String(r),o=Array.isArray(a)?Ke(a,i,t,e,s):Ie(a,t,e,s);return c.set(r,o),o}return a},deleteProperty(e,t){if("symbol"==typeof t)return delete e[t],!0;if(delete e[t],c.delete(t),s){const e=n?`${n}.${String(t)}`:String(t);s.changedPaths.add(e)}return i(),!0}})}function Ke(e,t,n,r="",i){const{deep:o=!0}=n;if(je(e))return e;return new Proxy(e,{set(e,n,o){if("symbol"==typeof n)return e[n]=o,!0;if(e[n]===o)return!0;if(e[n]=o,i){const e=r?`${r}[${String(n)}]`:`[${String(n)}]`;i.changedPaths.add(e)}return t(),!0},get(e,a){if(a===Ne)return!0;if(a===_e)return e;const l=e[a];if("function"==typeof l){if(["push","pop","shift","unshift","splice","sort","reverse","fill"].includes(String(a)))return function(...e){const n=l.apply(this,e);return i&&i.changedPaths.add(r||"array"),t(),n}}if(o&&null!==l&&"object"==typeof l&&"symbol"!=typeof a){const e=r?`${r}[${String(a)}]`:`[${String(a)}]`;return Array.isArray(l)?Ke(l,t,n,e,i):Ie(l,n,e,i)}return l},deleteProperty(e,n){if("symbol"==typeof n)return delete e[n],!0;if(delete e[n],i){const e=r?`${r}[${String(n)}]`:`[${String(n)}]`;i.changedPaths.add(e)}return t(),!0}})}let Ve=0;class Le{constructor(e,t,r,i={}){if(!e||1!==e.nodeType||null===t||"object"!=typeof t)throw new TypeError("$rootElement or viewModel is invalid");return this.initRendered=!1,this.compId=Ve+=1,this.$rootElement=e,this.bindingAttrs=r,this.isServerRendered=null!==this.$rootElement.getAttribute(n),this.afterRenderCallbacks=[],this.render=((e,t=null)=>function(e,t){let n=$(),r=0;return function(){const i=Array.from?Array.from(arguments):Array.prototype.slice.call(arguments);return window.cancelAnimationFrame(r),r=window.requestAnimationFrame(()=>{try{e.apply(t,i),n.resolve(t)}catch(e){console.error("error in rendering: ",e),n.reject(e)}n=$(),window.cancelAnimationFrame(r)}),n.promise}}(e,t))(this._render.bind(this),this),this.originalViewModel=t,this.isReactive=!!i.reactive,this.isReactive?"undefined"==typeof Proxy?(console.warn("Reactive mode requires Proxy support. Falling back to manual mode."),this.isReactive=!1,this.viewModel=t):this.viewModel=Ie(t,{onChange:()=>this.render(),deep:!0,trackChanges:i.trackChanges}):this.viewModel=t,this.viewModel.APP=this,this.viewModel.$root=this.viewModel,this.parseView(),this.$rootElement[s]=this.viewModel,this}parseView(){return this.elementCache=X({rootNode:this.$rootElement,bindingAttrs:this.bindingAttrs}),this.isServerRendered&&!this.initRendered&&this.updateElementCache({templateCache:!0}),this}updateElementCache(e={}){const t=e.elementCache||this.elementCache;if(e.allCache&&(this.elementCache=X({rootNode:this.$rootElement,bindingAttrs:this.bindingAttrs})),(e.allCache||e.templateCache)&&t[this.bindingAttrs.tmp]&&t[this.bindingAttrs.tmp].length)for(let n=0;n<t[this.bindingAttrs.tmp].length;n++){const r=t[this.bindingAttrs.tmp][n];let i=null;r.el.hasAttribute(this.bindingAttrs.forOf)&&(i=()=>!0),r.bindingCache=X({rootNode:r.el,bindingAttrs:this.bindingAttrs,skipCheck:i,isRenderedTemplate:e.isRenderedTemplates})}}_render(e={}){let t={};this.initRendered?t=Y("",e):this.isServerRendered?(this.$rootElement.removeAttribute(n),t=Y(p,e)):t=Y(h,e),this.postProcessQueue=[];const r={ctx:this,elementCache:this.elementCache,updateOption:t,bindingAttrs:this.bindingAttrs,viewModel:this.viewModel};var i;pe(r),De(r),(i=this.postProcessQueue)&&i.length&&N(i,(e,t)=>{if("function"==typeof t)try{t()}catch(e){J(e,`Error postProcess: ${String(t)}`)}}),this.postProcessQueue.length=0,delete this.postProcessQueue,this.initRendered=!0,this._callAfterRenderCallbacks()}_callAfterRenderCallbacks(){if(this.afterRenderCallbacks.length>0){const e=this.afterRenderCallbacks.slice();for(let t=0,n=e.length;t<n;t+=1)try{e[t]()}catch(e){console.error("Error in afterRender callback:",e)}}}afterRender(e){if("function"!=typeof e)throw new TypeError("afterRender callback must be a function");return this.afterRenderCallbacks.push(e),this}removeAfterRender(e){const t=this.afterRenderCallbacks.indexOf(e);return-1!==t&&this.afterRenderCallbacks.splice(t,1),this}clearAfterRender(){return this.afterRenderCallbacks.length=0,this}subscribe(e="",t){return $e(this,e,t),this}subscribeOnce(e="",t){return((e=null,t="",n)=>{$e(e,t,n,!0)})(this,e,t),this}unsubscribe(e=""){return xe(this.compId,e),this}unsubscribeAll(){return((e="")=>{e&&Object.keys(ke).forEach(t=>{xe(e,t)})})(this.compId),this}publish(e="",...t){return((e="",...t)=>{e&&ke[e]&&(e=e.replace(v.WHITE_SPACES,""),ke[e].forEach(n=>{Object.keys(n).forEach(r=>{if("function"==typeof n[r]){const i=n[r](...t);return n.isOnce&&xe(r,e),i}})}))})(e,...t),this}}const Fe="function"==typeof window.Promise;let He=t;const We={reactive:!0},ze={use:(e={})=>(e.bindingAttrs&&(He=x(!1,{},e.bindingAttrs)),"boolean"==typeof e.reactive&&(We.reactive=e.reactive),"boolean"==typeof e.trackChanges&&(We.trackChanges=e.trackChanges),ze),init:(t,n=null,r)=>{if(!Fe)return console.warn("Browser not support Promise");const i=e(e({},We),r);return new Le(t,n,He,i)},version:"@version@"};return ze});
2
9
  //# sourceMappingURL=dataBind.min.js.map