peryl 1.4.39 → 1.4.42

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 (136) hide show
  1. package/README.md +8 -7
  2. package/dist/cache.js +1 -0
  3. package/dist/cache.js.map +1 -1
  4. package/dist/debounce.js +1 -0
  5. package/dist/debounce.js.map +1 -1
  6. package/dist/dom.js +1 -0
  7. package/dist/dom.js.map +1 -1
  8. package/dist/encode.js +1 -0
  9. package/dist/encode.js.map +1 -1
  10. package/dist/events.js +1 -0
  11. package/dist/events.js.map +1 -1
  12. package/dist/form.js +1 -0
  13. package/dist/form.js.map +1 -1
  14. package/dist/google-analytics.js +1 -0
  15. package/dist/google-analytics.js.map +1 -1
  16. package/dist/hash.d.ts +3 -0
  17. package/dist/hash.js +16 -3
  18. package/dist/hash.js.map +1 -1
  19. package/dist/history.js +1 -0
  20. package/dist/history.js.map +1 -1
  21. package/dist/hsml-app.d.ts +2 -3
  22. package/dist/hsml-app.js +6 -6
  23. package/dist/hsml-app.js.map +1 -1
  24. package/dist/hsml-convert.js +1 -0
  25. package/dist/hsml-convert.js.map +1 -1
  26. package/dist/hsml-dom.js +1 -0
  27. package/dist/hsml-dom.js.map +1 -1
  28. package/dist/hsml-h.js +1 -0
  29. package/dist/hsml-h.js.map +1 -1
  30. package/dist/hsml-html.js +1 -0
  31. package/dist/hsml-html.js.map +1 -1
  32. package/dist/hsml-idom.js +2 -1
  33. package/dist/hsml-idom.js.map +1 -1
  34. package/dist/hsml-svac-ctrl.js +1 -0
  35. package/dist/hsml-svac-ctrl.js.map +1 -1
  36. package/dist/hsml-svac-html.js +1 -0
  37. package/dist/hsml-svac-html.js.map +1 -1
  38. package/dist/hsml-widget.js +1 -0
  39. package/dist/hsml-widget.js.map +1 -1
  40. package/dist/hsml.js +1 -0
  41. package/dist/hsml.js.map +1 -1
  42. package/dist/http.js +1 -0
  43. package/dist/http.js.map +1 -1
  44. package/dist/index.js +1 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/load.js +1 -0
  47. package/dist/load.js.map +1 -1
  48. package/dist/objpaths.js +1 -0
  49. package/dist/objpaths.js.map +1 -1
  50. package/dist/router.js +1 -0
  51. package/dist/router.js.map +1 -1
  52. package/dist/settings.js +1 -0
  53. package/dist/settings.js.map +1 -1
  54. package/dist/signal.js +1 -0
  55. package/dist/signal.js.map +1 -1
  56. package/dist/template.js +1 -0
  57. package/dist/template.js.map +1 -1
  58. package/dist/tmpl.js +1 -0
  59. package/dist/tmpl.js.map +1 -1
  60. package/dist/umd/cache.js +1 -1
  61. package/dist/umd/cache.js.map +1 -1
  62. package/dist/umd/debounce.js +1 -1
  63. package/dist/umd/debounce.js.map +1 -1
  64. package/dist/umd/dom.js +1 -1
  65. package/dist/umd/dom.js.map +1 -1
  66. package/dist/umd/encode.js +1 -1
  67. package/dist/umd/encode.js.map +1 -1
  68. package/dist/umd/events.js +1 -1
  69. package/dist/umd/events.js.map +1 -1
  70. package/dist/umd/form.js +1 -1
  71. package/dist/umd/form.js.map +1 -1
  72. package/dist/umd/google-analytics.js +1 -1
  73. package/dist/umd/google-analytics.js.map +1 -1
  74. package/dist/umd/hash.js +1 -1
  75. package/dist/umd/hash.js.map +1 -1
  76. package/dist/umd/history.js +1 -1
  77. package/dist/umd/history.js.map +1 -1
  78. package/dist/umd/hsml-app.js +1 -1
  79. package/dist/umd/hsml-app.js.map +1 -1
  80. package/dist/umd/hsml-convert.js +1 -1
  81. package/dist/umd/hsml-convert.js.map +1 -1
  82. package/dist/umd/hsml-dom.js +1 -1
  83. package/dist/umd/hsml-dom.js.map +1 -1
  84. package/dist/umd/hsml-h.js +1 -1
  85. package/dist/umd/hsml-h.js.map +1 -1
  86. package/dist/umd/hsml-html.js +1 -1
  87. package/dist/umd/hsml-html.js.map +1 -1
  88. package/dist/umd/hsml-idom.js +1 -1
  89. package/dist/umd/hsml-idom.js.map +1 -1
  90. package/dist/umd/hsml-svac-ctrl.js +1 -1
  91. package/dist/umd/hsml-svac-ctrl.js.map +1 -1
  92. package/dist/umd/hsml-svac-html.js +1 -1
  93. package/dist/umd/hsml-svac-html.js.map +1 -1
  94. package/dist/umd/hsml-widget.js +1 -1
  95. package/dist/umd/hsml-widget.js.map +1 -1
  96. package/dist/umd/hsml.js +1 -1
  97. package/dist/umd/hsml.js.map +1 -1
  98. package/dist/umd/http.js +1 -1
  99. package/dist/umd/http.js.map +1 -1
  100. package/dist/umd/index.js +1 -1
  101. package/dist/umd/index.js.map +1 -1
  102. package/dist/umd/load.js +1 -1
  103. package/dist/umd/load.js.map +1 -1
  104. package/dist/umd/objpaths.js +1 -1
  105. package/dist/umd/objpaths.js.map +1 -1
  106. package/dist/umd/router.js +1 -1
  107. package/dist/umd/router.js.map +1 -1
  108. package/dist/umd/settings.js +1 -1
  109. package/dist/umd/settings.js.map +1 -1
  110. package/dist/umd/signal.js +1 -1
  111. package/dist/umd/signal.js.map +1 -1
  112. package/dist/umd/template.js +1 -1
  113. package/dist/umd/template.js.map +1 -1
  114. package/dist/umd/tmpl.js +1 -1
  115. package/dist/umd/tmpl.js.map +1 -1
  116. package/dist/umd/validators-moment.js +1 -1
  117. package/dist/umd/validators-moment.js.map +1 -1
  118. package/dist/umd/validators-numeral.js +1 -1
  119. package/dist/umd/validators-numeral.js.map +1 -1
  120. package/dist/umd/validators-object.js +1 -1
  121. package/dist/umd/validators-object.js.map +1 -1
  122. package/dist/umd/validators.js +1 -1
  123. package/dist/umd/validators.js.map +1 -1
  124. package/dist/validators-moment.js +1 -0
  125. package/dist/validators-moment.js.map +1 -1
  126. package/dist/validators-numeral.js +1 -0
  127. package/dist/validators-numeral.js.map +1 -1
  128. package/dist/validators-object.js +1 -0
  129. package/dist/validators-object.js.map +1 -1
  130. package/dist/validators.js +1 -4
  131. package/dist/validators.js.map +1 -1
  132. package/package.json +1 -1
  133. package/src/hash.ts +20 -2
  134. package/src/hsml-app.ts +6 -8
  135. package/src/hsml-idom.ts +2 -2
  136. package/src/validators.ts +4 -4
