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 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hash.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","_encode","data","String","_decode","str","cb","this","_cb","encode","decode","read","onhashchange","console","warn","prevHash","location","hash","_iId","clearInterval","setInterval","decodeURIComponent","slice","encodeURIComponent"],"mappings":"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","file":"hash.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 = 10);\n","\nexport class Hash<T = string> {\n\n private _cb?: (data: T) => void;\n private _iId: any;\n\n private _encode = (data: T) => String(data);\n private _decode = (str: string) => str as any as T;\n\n onChange(cb: (data: T) => void): this {\n this._cb = cb;\n return this;\n }\n\n coders(encode: (data: T) => string,\n decode: (data: string) => T): this {\n this._encode = encode;\n this._decode = decode;\n return this;\n }\n\n listen(): this {\n this._cb && this._cb(this.read());\n if (\"onhashchange\" in window) {\n onhashchange = () => this._cb && this._cb(this.read());\n } else {\n console.warn(`browser \"window.onhashchange\" not implemented, running emulation`);\n let prevHash = location.hash;\n if (this._iId) {\n clearInterval(this._iId);\n }\n this._iId = setInterval(() => {\n if (location.hash !== prevHash) {\n prevHash = location.hash;\n this._cb && this._cb(this.read());\n }\n }, 500);\n }\n return this;\n }\n\n read(): T {\n return this._decode(decodeURIComponent(location.hash.slice(1)));\n }\n\n write(data: T): this {\n location.hash = \"#\" + encodeURIComponent(this._encode(data));\n return this;\n }\n\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hash.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","emitWritten","_encode","data","String","_decode","str","this","_emitWritten","cb","_cb","encode","decode","read","onhashchange","written","_hash","location","hash","undefined","console","warn","prevHash","_iId","clearInterval","setInterval","decodeURIComponent","slice","encodeURIComponent"],"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,iGCjFrD,aAWI,YAAYC,GAAc,GAHlB,KAAAC,QAAWC,GAAYC,OAAOD,GAC9B,KAAAE,QAAWC,GAAgBA,EAG/BC,KAAKC,aAAeP,EAGxB,SAASQ,GAEL,OADAF,KAAKG,IAAMD,EACJF,KAGX,OAAOI,EACAC,GAGH,OAFAL,KAAKL,QAAUS,EACfJ,KAAKF,QAAUO,EACRL,KAGX,SAEI,GADAA,KAAKG,KAAOH,KAAKG,IAAIH,KAAKM,QACtB,iBAAkB/C,OAClBgD,aAAe,KACX,MAAMC,EAAUR,KAAKS,QAAUC,SAASC,KACxCX,KAAKS,WAAQG,GACTZ,KAAKC,cAAiBO,GACtBR,KAAKG,KAAOH,KAAKG,IAAIH,KAAKM,aAG/B,CACHO,QAAQC,KAAK,oEACb,IAAIC,EAAWL,SAASC,KACpBX,KAAKgB,MACLC,cAAcjB,KAAKgB,MAEvBhB,KAAKgB,KAAOE,YAAY,KACpB,GAAIR,SAASC,OAASI,EAAU,CAC5BA,EAAWL,SAASC,KACpB,MAAMH,EAAUR,KAAKS,QAAUC,SAASC,KACxCX,KAAKS,WAAQG,GACTZ,KAAKC,cAAiBO,GACtBR,KAAKG,KAAOH,KAAKG,IAAIH,KAAKM,UAGnC,KAEP,OAAON,KAGX,OACI,OAAOA,KAAKF,QAAQqB,mBAAmBT,SAASC,KAAKS,MAAM,KAG/D,MAAMxB,GAGF,OAFAc,SAASC,KAAO,IAAMU,mBAAmBrB,KAAKL,QAAQC,IACtDI,KAAKS,MAAQC,SAASC,KACfX","file":"hash.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 = 10);\n","\nexport class Hash<T = string> {\n\n private _cb?: (data: T) => void;\n private _iId: any;\n\n private _emitWritten: boolean;\n private _hash?: string;\n\n private _encode = (data: T) => String(data);\n private _decode = (str: string) => str as any as T;\n\n constructor(emitWritten = true) {\n this._emitWritten = emitWritten;\n }\n\n onChange(cb: (data: T) => void): this {\n this._cb = cb;\n return this;\n }\n\n coders(encode: (data: T) => string,\n decode: (data: string) => T): this {\n this._encode = encode;\n this._decode = decode;\n return this;\n }\n\n listen(): this {\n this._cb && this._cb(this.read());\n if (\"onhashchange\" in window) {\n onhashchange = () => {\n const written = this._hash === location.hash;\n this._hash = undefined;\n if (this._emitWritten || !written) {\n this._cb && this._cb(this.read());\n }\n };\n } else {\n console.warn(`browser \"window.onhashchange\" not implemented, running emulation`);\n let prevHash = location.hash;\n if (this._iId) {\n clearInterval(this._iId);\n }\n this._iId = setInterval(() => {\n if (location.hash !== prevHash) {\n prevHash = location.hash;\n const written = this._hash === location.hash;\n this._hash = undefined;\n if (this._emitWritten || !written) {\n this._cb && this._cb(this.read());\n }\n }\n }, 500);\n }\n return this;\n }\n\n read(): T {\n return this._decode(decodeURIComponent(location.hash.slice(1)));\n }\n\n write(data: T): this {\n location.hash = \"#\" + encodeURIComponent(this._encode(data));\n this._hash = location.hash;\n return this;\n }\n\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=11)}({11:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.History=class{back(){window.history.back()}forward(){window.history.forward()}go(e){window.history.go(e)}length(){return window.history.length}state(){return window.history.state}pushState(e,t,r){window.history.pushState(e,t,r)}replaceState(e,t,r){window.history.replaceState(e,t,r)}onChange(e){return window.addEventListener("popstate",(function(t){e(t.state)})),this}}}})}));
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 o in r)("object"==typeof exports?exports:e)[o]=r[o]}}(window,(function(){return function(e){var t={};function r(o){if(t[o])return t[o].exports;var n=t[o]={i:o,l:!1,exports:{}};return e[o].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,o){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},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 o=Object.create(null);if(r.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(o,n,function(t){return e[t]}.bind(null,n));return o},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=11)}({11:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.History=void 0;t.History=class{back(){window.history.back()}forward(){window.history.forward()}go(e){window.history.go(e)}length(){return window.history.length}state(){return window.history.state}pushState(e,t,r){window.history.pushState(e,t,r)}replaceState(e,t,r){window.history.replaceState(e,t,r)}onChange(e){return window.addEventListener("popstate",(function(t){e(t.state)})),this}}}})}));
2
2
  //# sourceMappingURL=history.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/history.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","history","back","forward","delta","go","length","state","title","url","pushState","replaceState","callback","addEventListener","e","this"],"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,mFCjFrD,gBAEI,OACIlC,OAAOmC,QAAQC,OAGnB,UACIpC,OAAOmC,QAAQE,UAGnB,GAAGC,GACCtC,OAAOmC,QAAQI,GAAGD,GAGtB,SACI,OAAOtC,OAAOmC,QAAQK,OAG1B,QACI,OAAOxC,OAAOmC,QAAQM,MAG1B,UAAUA,EAAUC,EAAeC,GAC/B3C,OAAOmC,QAAQS,UAAUH,EAAOC,EAAOC,GAG3C,aAAaF,EAAUC,EAAeC,GAClC3C,OAAOmC,QAAQU,aAAaJ,EAAOC,EAAOC,GAG9C,SAASG,GAIL,OAHA9C,OAAO+C,iBAAiB,YAAY,SAAUC,GAC1CF,EAASE,EAAEP,UAERQ","file":"history.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 = 11);\n","\nexport class History<T> {\n\n back(): void {\n window.history.back();\n }\n\n forward(): void {\n window.history.forward();\n }\n\n go(delta?: number): void {\n window.history.go(delta);\n }\n\n length(): number {\n return window.history.length;\n }\n\n state(): T {\n return window.history.state as T;\n }\n\n pushState(state: T, title: string, url?: string): void {\n window.history.pushState(state, title, url);\n }\n\n replaceState(state: T, title: string, url?: string): void {\n window.history.replaceState(state, title, url);\n }\n\n onChange(callback: (state: T) => void): this {\n window.addEventListener(\"popstate\", function (e: PopStateEvent) {\n callback(e.state);\n });\n return this;\n }\n\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/history.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","history","back","forward","delta","go","length","state","title","url","pushState","replaceState","callback","addEventListener","e","this"],"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,oGCjFrD,gBAEI,OACIlC,OAAOmC,QAAQC,OAGnB,UACIpC,OAAOmC,QAAQE,UAGnB,GAAGC,GACCtC,OAAOmC,QAAQI,GAAGD,GAGtB,SACI,OAAOtC,OAAOmC,QAAQK,OAG1B,QACI,OAAOxC,OAAOmC,QAAQM,MAG1B,UAAUA,EAAUC,EAAeC,GAC/B3C,OAAOmC,QAAQS,UAAUH,EAAOC,EAAOC,GAG3C,aAAaF,EAAUC,EAAeC,GAClC3C,OAAOmC,QAAQU,aAAaJ,EAAOC,EAAOC,GAG9C,SAASG,GAIL,OAHA9C,OAAO+C,iBAAiB,YAAY,SAAUC,GAC1CF,EAASE,EAAEP,UAERQ","file":"history.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 = 11);\n","\nexport class History<T> {\n\n back(): void {\n window.history.back();\n }\n\n forward(): void {\n window.history.forward();\n }\n\n go(delta?: number): void {\n window.history.go(delta);\n }\n\n length(): number {\n return window.history.length;\n }\n\n state(): T {\n return window.history.state as T;\n }\n\n pushState(state: T, title: string, url?: string): void {\n window.history.pushState(state, title, url);\n }\n\n replaceState(state: T, title: string, url?: string): void {\n window.history.replaceState(state, title, url);\n }\n\n onChange(callback: (state: T) => void): this {\n window.addEventListener(\"popstate\", function (e: PopStateEvent) {\n callback(e.state);\n });\n return this;\n }\n\n}\n"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("IncrementalDOM"));else if("function"==typeof define&&define.amd)define(["IncrementalDOM"],e);else{var n="object"==typeof exports?e(require("IncrementalDOM")):e(t.IncrementalDOM);for(var s in n)("object"==typeof exports?exports:t)[s]=n[s]}}(window,(function(t){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=12)}({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],i=e[1],c=i&&i.constructor===Object;let a,r,u=[];const l=e[c?2:1];switch(l&&l.constructor){case Array:u=l;break;case Function:a=l;break;case String:case Boolean:case Number:case Date:u=[l];break;default:r=l}const h=o.split("~"),p=h[1],d=h[0].split("."),f=d[0].split("#"),m=f[0]||"div",b=f[1],y=d.slice(1);let _;_=c?i:{};b&&(_._id=b);y.length&&(_._classes=y);p&&(_._ref=p);r&&(_._hObj=r);const v=n.open(m,_,u,s);a&&n.fnc(a,s);v||u.forEach(e=>t(e,n,s));n.close(m,u,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,i=o.toLocaleString?o.toLocaleString():o.toString();n.text(i,s);break;case Date:const c=e,a=c.toLocaleString?c.toLocaleString():c.toString();n.text(a,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}},1:function(e,n){e.exports=t},12:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=n(2),o=console.log,i=console.error;var c;e.happ=function(t,e,n,s=document.body){return new u(t,e,n).mount(s)},function(t){t._init="_init",t._mount="_mount",t._umount="_umount"}(c=e.HAppAction||(e.HAppAction={}));const a=window.requestAnimationFrame||function(t){window.setTimeout(t,1e3/60)},r=window.cancelAnimationFrame||function(t){window.clearTimeout(t)};class u{constructor(t,e,n){this.refs={},this.dispatch=(t,e,n)=>{if(u.debug){o("HApp action:",{type:t,data:e,event:n});const s=performance.now();try{this.dispatcher(this,{type:t,data:e,event:n})}catch(t){i("HApp dispatch:",t)}const c=performance.now();o("HApp dispatch:",`${c-s} ms`,this.state)}else try{this.dispatcher(this,{type:t,data:e,event:n})}catch(t){i("HApp dispatch:",t)}},this.callDispatcher=(t,e,n)=>{t(Object.assign(Object.assign({},this),{state:e}),n)},this.render=()=>{if(u.debug){const t=performance.now();let e;try{e=this.view(this.state)}catch(t){i("HApp render:",t)}const n=performance.now();return o("HApp render:",`${n-t} ms`,e),e||[]}{let t;try{t=this.view(this.state)}catch(t){i("HApp render:",t)}return t||[]}},this.actionCb=(t,e,n)=>{void 0===(e=e&&e.constructor===Function?e(n):e)&&n&&(e=function(t){const e=t.target;switch(e.nodeName){case"FORM":t.preventDefault();const n=e.elements,s={};for(let t=0;t<n.length;t++){const e=h(n[t]);if("object"==typeof e){const o=Object.keys(e);if(o.length){const i=o[0],c=e[i];void 0===s[i]?s[i]=c:"string"==typeof s[i]||s[i]instanceof String?s[i]=c instanceof Array?[s[i],...c]:[s[i],c]:s[i]instanceof Array?c instanceof Array?s[i]=s[i].concat(c):s[i].push(c):s[i]=c instanceof Array?[s[i],...c]:[s[i],c],s[i]instanceof Array&&(s[i]=s[i].filter(t=>null!==t),"radio"===n[t].type&&(s[i]=s[i].length?s[i][0]:null))}}}return s;default:return h(e)}}(n)),this.dispatch(t,e,n)},this.mount=(t=document.body)=>{const e="string"==typeof t?document.getElementById(t)||document.body:t||document.body;if(e.app){e.app.umount()}if(!this.dom){this.dom=e,e.app=this,l(e,this.render(),this),this._onUpdate&&this._onUpdate(this),this.dispatch(c._mount,this.dom)}return this},this.umount=()=>{if(this.dom){this.dispatch(c._umount,this.dom),this.dom.hasAttribute("app")&&this.dom.removeAttribute("app");const t=this.dom.querySelectorAll("[app]");for(let e=0;e<t.length;e++){const n=t[e].app;n&&n.umount()}for(;this.dom.firstChild;)this.dom.removeChild(this.dom.firstChild);delete this.dom.app,this.dom=void 0}return this},this.update=()=>(this.dom&&!this._updateSched&&(this._updateSched=a(()=>{if(this.dom){const t=this.render();l(this.dom,t,this)}this._updateSched=void 0,this._onUpdate&&this._onUpdate(this)})),this),this.onUpdate=t=>(this._onUpdate=t,this),this.toHsml=()=>{if(this.dom){if(!this._updateSched)return["div",{_skip:!0}];r(this._updateSched),this._updateSched=void 0}const t=this.render();return t.push(t=>{this.dom||(this.dom=t,t.app=this,this.dispatch(c._mount,this.dom))}),["div",t]},this.toHtml=()=>this.dom?this.dom.outerHTML:"",this.state=t,this.view=e,this.dispatcher=n||((t,e)=>o("HApp action:",e.type,e.data)),this.dispatch(c._init)}}function l(t,e,n){if(u.debug){const i=performance.now();s.hsmls2idomPatch(t,e,n);const c=performance.now();o("HApp update:",`${c-i} ms`,t)}else s.hsmls2idomPatch(t,e,n)}function h(t){let e=null;switch(t.nodeName){case"INPUT":const n=t;switch(n.type){case"text":case"password":case"email":case"number":case"search":case"url":case"tel":case"color":case"date":case"datetime-local":case"month":case"range":case"time":case"week":case"submit":case"button":e=n.name?{[n.name]:n.value}:n.value;break;case"radio":e=n.name?{[n.name]:n.checked?n.value:null}:n.checked?n.value:null;break;case"checkbox":e="on"===n.value?n.name?{[n.name]:String(n.checked)}:String(n.checked):n.name?{[n.name]:n.checked?String(n.value):null}:n.checked?String(n.value):null}break;case"SELECT":const s=t;if(s.multiple){const t=Array.from(s.selectedOptions).map(t=>t.value);e=s.name?{[s.name]:t}:t}else e=s.name?{[s.name]:s.value}:s.value;break;case"TEXTAREA":const o=t;e=o.name?{[o.name]:o.value}:o.value;break;case"BUTTON":const i=t;e=i.name?{[i.name]:i.value}:i.value}return e}e.HApp=u,u.debug=!1},2:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});const s=n(0),o=n(1);class i{open(t,e,n,s){const i=[];let c=e._id,a=e._classes?e._classes:[],r=e._ref,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 o=e[t];for(const t in o)o.hasOwnProperty(t)&&(o[t].constructor===String?i.push("data-"+t,o[t]):i.push("data-"+t,JSON.stringify(o[t])));break;case"styles":i.push("style",e[t]);break;case"on":const r=e[t];"string"==typeof r[0]?"function"==typeof r[1]?i.push("on"+r[0],r[1]):i.push("on"+r[0],t=>{s&&s.actionCb&&"function"==typeof s.actionCb&&s.actionCb(r[1],r[2],t)}):r.forEach(t=>{"function"==typeof t[1]?i.push("on"+t[0],t[1]):i.push("on"+t[0],e=>{s&&s.actionCb&&"function"==typeof s.actionCb&&s.actionCb(t[1],t[2],e)})});break;default:switch(typeof e[t]){case"function":i.push("on"+t,e[t]);break;case"object":i.push(t,e[t]);break;case"boolean":e[t]&&i.push(t,"");break;default:i.push(t,e[t])}}return a.length&&i.unshift("class",a.join(" ")),c&&i.unshift("id",c),o.elementOpen(t,e._key,void 0,...i),e._skip&&o.skip(),s&&r&&(s.refs[r]=o.currentElement()),u&&u.mount&&u.mount.constructor===Function&&(u.mount(o.currentElement()),o.skip()),!!e._skip}close(t,e,n){o.elementClose(t)}text(t,e){o.text(t)}fnc(t,e){t(o.currentElement())&&o.skip()}obj(t,e){"toHsml"in t?t.toHsml&&s.hsml(t.toHsml(),this,t):this.text(""+t,e)}}function c(t,e){s.hsml(t,new i,e)}e.hsml2idomPatch=function(t,e,n){o.patch(t,t=>t&&c(t,n),e)},e.hsmls2idomPatch=function(t,e,n){o.patch(t,t=>t&&function(t,e){for(const n of t)if(null!=n)if(n.constructor===String)o.text(n);else if("toHsml"in n){const t=n;t.toHsml&&c(t.toHsml(),t)}else c(n,e)}(t,n),e)}}})}));
