peryl 1.4.55 → 1.5.1

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 (529) hide show
  1. package/README.md +12 -14
  2. package/demo/dom_demo.html +31 -0
  3. package/demo/dom_demo.ts +98 -0
  4. package/demo/encode_demo.html +17 -0
  5. package/demo/encode_demo.ts +25 -0
  6. package/demo/events_demo.html +17 -0
  7. package/demo/events_demo.ts +40 -0
  8. package/demo/form_demo.html +73 -0
  9. package/demo/form_demo.ts +96 -0
  10. package/demo/hash_demo.html +22 -0
  11. package/demo/hash_demo.ts +28 -0
  12. package/demo/history_demo.html +27 -0
  13. package/demo/history_demo.ts +66 -0
  14. package/demo/hsml-app-form_demo.html +17 -0
  15. package/demo/hsml-app-form_demo.ts +180 -0
  16. package/demo/hsml-app-tictactoe-demo.html +16 -0
  17. package/demo/hsml-app-tictactoe-demo.ts +70 -0
  18. package/demo/hsml-app_demo.html +16 -0
  19. package/demo/hsml-app_demo.ts +225 -0
  20. package/demo/hsml-appc_demo.html +16 -0
  21. package/demo/hsml-appc_demo.ts +49 -0
  22. package/demo/hsml-appel_demo.html +17 -0
  23. package/demo/hsml-appel_demo.ts +104 -0
  24. package/demo/hsml-appi_demo.html +16 -0
  25. package/demo/hsml-appi_demo.ts +58 -0
  26. package/demo/hsml-convert_demo.html +40 -0
  27. package/demo/hsml-convert_demo.ts +48 -0
  28. package/demo/hsml_demo.html +25 -0
  29. package/demo/hsml_demo.ts +85 -0
  30. package/demo/http_demo.html +17 -0
  31. package/demo/http_demo.ts +79 -0
  32. package/demo/i18n_demo.html +18 -0
  33. package/demo/i18n_demo.ts +106 -0
  34. package/demo/js/hsml-app-js-happi_demo.html +66 -0
  35. package/demo/js/hsml-app-js_demo.html +127 -0
  36. package/demo/objpath_demo.html +17 -0
  37. package/demo/objpath_demo.ts +27 -0
  38. package/demo/processor_demo.html +25 -0
  39. package/demo/processor_demo.ts +199 -0
  40. package/demo/router_demo.html +22 -0
  41. package/demo/router_demo.ts +33 -0
  42. package/demo/signal_demo.html +17 -0
  43. package/demo/signal_demo.ts +104 -0
  44. package/demo/template_demo.html +47 -0
  45. package/demo/template_demo.ts +47 -0
  46. package/demo/tmpl_demo.html +17 -0
  47. package/demo/tmpl_demo.ts +23 -0
  48. package/demo/validators_demo.html +22 -0
  49. package/demo/validators_demo.ts +164 -0
  50. package/dist/browser-esmodule/cache.js +71 -0
  51. package/dist/browser-esmodule/cache.js.map +1 -0
  52. package/dist/browser-esmodule/debounce.js +27 -0
  53. package/dist/browser-esmodule/debounce.js.map +1 -0
  54. package/dist/browser-esmodule/dom.js +138 -0
  55. package/dist/browser-esmodule/dom.js.map +1 -0
  56. package/dist/browser-esmodule/encode.js +158 -0
  57. package/dist/browser-esmodule/encode.js.map +1 -0
  58. package/dist/browser-esmodule/events.js +55 -0
  59. package/dist/browser-esmodule/events.js.map +1 -0
  60. package/dist/browser-esmodule/form.js +383 -0
  61. package/dist/browser-esmodule/form.js.map +1 -0
  62. package/dist/browser-esmodule/google-analytics.js +50 -0
  63. package/dist/browser-esmodule/google-analytics.js.map +1 -0
  64. package/dist/browser-esmodule/hash.js +89 -0
  65. package/dist/browser-esmodule/hash.js.map +1 -0
  66. package/dist/browser-esmodule/history.js +39 -0
  67. package/dist/browser-esmodule/history.js.map +1 -0
  68. package/dist/browser-esmodule/hsml-app.js +1352 -0
  69. package/dist/browser-esmodule/hsml-app.js.map +1 -0
  70. package/dist/browser-esmodule/hsml-convert.js +179 -0
  71. package/dist/browser-esmodule/hsml-convert.js.map +1 -0
  72. package/dist/browser-esmodule/hsml-dom.js +202 -0
  73. package/dist/browser-esmodule/hsml-dom.js.map +1 -0
  74. package/dist/browser-esmodule/hsml-h.js +29 -0
  75. package/dist/browser-esmodule/hsml-h.js.map +1 -0
  76. package/dist/browser-esmodule/hsml-html.js +338 -0
  77. package/dist/browser-esmodule/hsml-html.js.map +1 -0
  78. package/dist/browser-esmodule/hsml-idom.js +938 -0
  79. package/dist/browser-esmodule/hsml-idom.js.map +1 -0
  80. package/dist/browser-esmodule/hsml.js +98 -0
  81. package/dist/browser-esmodule/hsml.js.map +1 -0
  82. package/dist/browser-esmodule/http.js +316 -0
  83. package/dist/browser-esmodule/http.js.map +1 -0
  84. package/dist/browser-esmodule/index.js +4039 -0
  85. package/dist/browser-esmodule/index.js.map +1 -0
  86. package/dist/browser-esmodule/load.js +72 -0
  87. package/dist/browser-esmodule/load.js.map +1 -0
  88. package/dist/browser-esmodule/objpaths.js +25 -0
  89. package/dist/browser-esmodule/objpaths.js.map +1 -0
  90. package/dist/browser-esmodule/router.js +146 -0
  91. package/dist/browser-esmodule/router.js.map +1 -0
  92. package/dist/browser-esmodule/settings.js +38 -0
  93. package/dist/browser-esmodule/settings.js.map +1 -0
  94. package/dist/browser-esmodule/settingse.js +85 -0
  95. package/dist/browser-esmodule/settingse.js.map +1 -0
  96. package/dist/browser-esmodule/signal.js +61 -0
  97. package/dist/browser-esmodule/signal.js.map +1 -0
  98. package/dist/browser-esmodule/template.js +29 -0
  99. package/dist/browser-esmodule/template.js.map +1 -0
  100. package/dist/browser-esmodule/tmpl.js +45 -0
  101. package/dist/browser-esmodule/tmpl.js.map +1 -0
  102. package/dist/browser-esmodule/validators-moment.js +536 -0
  103. package/dist/browser-esmodule/validators-moment.js.map +1 -0
  104. package/dist/browser-esmodule/validators-numeral.js +538 -0
  105. package/dist/browser-esmodule/validators-numeral.js.map +1 -0
  106. package/dist/browser-esmodule/validators-object.js +103 -0
  107. package/dist/browser-esmodule/validators-object.js.map +1 -0
  108. package/dist/browser-esmodule/validators.js +432 -0
  109. package/dist/browser-esmodule/validators.js.map +1 -0
  110. package/dist/browser-umd/cache.js +2 -0
  111. package/dist/browser-umd/cache.js.map +1 -0
  112. package/dist/browser-umd/debounce.js +2 -0
  113. package/dist/browser-umd/debounce.js.map +1 -0
  114. package/dist/browser-umd/dom.js +2 -0
  115. package/dist/browser-umd/dom.js.map +1 -0
  116. package/dist/browser-umd/encode.js +2 -0
  117. package/dist/browser-umd/encode.js.map +1 -0
  118. package/dist/browser-umd/events.js +2 -0
  119. package/dist/browser-umd/events.js.map +1 -0
  120. package/dist/browser-umd/form.js +2 -0
  121. package/dist/browser-umd/form.js.map +1 -0
  122. package/dist/browser-umd/google-analytics.js +2 -0
  123. package/dist/browser-umd/google-analytics.js.map +1 -0
  124. package/dist/browser-umd/hash.js +2 -0
  125. package/dist/browser-umd/hash.js.map +1 -0
  126. package/dist/browser-umd/history.js +2 -0
  127. package/dist/browser-umd/history.js.map +1 -0
  128. package/dist/browser-umd/hsml-app.js +2 -0
  129. package/dist/browser-umd/hsml-app.js.map +1 -0
  130. package/dist/browser-umd/hsml-convert.js +2 -0
  131. package/dist/browser-umd/hsml-convert.js.map +1 -0
  132. package/dist/browser-umd/hsml-dom.js +2 -0
  133. package/dist/browser-umd/hsml-dom.js.map +1 -0
  134. package/dist/browser-umd/hsml-h.js +2 -0
  135. package/dist/browser-umd/hsml-h.js.map +1 -0
  136. package/dist/browser-umd/hsml-html.js +2 -0
  137. package/dist/browser-umd/hsml-html.js.map +1 -0
  138. package/dist/browser-umd/hsml-idom.js +2 -0
  139. package/dist/browser-umd/hsml-idom.js.map +1 -0
  140. package/dist/browser-umd/hsml.js +2 -0
  141. package/dist/browser-umd/hsml.js.map +1 -0
  142. package/dist/browser-umd/http.js +2 -0
  143. package/dist/browser-umd/http.js.map +1 -0
  144. package/dist/browser-umd/index.js +3 -0
  145. package/dist/browser-umd/index.js.LICENSE.txt +11 -0
  146. package/dist/browser-umd/index.js.map +1 -0
  147. package/dist/browser-umd/load.js +2 -0
  148. package/dist/browser-umd/load.js.map +1 -0
  149. package/dist/browser-umd/objpaths.js +2 -0
  150. package/dist/browser-umd/objpaths.js.map +1 -0
  151. package/dist/browser-umd/router.js +2 -0
  152. package/dist/browser-umd/router.js.map +1 -0
  153. package/dist/browser-umd/settings.js +2 -0
  154. package/dist/browser-umd/settings.js.map +1 -0
  155. package/dist/browser-umd/settingse.js +2 -0
  156. package/dist/browser-umd/settingse.js.map +1 -0
  157. package/dist/browser-umd/signal.js +2 -0
  158. package/dist/browser-umd/signal.js.map +1 -0
  159. package/dist/browser-umd/template.js +2 -0
  160. package/dist/browser-umd/template.js.map +1 -0
  161. package/dist/browser-umd/tmpl.js +2 -0
  162. package/dist/browser-umd/tmpl.js.map +1 -0
  163. package/dist/browser-umd/validators-moment.js +3 -0
  164. package/dist/browser-umd/validators-moment.js.LICENSE.txt +3 -0
  165. package/dist/browser-umd/validators-moment.js.map +1 -0
  166. package/dist/browser-umd/validators-numeral.js +3 -0
  167. package/dist/browser-umd/validators-numeral.js.LICENSE.txt +7 -0
  168. package/dist/browser-umd/validators-numeral.js.map +1 -0
  169. package/dist/browser-umd/validators-object.js +2 -0
  170. package/dist/browser-umd/validators-object.js.map +1 -0
  171. package/dist/browser-umd/validators.js +2 -0
  172. package/dist/browser-umd/validators.js.map +1 -0
  173. package/dist/cache.d.ts +1 -1
  174. package/dist/debounce.d.ts +1 -1
  175. package/dist/debounce.js.map +1 -1
  176. package/dist/demo/dom_demo.3e0ad00b.js +2 -0
  177. package/dist/demo/dom_demo.3e0ad00b.js.map +1 -0
  178. package/dist/demo/dom_demo.94c07802.js +2 -0
  179. package/dist/demo/dom_demo.94c07802.js.map +1 -0
  180. package/dist/demo/dom_demo.html +1 -0
  181. package/dist/demo/encode_demo.ce182166.js +2 -0
  182. package/dist/demo/encode_demo.ce182166.js.map +1 -0
  183. package/dist/demo/encode_demo.f40a44eb.js +2 -0
  184. package/dist/demo/encode_demo.f40a44eb.js.map +1 -0
  185. package/dist/demo/encode_demo.html +1 -0
  186. package/dist/demo/events_demo.332d99cc.js +2 -0
  187. package/dist/demo/events_demo.332d99cc.js.map +1 -0
  188. package/dist/demo/events_demo.8347f9a9.js +2 -0
  189. package/dist/demo/events_demo.8347f9a9.js.map +1 -0
  190. package/dist/demo/events_demo.html +1 -0
  191. package/dist/demo/form_demo.40b774c2.js +2 -0
  192. package/dist/demo/form_demo.40b774c2.js.map +1 -0
  193. package/dist/demo/form_demo.75ed39a0.js +2 -0
  194. package/dist/demo/form_demo.75ed39a0.js.map +1 -0
  195. package/dist/demo/form_demo.html +1 -0
  196. package/dist/demo/hash_demo.416ed5fa.js +2 -0
  197. package/dist/demo/hash_demo.416ed5fa.js.map +1 -0
  198. package/dist/demo/hash_demo.b40a9611.js +2 -0
  199. package/dist/demo/hash_demo.b40a9611.js.map +1 -0
  200. package/dist/demo/hash_demo.html +1 -0
  201. package/dist/demo/history_demo.e11ea378.js +2 -0
  202. package/dist/demo/history_demo.e11ea378.js.map +1 -0
  203. package/dist/demo/history_demo.feee2e18.js +2 -0
  204. package/dist/demo/history_demo.feee2e18.js.map +1 -0
  205. package/dist/demo/history_demo.html +1 -0
  206. package/dist/demo/hsml-app-form_demo.06d87b64.js +2 -0
  207. package/dist/demo/hsml-app-form_demo.06d87b64.js.map +1 -0
  208. package/dist/demo/hsml-app-form_demo.4706bc2e.js +2 -0
  209. package/dist/demo/hsml-app-form_demo.4706bc2e.js.map +1 -0
  210. package/dist/demo/hsml-app-form_demo.html +1 -0
  211. package/dist/demo/hsml-app-tictactoe-demo.e0bc6fed.js +2 -0
  212. package/dist/demo/hsml-app-tictactoe-demo.e0bc6fed.js.map +1 -0
  213. package/dist/demo/hsml-app-tictactoe-demo.f9399bf0.js +2 -0
  214. package/dist/demo/hsml-app-tictactoe-demo.f9399bf0.js.map +1 -0
  215. package/dist/demo/hsml-app-tictactoe-demo.html +1 -0
  216. package/dist/demo/hsml-app_demo.033431ac.js +2 -0
  217. package/dist/demo/hsml-app_demo.033431ac.js.map +1 -0
  218. package/dist/demo/hsml-app_demo.204365df.js +2 -0
  219. package/dist/demo/hsml-app_demo.204365df.js.map +1 -0
  220. package/dist/demo/hsml-app_demo.html +1 -0
  221. package/dist/demo/hsml-appc_demo.06ff0d1d.js +2 -0
  222. package/dist/demo/hsml-appc_demo.06ff0d1d.js.map +1 -0
  223. package/dist/demo/hsml-appc_demo.702d405b.js +2 -0
  224. package/dist/demo/hsml-appc_demo.702d405b.js.map +1 -0
  225. package/dist/demo/hsml-appc_demo.74bd46ea.js +2 -0
  226. package/dist/demo/hsml-appc_demo.74bd46ea.js.map +1 -0
  227. package/dist/demo/hsml-appc_demo.9a97c24c.js +2 -0
  228. package/dist/demo/hsml-appc_demo.9a97c24c.js.map +1 -0
  229. package/dist/demo/hsml-appc_demo.html +1 -0
  230. package/dist/demo/hsml-appel_demo.2a0812f7.js +2 -0
  231. package/dist/demo/hsml-appel_demo.2a0812f7.js.map +1 -0
  232. package/dist/demo/hsml-appel_demo.36395e9f.js +2 -0
  233. package/dist/demo/hsml-appel_demo.36395e9f.js.map +1 -0
  234. package/dist/demo/hsml-appel_demo.html +1 -0
  235. package/dist/demo/hsml-appi_demo.0492f5a4.js +2 -0
  236. package/dist/demo/hsml-appi_demo.0492f5a4.js.map +1 -0
  237. package/dist/demo/hsml-appi_demo.0847d145.js +2 -0
  238. package/dist/demo/hsml-appi_demo.0847d145.js.map +1 -0
  239. package/dist/demo/hsml-appi_demo.html +1 -0
  240. package/dist/demo/hsml-convert_demo.0ea1fa3b.js +2 -0
  241. package/dist/demo/hsml-convert_demo.0ea1fa3b.js.map +1 -0
  242. package/dist/demo/hsml-convert_demo.63e3e7b5.js +2 -0
  243. package/dist/demo/hsml-convert_demo.63e3e7b5.js.map +1 -0
  244. package/dist/demo/hsml-convert_demo.html +1 -0
  245. package/dist/demo/hsml_demo.33f28c29.js +2 -0
  246. package/dist/demo/hsml_demo.33f28c29.js.map +1 -0
  247. package/dist/demo/hsml_demo.ff950ba1.js +2 -0
  248. package/dist/demo/hsml_demo.ff950ba1.js.map +1 -0
  249. package/dist/demo/hsml_demo.html +1 -0
  250. package/dist/demo/http_demo.0c22b4b7.js +2 -0
  251. package/dist/demo/http_demo.0c22b4b7.js.map +1 -0
  252. package/dist/demo/http_demo.cd09bdb8.js +2 -0
  253. package/dist/demo/http_demo.cd09bdb8.js.map +1 -0
  254. package/dist/demo/http_demo.html +1 -0
  255. package/dist/demo/i18n_demo.52e59e93.js +2 -0
  256. package/dist/demo/i18n_demo.52e59e93.js.map +1 -0
  257. package/dist/demo/i18n_demo.8ea9448b.js +2 -0
  258. package/dist/demo/i18n_demo.8ea9448b.js.map +1 -0
  259. package/dist/demo/i18n_demo.html +1 -0
  260. package/dist/demo/objpath_demo.a755ffad.js +2 -0
  261. package/dist/demo/objpath_demo.a755ffad.js.map +1 -0
  262. package/dist/demo/objpath_demo.ce323200.js +2 -0
  263. package/dist/demo/objpath_demo.ce323200.js.map +1 -0
  264. package/dist/demo/objpath_demo.html +1 -0
  265. package/dist/demo/processor_demo.c314802b.js +2 -0
  266. package/dist/demo/processor_demo.c314802b.js.map +1 -0
  267. package/dist/demo/processor_demo.html +2 -0
  268. package/dist/demo/processor_demo.js +2 -0
  269. package/dist/demo/processor_demo.js.map +1 -0
  270. package/dist/demo/router_demo.8703f75f.js +2 -0
  271. package/dist/demo/router_demo.8703f75f.js.map +1 -0
  272. package/dist/demo/router_demo.c42ee304.js +2 -0
  273. package/dist/demo/router_demo.c42ee304.js.map +1 -0
  274. package/dist/demo/router_demo.html +1 -0
  275. package/dist/demo/signal_demo.b1b74db4.js +2 -0
  276. package/dist/demo/signal_demo.b1b74db4.js.map +1 -0
  277. package/dist/demo/signal_demo.cacf70a4.js +2 -0
  278. package/dist/demo/signal_demo.cacf70a4.js.map +1 -0
  279. package/dist/demo/signal_demo.html +1 -0
  280. package/dist/demo/template_demo.60b5d288.js +2 -0
  281. package/dist/demo/template_demo.60b5d288.js.map +1 -0
  282. package/dist/demo/template_demo.7015ed65.js +2 -0
  283. package/dist/demo/template_demo.7015ed65.js.map +1 -0
  284. package/dist/demo/template_demo.html +21 -0
  285. package/dist/demo/tmpl_demo.474bf76c.js +2 -0
  286. package/dist/demo/tmpl_demo.474bf76c.js.map +1 -0
  287. package/dist/demo/tmpl_demo.700736e9.js +2 -0
  288. package/dist/demo/tmpl_demo.700736e9.js.map +1 -0
  289. package/dist/demo/tmpl_demo.html +1 -0
  290. package/dist/demo/validators_demo.02c73222.js +18 -0
  291. package/dist/demo/validators_demo.02c73222.js.map +1 -0
  292. package/dist/demo/validators_demo.05b7c138.js +4 -0
  293. package/dist/demo/validators_demo.05b7c138.js.map +1 -0
  294. package/dist/demo/validators_demo.48785856.js +4 -0
  295. package/dist/demo/validators_demo.48785856.js.map +1 -0
  296. package/dist/demo/validators_demo.6d800c84.js +18 -0
  297. package/dist/demo/validators_demo.6d800c84.js.map +1 -0
  298. package/dist/demo/validators_demo.html +1 -0
  299. package/dist/dom.d.ts +0 -4
  300. package/dist/events.d.ts +1 -1
  301. package/dist/google-analytics.js +4 -4
  302. package/dist/google-analytics.js.map +1 -1
  303. package/dist/hash.js +9 -5
  304. package/dist/hash.js.map +1 -1
  305. package/dist/hsml-app.d.ts +27 -14
  306. package/dist/hsml-app.js +93 -18
  307. package/dist/hsml-app.js.map +1 -1
  308. package/dist/hsml-convert.js.map +1 -1
  309. package/dist/hsml-dom.js +12 -14
  310. package/dist/hsml-dom.js.map +1 -1
  311. package/dist/hsml-html.js +4 -4
  312. package/dist/hsml-html.js.map +1 -1
  313. package/dist/hsml-idom.js +24 -26
  314. package/dist/hsml-idom.js.map +1 -1
  315. package/dist/hsml.d.ts +20 -16
  316. package/dist/http.d.ts +19 -18
  317. package/dist/http.js +31 -26
  318. package/dist/http.js.map +1 -1
  319. package/{incremental-dom/dist → dist/incremental-dom}/assertions.js +3 -3
  320. package/dist/incremental-dom/assertions.js.map +1 -0
  321. package/{incremental-dom/dist → dist/incremental-dom}/attributes.d.ts +3 -2
  322. package/{incremental-dom/dist → dist/incremental-dom}/attributes.js +15 -16
  323. package/dist/incremental-dom/attributes.js.map +1 -0
  324. package/dist/incremental-dom/changes.d.ts +3 -0
  325. package/{incremental-dom/dist → dist/incremental-dom}/changes.js +5 -4
  326. package/dist/incremental-dom/changes.js.map +1 -0
  327. package/{incremental-dom/dist → dist/incremental-dom}/context.d.ts +2 -0
  328. package/{incremental-dom/dist → dist/incremental-dom}/context.js +2 -1
  329. package/dist/incremental-dom/context.js.map +1 -0
  330. package/{incremental-dom/dist → dist/incremental-dom}/core.d.ts +7 -3
  331. package/{incremental-dom/dist → dist/incremental-dom}/core.js +46 -29
  332. package/dist/incremental-dom/core.js.map +1 -0
  333. package/dist/incremental-dom/debug.js.map +1 -0
  334. package/dist/incremental-dom/diff.d.ts +3 -0
  335. package/{incremental-dom/dist → dist/incremental-dom}/diff.js +8 -8
  336. package/dist/incremental-dom/diff.js.map +1 -0
  337. package/{incremental-dom/dist → dist/incremental-dom}/dom_util.js +2 -2
  338. package/dist/incremental-dom/dom_util.js.map +1 -0
  339. package/{incremental-dom/dist → dist/incremental-dom}/global.js +1 -1
  340. package/dist/incremental-dom/global.js.map +1 -0
  341. package/dist/incremental-dom/index.d.ts +8 -0
  342. package/{incremental-dom/dist → dist/incremental-dom}/index.js +11 -2
  343. package/dist/incremental-dom/index.js.map +1 -0
  344. package/{incremental-dom/dist → dist/incremental-dom}/node_data.d.ts +2 -1
  345. package/{incremental-dom/dist → dist/incremental-dom}/node_data.js +8 -7
  346. package/dist/incremental-dom/node_data.js.map +1 -0
  347. package/{incremental-dom/dist → dist/incremental-dom}/nodes.js +3 -3
  348. package/dist/incremental-dom/nodes.js.map +1 -0
  349. package/{incremental-dom/dist → dist/incremental-dom}/notifications.d.ts +1 -1
  350. package/dist/incremental-dom/notifications.js.map +1 -0
  351. package/dist/incremental-dom/symbols.js.map +1 -0
  352. package/dist/incremental-dom/types.d.ts +15 -0
  353. package/dist/incremental-dom/types.js.map +1 -0
  354. package/dist/incremental-dom/util.js.map +1 -0
  355. package/{incremental-dom/dist → dist/incremental-dom}/virtual_elements.d.ts +3 -3
  356. package/{incremental-dom/dist → dist/incremental-dom}/virtual_elements.js +55 -43
  357. package/dist/incremental-dom/virtual_elements.js.map +1 -0
  358. package/dist/index.d.ts +5 -5
  359. package/dist/index.js +54 -31
  360. package/dist/index.js.map +1 -1
  361. package/dist/router.d.ts +1 -1
  362. package/dist/router.js +13 -13
  363. package/dist/router.js.map +1 -1
  364. package/dist/settings.d.ts +2 -4
  365. package/dist/settings.js +6 -4
  366. package/dist/settings.js.map +1 -1
  367. package/dist/settingse.d.ts +15 -0
  368. package/dist/settingse.js +31 -0
  369. package/dist/settingse.js.map +1 -0
  370. package/dist/signal.d.ts +1 -1
  371. package/dist/tmpl.js +1 -1
  372. package/dist/tmpl.js.map +1 -1
  373. package/dist/validators-moment.d.ts +1 -1
  374. package/dist/validators-moment.js +11 -8
  375. package/dist/validators-moment.js.map +1 -1
  376. package/dist/validators-numeral.d.ts +1 -1
  377. package/dist/validators-numeral.js +13 -10
  378. package/dist/validators-numeral.js.map +1 -1
  379. package/dist/validators-object.d.ts +2 -2
  380. package/dist/validators.d.ts +4 -4
  381. package/package.json +64 -39
  382. package/src/debounce.ts +1 -1
  383. package/src/dom.ts +0 -6
  384. package/src/hash.ts +1 -0
  385. package/src/hsml-app.ts +134 -27
  386. package/src/hsml-dom.ts +13 -16
  387. package/src/hsml-idom.ts +25 -28
  388. package/src/hsml.ts +1 -1
  389. package/src/http.ts +21 -16
  390. package/src/incremental-dom/assertions.ts +254 -0
  391. package/src/incremental-dom/attributes.ts +185 -0
  392. package/src/incremental-dom/changes.ts +53 -0
  393. package/src/incremental-dom/context.ts +40 -0
  394. package/src/incremental-dom/core.ts +517 -0
  395. package/src/incremental-dom/debug.ts +4 -0
  396. package/src/incremental-dom/diff.ts +91 -0
  397. package/src/incremental-dom/dom_util.ts +118 -0
  398. package/src/incremental-dom/global.ts +21 -0
  399. package/src/incremental-dom/index.ts +11 -0
  400. package/src/incremental-dom/node_data.ts +209 -0
  401. package/src/incremental-dom/nodes.ts +82 -0
  402. package/src/incremental-dom/notifications.ts +23 -0
  403. package/src/incremental-dom/symbols.ts +8 -0
  404. package/src/incremental-dom/types.ts +36 -0
  405. package/src/incremental-dom/util.ts +57 -0
  406. package/src/incremental-dom/virtual_elements.ts +392 -0
  407. package/src/index.ts +9 -9
  408. package/src/settings.ts +13 -5
  409. package/src/settingse.ts +50 -0
  410. package/src/tmpl.ts +5 -5
  411. package/src/validators-moment.ts +5 -2
  412. package/src/validators-numeral.ts +4 -3
  413. package/dist/hsml-svac-ctrl.d.ts +0 -36
  414. package/dist/hsml-svac-ctrl.js +0 -232
  415. package/dist/hsml-svac-ctrl.js.map +0 -1
  416. package/dist/hsml-svac-html.d.ts +0 -3
  417. package/dist/hsml-svac-html.js +0 -17
  418. package/dist/hsml-svac-html.js.map +0 -1
  419. package/dist/hsml-svac.d.ts +0 -9
  420. package/dist/hsml-svac.js +0 -3
  421. package/dist/hsml-svac.js.map +0 -1
  422. package/dist/hsml-widget.d.ts +0 -32
  423. package/dist/hsml-widget.js +0 -142
  424. package/dist/hsml-widget.js.map +0 -1
  425. package/dist/umd/cache.js +0 -2
  426. package/dist/umd/cache.js.map +0 -1
  427. package/dist/umd/debounce.js +0 -2
  428. package/dist/umd/debounce.js.map +0 -1
  429. package/dist/umd/dom.js +0 -2
  430. package/dist/umd/dom.js.map +0 -1
  431. package/dist/umd/encode.js +0 -2
  432. package/dist/umd/encode.js.map +0 -1
  433. package/dist/umd/events.js +0 -2
  434. package/dist/umd/events.js.map +0 -1
  435. package/dist/umd/form.js +0 -2
  436. package/dist/umd/form.js.map +0 -1
  437. package/dist/umd/google-analytics.js +0 -2
  438. package/dist/umd/google-analytics.js.map +0 -1
  439. package/dist/umd/hash.js +0 -2
  440. package/dist/umd/hash.js.map +0 -1
  441. package/dist/umd/history.js +0 -2
  442. package/dist/umd/history.js.map +0 -1
  443. package/dist/umd/hsml-app.js +0 -2
  444. package/dist/umd/hsml-app.js.map +0 -1
  445. package/dist/umd/hsml-convert.js +0 -2
  446. package/dist/umd/hsml-convert.js.map +0 -1
  447. package/dist/umd/hsml-dom.js +0 -2
  448. package/dist/umd/hsml-dom.js.map +0 -1
  449. package/dist/umd/hsml-h.js +0 -2
  450. package/dist/umd/hsml-h.js.map +0 -1
  451. package/dist/umd/hsml-html.js +0 -2
  452. package/dist/umd/hsml-html.js.map +0 -1
  453. package/dist/umd/hsml-idom.js +0 -2
  454. package/dist/umd/hsml-idom.js.map +0 -1
  455. package/dist/umd/hsml-svac-ctrl.js +0 -2
  456. package/dist/umd/hsml-svac-ctrl.js.map +0 -1
  457. package/dist/umd/hsml-svac-html.js +0 -2
  458. package/dist/umd/hsml-svac-html.js.map +0 -1
  459. package/dist/umd/hsml-svac.js +0 -2
  460. package/dist/umd/hsml-svac.js.map +0 -1
  461. package/dist/umd/hsml-widget.js +0 -2
  462. package/dist/umd/hsml-widget.js.map +0 -1
  463. package/dist/umd/hsml.js +0 -2
  464. package/dist/umd/hsml.js.map +0 -1
  465. package/dist/umd/http.js +0 -2
  466. package/dist/umd/http.js.map +0 -1
  467. package/dist/umd/index.js +0 -2
  468. package/dist/umd/index.js.map +0 -1
  469. package/dist/umd/load.js +0 -2
  470. package/dist/umd/load.js.map +0 -1
  471. package/dist/umd/objpaths.js +0 -2
  472. package/dist/umd/objpaths.js.map +0 -1
  473. package/dist/umd/router.js +0 -2
  474. package/dist/umd/router.js.map +0 -1
  475. package/dist/umd/settings.js +0 -2
  476. package/dist/umd/settings.js.map +0 -1
  477. package/dist/umd/signal.js +0 -2
  478. package/dist/umd/signal.js.map +0 -1
  479. package/dist/umd/template.js +0 -2
  480. package/dist/umd/template.js.map +0 -1
  481. package/dist/umd/tmpl.js +0 -2
  482. package/dist/umd/tmpl.js.map +0 -1
  483. package/dist/umd/validators-moment.js +0 -2
  484. package/dist/umd/validators-moment.js.map +0 -1
  485. package/dist/umd/validators-numeral.js +0 -2
  486. package/dist/umd/validators-numeral.js.map +0 -1
  487. package/dist/umd/validators-object.js +0 -2
  488. package/dist/umd/validators-object.js.map +0 -1
  489. package/dist/umd/validators.js +0 -2
  490. package/dist/umd/validators.js.map +0 -1
  491. package/incremental-dom/dist/assertions.js.map +0 -1
  492. package/incremental-dom/dist/attributes.js.map +0 -1
  493. package/incremental-dom/dist/changes.d.ts +0 -3
  494. package/incremental-dom/dist/changes.js.map +0 -1
  495. package/incremental-dom/dist/context.js.map +0 -1
  496. package/incremental-dom/dist/core.js.map +0 -1
  497. package/incremental-dom/dist/debug.js.map +0 -1
  498. package/incremental-dom/dist/diff.d.ts +0 -2
  499. package/incremental-dom/dist/diff.js.map +0 -1
  500. package/incremental-dom/dist/dom_util.js.map +0 -1
  501. package/incremental-dom/dist/global.js.map +0 -1
  502. package/incremental-dom/dist/index.d.ts +0 -8
  503. package/incremental-dom/dist/index.js.map +0 -1
  504. package/incremental-dom/dist/node_data.js.map +0 -1
  505. package/incremental-dom/dist/nodes.js.map +0 -1
  506. package/incremental-dom/dist/notifications.js.map +0 -1
  507. package/incremental-dom/dist/symbols.js.map +0 -1
  508. package/incremental-dom/dist/types.d.ts +0 -15
  509. package/incremental-dom/dist/types.js.map +0 -1
  510. package/incremental-dom/dist/umd/incremental-dom.js +0 -2
  511. package/incremental-dom/dist/umd/incremental-dom.js.map +0 -1
  512. package/incremental-dom/dist/util.js.map +0 -1
  513. package/incremental-dom/dist/virtual_elements.js.map +0 -1
  514. package/src/hsml-svac-ctrl.ts +0 -289
  515. package/src/hsml-svac-html.ts +0 -23
  516. package/src/hsml-svac.ts +0 -20
  517. package/src/hsml-widget.ts +0 -181
  518. /package/{incremental-dom/dist → dist/incremental-dom}/assertions.d.ts +0 -0
  519. /package/{incremental-dom/dist → dist/incremental-dom}/debug.d.ts +0 -0
  520. /package/{incremental-dom/dist → dist/incremental-dom}/debug.js +0 -0
  521. /package/{incremental-dom/dist → dist/incremental-dom}/dom_util.d.ts +0 -0
  522. /package/{incremental-dom/dist → dist/incremental-dom}/global.d.ts +0 -0
  523. /package/{incremental-dom/dist → dist/incremental-dom}/nodes.d.ts +0 -0
  524. /package/{incremental-dom/dist → dist/incremental-dom}/notifications.js +0 -0
  525. /package/{incremental-dom/dist → dist/incremental-dom}/symbols.d.ts +0 -0
  526. /package/{incremental-dom/dist → dist/incremental-dom}/symbols.js +0 -0
  527. /package/{incremental-dom/dist → dist/incremental-dom}/types.js +0 -0
  528. /package/{incremental-dom/dist → dist/incremental-dom}/util.d.ts +0 -0
  529. /package/{incremental-dom/dist → dist/incremental-dom}/util.js +0 -0