@@ -1,2 +1,2 @@
1
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var r in n)("object"==typeof exports?exports:t)[r]=n[r]}}(window,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=13)}({0:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hsml=function t(e,n,r){if(null!=e)switch(e.constructor){case Array:!function(e,n,r){if("string"!=typeof e[0])return void console.error("HSML tag head not string:",e);const o=e[0],s=e[1],c=s&&s.constructor===Object;let i,a,u=[];const l=e[c?2:1];switch(l&&l.constructor){case Array:u=l;break;case Function:i=l;break;case String:case Boolean:case Number:case Date:u=[l];break;default:a=l}const f=o.split("~"),d=f[1],p=f[0].split("."),b=p[0].split("#"),h=b[0]||"div",_=b[1],m=p.slice(1);let y;y=c?s:{};_&&(y._id=_);m.length&&(y._classes=m);d&&(y._ref=d);a&&(y._hObj=a);const g=n.open(h,y,u,r);i&&n.fnc(i,r);g||u.forEach(e=>t(e,n,r));n.close(h,u,r)}(e,n,r);break;case Function:n.fnc(e,r);break;case String:n.text(e,r);break;case Boolean:n.text(""+e,r);break;case Number:const o=e,s=o.toLocaleString?o.toLocaleString():o.toString();n.text(s,r);break;case Date:const c=e,i=c.toLocaleString?c.toLocaleString():c.toString();n.text(i,r);break;default:n.obj(e,r)}},e.hjoin=function(t,e){const n=t.reduce((t,n)=>(t.push(n,e),t),[]);return n.splice(-1),n}},13:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const r=n(0);class o{open(t,e,n,r){const o=document.createElement(t);let s=e._id,c=e._classes?e._classes:[],i=e._ref,a=e._hObj;for(const t in e)if(e.hasOwnProperty(t))switch(t){case"_id":case"_classes":case"_ref":case"_key":case"_skip":case"_hObj":break;case"id":s=e[t];break;case"classes":const n=e[t];c=c.concat(n?n.map(t=>t.constructor===String?t:t[1]?t[0]:void 0).filter(t=>void 0!==t):[]);break;case"class":c=c.concat(e[t].split(" "));break;case"data":const i=e[t];for(const t in i)i.hasOwnProperty(t)&&(i[t].constructor===String?o.dataset[t]=i[t]:o.dataset[t]=JSON.stringify(i[t]));break;case"styles":const a=e[t];for(const t in a)a.hasOwnProperty(t)&&(o.style[t]=a[t]);break;case"on":const u=e[t];"string"==typeof u[0]?"function"==typeof u[1]?o.addEventListener(u[0],u[1]):o.addEventListener(u[0],t=>{r&&r.actionCb&&"function"==typeof r.actionCb&&r.actionCb(u[1],u[2],t)}):u.forEach(t=>{"function"==typeof u[1]?o.addEventListener(u[0],u[1]):o.addEventListener(u[0],t=>{r&&r.actionCb&&"function"==typeof r.actionCb&&r.actionCb(u[1],u[2],t)})});break;default:"function"==typeof e[t]?o.addEventListener(t,e[t]):"boolean"==typeof e[t]?e[t]&&o.setAttribute(t,""):o.setAttribute(t,e[t])}return s&&o.setAttribute("id",s),c.length&&o.classList.add(...c),this._current?(this._current.appendChild(o),this._current=o):(this.element=o,this._current=o),r&&i&&(r.refs[i]=this._current),a&&a.mount&&a.mount.constructor===Function&&a.mount(o),!!e._skip}close(t,e,n){this._current!==this.element&&this._current&&(this._current=this._current.parentElement||void 0)}text(t,e){this._current&&this._current.appendChild(document.createTextNode(t))}fnc(t,e){this._current&&t(this._current)}obj(t,e){"toHsml"in t?t.toHsml&&r.hsml(t.toHsml(),this,t):this.text(""+t,e)}}function s(t,e){const n=new o;return r.hsml(t,n,e),n.element}e.hsml2dom=s,e.hsmls2dom=function(t,e){const n=[];for(const r of t)if(null!=r)if(r.constructor===String)n.push(document.createTextNode(r));else if("toHsml"in r){const t=r;t.toHsml&&n.push(s(t.toHsml(),t))}else n.push(s(r,e));return n}}})}));
1
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(window,(function(){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var r=e[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(o,r,function(e){return t[e]}.bind(null,r));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=13)}({0:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hjoin=e.hsml=void 0,e.hsml=function t(e,n,o){if(null!=e)switch(e.constructor){case Array:!function(e,n,o){if("string"!=typeof e[0])return void console.error("HSML tag head not string:",e);const r=e[0],s=e[1],c=s&&s.constructor===Object;let i,a,u=[];const l=e[c?2:1];switch(l&&l.constructor){case Array:u=l;break;case Function:i=l;break;case String:case Boolean:case Number:case Date:u=[l];break;default:a=l}const f=r.split("~"),d=f[1],p=f[0].split("."),b=p[0].split("#"),h=b[0]||"div",m=b[1],_=p.slice(1);let y;y=c?s:{};m&&(y._id=m);_.length&&(y._classes=_);d&&(y._ref=d);a&&(y._hObj=a);const g=n.open(h,y,u,o);i&&n.fnc(i,o);g||u.forEach(e=>t(e,n,o));n.close(h,u,o)}(e,n,o);break;case Function:n.fnc(e,o);break;case String:n.text(e,o);break;case Boolean:n.text(""+e,o);break;case Number:const r=e,s=r.toLocaleString?r.toLocaleString():r.toString();n.text(s,o);break;case Date:const c=e,i=c.toLocaleString?c.toLocaleString():c.toString();n.text(i,o);break;default:n.obj(e,o)}},e.hjoin=function(t,e){const n=t.reduce((t,n)=>(t.push(n,e),t),[]);return n.splice(-1),n}},13:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hsmls2dom=e.hsml2dom=void 0;const o=n(0);class r{open(t,e,n,o){const r=document.createElement(t);let s=e._id,c=e._classes?e._classes:[],i=e._ref,a=e._hObj;for(const t in e)if(e.hasOwnProperty(t))switch(t){case"_id":case"_classes":case"_ref":case"_key":case"_skip":case"_hObj":break;case"id":s=e[t];break;case"classes":const n=e[t];c=c.concat(n?n.map(t=>t.constructor===String?t:t[1]?t[0]:void 0).filter(t=>void 0!==t):[]);break;case"class":c=c.concat(e[t].split(" "));break;case"data":const i=e[t];for(const t in i)i.hasOwnProperty(t)&&(i[t].constructor===String?r.dataset[t]=i[t]:r.dataset[t]=JSON.stringify(i[t]));break;case"styles":const a=e[t];for(const t in a)a.hasOwnProperty(t)&&(r.style[t]=a[t]);break;case"on":const u=e[t];"string"==typeof u[0]?"function"==typeof u[1]?r.addEventListener(u[0],u[1]):r.addEventListener(u[0],t=>{o&&o.actionCb&&"function"==typeof o.actionCb&&o.actionCb(u[1],u[2],t)}):u.forEach(t=>{"function"==typeof u[1]?r.addEventListener(u[0],u[1]):r.addEventListener(u[0],t=>{o&&o.actionCb&&"function"==typeof o.actionCb&&o.actionCb(u[1],u[2],t)})});break;default:"function"==typeof e[t]?r.addEventListener(t,e[t]):"boolean"==typeof e[t]?e[t]&&r.setAttribute(t,""):r.setAttribute(t,e[t])}return s&&r.setAttribute("id",s),c.length&&r.classList.add(...c),this._current?(this._current.appendChild(r),this._current=r):(this.element=r,this._current=r),o&&i&&(o.refs[i]=this._current),a&&a.mount&&a.mount.constructor===Function&&a.mount(r),!!e._skip}close(t,e,n){this._current!==this.element&&this._current&&(this._current=this._current.parentElement||void 0)}text(t,e){this._current&&this._current.appendChild(document.createTextNode(t))}fnc(t,e){this._current&&t(this._current)}obj(t,e){"toHsml"in t?t.toHsml&&o.hsml(t.toHsml(),this,t):this.text(""+t,e)}}function s(t,e){const n=new r;return o.hsml(t,n,e),n.element}e.hsml2dom=s,e.hsmls2dom=function(t,e){const n=[];for(const o of t)if(null!=o)if(o.constructor===String)n.push(document.createTextNode(o));else if("toHsml"in o){const t=o;t.toHsml&&n.push(s(t.toHsml(),t))}else n.push(s(o,e));return n}}})}));
2
2
  //# sourceMappingURL=hsml-dom.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml.ts","webpack:///./src/hsml-dom.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hsml","hml","handler","ctx","constructor","Array","hmlTag","console","error","head","attrsObj","hasAttrs","hFnc","hObj","children","htc","Function","String","Boolean","Number","Date","refSplit","split","ref","dotSplit","hashSplit","tag","id","classes","slice","attrs","_id","length","_classes","_ref","_hObj","skip","open","fnc","forEach","jml","close","hsmlTag","text","toLocaleString","toString","ds","obj","hsmls","sep","reduce","push","splice","HsmlDomHandler","e","document","createElement","attrClasses","concat","map","undefined","filter","attrData","dataset","JSON","stringify","attrStyles","style","attrOn","addEventListener","actionCb","attr","setAttribute","classList","add","this","_current","appendChild","element","refs","mount","_skip","parentElement","createTextNode","toHsml","hsml2dom","hmls","elems"],"mappings":"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","file":"hsml-dom.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})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","\nexport type HHead = keyof HTMLElementTagNameMap | string; // \"tag#id.class1.class2~handler\"\n\nexport type HAttrClasses = Array<string | [string, boolean]>;\n\nexport type HAttrStyles = { [key: string]: string };\n\nexport type HAttrData = {\n [key: string]:\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object;\n};\n\nexport type HAttrOnAction = string;\n\nexport type HAttrOnDataFnc = (e: Event) => any;\n\nexport type HAttrOnData =\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object\n | HAttrOnDataFnc\n | null;\n\nexport type HAttrOnCb = [keyof HTMLElementEventMap, EventListener];\n\nexport type HAttrOnAct = [\n keyof HTMLElementEventMap,\n HAttrOnAction,\n HAttrOnData?\n];\n\nexport type HAttrOn = HAttrOnCb | HAttrOnAct | Array<HAttrOnCb | HAttrOnAct>;\n\nexport interface HAttrs {\n readonly _id?: string;\n readonly _classes?: string[];\n readonly _ref?: string;\n readonly _key?: string;\n readonly _skip?: boolean;\n readonly _hObj?: HObj;\n readonly classes?: HAttrClasses;\n readonly styles?: HAttrStyles;\n readonly data?: HAttrData;\n readonly on?: HAttrOn;\n readonly [key: string]:\n | string\n | String\n | string[]\n | String[]\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | HAttrClasses\n | HAttrStyles\n // | HsmlAttrData\n | HAttrOn\n | EventListener\n | HObj\n | undefined;\n}\n\nexport type HFnc = (e: Element) => boolean | void;\n\nexport interface HObj {\n toHsml?(): HElement;\n}\n\nexport interface HElements extends Array<HElement> {}\n\nexport type HChildren =\n | HElements\n | HFnc\n | HObj\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport type HTagNoAttr = [HHead, HChildren?];\nexport type HTagAttr = [HHead, HAttrs, HChildren?];\n\nexport type HTag = HTagNoAttr | HTagAttr;\n\nexport type HElement =\n | HFnc\n | HObj\n | HTag\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport interface HHandlerCtx extends HObj {\n refs: { [name: string]: Element };\n actionCb(action: HAttrOnAction, data: HAttrOnData, e: Event): void;\n}\n\nexport interface HHandler<C extends HHandlerCtx> {\n open(tag: HHead, attrs: HAttrs, children: HElements, ctx?: C): boolean;\n close(tag: HHead, children: HElements, ctx?: C): void;\n text(text: string, ctx?: C): void;\n fnc(fnc: HFnc, ctx?: C): void;\n obj(obj: HObj, ctx?: C): void;\n}\n\nexport function hsml<C extends HHandlerCtx>(hml: HElement,\n handler: HHandler<C>,\n ctx?: C): void {\n // console.log(\"hsml\", hsml);\n if (hml === undefined || hml === null) {\n return;\n }\n switch (hml.constructor) {\n case Array:\n // const tag = hml as HTag;\n // if (\n // (\n // tag.length === 1 &&\n // tag[0].constructor === String\n // ) ||\n // (\n // tag.length === 2 &&\n // (\n // tag[0].constructor === String &&\n // (tag[1]!.constructor === Array || tag[1]!.constructor === Function)\n // ) ||\n // (\n // tag[0].constructor === String &&\n // tag[1]!.constructor === Object\n // )\n // ) ||\n // (\n // tag.length === 3 &&\n // tag[0].constructor === String &&\n // tag[1].constructor === Object &&\n // tag[2]!.constructor === Array\n // )\n // ) {\n // hsmlTag(hml as HTag, handler, ctx);\n // } else {\n // console.error(\"hsml parse error:\", hml);\n // // console.error(\"hsml parse error:\", JSON.stringify(hml, null, 4));\n // // throw Error(`hsml parse error: ${JSON.stringify(hml)}`);\n // }\n hsmlTag(hml as HTag, handler, ctx);\n break;\n case Function:\n handler.fnc(hml as HFnc, ctx);\n break;\n case String:\n handler.text(hml as string, ctx);\n break;\n case Boolean:\n handler.text(\"\" + hml, ctx);\n break;\n case Number:\n const n = hml as number;\n const ns = n.toLocaleString ? n.toLocaleString() : n.toString();\n handler.text(ns, ctx);\n break;\n case Date:\n const d = hml as Date;\n const ds = d.toLocaleString ? d.toLocaleString() : d.toString();\n handler.text(ds, ctx);\n break;\n default: // HObj\n handler.obj(hml as HObj, ctx);\n }\n\n function hsmlTag(hmlTag: HTag, handler: HHandler<C>, ctx?: C): void {\n // console.log(\"hsml tag\", hmlTag);\n\n if (typeof hmlTag[0] !== \"string\") {\n console.error(\"HSML tag head not string:\", hmlTag);\n return;\n }\n\n const head = hmlTag[0] as HHead;\n const attrsObj = hmlTag[1] as any;\n const hasAttrs = attrsObj && attrsObj.constructor === Object;\n const childIdx = hasAttrs ? 2 : 1;\n\n let children: HElements = [];\n let hFnc: HFnc | undefined;\n let hObj: HObj | undefined;\n\n const htc = hmlTag[childIdx];\n switch (htc && htc.constructor) {\n case Array:\n children = htc as HElements;\n break;\n case Function:\n hFnc = htc as HFnc;\n break;\n case String:\n case Boolean:\n case Number:\n case Date:\n children = [htc as string | boolean | number | Date];\n break;\n default: // HObj\n hObj = htc as HObj;\n break;\n }\n\n const refSplit = head.split(\"~\");\n const ref = refSplit[1];\n const dotSplit = refSplit[0].split(\".\");\n const hashSplit = dotSplit[0].split(\"#\");\n const tag = hashSplit[0] || \"div\";\n const id = hashSplit[1];\n const classes = dotSplit.slice(1);\n\n let attrs: HAttrs;\n if (hasAttrs) {\n attrs = attrsObj as HAttrs;\n } else {\n attrs = {} as HAttrs;\n }\n\n if (id) {\n (attrs as any)._id = id;\n }\n if (classes.length) {\n (attrs as any)._classes = classes;\n }\n if (ref) {\n (attrs as any)._ref = ref;\n }\n if (hObj) {\n (attrs as any)._hObj = hObj;\n }\n\n const skip = handler.open(tag, attrs, children, ctx);\n\n if (hFnc) {\n handler.fnc(hFnc, ctx);\n }\n\n if (!skip) {\n children.forEach(jml => hsml(jml, handler, ctx));\n }\n\n handler.close(tag, children, ctx);\n }\n}\n\nexport function hjoin(hsmls: HElements, sep: string | HElement): HElements {\n const r = hsmls.reduce<HElements>(\n (p, c) => (p.push(c, sep), p),\n [] as HElements\n );\n r.splice(-1);\n return r;\n}\n\n// Test\n\n// const hsmls: Hsmls = [\n// \"text\",\n// [\"tag\", [\n// \"d\",\n// [\"\"]\n// ]],\n// [\"taga\", { attr: \"attr\", classes: [\"class\"] }, [\n// \"text\",\n// 123,\n// true\n// ]]\n// ];\n\n// const hml: Hsml = [\"xxx\", {}, [\n// \"types\", \" \", 1235.456, \" \", new Date(), \" \",\n// ...hsmls,\n// [\"t\", [\"t\", \"a\", \"\"]],\n// [\"t\", {}, [\"t\", \"a\", \"\"]],\n// [\"t\"]\n// ]];\n\n// console.log(hsmls, hml);\n\n// const hml1: Hsml = [\"div\", null, [\n// [\"span\", null, [\n// [\"a\",\n// {\n// href: \"https://gitlab.com/peter-rybar/diasheet\",\n// title: \"GitLab\",\n// target: \"_blank\"\n// },\n// [[\"i.fa.fa-gitlab\"]]\n// ]\n// ]],\n// [\"span\"]\n// ]];\n// console.log(hml1);\n\n// const hml2: Hsml = [\"div\", [\n// [\"h2\", [\"title\"]],\n// [\"div.w3-card-12\", [\n// [\"header.w3-container w3-light-grey\", [\n// [\"h3\", [\"Account: \", \"User\"]]\n// ]],\n// [\"div.w3-container.w3-light-grey\", [\n// [\"p\", [\"Balance: 4 DCT\"]],\n// [\"br\"]\n// ]],\n// [\"h4\", [\"Your account spending\"]],\n// [\"div#piechart\"],\n// [\"h4\", [\"Your account balance\"]],\n// [\"div#linechart\"],\n// [\"button.w3-button.w3-block.w3-dark-grey\", [\"Refresh\"]]\n// ]],\n// [\"br\"]\n// ]];\n// console.log(hml2);\n\n// TEST\n\n// import { hsmls2htmls } from \"./hsml-html\";\n// import { HDispatch } from \"./hsml-app\";\n\n// const dispatch: HDispatch = (type: string, data?: any, event?: Event): void => {\n// console.log(\"action:\", type, data, event);\n// };\n\n// const data = { attr: \"action-data\" };\n\n// const hmls: HElements = [\n// [\"button\", { on: [\"click\", \"action\", data] }, \"send\"],\n// [\"h1\", \"aaa\"],\n// [\"input\",\n// {\n// type: \"text\",\n// on: [\n// [\"mouseover\", \"hover-action\", data],\n// [\"change\", \"click-action\", e => (e.target as HTMLInputElement).value],\n// [\"click\", e => dispatch(\"action\", data, e)],\n// ],\n// click: e => dispatch(\"action\", data, e)\n// }\n// ],\n// [\"button\",\n// {\n// on: [\"click\", e => dispatch(\"action\", data, e)],\n// click: e => dispatch(\"action\", data, e)\n// },\n// [\"Send\"]\n// ]\n// ];\n\n// console.log(hsmls2htmls(hmls, true).join(\"\"));\n","import {\n hsml,\n HElement,\n HElements,\n HHead,\n HAttrs,\n HAttrClasses,\n HAttrData,\n HAttrStyles,\n HAttrOn,\n HAttrOnCb,\n HAttrOnAct,\n HAttrOnAction,\n HAttrOnData,\n HFnc,\n HObj,\n HHandler,\n HHandlerCtx\n} from \"./hsml\";\n\nclass HsmlDomHandler implements HHandler<HHandlerCtx> {\n\n element?: HTMLElement;\n\n private _current?: HTMLElement;\n\n open(tag: HHead, attrs: HAttrs, children: HElements, ctx?: HHandlerCtx): boolean {\n const e = document.createElement(tag);\n let id = attrs._id;\n let classes: string[] = attrs._classes ? attrs._classes : [];\n let ref = attrs._ref;\n let hObj: any = attrs._hObj;\n for (const a in attrs) {\n if (attrs.hasOwnProperty(a)) {\n switch (a) {\n case \"_id\":\n case \"_classes\":\n case \"_ref\":\n case \"_key\":\n case \"_skip\":\n case \"_hObj\":\n break;\n case \"id\":\n id = attrs[a] as string;\n break;\n case \"classes\":\n const attrClasses = attrs[a] as HAttrClasses;\n classes = classes.concat(attrClasses\n ? attrClasses\n .map(c =>\n c.constructor === String\n ? c as string\n : (c[1] ? c[0] as string : undefined))\n .filter((c): c is string => c !== undefined)\n : [] as string[]);\n break;\n case \"class\":\n classes = classes.concat((attrs[a] as string).split(\" \"));\n break;\n case \"data\":\n const attrData = attrs[a] as HAttrData;\n for (const d in attrData) {\n if (attrData.hasOwnProperty(d)) {\n if (attrData[d].constructor === String) {\n e.dataset[d] = attrData[d] as string;\n } else {\n e.dataset[d] = JSON.stringify(attrData[d]);\n }\n }\n }\n break;\n case \"styles\":\n const attrStyles = attrs[a] as HAttrStyles;\n for (const d in attrStyles) {\n if (attrStyles.hasOwnProperty(d)) {\n (e.style as any)[d] = attrStyles[d];\n }\n }\n break;\n case \"on\":\n const attrOn = attrs[a] as HAttrOn;\n if (typeof attrOn[0] === \"string\") {\n if (typeof attrOn[1] === \"function\") {\n e.addEventListener(attrOn[0] as string, attrOn[1] as (e: Event) => void);\n } else {\n e.addEventListener(attrOn[0] as string, (e: Event) => {\n ctx && ctx.actionCb &&\n typeof ctx.actionCb === \"function\" &&\n ctx.actionCb(attrOn[1] as HAttrOnAction,\n attrOn[2] as HAttrOnData,\n e);\n });\n }\n } else {\n (attrOn as Array<HAttrOnCb | HAttrOnAct>)\n .forEach(attr => {\n if (typeof attrOn[1] === \"function\") {\n e.addEventListener(attrOn[0] as string, attrOn[1] as (e: Event) => void);\n } else {\n e.addEventListener(attrOn[0] as string, (e: Event) => {\n ctx && ctx.actionCb &&\n typeof ctx.actionCb === \"function\" &&\n ctx.actionCb(attrOn[1] as HAttrOnAction,\n attrOn[2] as HAttrOnData,\n e);\n });\n }\n });\n }\n break;\n default:\n if (typeof attrs[a] === \"function\") {\n e.addEventListener(a, attrs[a] as (e: Event) => void);\n } else if (typeof attrs[a] === \"boolean\") {\n attrs[a] && e.setAttribute(a, \"\");\n } else {\n e.setAttribute(a, attrs[a] as string);\n }\n }\n }\n }\n if (id) {\n e.setAttribute(\"id\", id);\n }\n if (classes.length) {\n e.classList.add(...classes);\n }\n if (this._current) {\n this._current.appendChild(e);\n this._current = e;\n } else {\n this.element = e;\n this._current = e;\n }\n if (ctx && ref) {\n ctx.refs[ref] = this._current;\n }\n if (hObj && hObj.mount && hObj.mount.constructor === Function) {\n hObj.mount(e);\n }\n return attrs._skip ? true : false;\n }\n\n close(tag: HHead, children: HElements, ctx?: HHandlerCtx): void {\n if (this._current !== this.element) {\n this._current && (this._current = this._current.parentElement || undefined);\n }\n }\n\n text(text: string, ctx?: HHandlerCtx): void {\n this._current && this._current.appendChild(document.createTextNode(text));\n }\n\n fnc(fnc: HFnc, ctx?: HHandlerCtx): void {\n this._current && fnc(this._current);\n }\n\n obj(obj: HObj, ctx?: HHandlerCtx): void {\n if (\"toHsml\" in obj) {\n obj.toHsml && hsml(obj.toHsml(), this, obj as HHandlerCtx);\n } else {\n this.text(\"\" + obj, ctx);\n }\n }\n\n}\n\nexport function hsml2dom(hml: HElement, ctx?: HHandlerCtx): HTMLElement | undefined {\n const handler = new HsmlDomHandler();\n hsml(hml, handler, ctx);\n return handler.element;\n}\n\nexport function hsmls2dom(hmls: HElements, ctx?: HHandlerCtx): Node[] {\n const elems: Node[] = [];\n for (const hml of hmls) {\n if (hml === undefined || hml === null) {\n continue;\n }\n if (hml.constructor === String) {\n elems.push(document.createTextNode(hml as string));\n } else if (\"toHsml\" in (hml as object)) {\n const obj = hml as HHandlerCtx;\n if (obj.toHsml) {\n elems.push(hsml2dom(obj.toHsml(), obj)!);\n }\n } else {\n elems.push(hsml2dom(hml, ctx)!);\n }\n }\n return elems;\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml.ts","webpack:///./src/hsml-dom.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hsml","hml","handler","ctx","constructor","Array","hmlTag","console","error","head","attrsObj","hasAttrs","hFnc","hObj","children","htc","Function","String","Boolean","Number","Date","refSplit","split","ref","dotSplit","hashSplit","tag","id","classes","slice","attrs","_id","length","_classes","_ref","_hObj","skip","open","fnc","forEach","jml","close","hsmlTag","text","toLocaleString","toString","ds","obj","hsmls","sep","reduce","push","splice","HsmlDomHandler","e","document","createElement","attrClasses","concat","map","undefined","filter","attrData","dataset","JSON","stringify","attrStyles","style","attrOn","addEventListener","actionCb","attr","setAttribute","classList","add","this","_current","appendChild","element","refs","mount","_skip","parentElement","createTextNode","toHsml","hsml2dom","hmls","elems"],"mappings":"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","file":"hsml-dom.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})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 13);\n","\nexport type HHead = keyof HTMLElementTagNameMap | string; // \"tag#id.class1.class2~handler\"\n\nexport type HAttrClasses = Array<string | [string, boolean]>;\n\nexport type HAttrStyles = { [key: string]: string };\n\nexport type HAttrData = {\n [key: string]:\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object;\n};\n\nexport type HAttrOnAction = string;\n\nexport type HAttrOnDataFnc = (e: Event) => any;\n\nexport type HAttrOnData =\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object\n | HAttrOnDataFnc\n | null;\n\nexport type HAttrOnCb = [keyof HTMLElementEventMap, EventListener];\n\nexport type HAttrOnAct = [\n keyof HTMLElementEventMap,\n HAttrOnAction,\n HAttrOnData?\n];\n\nexport type HAttrOn = HAttrOnCb | HAttrOnAct | Array<HAttrOnCb | HAttrOnAct>;\n\nexport interface HAttrs {\n readonly _id?: string;\n readonly _classes?: string[];\n readonly _ref?: string;\n readonly _key?: string;\n readonly _skip?: boolean;\n readonly _hObj?: HObj;\n readonly classes?: HAttrClasses;\n readonly styles?: HAttrStyles;\n readonly data?: HAttrData;\n readonly on?: HAttrOn;\n readonly [key: string]:\n | string\n | String\n | string[]\n | String[]\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | HAttrClasses\n | HAttrStyles\n // | HsmlAttrData\n | HAttrOn\n | EventListener\n | HObj\n | undefined;\n}\n\nexport type HFnc = (e: Element) => boolean | void;\n\nexport interface HObj {\n toHsml?(): HElement;\n}\n\nexport interface HElements extends Array<HElement> {}\n\nexport type HChildren =\n | HElements\n | HFnc\n | HObj\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport type HTagNoAttr = [HHead, HChildren?];\nexport type HTagAttr = [HHead, HAttrs, HChildren?];\n\nexport type HTag = HTagNoAttr | HTagAttr;\n\nexport type HElement =\n | HFnc\n | HObj\n | HTag\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport interface HHandlerCtx extends HObj {\n refs: { [name: string]: Element };\n actionCb(action: HAttrOnAction, data: HAttrOnData, e: Event): void;\n}\n\nexport interface HHandler<C extends HHandlerCtx> {\n open(tag: HHead, attrs: HAttrs, children: HElements, ctx?: C): boolean;\n close(tag: HHead, children: HElements, ctx?: C): void;\n text(text: string, ctx?: C): void;\n fnc(fnc: HFnc, ctx?: C): void;\n obj(obj: HObj, ctx?: C): void;\n}\n\nexport function hsml<C extends HHandlerCtx>(hml: HElement,\n handler: HHandler<C>,\n ctx?: C): void {\n // console.log(\"hsml\", hsml);\n if (hml === undefined || hml === null) {\n return;\n }\n switch (hml.constructor) {\n case Array:\n // const tag = hml as HTag;\n // if (\n // (\n // tag.length === 1 &&\n // tag[0].constructor === String\n // ) ||\n // (\n // tag.length === 2 &&\n // (\n // tag[0].constructor === String &&\n // (tag[1]!.constructor === Array || tag[1]!.constructor === Function)\n // ) ||\n // (\n // tag[0].constructor === String &&\n // tag[1]!.constructor === Object\n // )\n // ) ||\n // (\n // tag.length === 3 &&\n // tag[0].constructor === String &&\n // tag[1].constructor === Object &&\n // tag[2]!.constructor === Array\n // )\n // ) {\n // hsmlTag(hml as HTag, handler, ctx);\n // } else {\n // console.error(\"hsml parse error:\", hml);\n // // console.error(\"hsml parse error:\", JSON.stringify(hml, null, 4));\n // // throw Error(`hsml parse error: ${JSON.stringify(hml)}`);\n // }\n hsmlTag(hml as HTag, handler, ctx);\n break;\n case Function:\n handler.fnc(hml as HFnc, ctx);\n break;\n case String:\n handler.text(hml as string, ctx);\n break;\n case Boolean:\n handler.text(\"\" + hml, ctx);\n break;\n case Number:\n const n = hml as number;\n const ns = n.toLocaleString ? n.toLocaleString() : n.toString();\n handler.text(ns, ctx);\n break;\n case Date:\n const d = hml as Date;\n const ds = d.toLocaleString ? d.toLocaleString() : d.toString();\n handler.text(ds, ctx);\n break;\n default: // HObj\n handler.obj(hml as HObj, ctx);\n }\n\n function hsmlTag(hmlTag: HTag, handler: HHandler<C>, ctx?: C): void {\n // console.log(\"hsml tag\", hmlTag);\n\n if (typeof hmlTag[0] !== \"string\") {\n console.error(\"HSML tag head not string:\", hmlTag);\n return;\n }\n\n const head = hmlTag[0] as HHead;\n const attrsObj = hmlTag[1] as any;\n const hasAttrs = attrsObj && attrsObj.constructor === Object;\n const childIdx = hasAttrs ? 2 : 1;\n\n let children: HElements = [];\n let hFnc: HFnc | undefined;\n let hObj: HObj | undefined;\n\n const htc = hmlTag[childIdx];\n switch (htc && htc.constructor) {\n case Array:\n children = htc as HElements;\n break;\n case Function:\n hFnc = htc as HFnc;\n break;\n case String:\n case Boolean:\n case Number:\n case Date:\n children = [htc as string | boolean | number | Date];\n break;\n default: // HObj\n hObj = htc as HObj;\n break;\n }\n\n const refSplit = head.split(\"~\");\n const ref = refSplit[1];\n const dotSplit = refSplit[0].split(\".\");\n const hashSplit = dotSplit[0].split(\"#\");\n const tag = hashSplit[0] || \"div\";\n const id = hashSplit[1];\n const classes = dotSplit.slice(1);\n\n let attrs: HAttrs;\n if (hasAttrs) {\n attrs = attrsObj as HAttrs;\n } else {\n attrs = {} as HAttrs;\n }\n\n if (id) {\n (attrs as any)._id = id;\n }\n if (classes.length) {\n (attrs as any)._classes = classes;\n }\n if (ref) {\n (attrs as any)._ref = ref;\n }\n if (hObj) {\n (attrs as any)._hObj = hObj;\n }\n\n const skip = handler.open(tag, attrs, children, ctx);\n\n if (hFnc) {\n handler.fnc(hFnc, ctx);\n }\n\n if (!skip) {\n children.forEach(jml => hsml(jml, handler, ctx));\n }\n\n handler.close(tag, children, ctx);\n }\n}\n\nexport function hjoin(hsmls: HElements, sep: string | HElement): HElements {\n const r = hsmls.reduce<HElements>(\n (p, c) => (p.push(c, sep), p),\n [] as HElements\n );\n r.splice(-1);\n return r;\n}\n\n// Test\n\n// const hsmls: Hsmls = [\n// \"text\",\n// [\"tag\", [\n// \"d\",\n// [\"\"]\n// ]],\n// [\"taga\", { attr: \"attr\", classes: [\"class\"] }, [\n// \"text\",\n// 123,\n// true\n// ]]\n// ];\n\n// const hml: Hsml = [\"xxx\", {}, [\n// \"types\", \" \", 1235.456, \" \", new Date(), \" \",\n// ...hsmls,\n// [\"t\", [\"t\", \"a\", \"\"]],\n// [\"t\", {}, [\"t\", \"a\", \"\"]],\n// [\"t\"]\n// ]];\n\n// console.log(hsmls, hml);\n\n// const hml1: Hsml = [\"div\", null, [\n// [\"span\", null, [\n// [\"a\",\n// {\n// href: \"https://gitlab.com/peter-rybar/diasheet\",\n// title: \"GitLab\",\n// target: \"_blank\"\n// },\n// [[\"i.fa.fa-gitlab\"]]\n// ]\n// ]],\n// [\"span\"]\n// ]];\n// console.log(hml1);\n\n// const hml2: Hsml = [\"div\", [\n// [\"h2\", [\"title\"]],\n// [\"div.w3-card-12\", [\n// [\"header.w3-container w3-light-grey\", [\n// [\"h3\", [\"Account: \", \"User\"]]\n// ]],\n// [\"div.w3-container.w3-light-grey\", [\n// [\"p\", [\"Balance: 4 DCT\"]],\n// [\"br\"]\n// ]],\n// [\"h4\", [\"Your account spending\"]],\n// [\"div#piechart\"],\n// [\"h4\", [\"Your account balance\"]],\n// [\"div#linechart\"],\n// [\"button.w3-button.w3-block.w3-dark-grey\", [\"Refresh\"]]\n// ]],\n// [\"br\"]\n// ]];\n// console.log(hml2);\n\n// TEST\n\n// import { hsmls2htmls } from \"./hsml-html\";\n// import { HDispatch } from \"./hsml-app\";\n\n// const dispatch: HDispatch = (type: string, data?: any, event?: Event): void => {\n// console.log(\"action:\", type, data, event);\n// };\n\n// const data = { attr: \"action-data\" };\n\n// const hmls: HElements = [\n// [\"button\", { on: [\"click\", \"action\", data] }, \"send\"],\n// [\"h1\", \"aaa\"],\n// [\"input\",\n// {\n// type: \"text\",\n// on: [\n// [\"mouseover\", \"hover-action\", data],\n// [\"change\", \"click-action\", e => (e.target as HTMLInputElement).value],\n// [\"click\", e => dispatch(\"action\", data, e)],\n// ],\n// click: e => dispatch(\"action\", data, e)\n// }\n// ],\n// [\"button\",\n// {\n// on: [\"click\", e => dispatch(\"action\", data, e)],\n// click: e => dispatch(\"action\", data, e)\n// },\n// [\"Send\"]\n// ]\n// ];\n\n// console.log(hsmls2htmls(hmls, true).join(\"\"));\n","import {\n hsml,\n HElement,\n HElements,\n HHead,\n HAttrs,\n HAttrClasses,\n HAttrData,\n HAttrStyles,\n HAttrOn,\n HAttrOnCb,\n HAttrOnAct,\n HAttrOnAction,\n HAttrOnData,\n HFnc,\n HObj,\n HHandler,\n HHandlerCtx\n} from \"./hsml\";\n\nclass HsmlDomHandler implements HHandler<HHandlerCtx> {\n\n element?: HTMLElement;\n\n private _current?: HTMLElement;\n\n open(tag: HHead, attrs: HAttrs, children: HElements, ctx?: HHandlerCtx): boolean {\n const e = document.createElement(tag);\n let id = attrs._id;\n let classes: string[] = attrs._classes ? attrs._classes : [];\n let ref = attrs._ref;\n let hObj: any = attrs._hObj;\n for (const a in attrs) {\n if (attrs.hasOwnProperty(a)) {\n switch (a) {\n case \"_id\":\n case \"_classes\":\n case \"_ref\":\n case \"_key\":\n case \"_skip\":\n case \"_hObj\":\n break;\n case \"id\":\n id = attrs[a] as string;\n break;\n case \"classes\":\n const attrClasses = attrs[a] as HAttrClasses;\n classes = classes.concat(attrClasses\n ? attrClasses\n .map(c =>\n c.constructor === String\n ? c as string\n : (c[1] ? c[0] as string : undefined))\n .filter((c): c is string => c !== undefined)\n : [] as string[]);\n break;\n case \"class\":\n classes = classes.concat((attrs[a] as string).split(\" \"));\n break;\n case \"data\":\n const attrData = attrs[a] as HAttrData;\n for (const d in attrData) {\n if (attrData.hasOwnProperty(d)) {\n if (attrData[d].constructor === String) {\n e.dataset[d] = attrData[d] as string;\n } else {\n e.dataset[d] = JSON.stringify(attrData[d]);\n }\n }\n }\n break;\n case \"styles\":\n const attrStyles = attrs[a] as HAttrStyles;\n for (const d in attrStyles) {\n if (attrStyles.hasOwnProperty(d)) {\n (e.style as any)[d] = attrStyles[d];\n }\n }\n break;\n case \"on\":\n const attrOn = attrs[a] as HAttrOn;\n if (typeof attrOn[0] === \"string\") {\n if (typeof attrOn[1] === \"function\") {\n e.addEventListener(attrOn[0] as string, attrOn[1] as (e: Event) => void);\n } else {\n e.addEventListener(attrOn[0] as string, (e: Event) => {\n ctx && ctx.actionCb &&\n typeof ctx.actionCb === \"function\" &&\n ctx.actionCb(attrOn[1] as HAttrOnAction,\n attrOn[2] as HAttrOnData,\n e);\n });\n }\n } else {\n (attrOn as Array<HAttrOnCb | HAttrOnAct>)\n .forEach(attr => {\n if (typeof attrOn[1] === \"function\") {\n e.addEventListener(attrOn[0] as string, attrOn[1] as (e: Event) => void);\n } else {\n e.addEventListener(attrOn[0] as string, (e: Event) => {\n ctx && ctx.actionCb &&\n typeof ctx.actionCb === \"function\" &&\n ctx.actionCb(attrOn[1] as HAttrOnAction,\n attrOn[2] as HAttrOnData,\n e);\n });\n }\n });\n }\n break;\n default:\n if (typeof attrs[a] === \"function\") {\n e.addEventListener(a, attrs[a] as (e: Event) => void);\n } else if (typeof attrs[a] === \"boolean\") {\n attrs[a] && e.setAttribute(a, \"\");\n } else {\n e.setAttribute(a, attrs[a] as string);\n }\n }\n }\n }\n if (id) {\n e.setAttribute(\"id\", id);\n }\n if (classes.length) {\n e.classList.add(...classes);\n }\n if (this._current) {\n this._current.appendChild(e);\n this._current = e;\n } else {\n this.element = e;\n this._current = e;\n }\n if (ctx && ref) {\n ctx.refs[ref] = this._current;\n }\n if (hObj && hObj.mount && hObj.mount.constructor === Function) {\n hObj.mount(e);\n }\n return attrs._skip ? true : false;\n }\n\n close(tag: HHead, children: HElements, ctx?: HHandlerCtx): void {\n if (this._current !== this.element) {\n this._current && (this._current = this._current.parentElement || undefined);\n }\n }\n\n text(text: string, ctx?: HHandlerCtx): void {\n this._current && this._current.appendChild(document.createTextNode(text));\n }\n\n fnc(fnc: HFnc, ctx?: HHandlerCtx): void {\n this._current && fnc(this._current);\n }\n\n obj(obj: HObj, ctx?: HHandlerCtx): void {\n if (\"toHsml\" in obj) {\n obj.toHsml && hsml(obj.toHsml(), this, obj as HHandlerCtx);\n } else {\n this.text(\"\" + obj, ctx);\n }\n }\n\n}\n\nexport function hsml2dom(hml: HElement, ctx?: HHandlerCtx): HTMLElement | undefined {\n const handler = new HsmlDomHandler();\n hsml(hml, handler, ctx);\n return handler.element;\n}\n\nexport function hsmls2dom(hmls: HElements, ctx?: HHandlerCtx): Node[] {\n const elems: Node[] = [];\n for (const hml of hmls) {\n if (hml === undefined || hml === null) {\n continue;\n }\n if (hml.constructor === String) {\n elems.push(document.createTextNode(hml as string));\n } else if (\"toHsml\" in (hml as object)) {\n const obj = hml as HHandlerCtx;\n if (obj.toHsml) {\n elems.push(hsml2dom(obj.toHsml(), obj)!);\n }\n } else {\n elems.push(hsml2dom(hml, ctx)!);\n }\n }\n return elems;\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=14)}({14:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.h=function(e,t,r){const n=[e];return t&&("string"==typeof t||"number"==typeof t?n.push([t]):(Array.isArray(t),n.push(t))),r&&("string"==typeof r||"number"==typeof r?n.push([r]):(Array.isArray(r)||"function"==typeof r)&&n.push(r)),n}}})}));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=14)}({14:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.h=void 0,t.h=function(e,t,r){const n=[e];return t&&("string"==typeof t||"number"==typeof t?n.push([t]):(Array.isArray(t),n.push(t))),r&&("string"==typeof r||"number"==typeof r?n.push([r]):(Array.isArray(r)||"function"==typeof r)&&n.push(r)),n}}})}));