1
+ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("IncrementalDOM"));else if("function"==typeof define&&define.amd)define(["IncrementalDOM"],e);else{var n="object"==typeof exports?e(require("IncrementalDOM")):e(t.IncrementalDOM);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(window,(function(t){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var s=e[o]={i:o,l:!1,exports:{}};return t[o].call(s.exports,s,s.exports,n),s.l=!0,s.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 s in t)n.d(o,s,function(e){return t[e]}.bind(null,s));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=12)}({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 s=e[0],i=e[1],c=i&&i.constructor===Object;let a,r,u=[];const h=e[c?2:1];switch(h&&h.constructor){case Array:u=h;break;case Function:a=h;break;case String:case Boolean:case Number:case Date:u=[h];break;default:r=h}const l=s.split("~"),p=l[1],d=l[0].split("."),f=d[0].split("#"),m=f[0]||"div",b=f[1],y=d.slice(1);let v;v=c?i:{};b&&(v._id=b);y.length&&(v._classes=y);p&&(v._ref=p);r&&(v._hObj=r);const _=n.open(m,v,u,o);a&&n.fnc(a,o);_||u.forEach(e=>t(e,n,o));n.close(m,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 s=e,i=s.toLocaleString?s.toLocaleString():s.toString();n.text(i,o);break;case Date:const c=e,a=c.toLocaleString?c.toLocaleString():c.toString();n.text(a,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}},1:function(e,n){e.exports=t},12:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HApp=e.HAppAction=e.happ=void 0;const o=n(2),s=console.log,i=console.error;var c;e.happ=function(t,e,n,o=document.body){return new u(t,e,n).mount(o)},function(t){t._init="_init",t._mount="_mount",t._umount="_umount"}(c=e.HAppAction||(e.HAppAction={}));const a=window.requestAnimationFrame||function(t){window.setTimeout(t,1e3/60)},r=window.cancelAnimationFrame||function(t){window.clearTimeout(t)};class u{constructor(t,e,n){this.refs={},this.dispatch=(t,e,n)=>{if(u.debug){s("HApp action:",{type:t,data:e,event:n});const o=performance.now();try{this.dispatcher({type:t,data:e,event:n},this.state,this.dispatch),this.update()}catch(t){i("HApp dispatch:",t)}const c=performance.now();s("HApp dispatch:",c-o+" ms",this.state)}else try{this.dispatcher({type:t,data:e,event:n},this.state,this.dispatch),this.update()}catch(t){i("HApp dispatch:",t)}},this.render=()=>{if(u.debug){const t=performance.now();let e;try{e=this.view(this.state)}catch(t){i("HApp render:",t)}const n=performance.now();return s("HApp render:",n-t+" ms",e),e||[]}{let t;try{t=this.view(this.state)}catch(t){i("HApp render:",t)}return t||[]}},this.actionCb=(t,e,n)=>{void 0===(e=e&&e.constructor===Function?e(n):e)&&n&&(e=function(t){const e=t.target;switch(e.nodeName){case"FORM":t.preventDefault();const n=e.elements,o={};for(let t=0;t<n.length;t++){const e=l(n[t]);if("object"==typeof e){const s=Object.keys(e);if(s.length){const i=s[0],c=e[i];void 0===o[i]?o[i]=c:"string"==typeof o[i]||o[i]instanceof String?o[i]=c instanceof Array?[o[i],...c]:[o[i],c]:o[i]instanceof Array?c instanceof Array?o[i]=o[i].concat(c):o[i].push(c):o[i]=c instanceof Array?[o[i],...c]:[o[i],c],o[i]instanceof Array&&(o[i]=o[i].filter(t=>null!==t),"radio"===n[t].type&&(o[i]=o[i].length?o[i][0]:null))}}}return o;default:return l(e)}}(n)),this.dispatch(t,e,n)},this.mount=(t=document.body)=>{const e="string"==typeof t?document.getElementById(t)||document.body:t||document.body;if(e.app){e.app.umount()}if(!this.dom){this.dom=e,e.app=this;h(e,this.render(),this),this._onUpdate&&this._onUpdate(this),this.dispatch(c._mount,this.dom)}return this},this.umount=()=>{if(this.dom){this.dispatch(c._umount,this.dom),this.dom.hasAttribute("app")&&this.dom.removeAttribute("app");const t=this.dom.querySelectorAll("[app]");for(let e=0;e<t.length;e++){const n=t[e].app;n&&n.umount()}for(;this.dom.firstChild;)this.dom.removeChild(this.dom.firstChild);delete this.dom.app,this.dom=void 0}return this},this.update=()=>(this.dom&&!this._updateSched&&(this._updateSched=a(()=>{if(this.dom){const t=this.render();h(this.dom,t,this)}this._updateSched=void 0,this._onUpdate&&this._onUpdate(this)})),this),this.onUpdate=t=>(this._onUpdate=t,this),this.toHsml=()=>{if(this.dom){if(!this._updateSched)return["div",{_skip:!0}];r(this._updateSched),this._updateSched=void 0}const t=this.render();return t.push(t=>{this.dom||(this.dom=t,t.app=this,this.dispatch(c._mount,this.dom))}),["div",t]},this.toHtml=()=>this.dom?this.dom.outerHTML:"",this.state=t,this.view=e,this.dispatcher=n||(t=>s("HApp action:",t.type,t.data)),this.dispatch(c._init)}}function h(t,e,n){if(u.debug){const i=performance.now();o.hsmls2idomPatch(t,e,n);const c=performance.now();s("HApp update:",c-i+" ms",t)}else o.hsmls2idomPatch(t,e,n)}function l(t){let e=null;switch(t.nodeName){case"INPUT":const n=t;switch(n.type){case"text":case"password":case"email":case"number":case"search":case"url":case"tel":case"color":case"date":case"datetime-local":case"month":case"range":case"time":case"week":case"submit":case"button":e=n.name?{[n.name]:n.value}:n.value;break;case"radio":e=n.name?{[n.name]:n.checked?n.value:null}:n.checked?n.value:null;break;case"checkbox":e="on"===n.value?n.name?{[n.name]:String(n.checked)}:String(n.checked):n.name?{[n.name]:n.checked?String(n.value):null}:n.checked?String(n.value):null}break;case"SELECT":const o=t;if(o.multiple){const t=Array.from(o.selectedOptions).map(t=>t.value);e=o.name?{[o.name]:t}:t}else e=o.name?{[o.name]:o.value}:o.value;break;case"TEXTAREA":const s=t;e=s.name?{[s.name]:s.value}:s.value;break;case"BUTTON":const i=t;e=i.name?{[i.name]:i.value}:i.value}return e}e.HApp=u,u.debug=!1},2:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.hsmls2idomPatch=e.hsml2idomPatch=void 0;const o=n(0),s=n(1);class i{open(t,e,n,o){const i=[];let c=e._id,a=e._classes?e._classes:[],r=e._ref,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":i.push("style",e[t]);break;case"on":const r=e[t];"string"==typeof r[0]?"function"==typeof r[1]?i.push("on"+r[0],r[1]):i.push("on"+r[0],t=>{o&&o.actionCb&&"function"==typeof o.actionCb&&o.actionCb(r[1],r[2],t)}):r.forEach(t=>{"function"==typeof t[1]?i.push("on"+t[0],t[1]):i.push("on"+t[0],e=>{o&&o.actionCb&&"function"==typeof o.actionCb&&o.actionCb(t[1],t[2],e)})});break;default:switch(typeof e[t]){case"function":i.push("on"+t,e[t]);break;case"object":i.push(t,e[t]);break;case"boolean":e[t]&&i.push(t,t);break;default:i.push(t,e[t])}}return a.length&&i.unshift("class",a.join(" ")),c&&i.unshift("id",c),s.elementOpen(t,e._key,void 0,...i),e._skip&&s.skip(),o&&r&&(o.refs[r]=s.currentElement()),u&&u.mount&&u.mount.constructor===Function&&(u.mount(s.currentElement()),s.skip()),!!e._skip}close(t,e,n){s.elementClose(t)}text(t,e){s.text(t)}fnc(t,e){t(s.currentElement())&&s.skip()}obj(t,e){"toHsml"in t?t.toHsml&&o.hsml(t.toHsml(),this,t):this.text(""+t,e)}}function c(t,e){o.hsml(t,new i,e)}e.hsml2idomPatch=function(t,e,n){s.patch(t,t=>t&&c(t,n),e)},e.hsmls2idomPatch=function(t,e,n){s.patch(t,t=>t&&function(t,e){for(const n of t)if(null!=n)if(n.constructor===String)s.text(n);else if("toHsml"in n){const t=n;t.toHsml&&c(t.toHsml(),t)}else c(n,e)}(t,n),e)}}})}));
2
2
  //# sourceMappingURL=hsml-app.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml.ts","webpack:///external \"IncrementalDOM\"","webpack:///./src/hsml-app.ts","webpack:///./src/hsml-idom.ts"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__1__","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","log","err","HAppAction","state","view","dispatcher","element","document","body","HApp","mount","schedule","requestAnimationFrame","callback","setTimeout","unschedule","cancelAnimationFrame","handle","clearTimeout","refs","dispatch","type","data","event","debug","t0","performance","now","this","e","t1","callDispatcher","action","render","actionCb","undefined","el","target","nodeName","preventDefault","els","elements","formInputData","names","keys","concat","filter","formData","getElementById","app","umount","dom","updateDom","_onUpdate","_mount","_umount","hasAttribute","removeAttribute","aNodes","querySelectorAll","firstChild","removeChild","update","_updateSched","onUpdate","cb","toHsml","_skip","toHtml","outerHTML","_","_init","hsmls2idomPatch","iel","checked","sel","multiple","values","from","selectedOptions","map","tel","bel","HsmlIDomHandler","props","attrClasses","attrData","JSON","stringify","attrOn","attr","unshift","join","idom","elementOpen","_key","currentElement","elementClose","hsml2idom","node","hsmlEl","patch","hsmlFr","hmls","hsmls2idom"],"mappings":"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","file":"hsml-app.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"IncrementalDOM\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"IncrementalDOM\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"IncrementalDOM\")) : factory(root[\"IncrementalDOM\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__) {\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 = 12);\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","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","import { HElement, HElements, HAttrOnData, HAttrOnDataFnc, HHandlerCtx } from \"./hsml\";\nimport { hsmls2idomPatch } from \"./hsml-idom\";\n\nconst log = console.log;\nconst err = console.error;\n\nexport type HView<STATE> = (state: STATE) => HElements;\nexport type HView1<STATE> = (state: STATE) => HElement;\n\nexport interface HAction {\n type: string;\n data?: any;\n event?: Event;\n}\n\nexport type HDispatch = (type: HAction[\"type\"],\n data?: HAction[\"data\"],\n event?: HAction[\"event\"]) => void;\n\nexport type HUpdate = () => void;\n\nexport type HDispatcher<STATE> = (app: HApp<STATE>, action: HAction) => void;\n\n// export type Class<T = object> = new (...args: any[]) => T;\n\nexport function happ<STATE>(state: STATE,\n view: HView<STATE>,\n dispatcher?: HDispatcher<STATE>,\n element: Element | string | null = document.body) {\n return new HApp<STATE>(state, view, dispatcher).mount(element);\n}\n\nexport enum HAppAction {\n _init = \"_init\",\n _mount = \"_mount\",\n _umount = \"_umount\",\n}\n\nconst schedule = window.requestAnimationFrame ||\n // window.webkitRequestAnimationFrame ||\n // (window as any).mozRequestAnimationFrame ||\n // (window as any).oRequestAnimationFrame ||\n // (window as any).msRequestAnimationFrame ||\n function (callback: Function) { window.setTimeout(callback, 1000 / 60); };\n\nconst unschedule = window.cancelAnimationFrame ||\n // window.webkitCancelAnimationFrame ||\n // (window as any).mozCancelAnimationFrame ||\n // (window as any).oCancelAnimationFrame ||\n // (window as any).msCancelAnimationFrame ||\n function (handle: number) { window.clearTimeout(handle); };\n\nconst msgAction = \"HApp action:\";\nconst msgDispatch = \"HApp dispatch:\";\nconst msgRender = \"HApp render:\";\nconst msgUpdate = \"HApp update:\";\n\nexport class HApp<STATE> implements HHandlerCtx {\n\n static debug = false;\n\n readonly state: STATE;\n readonly view: HView<STATE>;\n readonly dispatcher: HDispatcher<STATE>;\n\n readonly dom?: Element;\n readonly refs: { [key: string]: HTMLElement } = {};\n\n private _updateSched?: number;\n\n private _onUpdate?: (app: HApp<STATE>) => void;\n\n constructor(state: STATE, view: HView<STATE>, dispatcher?: HDispatcher<STATE>) {\n this.state = state;\n this.view = view;\n this.dispatcher = dispatcher || ((_, a) => log(msgAction, a.type, a.data));\n this.dispatch(HAppAction._init);\n }\n\n dispatch: HDispatch = (type: string, data?: any, event?: Event): void => {\n if (HApp.debug) {\n log(msgAction, { type, data, event });\n const t0 = performance.now();\n try {\n this.dispatcher(this, { type, data, event });\n } catch (e) {\n err(msgDispatch, e);\n }\n const t1 = performance.now();\n log(msgDispatch, `${t1 - t0} ms`, this.state);\n } else {\n try {\n this.dispatcher(this, { type, data, event });\n } catch (e) {\n err(msgDispatch, e);\n }\n }\n }\n\n callDispatcher = <SUBSTATE>(dispatcher: HDispatcher<SUBSTATE>, state: SUBSTATE, action: HAction): void => {\n dispatcher({ ...this, state } as any, action);\n }\n\n render = (): HElements => {\n if (HApp.debug) {\n const t0 = performance.now();\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n err(msgRender, e);\n }\n const t1 = performance.now();\n log(msgRender, `${t1 - t0} ms`, hsmls);\n return hsmls || [];\n } else {\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n err(msgRender, e);\n }\n return hsmls || [];\n }\n }\n\n actionCb = (action: string, data: HAttrOnData, event: Event): void => {\n data = (data && data.constructor === Function)\n ? (data as HAttrOnDataFnc)(event)\n : data;\n if (data === undefined && event) {\n data = formData(event);\n }\n this.dispatch(action, data, event);\n }\n\n mount = (e: Element | string | null = document.body): this => {\n const el = (typeof e === \"string\")\n ? document.getElementById(e) || document.body\n : e || document.body;\n if ((el as any).app) {\n const a = (el as any).app as HApp<STATE>;\n a.umount();\n }\n if (!this.dom) {\n (this as any).dom = el;\n (el as any).app = this;\n const hsmls = (this as any).render();\n updateDom(el, hsmls, this);\n this._onUpdate && this._onUpdate(this);\n this.dispatch(HAppAction._mount, this.dom);\n }\n return this;\n }\n\n umount = (): this => {\n if (this.dom) {\n this.dispatch(HAppAction._umount, this.dom);\n if (this.dom.hasAttribute(\"app\")) {\n this.dom.removeAttribute(\"app\");\n }\n const aNodes = this.dom.querySelectorAll(\"[app]\");\n for (let i = 0; i < aNodes.length; i++) {\n const a = (aNodes[i] as any).app as HApp<STATE>;\n a && a.umount();\n }\n while (this.dom.firstChild /*.hasChildNodes()*/) {\n this.dom.removeChild(this.dom.firstChild);\n }\n delete (this.dom as any).app;\n (this as any).dom = undefined;\n }\n return this;\n }\n\n update = (): this => {\n if (this.dom && !this._updateSched) {\n this._updateSched = schedule(() => {\n if (this.dom) {\n const hsmls = this.render();\n updateDom(this.dom, hsmls, this);\n }\n this._updateSched = undefined;\n this._onUpdate && this._onUpdate(this);\n });\n }\n return this;\n }\n\n onUpdate = (cb: (app: HApp<STATE>) => void): this => {\n this._onUpdate = cb;\n return this;\n }\n\n toHsml = (): HElement => {\n if (this.dom) {\n if (this._updateSched) {\n unschedule(this._updateSched);\n this._updateSched = undefined;\n } else {\n return [\"div\", { _skip: true }];\n }\n }\n const hsmls = this.render();\n hsmls.push(\n (e: Element) => {\n if (!this.dom) {\n (this as any).dom = e;\n (e as any).app = this;\n this.dispatch(HAppAction._mount, this.dom);\n }\n });\n return [\"div\", hsmls];\n }\n\n toHtml = (): string => {\n return this.dom ? this.dom.outerHTML : \"\";\n }\n\n}\n\nfunction updateDom(el: Element, hsml: HElements, ctx: HHandlerCtx): void {\n if (HApp.debug) {\n const t0 = performance.now();\n hsmls2idomPatch(el, hsml, ctx);\n const t1 = performance.now();\n log(msgUpdate, `${t1 - t0} ms`, el);\n } else {\n hsmls2idomPatch(el, hsml, ctx);\n }\n}\n\nfunction formData(e: Event): { [k: string]: string | number | boolean | null | Array<string | null> } | string | number | boolean | null | Array<string | null> {\n const el = e.target as HTMLElement;\n switch (el.nodeName) {\n case \"FORM\":\n (e as Event).preventDefault();\n const els = (el as HTMLFormElement).elements;\n const data = {} as { [k: string]: string | null | Array<string | null> };\n for (let i = 0; i < els.length; i++) {\n const d = formInputData(els[i]);\n if (typeof d === \"object\") {\n const names = Object.keys(d as object);\n if (names.length) {\n const name = names[0];\n const value = (d as any)[name];\n if (data[name] === undefined) {\n data[name] = value;\n } else if (typeof data[name] === \"string\" || data[name] instanceof String) {\n if (value instanceof Array) {\n data[name] = [data[name] as string, ...value];\n } else {\n data[name] = [data[name] as string, value as string];\n }\n } else if (data[name] instanceof Array) {\n if (value instanceof Array) {\n data[name] = (data[name] as Array<string | null>).concat(value);\n } else {\n (data[name] as Array<string | null>).push(value);\n }\n } else {\n if (value instanceof Array) {\n data[name] = [data[name] as string, ...value];\n } else {\n data[name] = [data[name] as string, value];\n }\n }\n if (data[name] instanceof Array) {\n data[name] = (data[name] as Array<string | null>)\n .filter(d => d !== null);\n if ((els[i] as HTMLInputElement).type === \"radio\") {\n data[name] = (data[name] as Array<string | null>).length\n ? (data[name] as Array<string | null>)[0]\n : null;\n }\n }\n }\n }\n }\n return data;\n default:\n return formInputData(el);\n }\n}\n\nfunction formInputData(el: Element): { [k: string]: string | string[] | null } | string | string[] | number | boolean | null {\n let data: { [k: string]: string | string[] | null } | string | string[] | number | boolean | null = null;\n switch (el.nodeName) {\n case \"INPUT\":\n const iel = el as HTMLInputElement;\n switch (iel.type) {\n case \"text\":\n case \"password\":\n case \"email\":\n case \"number\":\n case \"search\":\n case \"url\":\n case \"tel\":\n case \"color\":\n case \"date\":\n case \"datetime-local\":\n case \"month\":\n case \"range\":\n case \"time\":\n case \"week\":\n case \"submit\":\n case \"button\":\n if (iel.name) {\n data = { [iel.name]: iel.value };\n } else {\n data = iel.value;\n }\n break;\n case \"radio\":\n if (iel.name) {\n data = { [iel.name]: iel.checked ? iel.value : null };\n } else {\n data = iel.checked ? iel.value : null;\n }\n break;\n case \"checkbox\":\n if (iel.value === \"on\") { // value not set in element\n if (iel.name) {\n data = { [iel.name]: String(iel.checked) };\n } else {\n data = String(iel.checked);\n }\n } else {\n if (iel.name) {\n data = { [iel.name]: iel.checked\n ? String(iel.value)\n : null };\n } else {\n data = iel.checked\n ? String(iel.value)\n : null;\n }\n }\n break;\n }\n break;\n case \"SELECT\":\n const sel = el as HTMLSelectElement;\n if (sel.multiple) {\n const values = Array.from(sel.selectedOptions).map(o => o.value);\n if (sel.name) {\n data = { [sel.name]: values };\n } else {\n data = values;\n }\n } else {\n if (sel.name) {\n data = { [sel.name]: sel.value };\n } else {\n data = sel.value;\n }\n }\n break;\n case \"TEXTAREA\":\n const tel = el as HTMLTextAreaElement;\n if (tel.name) {\n data = { [tel.name]: tel.value };\n } else {\n data = tel.value;\n }\n break;\n case \"BUTTON\":\n const bel = el as HTMLButtonElement;\n if (bel.name) {\n data = { [bel.name]: bel.value };\n } else {\n data = bel.value;\n }\n break;\n }\n return data;\n}\n\n// export const formInputData = <STATE>(dispatcher: Actions<STATE>): Actions<STATE> =>\n// (app: App<STATE>, action: string | number, data?: any, event?: Event): void => {\n// if (data === undefined && event) {\n// data = inputEventData(event);\n// }\n// dispatcher(app, action, data, event);\n// };\n\n// // Decorator\n// export function FormInputData() {\n// return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n// const method = descriptor.value;\n// descriptor.value = formInputData(method);\n// return descriptor;\n// };\n// }\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\";\nimport * as idom from \"incremental-dom\";\n\n// function setBoolAttrProp(el: any, attr: string, value: any) {\n// // console.log(\"idom.attributes\", attr, value, typeof value, el);\n// if (typeof value === \"string\") {\n// let b;\n// switch (value) {\n// case \"true\":\n// case \"1\":\n// case \"on\":\n// case \"yes\":\n// b = true;\n// break;\n// default:\n// b = false;\n// }\n// if (b) {\n// el.setAttribute(attr, value);\n// } else {\n// el.removeAttribute(attr);\n// }\n// el[attr] = b;\n// } else if (typeof value === \"boolean\") {\n// if (value) {\n// el.setAttribute(attr, \"\");\n// } else {\n// el.removeAttribute(attr);\n// }\n// el[attr] = value;\n// } else {\n// if (value) {\n// el.setAttribute(attr, value ? value : \"\");\n// } else {\n// el.removeAttribute(attr);\n// }\n// }\n// }\n\n// const boolAttrProps = [\n// \"readonly\",\n// \"disabled\",\n// \"checked\",\n// \"value\"\n// ];\n\n// boolAttrProps.forEach(a => idom.attributes[a] = setBoolAttrProp);\n\nclass HsmlIDomHandler implements HHandler<HHandlerCtx> {\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 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 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 props.push(\"style\", attrs[a] as HAttrStyles);\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 props.push(\"on\" + attrOn[0], attrOn[1]);\n } else {\n props.push(\"on\" + attrOn[0], (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 attr[1] === \"function\") {\n props.push(\"on\" + attr[0], attr[1]);\n } else {\n props.push(\"on\" + attr[0], (e: Event) => {\n ctx && ctx.actionCb &&\n typeof ctx.actionCb === \"function\" &&\n ctx.actionCb(attr[1] as HAttrOnAction,\n attr[2] as HAttrOnData,\n e);\n });\n }\n });\n }\n break;\n default:\n // http://google.github.io/incremental-dom/#attributes-and-properties\n switch (typeof attrs[a]) {\n case \"function\":\n props.push(\"on\" + a, attrs[a]);\n break;\n case \"object\":\n // console.log(\"---\", a, typeof attrs[a], attrs[a]);\n // console.log(\"---String \", attrs[a] instanceof String);\n // console.log(\"---Boolean\", attrs[a] instanceof Boolean);\n // console.log(\"---Number \", attrs[a] instanceof Number);\n props.push(a, attrs[a]);\n break;\n // case \"boolean\":\n // if (boolAttrProps.includes(a)) {\n // props.push(a, attrs[a]);\n // } else {\n // attrs[a] && props.push(a, \"\");\n // }\n // break;\n case \"boolean\":\n attrs[a] && props.push(a, \"\");\n break;\n default:\n props.push(a, attrs[a]);\n break;\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 idom.elementOpen(tag, attrs._key, undefined, ...props);\n if (attrs._skip) {\n idom.skip();\n }\n if (ctx && ref) {\n ctx.refs[ref] = idom.currentElement();\n }\n if (hObj && hObj.mount && hObj.mount.constructor === Function) {\n hObj.mount(idom.currentElement());\n idom.skip();\n }\n return attrs._skip ? true : false;\n }\n\n close(tag: HHead, children: HElements, ctx?: HHandlerCtx): void {\n idom.elementClose(tag);\n }\n\n text(text: string, ctx?: HHandlerCtx): void {\n idom.text(text);\n }\n\n fnc(fnc: HFnc, ctx?: HHandlerCtx): void {\n const skip = fnc(idom.currentElement());\n skip && idom.skip();\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\nfunction hsml2idom(hml: HElement, ctx?: HHandlerCtx): void {\n hsml(hml, new HsmlIDomHandler(), ctx);\n}\n\nfunction hsmls2idom(hmls: HElements, ctx?: HHandlerCtx): void {\n for (const hml of hmls) {\n if (hml === undefined || hml === null) {\n continue;\n }\n if (hml.constructor === String) {\n idom.text(hml as string);\n } else if (\"toHsml\" in (hml as any)) {\n const obj = hml as HHandlerCtx;\n obj.toHsml && hsml2idom(obj.toHsml(), obj);\n } else {\n hsml2idom(hml as HElement, ctx);\n }\n }\n}\n\nexport function hsml2idomPatch(node: Element, hsmlEl: HElement, ctx?: HHandlerCtx): void {\n idom.patch(node,\n (data?: HElement) => (data && hsml2idom(data, ctx)), hsmlEl);\n}\n\nexport function hsmls2idomPatch(node: Element, hsmlFr: HElements, ctx?: HHandlerCtx): void {\n idom.patch(node,\n (data?: HElements) => (data && hsmls2idom(data, ctx)), hsmlFr);\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml.ts","webpack:///external \"IncrementalDOM\"","webpack:///./src/hsml-app.ts","webpack:///./src/hsml-idom.ts"],"names":["root","factory","exports","module","require","define","amd","a","i","window","__WEBPACK_EXTERNAL_MODULE__1__","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","log","err","HAppAction","state","view","dispatcher","element","document","body","HApp","mount","schedule","requestAnimationFrame","callback","setTimeout","unschedule","cancelAnimationFrame","handle","clearTimeout","refs","dispatch","type","data","event","debug","t0","performance","now","this","update","e","t1","render","actionCb","action","undefined","el","target","nodeName","preventDefault","els","elements","formInputData","names","keys","concat","filter","formData","getElementById","app","umount","dom","updateDom","_onUpdate","_mount","_umount","hasAttribute","removeAttribute","aNodes","querySelectorAll","firstChild","removeChild","_updateSched","onUpdate","cb","toHsml","_skip","toHtml","outerHTML","_init","hsmls2idomPatch","iel","checked","sel","multiple","values","from","selectedOptions","map","tel","bel","HsmlIDomHandler","props","attrClasses","attrData","JSON","stringify","attrOn","attr","unshift","join","idom","elementOpen","_key","currentElement","elementClose","hsml2idom","node","hsmlEl","patch","hsmlFr","hmls","hsmls2idom"],"mappings":"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","file":"hsml-app.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"IncrementalDOM\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"IncrementalDOM\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"IncrementalDOM\")) : factory(root[\"IncrementalDOM\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function(__WEBPACK_EXTERNAL_MODULE__1__) {\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 = 12);\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","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","import { HElement, HElements, HAttrOnData, HAttrOnDataFnc, HHandlerCtx } from \"./hsml\";\nimport { hsmls2idomPatch } from \"./hsml-idom\";\n\nconst log = console.log;\nconst err = console.error;\n\nexport type HView<STATE> = (state: STATE) => HElements;\nexport type HView1<STATE> = (state: STATE) => HElement;\n\nexport interface HAction {\n type: string;\n data?: any;\n event?: Event;\n}\n\nexport type HDispatch = (type: HAction[\"type\"],\n data?: HAction[\"data\"],\n event?: HAction[\"event\"]) => void;\n\nexport type HUpdate = () => void;\n\nexport type HDispatcher<STATE> = (action: HAction, state: STATE, dispatch: HDispatch) => void;\n\n// export type Class<T = object> = new (...args: any[]) => T;\n\nexport function happ<STATE>(state: STATE,\n view: HView<STATE>,\n dispatcher?: HDispatcher<STATE>,\n element: Element | string | null = document.body) {\n return new HApp<STATE>(state, view, dispatcher).mount(element);\n}\n\nexport enum HAppAction {\n _init = \"_init\",\n _mount = \"_mount\",\n _umount = \"_umount\",\n}\n\nconst schedule = window.requestAnimationFrame ||\n // window.webkitRequestAnimationFrame ||\n // (window as any).mozRequestAnimationFrame ||\n // (window as any).oRequestAnimationFrame ||\n // (window as any).msRequestAnimationFrame ||\n function (callback: Function) { window.setTimeout(callback, 1000 / 60); };\n\nconst unschedule = window.cancelAnimationFrame ||\n // window.webkitCancelAnimationFrame ||\n // (window as any).mozCancelAnimationFrame ||\n // (window as any).oCancelAnimationFrame ||\n // (window as any).msCancelAnimationFrame ||\n function (handle: number) { window.clearTimeout(handle); };\n\nconst msgAction = \"HApp action:\";\nconst msgDispatch = \"HApp dispatch:\";\nconst msgRender = \"HApp render:\";\nconst msgUpdate = \"HApp update:\";\n\nexport class HApp<STATE> implements HHandlerCtx {\n\n static debug = false;\n\n readonly state: STATE;\n readonly view: HView<STATE>;\n readonly dispatcher: HDispatcher<STATE>;\n\n readonly dom?: Element;\n readonly refs: { [key: string]: HTMLElement } = {};\n\n private _updateSched?: number;\n\n private _onUpdate?: (app: HApp<STATE>) => void;\n\n constructor(state: STATE, view: HView<STATE>, dispatcher?: HDispatcher<STATE>) {\n this.state = state;\n this.view = view;\n this.dispatcher = dispatcher || ((a) => log(msgAction, a.type, a.data));\n this.dispatch(HAppAction._init);\n }\n\n dispatch: HDispatch = (type: string, data?: any, event?: Event): void => {\n if (HApp.debug) {\n log(msgAction, { type, data, event });\n const t0 = performance.now();\n try {\n this.dispatcher({ type, data, event }, this.state, this.dispatch);\n this.update();\n } catch (e) {\n err(msgDispatch, e);\n }\n const t1 = performance.now();\n log(msgDispatch, `${t1 - t0} ms`, this.state);\n } else {\n try {\n this.dispatcher({ type, data, event }, this.state, this.dispatch);\n this.update();\n } catch (e) {\n err(msgDispatch, e);\n }\n }\n }\n\n render = (): HElements => {\n if (HApp.debug) {\n const t0 = performance.now();\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n err(msgRender, e);\n }\n const t1 = performance.now();\n log(msgRender, `${t1 - t0} ms`, hsmls);\n return hsmls || [];\n } else {\n let hsmls;\n try {\n hsmls = this.view(this.state);\n } catch (e) {\n err(msgRender, e);\n }\n return hsmls || [];\n }\n }\n\n actionCb = (action: string, data: HAttrOnData, event: Event): void => {\n data = (data && data.constructor === Function)\n ? (data as HAttrOnDataFnc)(event)\n : data;\n if (data === undefined && event) {\n data = formData(event);\n }\n this.dispatch(action, data, event);\n }\n\n mount = (e: Element | string | null = document.body): this => {\n const el = (typeof e === \"string\")\n ? document.getElementById(e) || document.body\n : e || document.body;\n if ((el as any).app) {\n const a = (el as any).app as HApp<STATE>;\n a.umount();\n }\n if (!this.dom) {\n (this as any).dom = el;\n (el as any).app = this;\n const hsmls = (this as any).render();\n updateDom(el, hsmls, this);\n this._onUpdate && this._onUpdate(this);\n this.dispatch(HAppAction._mount, this.dom);\n }\n return this;\n }\n\n umount = (): this => {\n if (this.dom) {\n this.dispatch(HAppAction._umount, this.dom);\n if (this.dom.hasAttribute(\"app\")) {\n this.dom.removeAttribute(\"app\");\n }\n const aNodes = this.dom.querySelectorAll(\"[app]\");\n for (let i = 0; i < aNodes.length; i++) {\n const a = (aNodes[i] as any).app as HApp<STATE>;\n a && a.umount();\n }\n while (this.dom.firstChild /*.hasChildNodes()*/) {\n this.dom.removeChild(this.dom.firstChild);\n }\n delete (this.dom as any).app;\n (this as any).dom = undefined;\n }\n return this;\n }\n\n update = (): this => {\n if (this.dom && !this._updateSched) {\n this._updateSched = schedule(() => {\n if (this.dom) {\n const hsmls = this.render();\n updateDom(this.dom, hsmls, this);\n }\n this._updateSched = undefined;\n this._onUpdate && this._onUpdate(this);\n });\n }\n return this;\n }\n\n onUpdate = (cb: (app: HApp<STATE>) => void): this => {\n this._onUpdate = cb;\n return this;\n }\n\n toHsml = (): HElement => {\n if (this.dom) {\n if (this._updateSched) {\n unschedule(this._updateSched);\n this._updateSched = undefined;\n } else {\n return [\"div\", { _skip: true }];\n }\n }\n const hsmls = this.render();\n hsmls.push(\n (e: Element) => {\n if (!this.dom) {\n (this as any).dom = e;\n (e as any).app = this;\n this.dispatch(HAppAction._mount, this.dom);\n }\n });\n return [\"div\", hsmls];\n }\n\n toHtml = (): string => {\n return this.dom ? this.dom.outerHTML : \"\";\n }\n\n}\n\nfunction updateDom(el: Element, hsml: HElements, ctx: HHandlerCtx): void {\n if (HApp.debug) {\n const t0 = performance.now();\n hsmls2idomPatch(el, hsml, ctx);\n const t1 = performance.now();\n log(msgUpdate, `${t1 - t0} ms`, el);\n } else {\n hsmls2idomPatch(el, hsml, ctx);\n }\n}\n\nfunction formData(e: Event): { [k: string]: string | number | boolean | null | Array<string | null> } | string | number | boolean | null | Array<string | null> {\n const el = e.target as HTMLElement;\n switch (el.nodeName) {\n case \"FORM\":\n (e as Event).preventDefault();\n const els = (el as HTMLFormElement).elements;\n const data = {} as { [k: string]: string | null | Array<string | null> };\n for (let i = 0; i < els.length; i++) {\n const d = formInputData(els[i]);\n if (typeof d === \"object\") {\n const names = Object.keys(d as object);\n if (names.length) {\n const name = names[0];\n const value = (d as any)[name];\n if (data[name] === undefined) {\n data[name] = value;\n } else if (typeof data[name] === \"string\" || data[name] instanceof String) {\n if (value instanceof Array) {\n data[name] = [data[name] as string, ...value];\n } else {\n data[name] = [data[name] as string, value as string];\n }\n } else if (data[name] instanceof Array) {\n if (value instanceof Array) {\n data[name] = (data[name] as Array<string | null>).concat(value);\n } else {\n (data[name] as Array<string | null>).push(value);\n }\n } else {\n if (value instanceof Array) {\n data[name] = [data[name] as string, ...value];\n } else {\n data[name] = [data[name] as string, value];\n }\n }\n if (data[name] instanceof Array) {\n data[name] = (data[name] as Array<string | null>)\n .filter(d => d !== null);\n if ((els[i] as HTMLInputElement).type === \"radio\") {\n data[name] = (data[name] as Array<string | null>).length\n ? (data[name] as Array<string | null>)[0]\n : null;\n }\n }\n }\n }\n }\n return data;\n default:\n return formInputData(el);\n }\n}\n\nfunction formInputData(el: Element): { [k: string]: string | string[] | null } | string | string[] | number | boolean | null {\n let data: { [k: string]: string | string[] | null } | string | string[] | number | boolean | null = null;\n switch (el.nodeName) {\n case \"INPUT\":\n const iel = el as HTMLInputElement;\n switch (iel.type) {\n case \"text\":\n case \"password\":\n case \"email\":\n case \"number\":\n case \"search\":\n case \"url\":\n case \"tel\":\n case \"color\":\n case \"date\":\n case \"datetime-local\":\n case \"month\":\n case \"range\":\n case \"time\":\n case \"week\":\n case \"submit\":\n case \"button\":\n if (iel.name) {\n data = { [iel.name]: iel.value };\n } else {\n data = iel.value;\n }\n break;\n case \"radio\":\n if (iel.name) {\n data = { [iel.name]: iel.checked ? iel.value : null };\n } else {\n data = iel.checked ? iel.value : null;\n }\n break;\n case \"checkbox\":\n if (iel.value === \"on\") { // value not set in element\n if (iel.name) {\n data = { [iel.name]: String(iel.checked) };\n } else {\n data = String(iel.checked);\n }\n } else {\n if (iel.name) {\n data = { [iel.name]: iel.checked\n ? String(iel.value)\n : null };\n } else {\n data = iel.checked\n ? String(iel.value)\n : null;\n }\n }\n break;\n }\n break;\n case \"SELECT\":\n const sel = el as HTMLSelectElement;\n if (sel.multiple) {\n const values = Array.from(sel.selectedOptions).map(o => o.value);\n if (sel.name) {\n data = { [sel.name]: values };\n } else {\n data = values;\n }\n } else {\n if (sel.name) {\n data = { [sel.name]: sel.value };\n } else {\n data = sel.value;\n }\n }\n break;\n case \"TEXTAREA\":\n const tel = el as HTMLTextAreaElement;\n if (tel.name) {\n data = { [tel.name]: tel.value };\n } else {\n data = tel.value;\n }\n break;\n case \"BUTTON\":\n const bel = el as HTMLButtonElement;\n if (bel.name) {\n data = { [bel.name]: bel.value };\n } else {\n data = bel.value;\n }\n break;\n }\n return data;\n}\n\n// export const formInputData = <STATE>(dispatcher: Actions<STATE>): Actions<STATE> =>\n// (app: App<STATE>, action: string | number, data?: any, event?: Event): void => {\n// if (data === undefined && event) {\n// data = inputEventData(event);\n// }\n// dispatcher(app, action, data, event);\n// };\n\n// // Decorator\n// export function FormInputData() {\n// return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) {\n// const method = descriptor.value;\n// descriptor.value = formInputData(method);\n// return descriptor;\n// };\n// }\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\";\nimport * as idom from \"incremental-dom\";\n\n// function setBoolAttrProp(el: any, attr: string, value: any) {\n// // console.log(\"idom.attributes\", attr, value, typeof value, el);\n// if (typeof value === \"string\") {\n// let b;\n// switch (value) {\n// case \"true\":\n// case \"1\":\n// case \"on\":\n// case \"yes\":\n// b = true;\n// break;\n// default:\n// b = false;\n// }\n// if (b) {\n// el.setAttribute(attr, value);\n// } else {\n// el.removeAttribute(attr);\n// }\n// el[attr] = b;\n// } else if (typeof value === \"boolean\") {\n// if (value) {\n// el.setAttribute(attr, \"\");\n// } else {\n// el.removeAttribute(attr);\n// }\n// el[attr] = value;\n// } else {\n// if (value) {\n// el.setAttribute(attr, value ? value : \"\");\n// } else {\n// el.removeAttribute(attr);\n// }\n// }\n// }\n\n// const boolAttrProps = [\n// \"readonly\",\n// \"disabled\",\n// \"checked\",\n// \"value\"\n// ];\n\n// boolAttrProps.forEach(a => idom.attributes[a] = setBoolAttrProp);\n\nclass HsmlIDomHandler implements HHandler<HHandlerCtx> {\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 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 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 props.push(\"style\", attrs[a] as HAttrStyles);\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 props.push(\"on\" + attrOn[0], attrOn[1]);\n } else {\n props.push(\"on\" + attrOn[0], (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 attr[1] === \"function\") {\n props.push(\"on\" + attr[0], attr[1]);\n } else {\n props.push(\"on\" + attr[0], (e: Event) => {\n ctx && ctx.actionCb &&\n typeof ctx.actionCb === \"function\" &&\n ctx.actionCb(attr[1] as HAttrOnAction,\n attr[2] as HAttrOnData,\n e);\n });\n }\n });\n }\n break;\n default:\n // http://google.github.io/incremental-dom/#attributes-and-properties\n switch (typeof attrs[a]) {\n case \"function\":\n props.push(\"on\" + a, attrs[a]);\n break;\n case \"object\":\n // console.log(\"---\", a, typeof attrs[a], attrs[a]);\n // console.log(\"---String \", attrs[a] instanceof String);\n // console.log(\"---Boolean\", attrs[a] instanceof Boolean);\n // console.log(\"---Number \", attrs[a] instanceof Number);\n props.push(a, attrs[a]);\n break;\n // case \"boolean\":\n // if (boolAttrProps.includes(a)) {\n // props.push(a, attrs[a]);\n // } else {\n // attrs[a] && props.push(a, a);\n // }\n // break;\n case \"boolean\":\n attrs[a] && props.push(a, a);\n break;\n default:\n props.push(a, attrs[a]);\n break;\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 idom.elementOpen(tag, attrs._key, undefined, ...props);\n if (attrs._skip) {\n idom.skip();\n }\n if (ctx && ref) {\n ctx.refs[ref] = idom.currentElement();\n }\n if (hObj && hObj.mount && hObj.mount.constructor === Function) {\n hObj.mount(idom.currentElement());\n idom.skip();\n }\n return attrs._skip ? true : false;\n }\n\n close(tag: HHead, children: HElements, ctx?: HHandlerCtx): void {\n idom.elementClose(tag);\n }\n\n text(text: string, ctx?: HHandlerCtx): void {\n idom.text(text);\n }\n\n fnc(fnc: HFnc, ctx?: HHandlerCtx): void {\n const skip = fnc(idom.currentElement());\n skip && idom.skip();\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\nfunction hsml2idom(hml: HElement, ctx?: HHandlerCtx): void {\n hsml(hml, new HsmlIDomHandler(), ctx);\n}\n\nfunction hsmls2idom(hmls: HElements, ctx?: HHandlerCtx): void {\n for (const hml of hmls) {\n if (hml === undefined || hml === null) {\n continue;\n }\n if (hml.constructor === String) {\n idom.text(hml as string);\n } else if (\"toHsml\" in (hml as any)) {\n const obj = hml as HHandlerCtx;\n obj.toHsml && hsml2idom(obj.toHsml(), obj);\n } else {\n hsml2idom(hml as HElement, ctx);\n }\n }\n}\n\nexport function hsml2idomPatch(node: Element, hsmlEl: HElement, ctx?: HHandlerCtx): void {\n idom.patch(node,\n (data?: HElement) => (data && hsml2idom(data, ctx)), hsmlEl);\n}\n\nexport function hsmls2idomPatch(node: Element, hsmlFr: HElements, ctx?: HHandlerCtx): void {\n idom.patch(node,\n (data?: HElements) => (data && hsmls2idom(data, ctx)), hsmlFr);\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 o=t();for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(window,(function(){return function(e){var t={};function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=29)}({29:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=/data-(.+)/;function r(e,t=0){var o;let a="";if(e.nodeType===Node.TEXT_NODE){const n=null===(o=null==e?void 0:e.textContent)||void 0===o?void 0:o.trim();return a+=`${s(t)}${JSON.stringify(n)}`,a}if(e.nodeType===Node.ELEMENT_NODE){const o=e,r=Array.from(o.attributes).reduce((e,t,o)=>(e[t.nodeName]=t.nodeValue,e),{}),l=Object.keys(r);let c,u=[];const d={},f={};l.length&&l.forEach(e=>{const t=r[e];if("id"===e.toLowerCase())c=t;else if("class"===e.toLowerCase()){const e=t.split(" ");u=u.concat(e)}else if(n.test(e.toLowerCase())){const o=n.exec(e);f[o[1].toLowerCase()]=t}else d[e.toLowerCase()]=t});let p=o.tagName.toLowerCase();c&&(p+="#"+c),u.length&&(p+="."+u.join(".")),Object.keys(f).length&&(d.data=f),a+=`${s(t)}["${p.toLowerCase()}"`,Object.keys(d).length&&(a+=`,\n${s(t+1)}${i(d)}`),o.hasChildNodes()&&(a+=`,\n${s(t+1)}[`)}let l=0;if(e.hasChildNodes()){let o=e.firstChild;for(;o;)a+=`${l?",":""}\n${r(o,t+2)}`,o=o.nextSibling,l++}if(e.nodeType===Node.ELEMENT_NODE){e.hasChildNodes()&&(a+=`\n${s(t+1)}]`),a+=`\n${s(t)}]`}return t||(a=a.replace(/\[\s+\"\"\s+\]$/gm,"[]"),a=a.replace(/\[\s+\"\",?$/gm,"["),a=a.replace(/,\s+\"\"(,?)$/gm,"$1"),a=a.replace(/,\s+\[\](\s+],?)$/gm,"$1"),a=a.replace(/(},\s+)\[\s+(\".+\")\s+\](,?)$/gm,"$1$2$3"),a=a.replace(/(\[\"[a-zA-Z0-9_\#\.-]+\",)\s+\[\s+(\".+\")\s+\]\s+(\],?)$/gm,"$1 $2$3"),a=a.replace(/(\[\"[a-zA-Z0-9_\#\.-]+\")\s+(\],?)$/gm,"$1$2")),a}function s(e){let t="";for(let o=0;o<e;o++)t+=" ";return t}function i(e){if("object"!=typeof e||Array.isArray(e))return JSON.stringify(e);return`{ ${Object.keys(e).map(t=>`${t}: ${i(e[t])}`).join(", ")} }`}t.dom2hsmlStr=r,t.html2hsmlStr=function(e){const t=(new DOMParser).parseFromString(e,"text/html").getElementsByTagName("body")[0].firstChild;return t?r(t):""};class a{constructor(){this._root=[[]],this._nodePath=[],this._pointer=this._root,this._dataRegex=/data-(.+)/}root(){return this._root[0][0]}text(e){const t=e.trim().replace(/\s+/gm," ");t&&this._pointer[this._pointer.length-1].push(t)}open(e){const t=Object.keys(e.attributes);let o,n=[];const r={},s={};t.length&&t.forEach(t=>{const i=e.attributes[t];if("id"===t)o=i;else if("class"===t){const e=i.split(" ");n=n.concat(e)}else if(this._dataRegex.test(t)){const e=this._dataRegex.exec(t);s[e[1]]=i}else r[t]=i});let i=e.name;o&&(i+="#"+o),n.length&&(i+="."+n.join(".")),Object.keys(s).length&&(r.data=s);const a=[i];Object.keys(r).length&&a.push(r);a.push([]),this._pointer[this._pointer.length-1].push(a),this._nodePath.push(a),this._pointer=a}close(e){const t=this._nodePath.pop();0===t[t.length-1].length&&t.pop(),this._pointer=this._nodePath[this._nodePath.length-1]}}function l(e){const t=new a;return e&&function e(t,o){var n;if(t.nodeType===Node.TEXT_NODE){const e=null===(n=null==t?void 0:t.textContent)||void 0===n?void 0:n.trim();e&&o.text(e)}if(t.nodeType===Node.ELEMENT_NODE){const e=t,n=Array.from(e.attributes).reduce((e,t,o)=>(e[t.nodeName]=t.nodeValue,e),{});o.open({name:e.tagName.toLowerCase(),attributes:n})}if(t.hasChildNodes()){let n=t.firstChild;for(;n;)e(n,o),n=n.nextSibling}if(t.nodeType===Node.ELEMENT_NODE){const e=t;o.close(e.tagName)}}(e,t),t.root()}t.dom2hsml=l,t.html2hsml=function(e){const t=(new DOMParser).parseFromString(e,"text/html").getElementsByTagName("body")[0].firstChild;return t&&l(t)},t.hsml2str=function(e,t=!0){let o=JSON.stringify(e,void 0,4);return t&&(o=o.replace(/(\[)\s+(\"[a-zA-Z0-9_\#\.-]+\")\s+(\],?)$/gm,"$1$2$3"),o=o.replace(/(\[)\s+(\"[a-zA-Z0-9_\#\.-]+\",\s+(\[|{),?)$/gm,"$1$2"),o=o.replace(/(\[)\s+(\"[a-zA-Z0-9_\#\.-]+\",)\s+(\[\s*\".+\"\s*\])\s+(\],?)$/gm,"$1$2 $3$4"),o=o.replace(/(\[\"[a-zA-Z0-9_\#\.-]+\",\s+)({\s+(.*)\s+})(,?)$/gm,(e,t,o,n,r)=>t+i(JSON.parse(o))+r),o=o.replace(/(},\s+)\[\s+(\".+\")\s+\](,?)$/gm,"$1$2$3")),o}}})}));
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 o=t();for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(window,(function(){return function(e){var t={};function o(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,o),r.l=!0,r.exports}return o.m=e,o.c=t,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)o.d(n,r,function(t){return e[t]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=29)}({29:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hsml2str=t.html2hsml=t.dom2hsml=t.html2hsmlStr=t.dom2hsmlStr=void 0;const n=/data-(.+)/;function r(e,t=0){var o;let l="";if(e.nodeType===Node.TEXT_NODE){const n=null===(o=null==e?void 0:e.textContent)||void 0===o?void 0:o.trim();return l+=`${s(t)}${JSON.stringify(n)}`,l}if(e.nodeType===Node.ELEMENT_NODE){const o=e,r=Array.from(o.attributes).reduce((e,t,o)=>(e[t.nodeName]=t.nodeValue,e),{}),a=Object.keys(r);let c,d=[];const u={},f={};a.length&&a.forEach(e=>{const t=r[e];if("id"===e.toLowerCase())c=t;else if("class"===e.toLowerCase()){const e=t.split(" ");d=d.concat(e)}else if(n.test(e.toLowerCase())){const o=n.exec(e);f[o[1].toLowerCase()]=t}else u[e.toLowerCase()]=t});let h=o.tagName.toLowerCase();c&&(h+="#"+c),d.length&&(h+="."+d.join(".")),Object.keys(f).length&&(u.data=f),l+=`${s(t)}["${h.toLowerCase()}"`,Object.keys(u).length&&(l+=`,\n${s(t+1)}${i(u)}`),o.hasChildNodes()&&(l+=`,\n${s(t+1)}[`)}let a=0;if(e.hasChildNodes()){let o=e.firstChild;for(;o;)l+=`${a?",":""}\n${r(o,t+2)}`,o=o.nextSibling,a++}if(e.nodeType===Node.ELEMENT_NODE){e.hasChildNodes()&&(l+=`\n${s(t+1)}]`),l+=`\n${s(t)}]`}return t||(l=l.replace(/\[\s+\"\"\s+\]$/gm,"[]"),l=l.replace(/\[\s+\"\",?$/gm,"["),l=l.replace(/,\s+\"\"(,?)$/gm,"$1"),l=l.replace(/,\s+\[\](\s+],?)$/gm,"$1"),l=l.replace(/(},\s+)\[\s+(\".+\")\s+\](,?)$/gm,"$1$2$3"),l=l.replace(/(\[\"[a-zA-Z0-9_\#\.-]+\",)\s+\[\s+(\".+\")\s+\]\s+(\],?)$/gm,"$1 $2$3"),l=l.replace(/(\[\"[a-zA-Z0-9_\#\.-]+\")\s+(\],?)$/gm,"$1$2")),l}function s(e){let t="";for(let o=0;o<e;o++)t+=" ";return t}function i(e){if("object"!=typeof e||Array.isArray(e))return JSON.stringify(e);return`{ ${Object.keys(e).map(t=>`${t}: ${i(e[t])}`).join(", ")} }`}t.dom2hsmlStr=r,t.html2hsmlStr=function(e){const t=(new DOMParser).parseFromString(e,"text/html").getElementsByTagName("body")[0].firstChild;return t?r(t):""};class l{constructor(){this._root=[[]],this._nodePath=[],this._pointer=this._root,this._dataRegex=/data-(.+)/}root(){return this._root[0][0]}text(e){const t=e.trim().replace(/\s+/gm," ");t&&this._pointer[this._pointer.length-1].push(t)}open(e){const t=Object.keys(e.attributes);let o,n=[];const r={},s={};t.length&&t.forEach(t=>{const i=e.attributes[t];if("id"===t)o=i;else if("class"===t){const e=i.split(" ");n=n.concat(e)}else if(this._dataRegex.test(t)){const e=this._dataRegex.exec(t);s[e[1]]=i}else r[t]=i});let i=e.name;o&&(i+="#"+o),n.length&&(i+="."+n.join(".")),Object.keys(s).length&&(r.data=s);const l=[i];Object.keys(r).length&&l.push(r);l.push([]),this._pointer[this._pointer.length-1].push(l),this._nodePath.push(l),this._pointer=l}close(e){const t=this._nodePath.pop();0===t[t.length-1].length&&t.pop(),this._pointer=this._nodePath[this._nodePath.length-1]}}function a(e){const t=new l;return e&&function e(t,o){var n;if(t.nodeType===Node.TEXT_NODE){const e=null===(n=null==t?void 0:t.textContent)||void 0===n?void 0:n.trim();e&&o.text(e)}if(t.nodeType===Node.ELEMENT_NODE){const e=t,n=Array.from(e.attributes).reduce((e,t,o)=>(e[t.nodeName]=t.nodeValue,e),{});o.open({name:e.tagName.toLowerCase(),attributes:n})}if(t.hasChildNodes()){let n=t.firstChild;for(;n;)e(n,o),n=n.nextSibling}if(t.nodeType===Node.ELEMENT_NODE){const e=t;o.close(e.tagName)}}(e,t),t.root()}t.dom2hsml=a,t.html2hsml=function(e){const t=(new DOMParser).parseFromString(e,"text/html").getElementsByTagName("body")[0].firstChild;return t&&a(t)},t.hsml2str=function(e,t=!0){let o=JSON.stringify(e,void 0,4);return t&&(o=o.replace(/(\[)\s+(\"[a-zA-Z0-9_\#\.-]+\")\s+(\],?)$/gm,"$1$2$3"),o=o.replace(/(\[)\s+(\"[a-zA-Z0-9_\#\.-]+\",\s+(\[|{),?)$/gm,"$1$2"),o=o.replace(/(\[)\s+(\"[a-zA-Z0-9_\#\.-]+\",)\s+(\[\s*\".+\"\s*\])\s+(\],?)$/gm,"$1$2 $3$4"),o=o.replace(/(\[\"[a-zA-Z0-9_\#\.-]+\",\s+)({\s+(.*)\s+})(,?)$/gm,(e,t,o,n,r)=>t+i(JSON.parse(o))+r),o=o.replace(/(},\s+)\[\s+(\".+\")\s+\](,?)$/gm,"$1$2$3")),o}}})}));
2
2
  //# sourceMappingURL=hsml-convert.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml-convert.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","dataRegex","dom2hsmlStr","node","depth","out","nodeType","Node","TEXT_NODE","textContent","trim","indent","JSON","stringify","ELEMENT_NODE","element","attributes","Array","from","reduce","v","nodeName","nodeValue","attrKeys","keys","id","classes","attrs","attrData","length","forEach","toLowerCase","clss","split","concat","test","g","exec","tagName","join","attrsFormat","hasChildNodes","child","firstChild","nextSibling","replace","count","isArray","map","k","html","DOMParser","parseFromString","getElementsByTagName","HsmlHandler","_root","_nodePath","_pointer","this","_dataRegex","text","textTrimmed","push","hsmlNode","tag","currentNode","pop","dom2hsml","h","domTraverse","handler","open","close","hsml","condense","str","undefined","b","e","parse"],"mappings":"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","file":"hsml-convert.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 = 29);\n","import { HElement, HElements } from \"./hsml\";\n\nconst dataRegex = /data-(.+)/;\n\nexport function dom2hsmlStr(node: Node, depth = 0): string {\n let out = \"\";\n if (node.nodeType === Node.TEXT_NODE) {\n const t = node?.textContent?.trim();\n out += `${indent(depth)}${JSON.stringify(t)}`;\n return out;\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n const attributes = Array.from(element.attributes)\n .reduce((a, v, i) => (a[v.nodeName] = v.nodeValue, a), {} as any);\n const attrKeys = Object.keys(attributes);\n let id;\n let classes = [] as string[];\n const attrs = {} as {[key: string]: any};\n const attrData = {} as {[key: string]: any};\n if (attrKeys.length) {\n attrKeys.forEach(key => {\n const value = attributes[key] as string;\n if (key.toLowerCase() === \"id\") {\n id = value;\n } else if (key.toLowerCase() === \"class\") {\n const clss = value.split(\" \");\n classes = classes.concat(clss);\n } else if (dataRegex.test(key.toLowerCase())) {\n const g = dataRegex.exec(key);\n attrData[g![1].toLowerCase()] = value;\n } else {\n attrs[key.toLowerCase()] = value;\n }\n });\n }\n let name = element.tagName.toLowerCase();\n if (id) {\n name += \"#\" + id;\n }\n if (classes.length) {\n name += \".\" + classes.join(\".\");\n }\n if (Object.keys(attrData).length) {\n attrs[\"data\"] = attrData;\n }\n out += `${indent(depth)}[\"${name.toLowerCase()}\"`;\n if (Object.keys(attrs).length) {\n out += `,\\n${indent(depth + 1)}${attrsFormat(attrs)}`;\n }\n if (element.hasChildNodes()) {\n out += `,\\n${indent(depth + 1)}[`;\n }\n }\n let i = 0;\n if (node.hasChildNodes()) {\n let child = node.firstChild;\n while (child) {\n out += `${i ? \",\" : \"\"}\\n${dom2hsmlStr(child, depth + 2)}`;\n child = child.nextSibling;\n i++;\n }\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n if (element.hasChildNodes()) {\n out += `\\n${indent(depth + 1)}]`;\n }\n out += `\\n${indent(depth)}]`;\n }\n if (!depth) {\n // condense\n out = out.replace(/\\[\\s+\\\"\\\"\\s+\\]$/mg, \"[]\");\n out = out.replace(/\\[\\s+\\\"\\\",?$/mg, \"[\");\n out = out.replace(/,\\s+\\\"\\\"(,?)$/mg, \"$1\");\n out = out.replace(/,\\s+\\[\\](\\s+],?)$/mg, \"$1\");\n out = out.replace(/(},\\s+)\\[\\s+(\\\".+\\\")\\s+\\](,?)$/mg, \"$1$2$3\");\n out = out.replace(/(\\[\\\"[a-zA-Z0-9_\\#\\.-]+\\\",)\\s+\\[\\s+(\\\".+\\\")\\s+\\]\\s+(\\],?)$/mg, \"$1 $2$3\");\n out = out.replace(/(\\[\\\"[a-zA-Z0-9_\\#\\.-]+\\\")\\s+(\\],?)$/mg, \"$1$2\");\n }\n return out;\n}\n\nfunction indent(count: number): string {\n let indent = \"\";\n for (let i = 0; i < count; i++) {\n indent += \" \";\n }\n return indent;\n}\n\nfunction attrsFormat(o: any): string {\n if (typeof o !== \"object\" || Array.isArray(o)) {\n return JSON.stringify(o);\n }\n let props = Object\n .keys(o)\n .map(k => `${k}: ${attrsFormat(o[k])}`)\n .join(\", \");\n return `{ ${props} }`;\n}\n\nexport function html2hsmlStr(html: string): string {\n const node = new DOMParser()\n .parseFromString(html, \"text/html\")\n .getElementsByTagName(\"body\")[0]\n .firstChild;\n return node ? dom2hsmlStr(node) : \"\";\n}\n\ninterface Handler {\n text(text: string): void;\n open(node: { name: string; attributes: any }): void;\n close(tag: string): void;\n}\n\nclass HsmlHandler implements Handler {\n\n private _root = [[]] as HElements[];\n private _nodePath = [] as any; // path that consist of previous hsml nodes\n private _pointer = this._root;\n private _dataRegex = /data-(.+)/;\n\n root(): HElement {\n return this._root[0][0];\n }\n\n text(text: string): void {\n // console.log(\"text:\\t\", JSON.stringify(text));\n // console.log(hsml, hsmlNode, hsmlPath);\n const textTrimmed = text.trim().replace(/\\s+/mg, \" \");\n // console.log(\"text:\\t\", JSON.stringify(textTrimmed));\n if (textTrimmed) {\n this._pointer[this._pointer.length - 1].push(textTrimmed);\n }\n }\n\n open(node: { name: string; attributes: any }): void {\n // console.log(\"open:\\t\", JSON.stringify(node));\n const attrKeys = Object.keys(node.attributes);\n let id;\n let classes = [] as string[];\n const attrs = {} as {[key: string]: any};\n const attrData = {} as {[key: string]: any};\n if (attrKeys.length) {\n attrKeys.forEach(key => {\n const value = node.attributes[key] as string;\n if (key === \"id\") {\n id = value;\n } else if (key === \"class\") {\n const clss = value.split(\" \");\n classes = classes.concat(clss);\n } else if (this._dataRegex.test(key)) {\n const g = this._dataRegex.exec(key);\n attrData[g![1]] = value;\n } else {\n attrs[key] = value;\n }\n });\n }\n let name = node.name;\n if (id) {\n name += \"#\" + id;\n }\n if (classes.length) {\n name += \".\" + classes.join(\".\");\n }\n if (Object.keys(attrData).length) {\n attrs[\"data\"] = attrData;\n }\n const hsmlNode = [name] as any[];\n if (Object.keys(attrs).length) {\n hsmlNode.push(attrs);\n }\n const children: any[] = [];\n hsmlNode.push(children);\n\n this._pointer[this._pointer.length - 1].push(hsmlNode as HElement);\n this._nodePath.push(hsmlNode);\n this._pointer = hsmlNode;\n // console.log(\">>>\", hsmlPath.map(x => x[0]));\n }\n\n close(tag: string): void {\n // console.log(\"close:\\t\", JSON.stringify(tag));\n const currentNode = this._nodePath.pop();\n\n let children = currentNode[currentNode.length - 1];\n if (children.length === 0) {\n currentNode.pop(); // remove children\n // } else if (children.length === 1) {\n // if (typeof children[0] === \"string\") {\n // currentNode[currentNode.length - 1] = children[0];\n // }\n }\n this._pointer = this._nodePath[this._nodePath.length - 1];\n // console.log(\">>>\", hsmlPath.map(x => x[0]));\n }\n}\n\nfunction domTraverse(node: Node, handler: Handler ): void {\n if (node.nodeType === Node.TEXT_NODE) {\n const t = node?.textContent?.trim();\n t && handler.text(t);\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n const attributes = Array.from(element.attributes)\n .reduce((a, v, i) => (a[v.nodeName] = v.nodeValue, a), {} as any);\n handler.open({ name: element.tagName.toLowerCase(), attributes });\n }\n if (node.hasChildNodes()) {\n let child = node.firstChild;\n while (child) {\n domTraverse(child, handler);\n child = child.nextSibling;\n }\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n handler.close(element.tagName);\n }\n}\n\nexport function dom2hsml(node: Node): HElement {\n const h = new HsmlHandler();\n node && domTraverse(node, h);\n return h.root();\n}\n\nexport function html2hsml(html: string): HElement {\n const node = new DOMParser()\n .parseFromString(html, \"text/html\")\n .getElementsByTagName(\"body\")[0]\n .firstChild;\n return node && dom2hsml(node);\n}\n\nexport function hsml2str(hsml: HElement, condense = true): HElement {\n let str = JSON.stringify(hsml, undefined, 4);\n if (condense) {\n str = str.replace(/(\\[)\\s+(\\\"[a-zA-Z0-9_\\#\\.-]+\\\")\\s+(\\],?)$/mg, \"$1$2$3\");\n str = str.replace(/(\\[)\\s+(\\\"[a-zA-Z0-9_\\#\\.-]+\\\",\\s+(\\[|{),?)$/mg, \"$1$2\");\n str = str.replace(/(\\[)\\s+(\\\"[a-zA-Z0-9_\\#\\.-]+\\\",)\\s+(\\[\\s*\\\".+\\\"\\s*\\])\\s+(\\],?)$/mg, \"$1$2 $3$4\");\n str = str.replace(/(\\[\\\"[a-zA-Z0-9_\\#\\.-]+\\\",\\s+)({\\s+(.*)\\s+})(,?)$/mg,\n (a, b, c, d, e) => b + attrsFormat(JSON.parse(c)) + e);\n str = str.replace(/(},\\s+)\\[\\s+(\\\".+\\\")\\s+\\](,?)$/mg, \"$1$2$3\");\n }\n return str;\n}\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./src/hsml-convert.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","dataRegex","dom2hsmlStr","node","depth","out","nodeType","Node","TEXT_NODE","textContent","trim","indent","JSON","stringify","ELEMENT_NODE","element","attributes","Array","from","reduce","v","nodeName","nodeValue","attrKeys","keys","id","classes","attrs","attrData","length","forEach","toLowerCase","clss","split","concat","test","g","exec","tagName","join","attrsFormat","hasChildNodes","child","firstChild","nextSibling","replace","count","isArray","map","k","html","DOMParser","parseFromString","getElementsByTagName","HsmlHandler","_root","_nodePath","_pointer","this","_dataRegex","text","textTrimmed","push","hsmlNode","tag","currentNode","pop","dom2hsml","h","domTraverse","handler","open","close","hsml","condense","str","undefined","b","e","parse"],"mappings":"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","file":"hsml-convert.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 = 29);\n","import { HElement, HElements } from \"./hsml\";\n\nconst dataRegex = /data-(.+)/;\n\nexport function dom2hsmlStr(node: Node, depth = 0): string {\n let out = \"\";\n if (node.nodeType === Node.TEXT_NODE) {\n const t = node?.textContent?.trim();\n out += `${indent(depth)}${JSON.stringify(t)}`;\n return out;\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n const attributes = Array.from(element.attributes)\n .reduce((a, v, i) => (a[v.nodeName] = v.nodeValue, a), {} as any);\n const attrKeys = Object.keys(attributes);\n let id;\n let classes = [] as string[];\n const attrs = {} as {[key: string]: any};\n const attrData = {} as {[key: string]: any};\n if (attrKeys.length) {\n attrKeys.forEach(key => {\n const value = attributes[key] as string;\n if (key.toLowerCase() === \"id\") {\n id = value;\n } else if (key.toLowerCase() === \"class\") {\n const clss = value.split(\" \");\n classes = classes.concat(clss);\n } else if (dataRegex.test(key.toLowerCase())) {\n const g = dataRegex.exec(key);\n attrData[g![1].toLowerCase()] = value;\n } else {\n attrs[key.toLowerCase()] = value;\n }\n });\n }\n let name = element.tagName.toLowerCase();\n if (id) {\n name += \"#\" + id;\n }\n if (classes.length) {\n name += \".\" + classes.join(\".\");\n }\n if (Object.keys(attrData).length) {\n attrs[\"data\"] = attrData;\n }\n out += `${indent(depth)}[\"${name.toLowerCase()}\"`;\n if (Object.keys(attrs).length) {\n out += `,\\n${indent(depth + 1)}${attrsFormat(attrs)}`;\n }\n if (element.hasChildNodes()) {\n out += `,\\n${indent(depth + 1)}[`;\n }\n }\n let i = 0;\n if (node.hasChildNodes()) {\n let child = node.firstChild;\n while (child) {\n out += `${i ? \",\" : \"\"}\\n${dom2hsmlStr(child, depth + 2)}`;\n child = child.nextSibling;\n i++;\n }\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n if (element.hasChildNodes()) {\n out += `\\n${indent(depth + 1)}]`;\n }\n out += `\\n${indent(depth)}]`;\n }\n if (!depth) {\n // condense\n out = out.replace(/\\[\\s+\\\"\\\"\\s+\\]$/mg, \"[]\");\n out = out.replace(/\\[\\s+\\\"\\\",?$/mg, \"[\");\n out = out.replace(/,\\s+\\\"\\\"(,?)$/mg, \"$1\");\n out = out.replace(/,\\s+\\[\\](\\s+],?)$/mg, \"$1\");\n out = out.replace(/(},\\s+)\\[\\s+(\\\".+\\\")\\s+\\](,?)$/mg, \"$1$2$3\");\n out = out.replace(/(\\[\\\"[a-zA-Z0-9_\\#\\.-]+\\\",)\\s+\\[\\s+(\\\".+\\\")\\s+\\]\\s+(\\],?)$/mg, \"$1 $2$3\");\n out = out.replace(/(\\[\\\"[a-zA-Z0-9_\\#\\.-]+\\\")\\s+(\\],?)$/mg, \"$1$2\");\n }\n return out;\n}\n\nfunction indent(count: number): string {\n let indent = \"\";\n for (let i = 0; i < count; i++) {\n indent += \" \";\n }\n return indent;\n}\n\nfunction attrsFormat(o: any): string {\n if (typeof o !== \"object\" || Array.isArray(o)) {\n return JSON.stringify(o);\n }\n let props = Object\n .keys(o)\n .map(k => `${k}: ${attrsFormat(o[k])}`)\n .join(\", \");\n return `{ ${props} }`;\n}\n\nexport function html2hsmlStr(html: string): string {\n const node = new DOMParser()\n .parseFromString(html, \"text/html\")\n .getElementsByTagName(\"body\")[0]\n .firstChild;\n return node ? dom2hsmlStr(node) : \"\";\n}\n\ninterface Handler {\n text(text: string): void;\n open(node: { name: string; attributes: any }): void;\n close(tag: string): void;\n}\n\nclass HsmlHandler implements Handler {\n\n private _root = [[]] as HElements[];\n private _nodePath = [] as any; // path that consist of previous hsml nodes\n private _pointer = this._root;\n private _dataRegex = /data-(.+)/;\n\n root(): HElement {\n return this._root[0][0];\n }\n\n text(text: string): void {\n // console.log(\"text:\\t\", JSON.stringify(text));\n // console.log(hsml, hsmlNode, hsmlPath);\n const textTrimmed = text.trim().replace(/\\s+/mg, \" \");\n // console.log(\"text:\\t\", JSON.stringify(textTrimmed));\n if (textTrimmed) {\n this._pointer[this._pointer.length - 1].push(textTrimmed);\n }\n }\n\n open(node: { name: string; attributes: any }): void {\n // console.log(\"open:\\t\", JSON.stringify(node));\n const attrKeys = Object.keys(node.attributes);\n let id;\n let classes = [] as string[];\n const attrs = {} as {[key: string]: any};\n const attrData = {} as {[key: string]: any};\n if (attrKeys.length) {\n attrKeys.forEach(key => {\n const value = node.attributes[key] as string;\n if (key === \"id\") {\n id = value;\n } else if (key === \"class\") {\n const clss = value.split(\" \");\n classes = classes.concat(clss);\n } else if (this._dataRegex.test(key)) {\n const g = this._dataRegex.exec(key);\n attrData[g![1]] = value;\n } else {\n attrs[key] = value;\n }\n });\n }\n let name = node.name;\n if (id) {\n name += \"#\" + id;\n }\n if (classes.length) {\n name += \".\" + classes.join(\".\");\n }\n if (Object.keys(attrData).length) {\n attrs[\"data\"] = attrData;\n }\n const hsmlNode = [name] as any[];\n if (Object.keys(attrs).length) {\n hsmlNode.push(attrs);\n }\n const children: any[] = [];\n hsmlNode.push(children);\n\n this._pointer[this._pointer.length - 1].push(hsmlNode as HElement);\n this._nodePath.push(hsmlNode);\n this._pointer = hsmlNode;\n // console.log(\">>>\", hsmlPath.map(x => x[0]));\n }\n\n close(tag: string): void {\n // console.log(\"close:\\t\", JSON.stringify(tag));\n const currentNode = this._nodePath.pop();\n\n let children = currentNode[currentNode.length - 1];\n if (children.length === 0) {\n currentNode.pop(); // remove children\n // } else if (children.length === 1) {\n // if (typeof children[0] === \"string\") {\n // currentNode[currentNode.length - 1] = children[0];\n // }\n }\n this._pointer = this._nodePath[this._nodePath.length - 1];\n // console.log(\">>>\", hsmlPath.map(x => x[0]));\n }\n}\n\nfunction domTraverse(node: Node, handler: Handler ): void {\n if (node.nodeType === Node.TEXT_NODE) {\n const t = node?.textContent?.trim();\n t && handler.text(t);\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n const attributes = Array.from(element.attributes)\n .reduce((a, v, i) => (a[v.nodeName] = v.nodeValue, a), {} as any);\n handler.open({ name: element.tagName.toLowerCase(), attributes });\n }\n if (node.hasChildNodes()) {\n let child = node.firstChild;\n while (child) {\n domTraverse(child, handler);\n child = child.nextSibling;\n }\n }\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as HTMLElement;\n handler.close(element.tagName);\n }\n}\n\nexport function dom2hsml(node: Node): HElement {\n const h = new HsmlHandler();\n node && domTraverse(node, h);\n return h.root();\n}\n\nexport function html2hsml(html: string): HElement {\n const node = new DOMParser()\n .parseFromString(html, \"text/html\")\n .getElementsByTagName(\"body\")[0]\n .firstChild;\n return node && dom2hsml(node);\n}\n\nexport function hsml2str(hsml: HElement, condense = true): HElement {\n let str = JSON.stringify(hsml, undefined, 4);\n if (condense) {\n str = str.replace(/(\\[)\\s+(\\\"[a-zA-Z0-9_\\#\\.-]+\\\")\\s+(\\],?)$/mg, \"$1$2$3\");\n str = str.replace(/(\\[)\\s+(\\\"[a-zA-Z0-9_\\#\\.-]+\\\",\\s+(\\[|{),?)$/mg, \"$1$2\");\n str = str.replace(/(\\[)\\s+(\\\"[a-zA-Z0-9_\\#\\.-]+\\\",)\\s+(\\[\\s*\\\".+\\\"\\s*\\])\\s+(\\],?)$/mg, \"$1$2 $3$4\");\n str = str.replace(/(\\[\\\"[a-zA-Z0-9_\\#\\.-]+\\\",\\s+)({\\s+(.*)\\s+})(,?)$/mg,\n (a, b, c, d, e) => b + attrsFormat(JSON.parse(c)) + e);\n str = str.replace(/(},\\s+)\\[\\s+(\\\".+\\\")\\s+\\](,?)$/mg, \"$1$2$3\");\n }\n return str;\n}\n"],"sourceRoot":""}