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.
- package/README.md +12 -14
- package/demo/dom_demo.html +31 -0
- package/demo/dom_demo.ts +98 -0
- package/demo/encode_demo.html +17 -0
- package/demo/encode_demo.ts +25 -0
- package/demo/events_demo.html +17 -0
- package/demo/events_demo.ts +40 -0
- package/demo/form_demo.html +73 -0
- package/demo/form_demo.ts +96 -0
- package/demo/hash_demo.html +22 -0
- package/demo/hash_demo.ts +28 -0
- package/demo/history_demo.html +27 -0
- package/demo/history_demo.ts +66 -0
- package/demo/hsml-app-form_demo.html +17 -0
- package/demo/hsml-app-form_demo.ts +180 -0
- package/demo/hsml-app-tictactoe-demo.html +16 -0
- package/demo/hsml-app-tictactoe-demo.ts +70 -0
- package/demo/hsml-app_demo.html +16 -0
- package/demo/hsml-app_demo.ts +225 -0
- package/demo/hsml-appc_demo.html +16 -0
- package/demo/hsml-appc_demo.ts +49 -0
- package/demo/hsml-appel_demo.html +17 -0
- package/demo/hsml-appel_demo.ts +104 -0
- package/demo/hsml-appi_demo.html +16 -0
- package/demo/hsml-appi_demo.ts +58 -0
- package/demo/hsml-convert_demo.html +40 -0
- package/demo/hsml-convert_demo.ts +48 -0
- package/demo/hsml_demo.html +25 -0
- package/demo/hsml_demo.ts +85 -0
- package/demo/http_demo.html +17 -0
- package/demo/http_demo.ts +79 -0
- package/demo/i18n_demo.html +18 -0
- package/demo/i18n_demo.ts +106 -0
- package/demo/js/hsml-app-js-happi_demo.html +66 -0
- package/demo/js/hsml-app-js_demo.html +127 -0
- package/demo/objpath_demo.html +17 -0
- package/demo/objpath_demo.ts +27 -0
- package/demo/processor_demo.html +25 -0
- package/demo/processor_demo.ts +199 -0
- package/demo/router_demo.html +22 -0
- package/demo/router_demo.ts +33 -0
- package/demo/signal_demo.html +17 -0
- package/demo/signal_demo.ts +104 -0
- package/demo/template_demo.html +47 -0
- package/demo/template_demo.ts +47 -0
- package/demo/tmpl_demo.html +17 -0
- package/demo/tmpl_demo.ts +23 -0
- package/demo/validators_demo.html +22 -0
- package/demo/validators_demo.ts +164 -0
- package/dist/browser-esmodule/cache.js +71 -0
- package/dist/browser-esmodule/cache.js.map +1 -0
- package/dist/browser-esmodule/debounce.js +27 -0
- package/dist/browser-esmodule/debounce.js.map +1 -0
- package/dist/browser-esmodule/dom.js +138 -0
- package/dist/browser-esmodule/dom.js.map +1 -0
- package/dist/browser-esmodule/encode.js +158 -0
- package/dist/browser-esmodule/encode.js.map +1 -0
- package/dist/browser-esmodule/events.js +55 -0
- package/dist/browser-esmodule/events.js.map +1 -0
- package/dist/browser-esmodule/form.js +383 -0
- package/dist/browser-esmodule/form.js.map +1 -0
- package/dist/browser-esmodule/google-analytics.js +50 -0
- package/dist/browser-esmodule/google-analytics.js.map +1 -0
- package/dist/browser-esmodule/hash.js +89 -0
- package/dist/browser-esmodule/hash.js.map +1 -0
- package/dist/browser-esmodule/history.js +39 -0
- package/dist/browser-esmodule/history.js.map +1 -0
- package/dist/browser-esmodule/hsml-app.js +1352 -0
- package/dist/browser-esmodule/hsml-app.js.map +1 -0
- package/dist/browser-esmodule/hsml-convert.js +179 -0
- package/dist/browser-esmodule/hsml-convert.js.map +1 -0
- package/dist/browser-esmodule/hsml-dom.js +202 -0
- package/dist/browser-esmodule/hsml-dom.js.map +1 -0
- package/dist/browser-esmodule/hsml-h.js +29 -0
- package/dist/browser-esmodule/hsml-h.js.map +1 -0
- package/dist/browser-esmodule/hsml-html.js +338 -0
- package/dist/browser-esmodule/hsml-html.js.map +1 -0
- package/dist/browser-esmodule/hsml-idom.js +938 -0
- package/dist/browser-esmodule/hsml-idom.js.map +1 -0
- package/dist/browser-esmodule/hsml.js +98 -0
- package/dist/browser-esmodule/hsml.js.map +1 -0
- package/dist/browser-esmodule/http.js +316 -0
- package/dist/browser-esmodule/http.js.map +1 -0
- package/dist/browser-esmodule/index.js +4039 -0
- package/dist/browser-esmodule/index.js.map +1 -0
- package/dist/browser-esmodule/load.js +72 -0
- package/dist/browser-esmodule/load.js.map +1 -0
- package/dist/browser-esmodule/objpaths.js +25 -0
- package/dist/browser-esmodule/objpaths.js.map +1 -0
- package/dist/browser-esmodule/router.js +146 -0
- package/dist/browser-esmodule/router.js.map +1 -0
- package/dist/browser-esmodule/settings.js +38 -0
- package/dist/browser-esmodule/settings.js.map +1 -0
- package/dist/browser-esmodule/settingse.js +85 -0
- package/dist/browser-esmodule/settingse.js.map +1 -0
- package/dist/browser-esmodule/signal.js +61 -0
- package/dist/browser-esmodule/signal.js.map +1 -0
- package/dist/browser-esmodule/template.js +29 -0
- package/dist/browser-esmodule/template.js.map +1 -0
- package/dist/browser-esmodule/tmpl.js +45 -0
- package/dist/browser-esmodule/tmpl.js.map +1 -0
- package/dist/browser-esmodule/validators-moment.js +536 -0
- package/dist/browser-esmodule/validators-moment.js.map +1 -0
- package/dist/browser-esmodule/validators-numeral.js +538 -0
- package/dist/browser-esmodule/validators-numeral.js.map +1 -0
- package/dist/browser-esmodule/validators-object.js +103 -0
- package/dist/browser-esmodule/validators-object.js.map +1 -0
- package/dist/browser-esmodule/validators.js +432 -0
- package/dist/browser-esmodule/validators.js.map +1 -0
- package/dist/browser-umd/cache.js +2 -0
- package/dist/browser-umd/cache.js.map +1 -0
- package/dist/browser-umd/debounce.js +2 -0
- package/dist/browser-umd/debounce.js.map +1 -0
- package/dist/browser-umd/dom.js +2 -0
- package/dist/browser-umd/dom.js.map +1 -0
- package/dist/browser-umd/encode.js +2 -0
- package/dist/browser-umd/encode.js.map +1 -0
- package/dist/browser-umd/events.js +2 -0
- package/dist/browser-umd/events.js.map +1 -0
- package/dist/browser-umd/form.js +2 -0
- package/dist/browser-umd/form.js.map +1 -0
- package/dist/browser-umd/google-analytics.js +2 -0
- package/dist/browser-umd/google-analytics.js.map +1 -0
- package/dist/browser-umd/hash.js +2 -0
- package/dist/browser-umd/hash.js.map +1 -0
- package/dist/browser-umd/history.js +2 -0
- package/dist/browser-umd/history.js.map +1 -0
- package/dist/browser-umd/hsml-app.js +2 -0
- package/dist/browser-umd/hsml-app.js.map +1 -0
- package/dist/browser-umd/hsml-convert.js +2 -0
- package/dist/browser-umd/hsml-convert.js.map +1 -0
- package/dist/browser-umd/hsml-dom.js +2 -0
- package/dist/browser-umd/hsml-dom.js.map +1 -0
- package/dist/browser-umd/hsml-h.js +2 -0
- package/dist/browser-umd/hsml-h.js.map +1 -0
- package/dist/browser-umd/hsml-html.js +2 -0
- package/dist/browser-umd/hsml-html.js.map +1 -0
- package/dist/browser-umd/hsml-idom.js +2 -0
- package/dist/browser-umd/hsml-idom.js.map +1 -0
- package/dist/browser-umd/hsml.js +2 -0
- package/dist/browser-umd/hsml.js.map +1 -0
- package/dist/browser-umd/http.js +2 -0
- package/dist/browser-umd/http.js.map +1 -0
- package/dist/browser-umd/index.js +3 -0
- package/dist/browser-umd/index.js.LICENSE.txt +11 -0
- package/dist/browser-umd/index.js.map +1 -0
- package/dist/browser-umd/load.js +2 -0
- package/dist/browser-umd/load.js.map +1 -0
- package/dist/browser-umd/objpaths.js +2 -0
- package/dist/browser-umd/objpaths.js.map +1 -0
- package/dist/browser-umd/router.js +2 -0
- package/dist/browser-umd/router.js.map +1 -0
- package/dist/browser-umd/settings.js +2 -0
- package/dist/browser-umd/settings.js.map +1 -0
- package/dist/browser-umd/settingse.js +2 -0
- package/dist/browser-umd/settingse.js.map +1 -0
- package/dist/browser-umd/signal.js +2 -0
- package/dist/browser-umd/signal.js.map +1 -0
- package/dist/browser-umd/template.js +2 -0
- package/dist/browser-umd/template.js.map +1 -0
- package/dist/browser-umd/tmpl.js +2 -0
- package/dist/browser-umd/tmpl.js.map +1 -0
- package/dist/browser-umd/validators-moment.js +3 -0
- package/dist/browser-umd/validators-moment.js.LICENSE.txt +3 -0
- package/dist/browser-umd/validators-moment.js.map +1 -0
- package/dist/browser-umd/validators-numeral.js +3 -0
- package/dist/browser-umd/validators-numeral.js.LICENSE.txt +7 -0
- package/dist/browser-umd/validators-numeral.js.map +1 -0
- package/dist/browser-umd/validators-object.js +2 -0
- package/dist/browser-umd/validators-object.js.map +1 -0
- package/dist/browser-umd/validators.js +2 -0
- package/dist/browser-umd/validators.js.map +1 -0
- package/dist/cache.d.ts +1 -1
- package/dist/debounce.d.ts +1 -1
- package/dist/debounce.js.map +1 -1
- package/dist/demo/dom_demo.3e0ad00b.js +2 -0
- package/dist/demo/dom_demo.3e0ad00b.js.map +1 -0
- package/dist/demo/dom_demo.94c07802.js +2 -0
- package/dist/demo/dom_demo.94c07802.js.map +1 -0
- package/dist/demo/dom_demo.html +1 -0
- package/dist/demo/encode_demo.ce182166.js +2 -0
- package/dist/demo/encode_demo.ce182166.js.map +1 -0
- package/dist/demo/encode_demo.f40a44eb.js +2 -0
- package/dist/demo/encode_demo.f40a44eb.js.map +1 -0
- package/dist/demo/encode_demo.html +1 -0
- package/dist/demo/events_demo.332d99cc.js +2 -0
- package/dist/demo/events_demo.332d99cc.js.map +1 -0
- package/dist/demo/events_demo.8347f9a9.js +2 -0
- package/dist/demo/events_demo.8347f9a9.js.map +1 -0
- package/dist/demo/events_demo.html +1 -0
- package/dist/demo/form_demo.40b774c2.js +2 -0
- package/dist/demo/form_demo.40b774c2.js.map +1 -0
- package/dist/demo/form_demo.75ed39a0.js +2 -0
- package/dist/demo/form_demo.75ed39a0.js.map +1 -0
- package/dist/demo/form_demo.html +1 -0
- package/dist/demo/hash_demo.416ed5fa.js +2 -0
- package/dist/demo/hash_demo.416ed5fa.js.map +1 -0
- package/dist/demo/hash_demo.b40a9611.js +2 -0
- package/dist/demo/hash_demo.b40a9611.js.map +1 -0
- package/dist/demo/hash_demo.html +1 -0
- package/dist/demo/history_demo.e11ea378.js +2 -0
- package/dist/demo/history_demo.e11ea378.js.map +1 -0
- package/dist/demo/history_demo.feee2e18.js +2 -0
- package/dist/demo/history_demo.feee2e18.js.map +1 -0
- package/dist/demo/history_demo.html +1 -0
- package/dist/demo/hsml-app-form_demo.06d87b64.js +2 -0
- package/dist/demo/hsml-app-form_demo.06d87b64.js.map +1 -0
- package/dist/demo/hsml-app-form_demo.4706bc2e.js +2 -0
- package/dist/demo/hsml-app-form_demo.4706bc2e.js.map +1 -0
- package/dist/demo/hsml-app-form_demo.html +1 -0
- package/dist/demo/hsml-app-tictactoe-demo.e0bc6fed.js +2 -0
- package/dist/demo/hsml-app-tictactoe-demo.e0bc6fed.js.map +1 -0
- package/dist/demo/hsml-app-tictactoe-demo.f9399bf0.js +2 -0
- package/dist/demo/hsml-app-tictactoe-demo.f9399bf0.js.map +1 -0
- package/dist/demo/hsml-app-tictactoe-demo.html +1 -0
- package/dist/demo/hsml-app_demo.033431ac.js +2 -0
- package/dist/demo/hsml-app_demo.033431ac.js.map +1 -0
- package/dist/demo/hsml-app_demo.204365df.js +2 -0
- package/dist/demo/hsml-app_demo.204365df.js.map +1 -0
- package/dist/demo/hsml-app_demo.html +1 -0
- package/dist/demo/hsml-appc_demo.06ff0d1d.js +2 -0
- package/dist/demo/hsml-appc_demo.06ff0d1d.js.map +1 -0
- package/dist/demo/hsml-appc_demo.702d405b.js +2 -0
- package/dist/demo/hsml-appc_demo.702d405b.js.map +1 -0
- package/dist/demo/hsml-appc_demo.74bd46ea.js +2 -0
- package/dist/demo/hsml-appc_demo.74bd46ea.js.map +1 -0
- package/dist/demo/hsml-appc_demo.9a97c24c.js +2 -0
- package/dist/demo/hsml-appc_demo.9a97c24c.js.map +1 -0
- package/dist/demo/hsml-appc_demo.html +1 -0
- package/dist/demo/hsml-appel_demo.2a0812f7.js +2 -0
- package/dist/demo/hsml-appel_demo.2a0812f7.js.map +1 -0
- package/dist/demo/hsml-appel_demo.36395e9f.js +2 -0
- package/dist/demo/hsml-appel_demo.36395e9f.js.map +1 -0
- package/dist/demo/hsml-appel_demo.html +1 -0
- package/dist/demo/hsml-appi_demo.0492f5a4.js +2 -0
- package/dist/demo/hsml-appi_demo.0492f5a4.js.map +1 -0
- package/dist/demo/hsml-appi_demo.0847d145.js +2 -0
- package/dist/demo/hsml-appi_demo.0847d145.js.map +1 -0
- package/dist/demo/hsml-appi_demo.html +1 -0
- package/dist/demo/hsml-convert_demo.0ea1fa3b.js +2 -0
- package/dist/demo/hsml-convert_demo.0ea1fa3b.js.map +1 -0
- package/dist/demo/hsml-convert_demo.63e3e7b5.js +2 -0
- package/dist/demo/hsml-convert_demo.63e3e7b5.js.map +1 -0
- package/dist/demo/hsml-convert_demo.html +1 -0
- package/dist/demo/hsml_demo.33f28c29.js +2 -0
- package/dist/demo/hsml_demo.33f28c29.js.map +1 -0
- package/dist/demo/hsml_demo.ff950ba1.js +2 -0
- package/dist/demo/hsml_demo.ff950ba1.js.map +1 -0
- package/dist/demo/hsml_demo.html +1 -0
- package/dist/demo/http_demo.0c22b4b7.js +2 -0
- package/dist/demo/http_demo.0c22b4b7.js.map +1 -0
- package/dist/demo/http_demo.cd09bdb8.js +2 -0
- package/dist/demo/http_demo.cd09bdb8.js.map +1 -0
- package/dist/demo/http_demo.html +1 -0
- package/dist/demo/i18n_demo.52e59e93.js +2 -0
- package/dist/demo/i18n_demo.52e59e93.js.map +1 -0
- package/dist/demo/i18n_demo.8ea9448b.js +2 -0
- package/dist/demo/i18n_demo.8ea9448b.js.map +1 -0
- package/dist/demo/i18n_demo.html +1 -0
- package/dist/demo/objpath_demo.a755ffad.js +2 -0
- package/dist/demo/objpath_demo.a755ffad.js.map +1 -0
- package/dist/demo/objpath_demo.ce323200.js +2 -0
- package/dist/demo/objpath_demo.ce323200.js.map +1 -0
- package/dist/demo/objpath_demo.html +1 -0
- package/dist/demo/processor_demo.c314802b.js +2 -0
- package/dist/demo/processor_demo.c314802b.js.map +1 -0
- package/dist/demo/processor_demo.html +2 -0
- package/dist/demo/processor_demo.js +2 -0
- package/dist/demo/processor_demo.js.map +1 -0
- package/dist/demo/router_demo.8703f75f.js +2 -0
- package/dist/demo/router_demo.8703f75f.js.map +1 -0
- package/dist/demo/router_demo.c42ee304.js +2 -0
- package/dist/demo/router_demo.c42ee304.js.map +1 -0
- package/dist/demo/router_demo.html +1 -0
- package/dist/demo/signal_demo.b1b74db4.js +2 -0
- package/dist/demo/signal_demo.b1b74db4.js.map +1 -0
- package/dist/demo/signal_demo.cacf70a4.js +2 -0
- package/dist/demo/signal_demo.cacf70a4.js.map +1 -0
- package/dist/demo/signal_demo.html +1 -0
- package/dist/demo/template_demo.60b5d288.js +2 -0
- package/dist/demo/template_demo.60b5d288.js.map +1 -0
- package/dist/demo/template_demo.7015ed65.js +2 -0
- package/dist/demo/template_demo.7015ed65.js.map +1 -0
- package/dist/demo/template_demo.html +21 -0
- package/dist/demo/tmpl_demo.474bf76c.js +2 -0
- package/dist/demo/tmpl_demo.474bf76c.js.map +1 -0
- package/dist/demo/tmpl_demo.700736e9.js +2 -0
- package/dist/demo/tmpl_demo.700736e9.js.map +1 -0
- package/dist/demo/tmpl_demo.html +1 -0
- package/dist/demo/validators_demo.02c73222.js +18 -0
- package/dist/demo/validators_demo.02c73222.js.map +1 -0
- package/dist/demo/validators_demo.05b7c138.js +4 -0
- package/dist/demo/validators_demo.05b7c138.js.map +1 -0
- package/dist/demo/validators_demo.48785856.js +4 -0
- package/dist/demo/validators_demo.48785856.js.map +1 -0
- package/dist/demo/validators_demo.6d800c84.js +18 -0
- package/dist/demo/validators_demo.6d800c84.js.map +1 -0
- package/dist/demo/validators_demo.html +1 -0
- package/dist/dom.d.ts +0 -4
- package/dist/events.d.ts +1 -1
- package/dist/google-analytics.js +4 -4
- package/dist/google-analytics.js.map +1 -1
- package/dist/hash.js +9 -5
- package/dist/hash.js.map +1 -1
- package/dist/hsml-app.d.ts +27 -14
- package/dist/hsml-app.js +93 -18
- package/dist/hsml-app.js.map +1 -1
- package/dist/hsml-convert.js.map +1 -1
- package/dist/hsml-dom.js +12 -14
- package/dist/hsml-dom.js.map +1 -1
- package/dist/hsml-html.js +4 -4
- package/dist/hsml-html.js.map +1 -1
- package/dist/hsml-idom.js +24 -26
- package/dist/hsml-idom.js.map +1 -1
- package/dist/hsml.d.ts +20 -16
- package/dist/http.d.ts +19 -18
- package/dist/http.js +31 -26
- package/dist/http.js.map +1 -1
- package/{incremental-dom/dist → dist/incremental-dom}/assertions.js +3 -3
- package/dist/incremental-dom/assertions.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/attributes.d.ts +3 -2
- package/{incremental-dom/dist → dist/incremental-dom}/attributes.js +15 -16
- package/dist/incremental-dom/attributes.js.map +1 -0
- package/dist/incremental-dom/changes.d.ts +3 -0
- package/{incremental-dom/dist → dist/incremental-dom}/changes.js +5 -4
- package/dist/incremental-dom/changes.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/context.d.ts +2 -0
- package/{incremental-dom/dist → dist/incremental-dom}/context.js +2 -1
- package/dist/incremental-dom/context.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/core.d.ts +7 -3
- package/{incremental-dom/dist → dist/incremental-dom}/core.js +46 -29
- package/dist/incremental-dom/core.js.map +1 -0
- package/dist/incremental-dom/debug.js.map +1 -0
- package/dist/incremental-dom/diff.d.ts +3 -0
- package/{incremental-dom/dist → dist/incremental-dom}/diff.js +8 -8
- package/dist/incremental-dom/diff.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/dom_util.js +2 -2
- package/dist/incremental-dom/dom_util.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/global.js +1 -1
- package/dist/incremental-dom/global.js.map +1 -0
- package/dist/incremental-dom/index.d.ts +8 -0
- package/{incremental-dom/dist → dist/incremental-dom}/index.js +11 -2
- package/dist/incremental-dom/index.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/node_data.d.ts +2 -1
- package/{incremental-dom/dist → dist/incremental-dom}/node_data.js +8 -7
- package/dist/incremental-dom/node_data.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/nodes.js +3 -3
- package/dist/incremental-dom/nodes.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/notifications.d.ts +1 -1
- package/dist/incremental-dom/notifications.js.map +1 -0
- package/dist/incremental-dom/symbols.js.map +1 -0
- package/dist/incremental-dom/types.d.ts +15 -0
- package/dist/incremental-dom/types.js.map +1 -0
- package/dist/incremental-dom/util.js.map +1 -0
- package/{incremental-dom/dist → dist/incremental-dom}/virtual_elements.d.ts +3 -3
- package/{incremental-dom/dist → dist/incremental-dom}/virtual_elements.js +55 -43
- package/dist/incremental-dom/virtual_elements.js.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +54 -31
- package/dist/index.js.map +1 -1
- package/dist/router.d.ts +1 -1
- package/dist/router.js +13 -13
- package/dist/router.js.map +1 -1
- package/dist/settings.d.ts +2 -4
- package/dist/settings.js +6 -4
- package/dist/settings.js.map +1 -1
- package/dist/settingse.d.ts +15 -0
- package/dist/settingse.js +31 -0
- package/dist/settingse.js.map +1 -0
- package/dist/signal.d.ts +1 -1
- package/dist/tmpl.js +1 -1
- package/dist/tmpl.js.map +1 -1
- package/dist/validators-moment.d.ts +1 -1
- package/dist/validators-moment.js +11 -8
- package/dist/validators-moment.js.map +1 -1
- package/dist/validators-numeral.d.ts +1 -1
- package/dist/validators-numeral.js +13 -10
- package/dist/validators-numeral.js.map +1 -1
- package/dist/validators-object.d.ts +2 -2
- package/dist/validators.d.ts +4 -4
- package/package.json +64 -39
- package/src/debounce.ts +1 -1
- package/src/dom.ts +0 -6
- package/src/hash.ts +1 -0
- package/src/hsml-app.ts +134 -27
- package/src/hsml-dom.ts +13 -16
- package/src/hsml-idom.ts +25 -28
- package/src/hsml.ts +1 -1
- package/src/http.ts +21 -16
- package/src/incremental-dom/assertions.ts +254 -0
- package/src/incremental-dom/attributes.ts +185 -0
- package/src/incremental-dom/changes.ts +53 -0
- package/src/incremental-dom/context.ts +40 -0
- package/src/incremental-dom/core.ts +517 -0
- package/src/incremental-dom/debug.ts +4 -0
- package/src/incremental-dom/diff.ts +91 -0
- package/src/incremental-dom/dom_util.ts +118 -0
- package/src/incremental-dom/global.ts +21 -0
- package/src/incremental-dom/index.ts +11 -0
- package/src/incremental-dom/node_data.ts +209 -0
- package/src/incremental-dom/nodes.ts +82 -0
- package/src/incremental-dom/notifications.ts +23 -0
- package/src/incremental-dom/symbols.ts +8 -0
- package/src/incremental-dom/types.ts +36 -0
- package/src/incremental-dom/util.ts +57 -0
- package/src/incremental-dom/virtual_elements.ts +392 -0
- package/src/index.ts +9 -9
- package/src/settings.ts +13 -5
- package/src/settingse.ts +50 -0
- package/src/tmpl.ts +5 -5
- package/src/validators-moment.ts +5 -2
- package/src/validators-numeral.ts +4 -3
- package/dist/hsml-svac-ctrl.d.ts +0 -36
- package/dist/hsml-svac-ctrl.js +0 -232
- package/dist/hsml-svac-ctrl.js.map +0 -1
- package/dist/hsml-svac-html.d.ts +0 -3
- package/dist/hsml-svac-html.js +0 -17
- package/dist/hsml-svac-html.js.map +0 -1
- package/dist/hsml-svac.d.ts +0 -9
- package/dist/hsml-svac.js +0 -3
- package/dist/hsml-svac.js.map +0 -1
- package/dist/hsml-widget.d.ts +0 -32
- package/dist/hsml-widget.js +0 -142
- package/dist/hsml-widget.js.map +0 -1
- package/dist/umd/cache.js +0 -2
- package/dist/umd/cache.js.map +0 -1
- package/dist/umd/debounce.js +0 -2
- package/dist/umd/debounce.js.map +0 -1
- package/dist/umd/dom.js +0 -2
- package/dist/umd/dom.js.map +0 -1
- package/dist/umd/encode.js +0 -2
- package/dist/umd/encode.js.map +0 -1
- package/dist/umd/events.js +0 -2
- package/dist/umd/events.js.map +0 -1
- package/dist/umd/form.js +0 -2
- package/dist/umd/form.js.map +0 -1
- package/dist/umd/google-analytics.js +0 -2
- package/dist/umd/google-analytics.js.map +0 -1
- package/dist/umd/hash.js +0 -2
- package/dist/umd/hash.js.map +0 -1
- package/dist/umd/history.js +0 -2
- package/dist/umd/history.js.map +0 -1
- package/dist/umd/hsml-app.js +0 -2
- package/dist/umd/hsml-app.js.map +0 -1
- package/dist/umd/hsml-convert.js +0 -2
- package/dist/umd/hsml-convert.js.map +0 -1
- package/dist/umd/hsml-dom.js +0 -2
- package/dist/umd/hsml-dom.js.map +0 -1
- package/dist/umd/hsml-h.js +0 -2
- package/dist/umd/hsml-h.js.map +0 -1
- package/dist/umd/hsml-html.js +0 -2
- package/dist/umd/hsml-html.js.map +0 -1
- package/dist/umd/hsml-idom.js +0 -2
- package/dist/umd/hsml-idom.js.map +0 -1
- package/dist/umd/hsml-svac-ctrl.js +0 -2
- package/dist/umd/hsml-svac-ctrl.js.map +0 -1
- package/dist/umd/hsml-svac-html.js +0 -2
- package/dist/umd/hsml-svac-html.js.map +0 -1
- package/dist/umd/hsml-svac.js +0 -2
- package/dist/umd/hsml-svac.js.map +0 -1
- package/dist/umd/hsml-widget.js +0 -2
- package/dist/umd/hsml-widget.js.map +0 -1
- package/dist/umd/hsml.js +0 -2
- package/dist/umd/hsml.js.map +0 -1
- package/dist/umd/http.js +0 -2
- package/dist/umd/http.js.map +0 -1
- package/dist/umd/index.js +0 -2
- package/dist/umd/index.js.map +0 -1
- package/dist/umd/load.js +0 -2
- package/dist/umd/load.js.map +0 -1
- package/dist/umd/objpaths.js +0 -2
- package/dist/umd/objpaths.js.map +0 -1
- package/dist/umd/router.js +0 -2
- package/dist/umd/router.js.map +0 -1
- package/dist/umd/settings.js +0 -2
- package/dist/umd/settings.js.map +0 -1
- package/dist/umd/signal.js +0 -2
- package/dist/umd/signal.js.map +0 -1
- package/dist/umd/template.js +0 -2
- package/dist/umd/template.js.map +0 -1
- package/dist/umd/tmpl.js +0 -2
- package/dist/umd/tmpl.js.map +0 -1
- package/dist/umd/validators-moment.js +0 -2
- package/dist/umd/validators-moment.js.map +0 -1
- package/dist/umd/validators-numeral.js +0 -2
- package/dist/umd/validators-numeral.js.map +0 -1
- package/dist/umd/validators-object.js +0 -2
- package/dist/umd/validators-object.js.map +0 -1
- package/dist/umd/validators.js +0 -2
- package/dist/umd/validators.js.map +0 -1
- package/incremental-dom/dist/assertions.js.map +0 -1
- package/incremental-dom/dist/attributes.js.map +0 -1
- package/incremental-dom/dist/changes.d.ts +0 -3
- package/incremental-dom/dist/changes.js.map +0 -1
- package/incremental-dom/dist/context.js.map +0 -1
- package/incremental-dom/dist/core.js.map +0 -1
- package/incremental-dom/dist/debug.js.map +0 -1
- package/incremental-dom/dist/diff.d.ts +0 -2
- package/incremental-dom/dist/diff.js.map +0 -1
- package/incremental-dom/dist/dom_util.js.map +0 -1
- package/incremental-dom/dist/global.js.map +0 -1
- package/incremental-dom/dist/index.d.ts +0 -8
- package/incremental-dom/dist/index.js.map +0 -1
- package/incremental-dom/dist/node_data.js.map +0 -1
- package/incremental-dom/dist/nodes.js.map +0 -1
- package/incremental-dom/dist/notifications.js.map +0 -1
- package/incremental-dom/dist/symbols.js.map +0 -1
- package/incremental-dom/dist/types.d.ts +0 -15
- package/incremental-dom/dist/types.js.map +0 -1
- package/incremental-dom/dist/umd/incremental-dom.js +0 -2
- package/incremental-dom/dist/umd/incremental-dom.js.map +0 -1
- package/incremental-dom/dist/util.js.map +0 -1
- package/incremental-dom/dist/virtual_elements.js.map +0 -1
- package/src/hsml-svac-ctrl.ts +0 -289
- package/src/hsml-svac-html.ts +0 -23
- package/src/hsml-svac.ts +0 -20
- package/src/hsml-widget.ts +0 -181
- /package/{incremental-dom/dist → dist/incremental-dom}/assertions.d.ts +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/debug.d.ts +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/debug.js +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/dom_util.d.ts +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/global.d.ts +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/nodes.d.ts +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/notifications.js +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/symbols.d.ts +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/symbols.js +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/types.js +0 -0
- /package/{incremental-dom/dist → dist/incremental-dom}/util.d.ts +0 -0
- /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
|
-
|
|
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>
|
package/demo/dom_demo.ts
ADDED
|
@@ -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>
|