2
2
  //# sourceMappingURL=hsml-h.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml-h.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","tag","second","third","result","push","Array","isArray"],"mappings":"CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,QAAQ,WACX,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUT,QAGnC,IAAIC,EAASM,EAAiBE,GAAY,CACzCJ,EAAGI,EACHC,GAAG,EACHV,QAAS,IAUV,OANAW,EAAQF,GAAUG,KAAKX,EAAOD,QAASC,EAAQA,EAAOD,QAASQ,GAG/DP,EAAOS,GAAI,EAGJT,EAAOD,QA0Df,OArDAQ,EAAoBK,EAAIF,EAGxBH,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,SAASf,EAASgB,EAAMC,GAC3CT,EAAoBU,EAAElB,EAASgB,IAClCG,OAAOC,eAAepB,EAASgB,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhET,EAAoBe,EAAI,SAASvB,GACX,oBAAXwB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAepB,EAASwB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAepB,EAAS,aAAc,CAAE0B,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBO,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAASjC,GAChC,IAAIgB,EAAShB,GAAUA,EAAO4B,WAC7B,WAAwB,OAAO5B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAO,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRT,EAAoBU,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG5B,EAAoB+B,EAAI,GAIjB/B,EAAoBA,EAAoBgC,EAAI,I,mFCxErD,aAAkBC,EAAYC,EAA6BC,GACvD,MAAMC,EAA6B,CAACH,GAkBpC,OAjBIC,IACsB,iBAAXA,GAAyC,iBAAXA,EACrCE,EAAOC,KAAK,CAACH,KACNI,MAAMC,QAAQL,GACrBE,EAAOC,KAAKH,KAMhBC,IACqB,iBAAVA,GAAuC,iBAAVA,EACpCC,EAAOC,KAAK,CAACF,KACNG,MAAMC,QAAQJ,IAA2B,mBAAVA,IACtCC,EAAOC,KAAKF,IAGbC","file":"hsml-h.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})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","import { HElement, HAttrs, HHead, HFnc, HChildren } from \"./hsml\";\n\nexport function h(tag: HHead): HElement;\nexport function h(tag: HHead, text: string | number): HElement;\nexport function h(tag: HHead, children: HChildren): HElement;\nexport function h(tag: HHead, fnc: HFnc): HElement;\nexport function h(tag: HHead, attrs: HAttrs): HElement;\nexport function h(tag: HHead, attrs: HAttrs, text: string | number): HElement;\nexport function h(tag: HHead, attrs: HAttrs, children: HElement[]): HElement;\nexport function h(tag: HHead, attrs: HAttrs, fnc: HFnc): HElement;\nexport function h(tag: HHead, second?: HAttrs | HChildren, third?: HAttrs | HChildren): HElement {\n const result: [string, ...any[]] = [tag];\n if (second) {\n if (typeof second === \"string\" || typeof second === \"number\") {\n result.push([second]);\n } else if (Array.isArray(second) || typeof second === \"function\") {\n result.push(second);\n } else {\n // element has attributes\n result.push(second);\n }\n }\n if (third) {\n if (typeof third === \"string\" || typeof third === \"number\") {\n result.push([third]);\n } else if (Array.isArray(third) || typeof third === \"function\") {\n result.push(third);\n }\n }\n return result as HElement;\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml-h.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","tag","second","third","result","push","Array","isArray"],"mappings":"CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,IAPxE,CASGC,QAAQ,WACX,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUT,QAGnC,IAAIC,EAASM,EAAiBE,GAAY,CACzCJ,EAAGI,EACHC,GAAG,EACHV,QAAS,IAUV,OANAW,EAAQF,GAAUG,KAAKX,EAAOD,QAASC,EAAQA,EAAOD,QAASQ,GAG/DP,EAAOS,GAAI,EAGJT,EAAOD,QA0Df,OArDAQ,EAAoBK,EAAIF,EAGxBH,EAAoBM,EAAIP,EAGxBC,EAAoBO,EAAI,SAASf,EAASgB,EAAMC,GAC3CT,EAAoBU,EAAElB,EAASgB,IAClCG,OAAOC,eAAepB,EAASgB,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhET,EAAoBe,EAAI,SAASvB,GACX,oBAAXwB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAepB,EAASwB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAepB,EAAS,aAAc,CAAE0B,OAAO,KAQvDlB,EAAoBmB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQlB,EAAoBkB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAvB,EAAoBe,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOlB,EAAoBO,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRtB,EAAoB0B,EAAI,SAASjC,GAChC,IAAIgB,EAAShB,GAAUA,EAAO4B,WAC7B,WAAwB,OAAO5B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAO,EAAoBO,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRT,EAAoBU,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG5B,EAAoB+B,EAAI,GAIjB/B,EAAoBA,EAAoBgC,EAAI,I,8FCxErD,aAAkBC,EAAYC,EAA6BC,GACvD,MAAMC,EAA6B,CAACH,GAkBpC,OAjBIC,IACsB,iBAAXA,GAAyC,iBAAXA,EACrCE,EAAOC,KAAK,CAACH,KACNI,MAAMC,QAAQL,GACrBE,EAAOC,KAAKH,KAMhBC,IACqB,iBAAVA,GAAuC,iBAAVA,EACpCC,EAAOC,KAAK,CAACF,KACNG,MAAMC,QAAQJ,IAA2B,mBAAVA,IACtCC,EAAOC,KAAKF,IAGbC","file":"hsml-h.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})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","import { HElement, HAttrs, HHead, HFnc, HChildren } from \"./hsml\";\n\nexport function h(tag: HHead): HElement;\nexport function h(tag: HHead, text: string | number): HElement;\nexport function h(tag: HHead, children: HChildren): HElement;\nexport function h(tag: HHead, fnc: HFnc): HElement;\nexport function h(tag: HHead, attrs: HAttrs): HElement;\nexport function h(tag: HHead, attrs: HAttrs, text: string | number): HElement;\nexport function h(tag: HHead, attrs: HAttrs, children: HElement[]): HElement;\nexport function h(tag: HHead, attrs: HAttrs, fnc: HFnc): HElement;\nexport function h(tag: HHead, second?: HAttrs | HChildren, third?: HAttrs | HChildren): HElement {\n const result: [string, ...any[]] = [tag];\n if (second) {\n if (typeof second === \"string\" || typeof second === \"number\") {\n result.push([second]);\n } else if (Array.isArray(second) || typeof second === \"function\") {\n result.push(second);\n } else {\n // element has attributes\n result.push(second);\n }\n }\n if (third) {\n if (typeof third === \"string\" || typeof third === \"number\") {\n result.push([third]);\n } else if (Array.isArray(third) || typeof third === \"function\") {\n result.push(third);\n }\n }\n return result as HElement;\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var s in n)("object"==typeof exports?exports:t)[s]=n[s]}}(window,(function(){return function(t){var e={};function n(s){if(e[s])return e[s].exports;var o=e[s]={i:s,l:!1,exports:{}};return t[s].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,s){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:s})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(s,o,function(e){return t[e]}.bind(null,o));return s},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=5)}({0:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hsml=function t(e,n,s){if(null!=e)switch(e.constructor){case Array:!function(e,n,s){if("string"!=typeof e[0])return void console.error("HSML tag head not string:",e);const o=e[0],r=e[1],i=r&&r.constructor===Object;let c,a,l=[];const u=e[i?2:1];switch(u&&u.constructor){case Array:l=u;break;case Function:c=u;break;case String:case Boolean:case Number:case Date:l=[u];break;default:a=u}const f=o.split("~"),h=f[1],p=f[0].split("."),d=p[0].split("#"),b=d[0]||"div",_=d[1],m=p.slice(1);let y;y=i?r:{};_&&(y._id=_);m.length&&(y._classes=m);h&&(y._ref=h);a&&(y._hObj=a);const g=n.open(b,y,l,s);c&&n.fnc(c,s);g||l.forEach(e=>t(e,n,s));n.close(b,l,s)}(e,n,s);break;case Function:n.fnc(e,s);break;case String:n.text(e,s);break;case Boolean:n.text(""+e,s);break;case Number:const o=e,r=o.toLocaleString?o.toLocaleString():o.toString();n.text(r,s);break;case Date:const i=e,c=i.toLocaleString?i.toLocaleString():i.toString();n.text(c,s);break;default:n.obj(e,s)}},e.hjoin=function(t,e){const n=t.reduce((t,n)=>(t.push(n,e),t),[]);return n.splice(-1),n}},5:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=n(0);class o{constructor(t,e=!1,n=" "){this._depth=0,this._onHtml=t,this._pretty=e,this._indent=n}open(t,e,n,r){const i=[];let c=e._id,l=e._classes?e._classes:[],u=e._hObj;for(const t in e)if(e.hasOwnProperty(t))switch(t){case"_id":case"_classes":case"_ref":case"_key":case"_skip":case"_hObj":break;case"id":c=e[t];break;case"classes":const n=e[t];l=l.concat(n?n.map(t=>t.constructor===String?t:t[1]?t[0]:void 0).filter(t=>void 0!==t):[]);break;case"class":l=l.concat(e[t].split(" "));break;case"data":const s=e[t];for(const t in s)s.hasOwnProperty(t)&&(s[t].constructor===String?i.push(["data-"+t,s[t]]):i.push(["data-"+t,JSON.stringify(s[t])]));break;case"styles":const o=e[t];let r="";for(const t in o)if(o.hasOwnProperty(t)){r+=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()+":"+o[t]+";"}i.push(["style",r]);break;case"styles":case"on":break;default:"function"==typeof e[t]||("boolean"==typeof e[t]?e[t]&&i.push([t,""]):i.push([t,e[t]]))}l.length&&i.unshift(["class",l.join(" ")]),c&&i.unshift(["id",c]),u&&"type"in u&&i.unshift(["hObj",u.type]);const f=i.map(t=>`${t[0]}="${a(t[1])}"`).join(" ");let h="";if(this._pretty&&(h+=this._mkIndent(this._depth),this._depth++),h+="<"+t+(f?" "+f:"")+(n.length||-1!==o._pairTags.indexOf(t)?">":"/>"),this._pretty&&(h+="\n"),this._onHtml(h),u&&"render"in u&&u.render.constructor===Function){const t=u.render();for(const e of t)if(null!=e)if(e.constructor===String)this._onHtml(e+(this._pretty?"\n":""));else if("toHsml"in e){const t=e;t.toHsml&&s.hsml(t.toHsml(),this)}else s.hsml(e,this)}return!1}close(t,e,n){let s="";const r=e.length||-1!==o._pairTags.indexOf(t);this._pretty&&(this._depth--,r&&(s+=this._mkIndent(this._depth))),r&&(s+="</"+t+">",this._pretty&&(s+="\n"),this._onHtml(s))}text(t,e){let n="";this._pretty&&(n+=this._mkIndent(this._depth)),n+=t instanceof String?t:a(t),this._pretty&&(n+="\n"),this._onHtml(n)}fnc(t,e){}obj(t,e){"toHsml"in t?t.toHsml&&s.hsml(t.toHsml(),this,t):this.text(""+t,e)}_mkIndent(t){let e="";for(let n=0;n<t;n++)e+=this._indent;return e}}function r(t,e,n=!1){const r=new o(e,n);s.hsml(t,r)}function i(t,e,n=!1){for(const s of t)if(null!=s)if(s.constructor===String)e(s+(n?"\n":""));else if("toHsml"in s){const t=s;t.toHsml&&r(t.toHsml(),e,n)}else r(s,e,n)}o._pairTags=["script","iframe","html","head","body","title","div","h1","h2","h3","h4","h5","h6","p","a","pre","blockquote","i","b","em","strong","tt","cite","ol","ul","li","dl","dt","dd","table","tr","td","textarea","select","option"],e.hsml2html=r,e.hsmls2html=i,e.hsml2htmls=function(t,e=!1){const n=[];return r(t,t=>n.push(t),e),n},e.hsmls2htmls=function(t,e=!1){const n=[];return i(t,t=>n.push(t),e),n};const c=/["'&<>]/;function a(t){const e=""+t,n=c.exec(e);if(!n)return e;let s,o="",r=0,i=0;for(r=n.index;r<e.length;r++){switch(e.charCodeAt(r)){case 34:s="&quot;";break;case 38:s="&amp;";break;case 39:s="&#39;";break;case 60:s="&lt;";break;case 62:s="&gt;";break;default:continue}i!==r&&(o+=e.substring(i,r)),i=r+1,o+=s}return i!==r?o+e.substring(i,r):o}}})}));