package/README.md CHANGED
@@ -8,7 +8,10 @@ TypeScript/JavaScript library and tools for rapid server and client side web app
8
8
 
9
9
  Read [Tutorial](HApp.md) to learn how to write HApp.
10
10
 
11
- HSML App [demo](https://peryl.gitlab.io/peryl/demo/hsml-app-js_demo.html), source code:
11
+ See live [demo](https://peryl.gitlab.io/peryl/demo/js/hsml-app-js_demo.html)
12
+ or [demo](https://peryl.gitlab.io/peryl/demo/js/hsml-app-js-happi_demo.html).
13
+
14
+ HApp example code:
12
15
 
13
16
  ```html
14
17
  <!DOCTYPE html>
@@ -28,22 +31,10 @@ HSML App [demo](https://peryl.gitlab.io/peryl/demo/hsml-app-js_demo.html), sourc
28
31
  <h1>PeRyL hsml app demo</h1>
29
32
  <div id="app"></div>
30
33
  </div>
31
- <script src="../incremental-dom/dist/umd/incremental-dom.js"></script>
32
- <script src="../dist/umd/hsml-app.js"></script>
33
-
34
- <!-- <script src="https://peryl.gitlab.io/peryl/incremental-dom/dist/umd/incremental-dom.js"></script> -->
35
- <!-- <script src="https://peryl.gitlab.io/peryl/dist/umd/hsml-app.js"></script> -->
36
-
37
- <!-- <script src="https://unpkg.com/pery/incremental-dom/dist/umd/incremental-dom.js"></script> -->
38
- <!-- <script src="https://unpkg.com/pery/dist/umd/hsml-app.js"></script> -->
39
34
 
35
+ <script src="https://unpkg.com/peryl/dist/browser-umd/hsml-app.js"></script>
40
36
  <script>
41
37
 
42
- const state = {
43
- title: "Counter",
44
- count: 77
45
- };
46
-
47
38
  const Action = {
48
39
  title: "title",
49
40
  dec: "dec",
@@ -51,6 +42,13 @@ HSML App [demo](https://peryl.gitlab.io/peryl/demo/hsml-app-js_demo.html), sourc
51
42
  clear: "clear"
52
43
  }
53
44
 
45
+ function state() {
46
+ return {
47
+ title: "Counter",
48
+ count: 77
49
+ };
50
+ }
51
+
54
52
  function view(state) {
55
53
  return [
56
54
  ["h2",
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <title>PeRyL dom demo</title>
7
+ <style>
8
+ .label {
9
+ font-weight: bold;
10
+ }
11
+
12
+ .count {
13
+ color: darkgray;
14
+ }
15
+ </style>
16
+ </head>
17
+
18
+ <body>
19
+ <h1>PeRyL dom demo</h1>
20
+ <p>
21
+ Click on item to select.
22
+ </p>
23
+ <div id="container"></div>
24
+ <p>
25
+ Seleced:
26
+ <span id="selected"></span>
27
+ </p>
28
+ <script type="module" src="dom_demo.ts"></script>
29
+ </body>
30
+
31
+ </html>
@@ -0,0 +1,98 @@
1
+ import { html, remove, select } from "../src/dom";
2
+
3
+ class Item {
4
+ constructor(
5
+ public text: string,
6
+ public count: number) {
7
+ }
8
+ }
9
+
10
+ class MyWidget {
11
+
12
+ private _items: Item[] = [];
13
+ private _onSelect?: (item: Item) => void;
14
+
15
+ private _element?: HTMLElement;
16
+
17
+ setItems(items: Item[]): this {
18
+ this._items = items;
19
+ this._updateItems();
20
+ return this;
21
+ }
22
+
23
+ getItems(): Item[] {
24
+ return this._items;
25
+ }
26
+
27
+ addItem(item: Item): this {
28
+ this._items.push(item);
29
+ this._updateItems();
30
+ return this;
31
+ }
32
+
33
+ removeItem(item: Item): this {
34
+ this._items = this._items.filter(i => i !== item);
35
+ this._updateItems();
36
+ return this;
37
+ }
38
+
39
+ onSelect(callback: (item: Item) => void): this {
40
+ this._onSelect = callback;
41
+ return this;
42
+ }
43
+
44
+ mount(e: HTMLElement | null): this {
45
+ if (e) {
46
+ this._element = html(`<ol class="Widget"></ol>`);
47
+ e.appendChild(this._element);
48
+ this._updateItems();
49
+ } else {
50
+ console.warn("invalit element", e);
51
+ }
52
+ return this;
53
+ }
54
+
55
+ umount(): this {
56
+ this._element && remove(this._element);
57
+ return this;
58
+ }
59
+
60
+ private _updateItems(): void {
61
+ if (this._element) {
62
+ this._element.innerHTML = "";
63
+ this._items.map(item => {
64
+ const li = html(`
65
+ <li>
66
+ <span class="label" >${item.text}</span>
67
+ <small class="count">[${item.count}]</small>
68
+ </li>`);
69
+ li.addEventListener("click", (e: Event) => {
70
+ e.stopPropagation();
71
+ if (this._onSelect) {
72
+ this._onSelect(item);
73
+ }
74
+ });
75
+ this._element && this._element.appendChild(li);
76
+ });
77
+ }
78
+ }
79
+
80
+ }
81
+
82
+ const myWidget = new MyWidget()
83
+ .setItems(
84
+ [
85
+ new Item("text 1", 1),
86
+ new Item("text 2", 2),
87
+ new Item("text 3", 3)
88
+ ])
89
+ .onSelect(item => {
90
+ console.log("selected:", item);
91
+ const selected = select("#selected") as HTMLSpanElement;
92
+ selected.innerHTML = JSON.stringify(item);
93
+ // const l = myWidget.getItems().length;
94
+ // myWidget.addItem(new Item("text " + (l + 1), l + 1));
95
+ })
96
+ .mount(select("#container"));
97
+
98
+ console.log(myWidget);
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <title>PeRyL encode demo</title>
7
+ </head>
8
+
9
+ <body>
10
+ <h1>PeRyL encode demo</h1>
11
+ <p>
12
+ open console
13
+ </p>
14
+ <script type="module" src="encode_demo.ts"></script>
15
+ </body>
16
+
17
+ </html>
@@ -0,0 +1,25 @@
1
+ import { UrlEncodedData, Base64 } from "../src/encode";
2
+
3
+
4
+ // UrlEncodedData
5
+ const dataObj = {text: "Hello World!", num: 5, a: [1, 2, "33"]};
6
+ console.log(dataObj);
7
+
8
+ const encodedData = UrlEncodedData.encode(dataObj);
9
+ console.log("UrlEncodedData encode: ", encodedData,
10
+ encodedData === "text=Hello%20World!&num=5&a=1&a=2&a=33");
11
+
12
+ const decodedData = UrlEncodedData.decode(encodedData);
13
+ console.log("UrlEncodedData decode: ", JSON.stringify(decodedData),
14
+ JSON.stringify(decodedData) === `{"text":"Hello World!","num":"5","a":["1","2","33"]}`);
15
+
16
+
17
+ // Base64
18
+ const dataStr = "Hello World!";
19
+ console.log(dataStr);
20
+
21
+ const encodedString = Base64.encode(dataStr);
22
+ console.log("Base64 encode: ", encodedString, encodedString === "SGVsbG8gV29ybGQh");
23
+
24
+ const decodedString = Base64.decode(encodedString);
25
+ console.log("Base64 decode: ", decodedString, decodedString === "Hello World!");
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <title>PeRyL events demo</title>
7
+ </head>
8
+
9
+ <body>
10
+ <h1>PeRyL events demo</h1>
11
+ <p>
12
+ open console
13
+ </p>
14
+ <script type="module" src="events_demo.ts"></script>
15
+ </body>
16
+
17
+ </html>
@@ -0,0 +1,40 @@
1
+ import { Events } from "../src/events";
2
+
3
+ type Evts = {
4
+ s: string;
5
+ s1: string;
6
+ s2: string;
7
+ s3: string;
8
+ sx1: string;
9
+ sx2: string;
10
+ n: number;
11
+ o: { x: string };
12
+ };
13
+
14
+ const e = new Events<Evts, string>("ctx");
15
+
16
+ e.any((data, e, ctx) => console.log("any:", data, e, ctx));
17
+
18
+ e.emit("s", "data-eee1");
19
+ e.emit("s", "data-eee1");
20
+ e.on("s", (data, e, ctx) => console.log(data, ctx, e));
21
+ e.emit("s", "data-eee2");
22
+ e.off("s");
23
+ e.emit("s", "data-eee3");
24
+
25
+ e.off();
26
+
27
+ e.emit("s", "data-not-emitted");
28
+
29
+
30
+ e.emit("o", { x: "obj-1" });
31
+ e.once("o", (data, ctx, e) => console.log(data, ctx, e));
32
+ e.emit("o", { x: "obj-2" });
33
+ e.emit("o", { x: "obj-3" });
34
+
35
+ e.emit("s1", "data-all-s1");
36
+ e.emit("s2", "data-all-s2");
37
+ e.emit("s3", "data-all-s3");
38
+
39
+ e.emit("sx1", "data-ex1");
40
+ e.emit("sx2", "data-ex2");
@@ -0,0 +1,73 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <title>PeRyL form demo</title>
7
+ </head>
8
+
9
+ <body>
10
+
11
+ <h1>PeRyL form demo</h1>
12
+
13
+ <form id="form" action="">
14
+ <p>
15
+ <label for="name">Name:</label>
16
+ <input id="name" type="text" name="name" value="">
17
+ <span id="name-err"></span>
18
+ </p>
19
+ <p>
20
+ <label for="age">Age:</label>
21
+ <input id="age" type="number" name="age" value="" min="1" max="100" step="">
22
+ <span id="age-err"></span>
23
+ </p>
24
+ <p>
25
+ <label for="sex">Sex:</label>
26
+ <select id="sex" name="sex">
27
+ <option value=""></option>
28
+ <option value="M">Male</option>
29
+ <option value="F">Female</option>
30
+ </select>
31
+ <span id="sex-err"></span>
32
+ </p>
33
+ <p>
34
+ <label for="agree">Agreement:</label>
35
+ <input id="agree" type="checkbox" name="agree">
36
+ <span id="agree-err"></span>
37
+ </p>
38
+ <p>
39
+ <label for="yes-no-y">yes</label>
40
+ <input id="yes-no-y" type="radio" name="yes-no" value="y">
41
+ <label for="yes-no-n">no</label>
42
+ <input id="yes-no-n" type="radio" name="yes-no" value="n">
43
+ <span id="yes-no-err"></span>
44
+ </p>
45
+ <p>
46
+ <label for="text">Text:</label>
47
+ <textarea id="text" name="text"></textarea>
48
+ <span id="text-err"></span>
49
+ </p>
50
+ <p>
51
+ <label for="file"></label>
52
+ <input id="file" type="file" name="file">
53
+ <span id="file-err"></span>
54
+ </p>
55
+ <p>
56
+ <input type="submit" value="Submit">
57
+ </p>
58
+ </form>
59
+
60
+ <p>
61
+ change:
62
+ <span id="change"></span>
63
+ </p>
64
+ <p>
65
+ values:
66
+ <span id="values"></span>
67
+ </p>
68
+
69
+ <script type="module" src="form_demo.ts"></script>
70
+
71
+ </body>
72
+
73
+ </html>
@@ -0,0 +1,96 @@
1
+ import * as form from "../src/form";
2
+ import { select } from "../src/dom";
3
+
4
+ const stringValidator = (entry: form.Entry, locale?: string): string => {
5
+ switch (locale) {
6
+ case "sk":
7
+ return entry.getValue() ? "" : "Prázdna hodnota";
8
+ default:
9
+ return entry.getValue() ? "" : "Empty value";
10
+ }
11
+ };
12
+
13
+ const numberValidator = (entry: form.Entry, locale?: string): string => {
14
+ switch (locale) {
15
+ case "sk":
16
+ return entry.getValue() ? "" : "Prázdna hodnota";
17
+ default:
18
+ return entry.getValue() ? "" : "Empty value";
19
+ }
20
+ };
21
+
22
+ const fileValidator = (entry: form.Entry, locale?: string): string => {
23
+ const fileEntry = entry as form.FileEntry;
24
+ switch (locale) {
25
+ case "sk":
26
+ return fileEntry.getFile() ? "" : "Prázdna hodnota";
27
+ default:
28
+ return fileEntry.getFile() ? "" : "Empty value";
29
+ }
30
+ };
31
+
32
+ const showChange = (entry: form.Entry) => {
33
+ const el = select("#change");
34
+ el && (el.innerHTML = entry.getValue() || "");
35
+ };
36
+
37
+ new form.Form("form")
38
+ .addEntry(
39
+ new form.TextInputEntry("name")
40
+ .setValue("Peter")
41
+ .setValidator(stringValidator)
42
+ .onChange(showChange))
43
+ .addEntry(
44
+ new form.NumberInputEntry("age")
45
+ .setStep(0.1)
46
+ .setDecimals(2)
47
+ .setValue("20")
48
+ .enableMouseWheel()
49
+ .enableMouseDrag()
50
+ .setValidator(numberValidator)
51
+ .onChange(showChange))
52
+ .addEntry(
53
+ new form.SelectEntry("sex")
54
+ // .setOptions([
55
+ // { value: "A", text: "text A" },
56
+ // { value: "B", text: "text B" }])
57
+ // .setValue("B")
58
+ .setValue("F")
59
+ .setValidator(stringValidator)
60
+ .onChange(showChange))
61
+ .addEntry(
62
+ new form.CheckboxEntry("agree")
63
+ .setValue(true.toString())
64
+ .setValidator(stringValidator)
65
+ .onChange(showChange))
66
+ .addEntry(
67
+ new form.RadioEntry(["yes-no-y", "yes-no-n"])
68
+ .setValue("n")
69
+ .setValidator(stringValidator)
70
+ .onChange(showChange))
71
+ .addEntry(
72
+ new form.TextAreaEntry("text")
73
+ .setValue("text text")
74
+ .setValidator(stringValidator)
75
+ .onChange(showChange))
76
+ .addEntry(
77
+ new form.FileEntry("file")
78
+ .setValue("File")
79
+ .setValidator(fileValidator)
80
+ .onChange(showChange))
81
+ .onSubmit((form: form.Form) => {
82
+ const errors = form.validate("sk");
83
+ for (const error in errors) {
84
+ if (errors.hasOwnProperty(error)) {
85
+ const el = select("#" + error + "-err");
86
+ el && (el.innerHTML = errors[error]);
87
+ }
88
+ }
89
+ if (form.isValid(errors)) {
90
+ const el = select("#values");
91
+ el && (el.innerHTML = JSON.stringify(form.getValues()));
92
+ } else {
93
+ const el = select("#values");
94
+ el && (el.innerHTML = "");
95
+ }
96
+ });
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <title>PeRyL hash demo</title>
7
+ </head>
8
+
9
+ <body>
10
+ <h1>PeRyL hash demo</h1>
11
+ <hr />
12
+ <pre id="output"></pre>
13
+ <hr />
14
+ <h2>window.hash</h2>
15
+ <p>
16
+ <button id=hash>hash</button>
17
+ </p>
18
+ <div id="hash-data"></div>
19
+ <script type="module" src="hash_demo.ts"></script>
20
+ </body>
21
+
22
+ </html>
@@ -0,0 +1,28 @@
1
+ import * as hash from "../src/hash";
2
+ import { select } from "../src/dom";
3
+
4
+ const out = select("#output");
5
+ out && (out.innerHTML = "test");
6
+
7
+ const emitWritten = true;
8
+
9
+ const h = new hash.Hash<hash.HashUrlData>(emitWritten)
10
+ // .coders(hash.jsonEncode, hash.jsonDecode)
11
+ .coders(hash.hashUrlEncode, hash.hashUrlDecode)
12
+ .onChange(data => {
13
+ console.log("hash:", JSON.stringify(data));
14
+ out && (out.innerHTML += "<br/>" + "hash: " + JSON.stringify(data));
15
+ })
16
+ .listen()
17
+ // .write("hello");
18
+ // .write({ message: "hello" });
19
+ .write({ path: ["hello", "peter"], query: { a: "a?a", b: "b&b", c: " .%" } });
20
+
21
+ (self as any).h = h;
22
+
23
+ const el = select("#hash");
24
+ // el && (el.onclick = (e: MouseEvent) => h.write(new Date().getTime()));
25
+ // el && (el.onclick = (e: MouseEvent) => h.write({ time: new Date().getTime(), x: " &?" }));
26
+ el && (el.onclick = (e: MouseEvent) => h.write({ path: ["hello", "pet/e r"], query: { a: ["aaá", "x/x x"], b: "b&b", c: " ?.%", time: "" + new Date().getTime() } }));
27
+ // el && (el.onclick = (e: MouseEvent) => h.write("hello/peter?a=aa%25C3%25A1&b=b%2526b&c=+%253F.%2525&time=" + new Date().getTime()));
28
+ // el && (el.onclick = (e: MouseEvent) => h.write("hello/peter"));
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <title>PeRyL history demo</title>
7
+ </head>
8
+
9
+ <body>
10
+ <div>
11
+ <h1>PeRyL history demo</h1>
12
+ <p>check how back button works</p>
13
+ <nav>
14
+ <ul>
15
+ <li><a href="#history_demo.html" class="load-content">Home</a></li>
16
+ <li><a href="#about.html" class="load-content">About</a></li>
17
+ <li><a href="#products.html" class="load-content">Products</a></li>
18
+ <li><a href="#contact.html" class="load-content">Contact</a></li>
19
+ </ul>
20
+ </nav>
21
+ <h1 id="title"></h1>
22
+ <div id="content"></div>
23
+ </div>
24
+ <script type="module" src="history_demo.ts"></script>
25
+ </body>
26
+
27
+ </html>
@@ -0,0 +1,66 @@
1
+ import * as history from "../src/history";
2
+ import { select } from "../src/dom";
3
+
4
+ interface PageState {
5
+ title: string;
6
+ content: string;
7
+ }
8
+
9
+
10
+ const pages: { [key: string]: PageState; } = {
11
+ history_demo: {
12
+ title: "Home Page",
13
+ content: "This is the home page."
14
+ },
15
+ about: {
16
+ title: "About",
17
+ content: "Some content about the business."
18
+ },
19
+ products: {
20
+ title: "Products",
21
+ content: "Buy some of our great products!"
22
+ },
23
+ contact: {
24
+ title: "Contact",
25
+ content: "Say hello! We love to chat."
26
+ }
27
+ };
28
+
29
+
30
+ // Get references to the page elements.
31
+ const navLinks = document.querySelectorAll(".load-content");
32
+ const titleElement = select("#title");
33
+ const contentElement = select("#content");
34
+
35
+ function displayPage(state: any) {
36
+ // Check to make sure that this state object is not null.
37
+ if (state) {
38
+ document.title = state.title;
39
+ titleElement && (titleElement.innerHTML = state.title);
40
+ contentElement && (contentElement.innerHTML = state.content);
41
+ }
42
+ }
43
+
44
+ const h = new history.History<PageState>();
45
+
46
+ h.onChange((pageState) => {
47
+ console.log("onChange", pageState);
48
+ displayPage(pageState);
49
+ });
50
+
51
+
52
+ for (let i = 0, l = navLinks.length; i < l; i++) {
53
+ navLinks[i].addEventListener("click", function (e) {
54
+ e.preventDefault();
55
+ const pageURL = (e.target as any).attributes["href"].value;
56
+ const pageState = pages[pageURL.split(".")[0]];
57
+ displayPage(pageState);
58
+ h.pushState(pageState, pageState.title, pageURL);
59
+ console.log("pushState", pageState, pageState.title, pageURL);
60
+ });
61
+ }
62
+
63
+
64
+ displayPage(pages["history_demo"]);
65
+
66
+ h.replaceState(pages["history_demo"], pages["history_demo"].title, "");
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
7
+ <title>PeRyL HSML App Form</title>
8
+ <link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
9
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
10
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
11
+ </head>
12
+
13
+ <body>
14
+ <script type="module" src="hsml-app-form_demo.ts"></script>
15
+ </body>
16
+
17
+ </html>