1
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var s in n)("object"==typeof exports?exports:t)[s]=n[s]}}(window,(function(){return function(t){var e={};function n(s){if(e[s])return e[s].exports;var o=e[s]={i:s,l:!1,exports:{}};return t[s].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,s){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:s})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(s,o,function(e){return t[e]}.bind(null,o));return s},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=5)}({0:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hjoin=e.hsml=void 0,e.hsml=function t(e,n,s){if(null!=e)switch(e.constructor){case Array:!function(e,n,s){if("string"!=typeof e[0])return void console.error("HSML tag head not string:",e);const o=e[0],r=e[1],i=r&&r.constructor===Object;let c,l,a=[];const u=e[i?2:1];switch(u&&u.constructor){case Array:a=u;break;case Function:c=u;break;case String:case Boolean:case Number:case Date:a=[u];break;default:l=u}const h=o.split("~"),f=h[1],p=h[0].split("."),d=p[0].split("#"),m=d[0]||"div",b=d[1],_=p.slice(1);let y;y=i?r:{};b&&(y._id=b);_.length&&(y._classes=_);f&&(y._ref=f);l&&(y._hObj=l);const g=n.open(m,y,a,s);c&&n.fnc(c,s);g||a.forEach(e=>t(e,n,s));n.close(m,a,s)}(e,n,s);break;case Function:n.fnc(e,s);break;case String:n.text(e,s);break;case Boolean:n.text(""+e,s);break;case Number:const o=e,r=o.toLocaleString?o.toLocaleString():o.toString();n.text(r,s);break;case Date:const i=e,c=i.toLocaleString?i.toLocaleString():i.toString();n.text(c,s);break;default:n.obj(e,s)}},e.hjoin=function(t,e){const n=t.reduce((t,n)=>(t.push(n,e),t),[]);return n.splice(-1),n}},5:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hsmls2htmls=e.hsml2htmls=e.hsmls2html=e.hsml2html=void 0;const s=n(0);class o{constructor(t,e=!1,n=" "){this._depth=0,this._onHtml=t,this._pretty=e,this._indent=n}open(t,e,n,r){const i=[];let c=e._id,a=e._classes?e._classes:[],u=e._hObj;for(const t in e)if(e.hasOwnProperty(t))switch(t){case"_id":case"_classes":case"_ref":case"_key":case"_skip":case"_hObj":break;case"id":c=e[t];break;case"classes":const n=e[t];a=a.concat(n?n.map(t=>t.constructor===String?t:t[1]?t[0]:void 0).filter(t=>void 0!==t):[]);break;case"class":a=a.concat(e[t].split(" "));break;case"data":const s=e[t];for(const t in s)s.hasOwnProperty(t)&&(s[t].constructor===String?i.push(["data-"+t,s[t]]):i.push(["data-"+t,JSON.stringify(s[t])]));break;case"styles":const o=e[t];let r="";for(const t in o)if(o.hasOwnProperty(t)){r+=t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()+":"+o[t]+";"}i.push(["style",r]);break;case"styles":case"on":break;default:"function"==typeof e[t]||("boolean"==typeof e[t]?e[t]&&i.push([t,""]):i.push([t,e[t]]))}a.length&&i.unshift(["class",a.join(" ")]),c&&i.unshift(["id",c]),u&&"type"in u&&i.unshift(["hObj",u.type]);const h=i.map(t=>`${t[0]}="${l(t[1])}"`).join(" ");let f="";this._pretty&&(f+=this._mkIndent(this._depth),this._depth++);if(f+="<"+t+(h?" "+h:"")+(n.length||-1!==o._pairTags.indexOf(t)?">":"/>"),this._pretty&&(f+="\n"),this._onHtml(f),u&&"render"in u&&u.render.constructor===Function){const t=u.render();for(const e of t)if(null!=e)if(e.constructor===String)this._onHtml(e+(this._pretty?"\n":""));else if("toHsml"in e){const t=e;t.toHsml&&s.hsml(t.toHsml(),this)}else s.hsml(e,this)}return!1}close(t,e,n){let s="";const r=e.length||-1!==o._pairTags.indexOf(t);this._pretty&&(this._depth--,r&&(s+=this._mkIndent(this._depth))),r&&(s+="</"+t+">",this._pretty&&(s+="\n"),this._onHtml(s))}text(t,e){let n="";this._pretty&&(n+=this._mkIndent(this._depth)),n+=t instanceof String?t:l(t),this._pretty&&(n+="\n"),this._onHtml(n)}fnc(t,e){}obj(t,e){"toHsml"in t?t.toHsml&&s.hsml(t.toHsml(),this,t):this.text(""+t,e)}_mkIndent(t){let e="";for(let n=0;n<t;n++)e+=this._indent;return e}}function r(t,e,n=!1){const r=new o(e,n);s.hsml(t,r)}function i(t,e,n=!1){for(const s of t)if(null!=s)if(s.constructor===String)e(s+(n?"\n":""));else if("toHsml"in s){const t=s;t.toHsml&&r(t.toHsml(),e,n)}else r(s,e,n)}o._pairTags=["script","iframe","html","head","body","title","div","h1","h2","h3","h4","h5","h6","p","a","pre","blockquote","i","b","em","strong","tt","cite","ol","ul","li","dl","dt","dd","table","tr","td","textarea","select","option"],e.hsml2html=r,e.hsmls2html=i,e.hsml2htmls=function(t,e=!1){const n=[];return r(t,t=>n.push(t),e),n},e.hsmls2htmls=function(t,e=!1){const n=[];return i(t,t=>n.push(t),e),n};const c=/["'&<>]/;function l(t){const e=""+t,n=c.exec(e);if(!n)return e;let s,o="",r=0,i=0;for(r=n.index;r<e.length;r++){switch(e.charCodeAt(r)){case 34:s="&quot;";break;case 38:s="&amp;";break;case 39:s="&#39;";break;case 60:s="&lt;";break;case 62:s="&gt;";break;default:continue}i!==r&&(o+=e.substring(i,r)),i=r+1,o+=s}return i!==r?o+e.substring(i,r):o}}})}));
2
2
  //# sourceMappingURL=hsml-html.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml.ts","webpack:///./src/hsml-html.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hsml","hml","handler","ctx","constructor","Array","hmlTag","console","error","head","attrsObj","hasAttrs","hFnc","hObj","children","htc","Function","String","Boolean","Number","Date","refSplit","split","ref","dotSplit","hashSplit","tag","id","classes","slice","attrs","_id","length","_classes","_ref","_hObj","skip","open","fnc","forEach","jml","close","hsmlTag","text","toLocaleString","toString","ds","obj","hsmls","sep","reduce","push","splice","HsmlHtmlHandler","onHtml","pretty","indent","_depth","this","_onHtml","_pretty","_indent","props","attrClasses","concat","map","undefined","filter","attrData","JSON","stringify","attrStyles","style","replace","toLowerCase","unshift","join","type","args","escapeHtml","html","_mkIndent","_pairTags","indexOf","render","toHsml","pairTag","count","hsml2html","hsmlEl","hsmls2html","htmls","escapeHtmlRegExp","str","exec","esc","escHtml","idx","lastIdx","index","charCodeAt","substring"],"mappings":"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","file":"hsml-html.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})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","\nexport type HHead = keyof HTMLElementTagNameMap | string; // \"tag#id.class1.class2~handler\"\n\nexport type HAttrClasses = Array<string | [string, boolean]>;\n\nexport type HAttrStyles = { [key: string]: string };\n\nexport type HAttrData = {\n [key: string]:\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object;\n};\n\nexport type HAttrOnAction = string;\n\nexport type HAttrOnDataFnc = (e: Event) => any;\n\nexport type HAttrOnData =\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object\n | HAttrOnDataFnc\n | null;\n\nexport type HAttrOnCb = [keyof HTMLElementEventMap, EventListener];\n\nexport type HAttrOnAct = [\n keyof HTMLElementEventMap,\n HAttrOnAction,\n HAttrOnData?\n];\n\nexport type HAttrOn = HAttrOnCb | HAttrOnAct | Array<HAttrOnCb | HAttrOnAct>;\n\nexport interface HAttrs {\n readonly _id?: string;\n readonly _classes?: string[];\n readonly _ref?: string;\n readonly _key?: string;\n readonly _skip?: boolean;\n readonly _hObj?: HObj;\n readonly classes?: HAttrClasses;\n readonly styles?: HAttrStyles;\n readonly data?: HAttrData;\n readonly on?: HAttrOn;\n readonly [key: string]:\n | string\n | String\n | string[]\n | String[]\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | HAttrClasses\n | HAttrStyles\n // | HsmlAttrData\n | HAttrOn\n | EventListener\n | HObj\n | undefined;\n}\n\nexport type HFnc = (e: Element) => boolean | void;\n\nexport interface HObj {\n toHsml?(): HElement;\n}\n\nexport interface HElements extends Array<HElement> {}\n\nexport type HChildren =\n | HElements\n | HFnc\n | HObj\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport type HTagNoAttr = [HHead, HChildren?];\nexport type HTagAttr = [HHead, HAttrs, HChildren?];\n\nexport type HTag = HTagNoAttr | HTagAttr;\n\nexport type HElement =\n | HFnc\n | HObj\n | HTag\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport interface HHandlerCtx extends HObj {\n refs: { [name: string]: Element };\n actionCb(action: HAttrOnAction, data: HAttrOnData, e: Event): void;\n}\n\nexport interface HHandler<C extends HHandlerCtx> {\n open(tag: HHead, attrs: HAttrs, children: HElements, ctx?: C): boolean;\n close(tag: HHead, children: HElements, ctx?: C): void;\n text(text: string, ctx?: C): void;\n fnc(fnc: HFnc, ctx?: C): void;\n obj(obj: HObj, ctx?: C): void;\n}\n\nexport function hsml<C extends HHandlerCtx>(hml: HElement,\n handler: HHandler<C>,\n ctx?: C): void {\n // console.log(\"hsml\", hsml);\n if (hml === undefined || hml === null) {\n return;\n }\n switch (hml.constructor) {\n case Array:\n // const tag = hml as HTag;\n // if (\n // (\n // tag.length === 1 &&\n // tag[0].constructor === String\n // ) ||\n // (\n // tag.length === 2 &&\n // (\n // tag[0].constructor === String &&\n // (tag[1]!.constructor === Array || tag[1]!.constructor === Function)\n // ) ||\n // (\n // tag[0].constructor === String &&\n // tag[1]!.constructor === Object\n // )\n // ) ||\n // (\n // tag.length === 3 &&\n // tag[0].constructor === String &&\n // tag[1].constructor === Object &&\n // tag[2]!.constructor === Array\n // )\n // ) {\n // hsmlTag(hml as HTag, handler, ctx);\n // } else {\n // console.error(\"hsml parse error:\", hml);\n // // console.error(\"hsml parse error:\", JSON.stringify(hml, null, 4));\n // // throw Error(`hsml parse error: ${JSON.stringify(hml)}`);\n // }\n hsmlTag(hml as HTag, handler, ctx);\n break;\n case Function:\n handler.fnc(hml as HFnc, ctx);\n break;\n case String:\n handler.text(hml as string, ctx);\n break;\n case Boolean:\n handler.text(\"\" + hml, ctx);\n break;\n case Number:\n const n = hml as number;\n const ns = n.toLocaleString ? n.toLocaleString() : n.toString();\n handler.text(ns, ctx);\n break;\n case Date:\n const d = hml as Date;\n const ds = d.toLocaleString ? d.toLocaleString() : d.toString();\n handler.text(ds, ctx);\n break;\n default: // HObj\n handler.obj(hml as HObj, ctx);\n }\n\n function hsmlTag(hmlTag: HTag, handler: HHandler<C>, ctx?: C): void {\n // console.log(\"hsml tag\", hmlTag);\n\n if (typeof hmlTag[0] !== \"string\") {\n console.error(\"HSML tag head not string:\", hmlTag);\n return;\n }\n\n const head = hmlTag[0] as HHead;\n const attrsObj = hmlTag[1] as any;\n const hasAttrs = attrsObj && attrsObj.constructor === Object;\n const childIdx = hasAttrs ? 2 : 1;\n\n let children: HElements = [];\n let hFnc: HFnc | undefined;\n let hObj: HObj | undefined;\n\n const htc = hmlTag[childIdx];\n switch (htc && htc.constructor) {\n case Array:\n children = htc as HElements;\n break;\n case Function:\n hFnc = htc as HFnc;\n break;\n case String:\n case Boolean:\n case Number:\n case Date:\n children = [htc as string | boolean | number | Date];\n break;\n default: // HObj\n hObj = htc as HObj;\n break;\n }\n\n const refSplit = head.split(\"~\");\n const ref = refSplit[1];\n const dotSplit = refSplit[0].split(\".\");\n const hashSplit = dotSplit[0].split(\"#\");\n const tag = hashSplit[0] || \"div\";\n const id = hashSplit[1];\n const classes = dotSplit.slice(1);\n\n let attrs: HAttrs;\n if (hasAttrs) {\n attrs = attrsObj as HAttrs;\n } else {\n attrs = {} as HAttrs;\n }\n\n if (id) {\n (attrs as any)._id = id;\n }\n if (classes.length) {\n (attrs as any)._classes = classes;\n }\n if (ref) {\n (attrs as any)._ref = ref;\n }\n if (hObj) {\n (attrs as any)._hObj = hObj;\n }\n\n const skip = handler.open(tag, attrs, children, ctx);\n\n if (hFnc) {\n handler.fnc(hFnc, ctx);\n }\n\n if (!skip) {\n children.forEach(jml => hsml(jml, handler, ctx));\n }\n\n handler.close(tag, children, ctx);\n }\n}\n\nexport function hjoin(hsmls: HElements, sep: string | HElement): HElements {\n const r = hsmls.reduce<HElements>(\n (p, c) => (p.push(c, sep), p),\n [] as HElements\n );\n r.splice(-1);\n return r;\n}\n\n// Test\n\n// const hsmls: Hsmls = [\n// \"text\",\n// [\"tag\", [\n// \"d\",\n// [\"\"]\n// ]],\n// [\"taga\", { attr: \"attr\", classes: [\"class\"] }, [\n// \"text\",\n// 123,\n// true\n// ]]\n// ];\n\n// const hml: Hsml = [\"xxx\", {}, [\n// \"types\", \" \", 1235.456, \" \", new Date(), \" \",\n// ...hsmls,\n// [\"t\", [\"t\", \"a\", \"\"]],\n// [\"t\", {}, [\"t\", \"a\", \"\"]],\n// [\"t\"]\n// ]];\n\n// console.log(hsmls, hml);\n\n// const hml1: Hsml = [\"div\", null, [\n// [\"span\", null, [\n// [\"a\",\n// {\n// href: \"https://gitlab.com/peter-rybar/diasheet\",\n// title: \"GitLab\",\n// target: \"_blank\"\n// },\n// [[\"i.fa.fa-gitlab\"]]\n// ]\n// ]],\n// [\"span\"]\n// ]];\n// console.log(hml1);\n\n// const hml2: Hsml = [\"div\", [\n// [\"h2\", [\"title\"]],\n// [\"div.w3-card-12\", [\n// [\"header.w3-container w3-light-grey\", [\n// [\"h3\", [\"Account: \", \"User\"]]\n// ]],\n// [\"div.w3-container.w3-light-grey\", [\n// [\"p\", [\"Balance: 4 DCT\"]],\n// [\"br\"]\n// ]],\n// [\"h4\", [\"Your account spending\"]],\n// [\"div#piechart\"],\n// [\"h4\", [\"Your account balance\"]],\n// [\"div#linechart\"],\n// [\"button.w3-button.w3-block.w3-dark-grey\", [\"Refresh\"]]\n// ]],\n// [\"br\"]\n// ]];\n// console.log(hml2);\n\n// TEST\n\n// import { hsmls2htmls } from \"./hsml-html\";\n// import { HDispatch } from \"./hsml-app\";\n\n// const dispatch: HDispatch = (type: string, data?: any, event?: Event): void => {\n// console.log(\"action:\", type, data, event);\n// };\n\n// const data = { attr: \"action-data\" };\n\n// const hmls: HElements = [\n// [\"button\", { on: [\"click\", \"action\", data] }, \"send\"],\n// [\"h1\", \"aaa\"],\n// [\"input\",\n// {\n// type: \"text\",\n// on: [\n// [\"mouseover\", \"hover-action\", data],\n// [\"change\", \"click-action\", e => (e.target as HTMLInputElement).value],\n// [\"click\", e => dispatch(\"action\", data, e)],\n// ],\n// click: e => dispatch(\"action\", data, e)\n// }\n// ],\n// [\"button\",\n// {\n// on: [\"click\", e => dispatch(\"action\", data, e)],\n// click: e => dispatch(\"action\", data, e)\n// },\n// [\"Send\"]\n// ]\n// ];\n\n// console.log(hsmls2htmls(hmls, true).join(\"\"));\n","import {\n hsml,\n HElement,\n HElements,\n HHead,\n HAttrs,\n HAttrClasses,\n HAttrData,\n HAttrStyles,\n HFnc,\n HObj,\n HHandler,\n HHandlerCtx\n} from \"./hsml\";\n\nclass HsmlHtmlHandler implements HHandler<HHandlerCtx> {\n\n private static _pairTags = [\n \"script\", \"iframe\",\n \"html\", \"head\", \"body\", \"title\", \"div\",\n \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\",\n \"p\", \"a\", \"pre\", \"blockquote\", \"i\", \"b\", \"em\", \"strong\", \"tt\", \"cite\",\n \"ol\", \"ul\", \"li\", \"dl\", \"dt\", \"dd\", \"table\", \"tr\", \"td\",\n \"textarea\", \"select\", \"option\"];\n\n private _onHtml: (html: string) => void;\n private _pretty: boolean;\n private _indent: string;\n private _depth: number = 0;\n\n constructor(onHtml: (html: string) => void,\n pretty: boolean = false,\n indent: string = \" \") {\n this._onHtml = onHtml;\n this._pretty = pretty;\n this._indent = indent;\n }\n\n open(tag: HHead, attrs: HAttrs, children: HElements, ctx?: HHandlerCtx): boolean {\n const props: any[] = [];\n let id = attrs._id;\n let classes: string[] = attrs._classes ? attrs._classes : [];\n let hObj: any = attrs._hObj;\n for (const a in attrs) {\n if (attrs.hasOwnProperty(a)) {\n switch (a) {\n case \"_id\":\n case \"_classes\":\n case \"_ref\":\n case \"_key\":\n case \"_skip\":\n case \"_hObj\":\n break;\n case \"id\":\n id = attrs[a] as string;\n break;\n case \"classes\":\n const attrClasses = attrs[a] as HAttrClasses;\n classes = classes.concat(attrClasses\n ? attrClasses\n .map(c =>\n c.constructor === String\n ? c as string\n : (c[1] ? c[0] as string : undefined))\n .filter((c): c is string => c !== undefined)\n : [] as string[]);\n break;\n case \"class\":\n classes = classes.concat((attrs[a] as string).split(\" \"));\n break;\n case \"data\":\n const attrData = attrs[a] as HAttrData;\n for (const d in attrData) {\n if (attrData.hasOwnProperty(d)) {\n if (attrData[d].constructor === String) {\n props.push([\"data-\" + d, attrData[d]]);\n } else {\n props.push([\"data-\" + d, JSON.stringify(attrData[d])]);\n }\n }\n }\n break;\n case \"styles\":\n const attrStyles = attrs[a] as HAttrStyles;\n let style = \"\";\n for (const d in attrStyles) {\n if (attrStyles.hasOwnProperty(d)) {\n const dd = d.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n style += dd + \":\" + attrStyles[d] + \";\";\n }\n }\n props.push([\"style\", style]);\n break;\n case \"styles\":\n break;\n case \"on\":\n break;\n default:\n if (typeof attrs[a] === \"function\") {\n // ignore\n } else if (typeof attrs[a] === \"boolean\") {\n attrs[a] && props.push([a, \"\"]);\n } else {\n props.push([a, attrs[a]]);\n }\n }\n }\n }\n if (classes.length) {\n props.unshift([\"class\", classes.join(\" \")]);\n }\n if (id) {\n props.unshift([\"id\", id]);\n }\n if (hObj && \"type\" in hObj) {\n props.unshift([\"hObj\", hObj.type]);\n }\n const args = props.map(p => `${p[0]}=\"${escapeHtml(p[1])}\"`).join(\" \");\n let html = \"\";\n if (this._pretty) {\n html += this._mkIndent(this._depth);\n this._depth++;\n }\n const pairTag = (children.length || HsmlHtmlHandler._pairTags.indexOf(tag) !== -1);\n html += \"<\" + tag + (args ? \" \" + args : \"\") + (pairTag ? \">\" : \"/>\");\n if (this._pretty) {\n html += \"\\n\";\n }\n this._onHtml(html);\n if (hObj && \"render\" in hObj && hObj.render.constructor === Function) {\n const hsmls = hObj.render() as HElements;\n for (const hml of hsmls) {\n if (hml === undefined || hml === null) {\n continue;\n }\n if (hml.constructor === String) {\n this._onHtml(hml + (this._pretty ? \"\\n\" : \"\"));\n } else if (\"toHsml\" in (hml as any)) {\n const obj = hml as HObj;\n obj.toHsml && hsml(obj.toHsml(), this);\n } else {\n hsml(hml as HElement, this);\n }\n }\n }\n return false;\n }\n\n close(tag: HHead, children: HElements, ctx?: HHandlerCtx): void {\n let html = \"\";\n const pairTag = (children.length || HsmlHtmlHandler._pairTags.indexOf(tag) !== -1);\n if (this._pretty) {\n this._depth--;\n if (pairTag) {\n html += this._mkIndent(this._depth);\n }\n }\n if (pairTag) {\n html += \"</\" + tag + \">\";\n if (this._pretty) {\n html += \"\\n\";\n }\n this._onHtml(html);\n }\n }\n\n text(text: string, ctx?: HHandlerCtx): void {\n let html = \"\";\n if (this._pretty) {\n html += this._mkIndent(this._depth);\n }\n html += (text as any) instanceof String\n ? text\n : escapeHtml(text);\n if (this._pretty) {\n html += \"\\n\";\n }\n this._onHtml(html);\n }\n\n fnc(fnc: HFnc, ctx?: HHandlerCtx): void {\n }\n\n obj(obj: HObj, ctx?: HHandlerCtx): void {\n if (\"toHsml\" in obj) {\n obj.toHsml && hsml(obj.toHsml(), this, obj as HHandlerCtx);\n } else {\n this.text(\"\" + obj, ctx);\n }\n }\n\n private _mkIndent(count: number): string {\n let indent = \"\";\n for (let i = 0; i < count; i++) {\n indent += this._indent;\n }\n return indent;\n }\n\n}\n\nexport function hsml2html(hsmlEl: HElement, onHtml: (html: string) => void, pretty = false): void {\n const handler = new HsmlHtmlHandler(onHtml, pretty);\n hsml(hsmlEl, handler);\n}\n\nexport function hsmls2html(hsmls: HElements, onHtml: (html: string) => void, pretty = false): void {\n for (const hml of hsmls) {\n if (hml === undefined || hml === null) {\n continue;\n }\n if (hml.constructor === String) {\n onHtml(hml + (pretty ? \"\\n\" : \"\"));\n } else if (\"toHsml\" in (hml as any)) {\n const obj = hml as HObj;\n obj.toHsml && hsml2html(obj.toHsml(), onHtml, pretty);\n } else {\n hsml2html(hml as HElement, onHtml, pretty);\n }\n }\n}\n\nexport function hsml2htmls(hsml: HElement, pretty = false): string[] {\n const htmls: string[] = [];\n hsml2html(hsml, html => htmls.push(html), pretty);\n return htmls;\n}\n\nexport function hsmls2htmls(hsmls: HElements, pretty = false): string[] {\n const htmls: string[] = [];\n hsmls2html(hsmls, html => htmls.push(html), pretty);\n return htmls;\n}\n\nconst escapeHtmlRegExp = /[\"'&<>]/;\n\n// TODO: check performance\n// const escapeHTML = (html: string) => html.replace(/[&<>'\"]/g,\n// tag => (({\n// '&': '&amp;',\n// '<': '&lt;',\n// '>': '&gt;',\n// \"'\": '&#39;',\n// '\"': '&quot;'\n// } as any)[tag]));\n\nfunction escapeHtml(html: string): string {\n const str = \"\" + html;\n const m = escapeHtmlRegExp.exec(str);\n if (!m) {\n return str;\n }\n let esc;\n let escHtml = \"\";\n let idx = 0;\n let lastIdx = 0;\n for (idx = m.index; idx < str.length; idx++) {\n switch (str.charCodeAt(idx)) {\n case 34: // \"\n esc = \"&quot;\";\n break;\n case 38: // &\n esc = \"&amp;\";\n break;\n case 39: // '\n esc = \"&#39;\";\n break;\n case 60: // <\n esc = \"&lt;\";\n break;\n case 62: // >\n esc = \"&gt;\";\n break;\n default:\n continue;\n }\n if (lastIdx !== idx) {\n escHtml += str.substring(lastIdx, idx);\n }\n lastIdx = idx + 1;\n escHtml += esc;\n }\n return lastIdx !== idx\n ? escHtml + str.substring(lastIdx, idx)\n : escHtml;\n}\n\n// Test\n\n// const hsmls: HElements = [\n// \"text\",\n// [\"tag\", [\n// \"d\",\n// [\"\"]\n// ]],\n// [\"taga\",\n// {\n// attr: \"escape html attr entities: \\\" ' & < >\",\n// classes: [\"class\"]\n// },\n// [\n// \"text\",\n// \"escape html entities: \\\" ' & < >\",\n// new String(\"escape html entities: \\\" ' & < >\"),\n// 123,\n// true\n// ]\n// ]\n// ];\n\n// const hml: HElement = [\"xxx\", {}, [\n// \"types\", \" \", 1235.456, \" \", new Date(), \" \",\n// ...hsmls,\n// [\"t\", [\"t\", \"a\", \"\"]],\n// [\"t\", {}, [\"t\", \"a\", \"\"]],\n// [\"a\", { href: \"url\", onclick: \"return confirm('Confirm please')\" }, \"link\"]\n// ]];\n\n// console.log(hsmls, hml);\n\n// const html = hsml2htmls(hml, true);\n// console.log(html.join(\"\"));\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml.ts","webpack:///./src/hsml-html.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hsml","hml","handler","ctx","constructor","Array","hmlTag","console","error","head","attrsObj","hasAttrs","hFnc","hObj","children","htc","Function","String","Boolean","Number","Date","refSplit","split","ref","dotSplit","hashSplit","tag","id","classes","slice","attrs","_id","length","_classes","_ref","_hObj","skip","open","fnc","forEach","jml","close","hsmlTag","text","toLocaleString","toString","ds","obj","hsmls","sep","reduce","push","splice","HsmlHtmlHandler","onHtml","pretty","indent","_depth","this","_onHtml","_pretty","_indent","props","attrClasses","concat","map","undefined","filter","attrData","JSON","stringify","attrStyles","style","replace","toLowerCase","unshift","join","type","args","escapeHtml","html","_mkIndent","_pairTags","indexOf","render","toHsml","pairTag","count","hsml2html","hsmlEl","hsmls2html","htmls","escapeHtmlRegExp","str","exec","esc","escHtml","idx","lastIdx","index","charCodeAt","substring"],"mappings":"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","file":"hsml-html.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})(window, function() {\nreturn "," \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, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","\nexport type HHead = keyof HTMLElementTagNameMap | string; // \"tag#id.class1.class2~handler\"\n\nexport type HAttrClasses = Array<string | [string, boolean]>;\n\nexport type HAttrStyles = { [key: string]: string };\n\nexport type HAttrData = {\n [key: string]:\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object;\n};\n\nexport type HAttrOnAction = string;\n\nexport type HAttrOnDataFnc = (e: Event) => any;\n\nexport type HAttrOnData =\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object\n | HAttrOnDataFnc\n | null;\n\nexport type HAttrOnCb = [keyof HTMLElementEventMap, EventListener];\n\nexport type HAttrOnAct = [\n keyof HTMLElementEventMap,\n HAttrOnAction,\n HAttrOnData?\n];\n\nexport type HAttrOn = HAttrOnCb | HAttrOnAct | Array<HAttrOnCb | HAttrOnAct>;\n\nexport interface HAttrs {\n readonly _id?: string;\n readonly _classes?: string[];\n readonly _ref?: string;\n readonly _key?: string;\n readonly _skip?: boolean;\n readonly _hObj?: HObj;\n readonly classes?: HAttrClasses;\n readonly styles?: HAttrStyles;\n readonly data?: HAttrData;\n readonly on?: HAttrOn;\n readonly [key: string]:\n | string\n | String\n | string[]\n | String[]\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | HAttrClasses\n | HAttrStyles\n // | HsmlAttrData\n | HAttrOn\n | EventListener\n | HObj\n | undefined;\n}\n\nexport type HFnc = (e: Element) => boolean | void;\n\nexport interface HObj {\n toHsml?(): HElement;\n}\n\nexport interface HElements extends Array<HElement> {}\n\nexport type HChildren =\n | HElements\n | HFnc\n | HObj\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport type HTagNoAttr = [HHead, HChildren?];\nexport type HTagAttr = [HHead, HAttrs, HChildren?];\n\nexport type HTag = HTagNoAttr | HTagAttr;\n\nexport type HElement =\n | HFnc\n | HObj\n | HTag\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport interface HHandlerCtx extends HObj {\n refs: { [name: string]: Element };\n actionCb(action: HAttrOnAction, data: HAttrOnData, e: Event): void;\n}\n\nexport interface HHandler<C extends HHandlerCtx> {\n open(tag: HHead, attrs: HAttrs, children: HElements, ctx?: C): boolean;\n close(tag: HHead, children: HElements, ctx?: C): void;\n text(text: string, ctx?: C): void;\n fnc(fnc: HFnc, ctx?: C): void;\n obj(obj: HObj, ctx?: C): void;\n}\n\nexport function hsml<C extends HHandlerCtx>(hml: HElement,\n handler: HHandler<C>,\n ctx?: C): void {\n // console.log(\"hsml\", hsml);\n if (hml === undefined || hml === null) {\n return;\n }\n switch (hml.constructor) {\n case Array:\n // const tag = hml as HTag;\n // if (\n // (\n // tag.length === 1 &&\n // tag[0].constructor === String\n // ) ||\n // (\n // tag.length === 2 &&\n // (\n // tag[0].constructor === String &&\n // (tag[1]!.constructor === Array || tag[1]!.constructor === Function)\n // ) ||\n // (\n // tag[0].constructor === String &&\n // tag[1]!.constructor === Object\n // )\n // ) ||\n // (\n // tag.length === 3 &&\n // tag[0].constructor === String &&\n // tag[1].constructor === Object &&\n // tag[2]!.constructor === Array\n // )\n // ) {\n // hsmlTag(hml as HTag, handler, ctx);\n // } else {\n // console.error(\"hsml parse error:\", hml);\n // // console.error(\"hsml parse error:\", JSON.stringify(hml, null, 4));\n // // throw Error(`hsml parse error: ${JSON.stringify(hml)}`);\n // }\n hsmlTag(hml as HTag, handler, ctx);\n break;\n case Function:\n handler.fnc(hml as HFnc, ctx);\n break;\n case String:\n handler.text(hml as string, ctx);\n break;\n case Boolean:\n handler.text(\"\" + hml, ctx);\n break;\n case Number:\n const n = hml as number;\n const ns = n.toLocaleString ? n.toLocaleString() : n.toString();\n handler.text(ns, ctx);\n break;\n case Date:\n const d = hml as Date;\n const ds = d.toLocaleString ? d.toLocaleString() : d.toString();\n handler.text(ds, ctx);\n break;\n default: // HObj\n handler.obj(hml as HObj, ctx);\n }\n\n function hsmlTag(hmlTag: HTag, handler: HHandler<C>, ctx?: C): void {\n // console.log(\"hsml tag\", hmlTag);\n\n if (typeof hmlTag[0] !== \"string\") {\n console.error(\"HSML tag head not string:\", hmlTag);\n return;\n }\n\n const head = hmlTag[0] as HHead;\n const attrsObj = hmlTag[1] as any;\n const hasAttrs = attrsObj && attrsObj.constructor === Object;\n const childIdx = hasAttrs ? 2 : 1;\n\n let children: HElements = [];\n let hFnc: HFnc | undefined;\n let hObj: HObj | undefined;\n\n const htc = hmlTag[childIdx];\n switch (htc && htc.constructor) {\n case Array:\n children = htc as HElements;\n break;\n case Function:\n hFnc = htc as HFnc;\n break;\n case String:\n case Boolean:\n case Number:\n case Date:\n children = [htc as string | boolean | number | Date];\n break;\n default: // HObj\n hObj = htc as HObj;\n break;\n }\n\n const refSplit = head.split(\"~\");\n const ref = refSplit[1];\n const dotSplit = refSplit[0].split(\".\");\n const hashSplit = dotSplit[0].split(\"#\");\n const tag = hashSplit[0] || \"div\";\n const id = hashSplit[1];\n const classes = dotSplit.slice(1);\n\n let attrs: HAttrs;\n if (hasAttrs) {\n attrs = attrsObj as HAttrs;\n } else {\n attrs = {} as HAttrs;\n }\n\n if (id) {\n (attrs as any)._id = id;\n }\n if (classes.length) {\n (attrs as any)._classes = classes;\n }\n if (ref) {\n (attrs as any)._ref = ref;\n }\n if (hObj) {\n (attrs as any)._hObj = hObj;\n }\n\n const skip = handler.open(tag, attrs, children, ctx);\n\n if (hFnc) {\n handler.fnc(hFnc, ctx);\n }\n\n if (!skip) {\n children.forEach(jml => hsml(jml, handler, ctx));\n }\n\n handler.close(tag, children, ctx);\n }\n}\n\nexport function hjoin(hsmls: HElements, sep: string | HElement): HElements {\n const r = hsmls.reduce<HElements>(\n (p, c) => (p.push(c, sep), p),\n [] as HElements\n );\n r.splice(-1);\n return r;\n}\n\n// Test\n\n// const hsmls: Hsmls = [\n// \"text\",\n// [\"tag\", [\n// \"d\",\n// [\"\"]\n// ]],\n// [\"taga\", { attr: \"attr\", classes: [\"class\"] }, [\n// \"text\",\n// 123,\n// true\n// ]]\n// ];\n\n// const hml: Hsml = [\"xxx\", {}, [\n// \"types\", \" \", 1235.456, \" \", new Date(), \" \",\n// ...hsmls,\n// [\"t\", [\"t\", \"a\", \"\"]],\n// [\"t\", {}, [\"t\", \"a\", \"\"]],\n// [\"t\"]\n// ]];\n\n// console.log(hsmls, hml);\n\n// const hml1: Hsml = [\"div\", null, [\n// [\"span\", null, [\n// [\"a\",\n// {\n// href: \"https://gitlab.com/peter-rybar/diasheet\",\n// title: \"GitLab\",\n// target: \"_blank\"\n// },\n// [[\"i.fa.fa-gitlab\"]]\n// ]\n// ]],\n// [\"span\"]\n// ]];\n// console.log(hml1);\n\n// const hml2: Hsml = [\"div\", [\n// [\"h2\", [\"title\"]],\n// [\"div.w3-card-12\", [\n// [\"header.w3-container w3-light-grey\", [\n// [\"h3\", [\"Account: \", \"User\"]]\n// ]],\n// [\"div.w3-container.w3-light-grey\", [\n// [\"p\", [\"Balance: 4 DCT\"]],\n// [\"br\"]\n// ]],\n// [\"h4\", [\"Your account spending\"]],\n// [\"div#piechart\"],\n// [\"h4\", [\"Your account balance\"]],\n// [\"div#linechart\"],\n// [\"button.w3-button.w3-block.w3-dark-grey\", [\"Refresh\"]]\n// ]],\n// [\"br\"]\n// ]];\n// console.log(hml2);\n\n// TEST\n\n// import { hsmls2htmls } from \"./hsml-html\";\n// import { HDispatch } from \"./hsml-app\";\n\n// const dispatch: HDispatch = (type: string, data?: any, event?: Event): void => {\n// console.log(\"action:\", type, data, event);\n// };\n\n// const data = { attr: \"action-data\" };\n\n// const hmls: HElements = [\n// [\"button\", { on: [\"click\", \"action\", data] }, \"send\"],\n// [\"h1\", \"aaa\"],\n// [\"input\",\n// {\n// type: \"text\",\n// on: [\n// [\"mouseover\", \"hover-action\", data],\n// [\"change\", \"click-action\", e => (e.target as HTMLInputElement).value],\n// [\"click\", e => dispatch(\"action\", data, e)],\n// ],\n// click: e => dispatch(\"action\", data, e)\n// }\n// ],\n// [\"button\",\n// {\n// on: [\"click\", e => dispatch(\"action\", data, e)],\n// click: e => dispatch(\"action\", data, e)\n// },\n// [\"Send\"]\n// ]\n// ];\n\n// console.log(hsmls2htmls(hmls, true).join(\"\"));\n","import {\n hsml,\n HElement,\n HElements,\n HHead,\n HAttrs,\n HAttrClasses,\n HAttrData,\n HAttrStyles,\n HFnc,\n HObj,\n HHandler,\n HHandlerCtx\n} from \"./hsml\";\n\nclass HsmlHtmlHandler implements HHandler<HHandlerCtx> {\n\n private static _pairTags = [\n \"script\", \"iframe\",\n \"html\", \"head\", \"body\", \"title\", \"div\",\n \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\",\n \"p\", \"a\", \"pre\", \"blockquote\", \"i\", \"b\", \"em\", \"strong\", \"tt\", \"cite\",\n \"ol\", \"ul\", \"li\", \"dl\", \"dt\", \"dd\", \"table\", \"tr\", \"td\",\n \"textarea\", \"select\", \"option\"];\n\n private _onHtml: (html: string) => void;\n private _pretty: boolean;\n private _indent: string;\n private _depth: number = 0;\n\n constructor(onHtml: (html: string) => void,\n pretty: boolean = false,\n indent: string = \" \") {\n this._onHtml = onHtml;\n this._pretty = pretty;\n this._indent = indent;\n }\n\n open(tag: HHead, attrs: HAttrs, children: HElements, ctx?: HHandlerCtx): boolean {\n const props: any[] = [];\n let id = attrs._id;\n let classes: string[] = attrs._classes ? attrs._classes : [];\n let hObj: any = attrs._hObj;\n for (const a in attrs) {\n if (attrs.hasOwnProperty(a)) {\n switch (a) {\n case \"_id\":\n case \"_classes\":\n case \"_ref\":\n case \"_key\":\n case \"_skip\":\n case \"_hObj\":\n break;\n case \"id\":\n id = attrs[a] as string;\n break;\n case \"classes\":\n const attrClasses = attrs[a] as HAttrClasses;\n classes = classes.concat(attrClasses\n ? attrClasses\n .map(c =>\n c.constructor === String\n ? c as string\n : (c[1] ? c[0] as string : undefined))\n .filter((c): c is string => c !== undefined)\n : [] as string[]);\n break;\n case \"class\":\n classes = classes.concat((attrs[a] as string).split(\" \"));\n break;\n case \"data\":\n const attrData = attrs[a] as HAttrData;\n for (const d in attrData) {\n if (attrData.hasOwnProperty(d)) {\n if (attrData[d].constructor === String) {\n props.push([\"data-\" + d, attrData[d]]);\n } else {\n props.push([\"data-\" + d, JSON.stringify(attrData[d])]);\n }\n }\n }\n break;\n case \"styles\":\n const attrStyles = attrs[a] as HAttrStyles;\n let style = \"\";\n for (const d in attrStyles) {\n if (attrStyles.hasOwnProperty(d)) {\n const dd = d.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n style += dd + \":\" + attrStyles[d] + \";\";\n }\n }\n props.push([\"style\", style]);\n break;\n case \"styles\":\n break;\n case \"on\":\n break;\n default:\n if (typeof attrs[a] === \"function\") {\n // ignore\n } else if (typeof attrs[a] === \"boolean\") {\n attrs[a] && props.push([a, \"\"]);\n } else {\n props.push([a, attrs[a]]);\n }\n }\n }\n }\n if (classes.length) {\n props.unshift([\"class\", classes.join(\" \")]);\n }\n if (id) {\n props.unshift([\"id\", id]);\n }\n if (hObj && \"type\" in hObj) {\n props.unshift([\"hObj\", hObj.type]);\n }\n const args = props.map(p => `${p[0]}=\"${escapeHtml(p[1])}\"`).join(\" \");\n let html = \"\";\n if (this._pretty) {\n html += this._mkIndent(this._depth);\n this._depth++;\n }\n const pairTag = (children.length || HsmlHtmlHandler._pairTags.indexOf(tag) !== -1);\n html += \"<\" + tag + (args ? \" \" + args : \"\") + (pairTag ? \">\" : \"/>\");\n if (this._pretty) {\n html += \"\\n\";\n }\n this._onHtml(html);\n if (hObj && \"render\" in hObj && hObj.render.constructor === Function) {\n const hsmls = hObj.render() as HElements;\n for (const hml of hsmls) {\n if (hml === undefined || hml === null) {\n continue;\n }\n if (hml.constructor === String) {\n this._onHtml(hml + (this._pretty ? \"\\n\" : \"\"));\n } else if (\"toHsml\" in (hml as any)) {\n const obj = hml as HObj;\n obj.toHsml && hsml(obj.toHsml(), this);\n } else {\n hsml(hml as HElement, this);\n }\n }\n }\n return false;\n }\n\n close(tag: HHead, children: HElements, ctx?: HHandlerCtx): void {\n let html = \"\";\n const pairTag = (children.length || HsmlHtmlHandler._pairTags.indexOf(tag) !== -1);\n if (this._pretty) {\n this._depth--;\n if (pairTag) {\n html += this._mkIndent(this._depth);\n }\n }\n if (pairTag) {\n html += \"</\" + tag + \">\";\n if (this._pretty) {\n html += \"\\n\";\n }\n this._onHtml(html);\n }\n }\n\n text(text: string, ctx?: HHandlerCtx): void {\n let html = \"\";\n if (this._pretty) {\n html += this._mkIndent(this._depth);\n }\n html += (text as any) instanceof String\n ? text\n : escapeHtml(text);\n if (this._pretty) {\n html += \"\\n\";\n }\n this._onHtml(html);\n }\n\n fnc(fnc: HFnc, ctx?: HHandlerCtx): void {\n }\n\n obj(obj: HObj, ctx?: HHandlerCtx): void {\n if (\"toHsml\" in obj) {\n obj.toHsml && hsml(obj.toHsml(), this, obj as HHandlerCtx);\n } else {\n this.text(\"\" + obj, ctx);\n }\n }\n\n private _mkIndent(count: number): string {\n let indent = \"\";\n for (let i = 0; i < count; i++) {\n indent += this._indent;\n }\n return indent;\n }\n\n}\n\nexport function hsml2html(hsmlEl: HElement, onHtml: (html: string) => void, pretty = false): void {\n const handler = new HsmlHtmlHandler(onHtml, pretty);\n hsml(hsmlEl, handler);\n}\n\nexport function hsmls2html(hsmls: HElements, onHtml: (html: string) => void, pretty = false): void {\n for (const hml of hsmls) {\n if (hml === undefined || hml === null) {\n continue;\n }\n if (hml.constructor === String) {\n onHtml(hml + (pretty ? \"\\n\" : \"\"));\n } else if (\"toHsml\" in (hml as any)) {\n const obj = hml as HObj;\n obj.toHsml && hsml2html(obj.toHsml(), onHtml, pretty);\n } else {\n hsml2html(hml as HElement, onHtml, pretty);\n }\n }\n}\n\nexport function hsml2htmls(hsml: HElement, pretty = false): string[] {\n const htmls: string[] = [];\n hsml2html(hsml, html => htmls.push(html), pretty);\n return htmls;\n}\n\nexport function hsmls2htmls(hsmls: HElements, pretty = false): string[] {\n const htmls: string[] = [];\n hsmls2html(hsmls, html => htmls.push(html), pretty);\n return htmls;\n}\n\nconst escapeHtmlRegExp = /[\"'&<>]/;\n\n// TODO: check performance\n// const escapeHTML = (html: string) => html.replace(/[&<>'\"]/g,\n// tag => (({\n// '&': '&amp;',\n// '<': '&lt;',\n// '>': '&gt;',\n// \"'\": '&#39;',\n// '\"': '&quot;'\n// } as any)[tag]));\n\nfunction escapeHtml(html: string): string {\n const str = \"\" + html;\n const m = escapeHtmlRegExp.exec(str);\n if (!m) {\n return str;\n }\n let esc;\n let escHtml = \"\";\n let idx = 0;\n let lastIdx = 0;\n for (idx = m.index; idx < str.length; idx++) {\n switch (str.charCodeAt(idx)) {\n case 34: // \"\n esc = \"&quot;\";\n break;\n case 38: // &\n esc = \"&amp;\";\n break;\n case 39: // '\n esc = \"&#39;\";\n break;\n case 60: // <\n esc = \"&lt;\";\n break;\n case 62: // >\n esc = \"&gt;\";\n break;\n default:\n continue;\n }\n if (lastIdx !== idx) {\n escHtml += str.substring(lastIdx, idx);\n }\n lastIdx = idx + 1;\n escHtml += esc;\n }\n return lastIdx !== idx\n ? escHtml + str.substring(lastIdx, idx)\n : escHtml;\n}\n\n// Test\n\n// const hsmls: HElements = [\n// \"text\",\n// [\"tag\", [\n// \"d\",\n// [\"\"]\n// ]],\n// [\"taga\",\n// {\n// attr: \"escape html attr entities: \\\" ' & < >\",\n// classes: [\"class\"]\n// },\n// [\n// \"text\",\n// \"escape html entities: \\\" ' & < >\",\n// new String(\"escape html entities: \\\" ' & < >\"),\n// 123,\n// true\n// ]\n// ]\n// ];\n\n// const hml: HElement = [\"xxx\", {}, [\n// \"types\", \" \", 1235.456, \" \", new Date(), \" \",\n// ...hsmls,\n// [\"t\", [\"t\", \"a\", \"\"]],\n// [\"t\", {}, [\"t\", \"a\", \"\"]],\n// [\"a\", { href: \"url\", onclick: \"return confirm('Confirm please')\" }, \"link\"]\n// ]];\n\n// console.log(hsmls, hml);\n\n// const html = hsml2htmls(hml, true);\n// console.log(html.join(\"\"));\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("IncrementalDOM"));else if("function"==typeof define&&define.amd)define(["IncrementalDOM"],t);else{var n="object"==typeof exports?t(require("IncrementalDOM")):t(e.IncrementalDOM);for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(e){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hsml=function e(t,n,o){if(null!=t)switch(t.constructor){case Array:!function(t,n,o){if("string"!=typeof t[0])return void console.error("HSML tag head not string:",t);const r=t[0],c=t[1],s=c&&c.constructor===Object;let i,a,u=[];const l=t[s?2:1];switch(l&&l.constructor){case Array:u=l;break;case Function:i=l;break;case String:case Boolean:case Number:case Date:u=[l];break;default:a=l}const f=r.split("~"),p=f[1],b=f[0].split("."),d=b[0].split("#"),h=d[0]||"div",m=d[1],y=b.slice(1);let _;_=s?c:{};m&&(_._id=m);y.length&&(_._classes=y);p&&(_._ref=p);a&&(_._hObj=a);const k=n.open(h,_,u,o);i&&n.fnc(i,o);k||u.forEach(t=>e(t,n,o));n.close(h,u,o)}(t,n,o);break;case Function:n.fnc(t,o);break;case String:n.text(t,o);break;case Boolean:n.text(""+t,o);break;case Number:const r=t,c=r.toLocaleString?r.toLocaleString():r.toString();n.text(c,o);break;case Date:const s=t,i=s.toLocaleString?s.toLocaleString():s.toString();n.text(i,o);break;default:n.obj(t,o)}},t.hjoin=function(e,t){const n=e.reduce((e,n)=>(e.push(n,t),e),[]);return n.splice(-1),n}},function(t,n){t.exports=e},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const o=n(0),r=n(1);class c{open(e,t,n,o){const c=[];let s=t._id,i=t._classes?t._classes:[],a=t._ref,u=t._hObj;for(const e in t)if(t.hasOwnProperty(e))switch(e){case"_id":case"_classes":case"_ref":case"_key":case"_skip":case"_hObj":break;case"id":s=t[e];break;case"classes":const n=t[e];i=i.concat(n?n.map(e=>e.constructor===String?e:e[1]?e[0]:void 0).filter(e=>void 0!==e):[]);break;case"class":i=i.concat(t[e].split(" "));break;case"data":const r=t[e];for(const e in r)r.hasOwnProperty(e)&&(r[e].constructor===String?c.push("data-"+e,r[e]):c.push("data-"+e,JSON.stringify(r[e])));break;case"styles":c.push("style",t[e]);break;case"on":const a=t[e];"string"==typeof a[0]?"function"==typeof a[1]?c.push("on"+a[0],a[1]):c.push("on"+a[0],e=>{o&&o.actionCb&&"function"==typeof o.actionCb&&o.actionCb(a[1],a[2],e)}):a.forEach(e=>{"function"==typeof e[1]?c.push("on"+e[0],e[1]):c.push("on"+e[0],t=>{o&&o.actionCb&&"function"==typeof o.actionCb&&o.actionCb(e[1],e[2],t)})});break;default:switch(typeof t[e]){case"function":c.push("on"+e,t[e]);break;case"object":c.push(e,t[e]);break;case"boolean":t[e]&&c.push(e,"");break;default:c.push(e,t[e])}}return i.length&&c.unshift("class",i.join(" ")),s&&c.unshift("id",s),r.elementOpen(e,t._key,void 0,...c),t._skip&&r.skip(),o&&a&&(o.refs[a]=r.currentElement()),u&&u.mount&&u.mount.constructor===Function&&(u.mount(r.currentElement()),r.skip()),!!t._skip}close(e,t,n){r.elementClose(e)}text(e,t){r.text(e)}fnc(e,t){e(r.currentElement())&&r.skip()}obj(e,t){"toHsml"in e?e.toHsml&&o.hsml(e.toHsml(),this,e):this.text(""+e,t)}}function s(e,t){o.hsml(e,new c,t)}t.hsml2idomPatch=function(e,t,n){r.patch(e,e=>e&&s(e,n),t)},t.hsmls2idomPatch=function(e,t,n){r.patch(e,e=>e&&function(e,t){for(const n of e)if(null!=n)if(n.constructor===String)r.text(n);else if("toHsml"in n){const e=n;e.toHsml&&s(e.toHsml(),e)}else s(n,t)}(e,n),t)}}])}));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("IncrementalDOM"));else if("function"==typeof define&&define.amd)define(["IncrementalDOM"],t);else{var n="object"==typeof exports?t(require("IncrementalDOM")):t(e.IncrementalDOM);for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(window,(function(e){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hjoin=t.hsml=void 0,t.hsml=function e(t,n,o){if(null!=t)switch(t.constructor){case Array:!function(t,n,o){if("string"!=typeof t[0])return void console.error("HSML tag head not string:",t);const r=t[0],s=t[1],c=s&&s.constructor===Object;let i,a,u=[];const l=t[c?2:1];switch(l&&l.constructor){case Array:u=l;break;case Function:i=l;break;case String:case Boolean:case Number:case Date:u=[l];break;default:a=l}const f=r.split("~"),p=f[1],b=f[0].split("."),d=b[0].split("#"),h=d[0]||"div",m=d[1],y=b.slice(1);let _;_=c?s:{};m&&(_._id=m);y.length&&(_._classes=y);p&&(_._ref=p);a&&(_._hObj=a);const k=n.open(h,_,u,o);i&&n.fnc(i,o);k||u.forEach(t=>e(t,n,o));n.close(h,u,o)}(t,n,o);break;case Function:n.fnc(t,o);break;case String:n.text(t,o);break;case Boolean:n.text(""+t,o);break;case Number:const r=t,s=r.toLocaleString?r.toLocaleString():r.toString();n.text(s,o);break;case Date:const c=t,i=c.toLocaleString?c.toLocaleString():c.toString();n.text(i,o);break;default:n.obj(t,o)}},t.hjoin=function(e,t){const n=e.reduce((e,n)=>(e.push(n,t),e),[]);return n.splice(-1),n}},function(t,n){t.exports=e},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hsmls2idomPatch=t.hsml2idomPatch=void 0;const o=n(0),r=n(1);class s{open(e,t,n,o){const s=[];let c=t._id,i=t._classes?t._classes:[],a=t._ref,u=t._hObj;for(const e in t)if(t.hasOwnProperty(e))switch(e){case"_id":case"_classes":case"_ref":case"_key":case"_skip":case"_hObj":break;case"id":c=t[e];break;case"classes":const n=t[e];i=i.concat(n?n.map(e=>e.constructor===String?e:e[1]?e[0]:void 0).filter(e=>void 0!==e):[]);break;case"class":i=i.concat(t[e].split(" "));break;case"data":const r=t[e];for(const e in r)r.hasOwnProperty(e)&&(r[e].constructor===String?s.push("data-"+e,r[e]):s.push("data-"+e,JSON.stringify(r[e])));break;case"styles":s.push("style",t[e]);break;case"on":const a=t[e];"string"==typeof a[0]?"function"==typeof a[1]?s.push("on"+a[0],a[1]):s.push("on"+a[0],e=>{o&&o.actionCb&&"function"==typeof o.actionCb&&o.actionCb(a[1],a[2],e)}):a.forEach(e=>{"function"==typeof e[1]?s.push("on"+e[0],e[1]):s.push("on"+e[0],t=>{o&&o.actionCb&&"function"==typeof o.actionCb&&o.actionCb(e[1],e[2],t)})});break;default:switch(typeof t[e]){case"function":s.push("on"+e,t[e]);break;case"object":s.push(e,t[e]);break;case"boolean":t[e]&&s.push(e,e);break;default:s.push(e,t[e])}}return i.length&&s.unshift("class",i.join(" ")),c&&s.unshift("id",c),r.elementOpen(e,t._key,void 0,...s),t._skip&&r.skip(),o&&a&&(o.refs[a]=r.currentElement()),u&&u.mount&&u.mount.constructor===Function&&(u.mount(r.currentElement()),r.skip()),!!t._skip}close(e,t,n){r.elementClose(e)}text(e,t){r.text(e)}fnc(e,t){e(r.currentElement())&&r.skip()}obj(e,t){"toHsml"in e?e.toHsml&&o.hsml(e.toHsml(),this,e):this.text(""+e,t)}}function c(e,t){o.hsml(e,new s,t)}t.hsml2idomPatch=function(e,t,n){r.patch(e,e=>e&&c(e,n),t)},t.hsmls2idomPatch=function(e,t,n){r.patch(e,e=>e&&function(e,t){for(const n of e)if(null!=n)if(n.constructor===String)r.text(n);else if("toHsml"in n){const e=n;e.toHsml&&c(e.toHsml(),e)}else c(n,t)}(e,n),t)}}])}));
2
2
  //# sourceMappingURL=hsml-idom.js.map