peryl 1.5.2 → 1.5.3
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 +30 -16
- package/demo/hsml-app-form-validation_demo.ts +22 -23
- package/demo/hsml-app-form_demo.ts +24 -20
- package/demo/hsml-app-test_demo.ts +35 -36
- package/demo/hsml-app-tictactoe_demo.ts +16 -15
- package/demo/hsml-app_demo.ts +20 -12
- package/demo/hsml-appel_demo.html +7 -0
- package/demo/hsml-appel_demo.ts +33 -25
- package/demo/hsml-appi_demo.ts +9 -9
- package/demo/hsml_demo.ts +27 -22
- package/demo/js/hsml-app-js-happi_demo.html +16 -8
- package/demo/js/hsml-app-js_demo.html +15 -15
- package/dist/browser-esmodule/encode.js.map +1 -1
- package/dist/browser-esmodule/hsml-app.js +67 -73
- package/dist/browser-esmodule/hsml-app.js.map +1 -1
- package/dist/browser-esmodule/hsml-convert.js.map +1 -1
- package/dist/browser-esmodule/hsml-dom.js +3 -3
- package/dist/browser-esmodule/hsml-dom.js.map +1 -1
- package/dist/browser-esmodule/hsml-h.js.map +1 -1
- package/dist/browser-esmodule/hsml-html.js +2 -2
- package/dist/browser-esmodule/hsml-html.js.map +1 -1
- package/dist/browser-esmodule/hsml-idom.js +5 -5
- package/dist/browser-esmodule/hsml-idom.js.map +1 -1
- package/dist/browser-esmodule/hsml.js.map +1 -1
- package/dist/browser-esmodule/http.js.map +1 -1
- package/dist/browser-esmodule/index.js +71 -77
- package/dist/browser-esmodule/index.js.map +1 -1
- package/dist/browser-esmodule/router.js.map +1 -1
- package/dist/browser-umd/encode.js +1 -1
- package/dist/browser-umd/encode.js.map +1 -1
- package/dist/browser-umd/hsml-app.js +1 -1
- package/dist/browser-umd/hsml-app.js.map +1 -1
- package/dist/browser-umd/hsml-convert.js.map +1 -1
- package/dist/browser-umd/hsml-dom.js +1 -1
- package/dist/browser-umd/hsml-dom.js.map +1 -1
- package/dist/browser-umd/hsml-h.js.map +1 -1
- package/dist/browser-umd/hsml-html.js +1 -1
- package/dist/browser-umd/hsml-html.js.map +1 -1
- package/dist/browser-umd/hsml-idom.js +1 -1
- package/dist/browser-umd/hsml-idom.js.map +1 -1
- package/dist/browser-umd/hsml.js.map +1 -1
- package/dist/browser-umd/http.js +1 -1
- package/dist/browser-umd/http.js.map +1 -1
- package/dist/browser-umd/index.js +1 -1
- package/dist/browser-umd/index.js.map +1 -1
- package/dist/browser-umd/router.js +1 -1
- package/dist/browser-umd/router.js.map +1 -1
- package/dist/browser-umd/validators-moment.js +1 -1
- package/dist/browser-umd/validators-moment.js.map +1 -1
- package/dist/browser-umd/validators-numeral.js.map +1 -1
- package/dist/demo/encode_demo.ce182166.js.map +1 -1
- package/dist/demo/encode_demo.f40a44eb.js.map +1 -1
- package/dist/demo/hsml-app-form-validation_demo.a9e2c583.js +2 -0
- package/dist/demo/hsml-app-form-validation_demo.a9e2c583.js.map +1 -0
- package/dist/demo/hsml-app-form-validation_demo.bb392ab0.js +2 -0
- package/dist/demo/hsml-app-form-validation_demo.bb392ab0.js.map +1 -0
- package/dist/demo/hsml-app-form-validation_demo.c6856b02.js +2 -0
- package/dist/demo/hsml-app-form-validation_demo.c6856b02.js.map +1 -0
- package/dist/demo/hsml-app-form-validation_demo.fdcc0b2d.js +2 -0
- package/dist/demo/hsml-app-form-validation_demo.fdcc0b2d.js.map +1 -0
- package/dist/demo/hsml-app-form-validation_demo.html +1 -1
- package/dist/demo/hsml-app-form_demo.e36ef1e9.js +2 -0
- package/dist/demo/hsml-app-form_demo.e36ef1e9.js.map +1 -0
- package/dist/demo/hsml-app-form_demo.fd22dfcf.js +2 -0
- package/dist/demo/hsml-app-form_demo.fd22dfcf.js.map +1 -0
- package/dist/demo/hsml-app-form_demo.html +1 -1
- package/dist/demo/hsml-app-test_demo.ba5f166c.js +2 -0
- package/dist/demo/hsml-app-test_demo.ba5f166c.js.map +1 -0
- package/dist/demo/hsml-app-test_demo.e8b5e4b2.js +2 -0
- package/dist/demo/hsml-app-test_demo.e8b5e4b2.js.map +1 -0
- package/dist/demo/hsml-app-test_demo.html +1 -1
- package/dist/demo/hsml-app-tictactoe_demo.03d8363f.js +2 -0
- package/dist/demo/hsml-app-tictactoe_demo.03d8363f.js.map +1 -0
- package/dist/demo/hsml-app-tictactoe_demo.399f8e69.js +2 -0
- package/dist/demo/hsml-app-tictactoe_demo.399f8e69.js.map +1 -0
- package/dist/demo/hsml-app-tictactoe_demo.html +1 -1
- package/dist/demo/hsml-app_demo.44aa1072.js +2 -0
- package/dist/demo/hsml-app_demo.44aa1072.js.map +1 -0
- package/dist/demo/hsml-app_demo.70ef3e7a.js +2 -0
- package/dist/demo/hsml-app_demo.70ef3e7a.js.map +1 -0
- package/dist/demo/hsml-app_demo.html +1 -1
- package/dist/demo/hsml-appel_demo.2a9f7f3f.js +2 -0
- package/dist/demo/hsml-appel_demo.2a9f7f3f.js.map +1 -0
- package/dist/demo/hsml-appel_demo.bea7849a.js +2 -0
- package/dist/demo/hsml-appel_demo.bea7849a.js.map +1 -0
- package/dist/demo/hsml-appel_demo.html +1 -1
- package/dist/demo/hsml-appi_demo.3dc5de90.js +2 -0
- package/dist/demo/hsml-appi_demo.3dc5de90.js.map +1 -0
- package/dist/demo/hsml-appi_demo.bfc7056a.js +2 -0
- package/dist/demo/hsml-appi_demo.bfc7056a.js.map +1 -0
- package/dist/demo/hsml-appi_demo.html +1 -1
- package/dist/demo/hsml-convert_demo.0ea1fa3b.js.map +1 -1
- package/dist/demo/hsml-convert_demo.63e3e7b5.js.map +1 -1
- package/dist/demo/{hsml_demo.ff950ba1.js → hsml_demo.a248689a.js} +2 -2
- package/dist/demo/hsml_demo.a248689a.js.map +1 -0
- package/dist/demo/hsml_demo.eb3b08be.js +2 -0
- package/dist/demo/hsml_demo.eb3b08be.js.map +1 -0
- package/dist/demo/hsml_demo.html +1 -1
- package/dist/demo/http_demo.3e7da3d8.js.map +1 -1
- package/dist/demo/http_demo.8e435f23.js.map +1 -1
- package/dist/demo/i18n_demo.html +1 -1
- package/dist/demo/router_demo.3cfa03aa.js.map +1 -1
- package/dist/demo/router_demo.89ab1681.js.map +1 -1
- package/dist/demo/{validators_demo.252e13a6.js → validators_demo.90ff6001.js} +2 -2
- package/dist/demo/validators_demo.90ff6001.js.map +1 -0
- package/dist/demo/{validators_demo.66893723.js → validators_demo.ef5b2dea.js} +2 -2
- package/dist/demo/validators_demo.ef5b2dea.js.map +1 -0
- package/dist/demo/validators_demo.html +1 -1
- package/dist/encode.js +1 -1
- package/dist/encode.js.map +1 -1
- package/dist/hsml-app.d.ts +38 -37
- package/dist/hsml-app.js +60 -62
- package/dist/hsml-app.js.map +1 -1
- package/dist/hsml-convert.d.ts +3 -3
- package/dist/hsml-convert.js.map +1 -1
- package/dist/hsml-dom.d.ts +2 -2
- package/dist/hsml-dom.js +3 -3
- package/dist/hsml-dom.js.map +1 -1
- package/dist/hsml-h.d.ts +8 -8
- package/dist/hsml-h.js.map +1 -1
- package/dist/hsml-html.d.ts +4 -4
- package/dist/hsml-html.js +2 -2
- package/dist/hsml-html.js.map +1 -1
- package/dist/hsml-idom.d.ts +2 -2
- package/dist/hsml-idom.js +5 -5
- package/dist/hsml-idom.js.map +1 -1
- package/dist/hsml.d.ts +26 -27
- package/dist/hsml.js.map +1 -1
- package/dist/http.js +1 -1
- package/dist/http.js.map +1 -1
- package/dist/router.js +1 -1
- package/dist/router.js.map +1 -1
- package/package.json +8 -8
- package/src/hsml-app.ts +209 -144
- package/src/hsml-convert.ts +8 -8
- package/src/hsml-dom.ts +18 -18
- package/src/hsml-h.ts +10 -10
- package/src/hsml-html.ts +19 -19
- package/src/hsml-idom.ts +25 -25
- package/src/hsml.ts +46 -143
- package/demo/hsml-appc_demo.html +0 -16
- package/demo/hsml-appc_demo.ts +0 -49
- package/dist/demo/hsml-app-form-validation_demo.0b03b743.js +0 -2
- package/dist/demo/hsml-app-form-validation_demo.0b03b743.js.map +0 -1
- package/dist/demo/hsml-app-form-validation_demo.b3a5c810.js +0 -2
- package/dist/demo/hsml-app-form-validation_demo.b3a5c810.js.map +0 -1
- package/dist/demo/hsml-app-form-validation_demo.d3925067.js +0 -2
- package/dist/demo/hsml-app-form-validation_demo.d3925067.js.map +0 -1
- package/dist/demo/hsml-app-form-validation_demo.f757d763.js +0 -2
- package/dist/demo/hsml-app-form-validation_demo.f757d763.js.map +0 -1
- package/dist/demo/hsml-app-form_demo.007ffcaa.js +0 -2
- package/dist/demo/hsml-app-form_demo.007ffcaa.js.map +0 -1
- package/dist/demo/hsml-app-form_demo.a034239d.js +0 -2
- package/dist/demo/hsml-app-form_demo.a034239d.js.map +0 -1
- package/dist/demo/hsml-app-test_demo.35c14dc9.js +0 -2
- package/dist/demo/hsml-app-test_demo.35c14dc9.js.map +0 -1
- package/dist/demo/hsml-app-test_demo.3c7e16ae.js +0 -2
- package/dist/demo/hsml-app-test_demo.3c7e16ae.js.map +0 -1
- package/dist/demo/hsml-app-tictactoe_demo.5f4861c1.js +0 -2
- package/dist/demo/hsml-app-tictactoe_demo.5f4861c1.js.map +0 -1
- package/dist/demo/hsml-app-tictactoe_demo.7deeabad.js +0 -2
- package/dist/demo/hsml-app-tictactoe_demo.7deeabad.js.map +0 -1
- package/dist/demo/hsml-app_demo.87d83c29.js +0 -2
- package/dist/demo/hsml-app_demo.87d83c29.js.map +0 -1
- package/dist/demo/hsml-app_demo.941a13a6.js +0 -2
- package/dist/demo/hsml-app_demo.941a13a6.js.map +0 -1
- package/dist/demo/hsml-appc_demo.0234ff15.js +0 -2
- package/dist/demo/hsml-appc_demo.0234ff15.js.map +0 -1
- package/dist/demo/hsml-appc_demo.f5783031.js +0 -2
- package/dist/demo/hsml-appc_demo.f5783031.js.map +0 -1
- package/dist/demo/hsml-appc_demo.html +0 -1
- package/dist/demo/hsml-appel_demo.0e8a4d4c.js +0 -2
- package/dist/demo/hsml-appel_demo.0e8a4d4c.js.map +0 -1
- package/dist/demo/hsml-appel_demo.1a5c2c26.js +0 -2
- package/dist/demo/hsml-appel_demo.1a5c2c26.js.map +0 -1
- package/dist/demo/hsml-appi_demo.2c3fb511.js +0 -2
- package/dist/demo/hsml-appi_demo.2c3fb511.js.map +0 -1
- package/dist/demo/hsml-appi_demo.427fdebd.js +0 -2
- package/dist/demo/hsml-appi_demo.427fdebd.js.map +0 -1
- package/dist/demo/hsml_demo.33f28c29.js +0 -2
- package/dist/demo/hsml_demo.33f28c29.js.map +0 -1
- package/dist/demo/hsml_demo.ff950ba1.js.map +0 -1
- package/dist/demo/validators_demo.252e13a6.js.map +0 -1
- package/dist/demo/validators_demo.66893723.js.map +0 -1
package/demo/hsml-app_demo.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { HApp, HDispatcher, HState, HView } from "../src/hsml-app";
|
|
2
2
|
|
|
3
3
|
// Actions definition
|
|
4
|
-
enum
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
4
|
+
// enum Actions {
|
|
5
|
+
// say = "say",
|
|
6
|
+
// fetch = "fetch"
|
|
7
|
+
// }
|
|
8
|
+
|
|
9
|
+
type Actions = "say" | "fetch";
|
|
8
10
|
|
|
9
11
|
interface State {
|
|
10
12
|
message: string;
|
|
@@ -20,33 +22,39 @@ const state: HState<State> = function () {
|
|
|
20
22
|
};
|
|
21
23
|
|
|
22
24
|
// Template function, returns HSML markup generated from app state
|
|
23
|
-
const view: HView<State> = function (state) {
|
|
25
|
+
const view: HView<State, Actions> = function (state) {
|
|
24
26
|
return [
|
|
25
27
|
["p", [
|
|
26
28
|
"Greeting: ", state.message
|
|
27
29
|
]],
|
|
28
30
|
["p", [
|
|
29
31
|
// On button event "click" dispatch Action.say type with data "Hello"
|
|
30
|
-
["button", { on: ["click",
|
|
32
|
+
["button", { on: ["click", "say", "Hello"] }, "Say Hello"],
|
|
31
33
|
" ",
|
|
32
|
-
["button", { on: ["click",
|
|
34
|
+
["button", { on: ["click", "say", "Hi"] }, "Say Hi"],
|
|
33
35
|
]],
|
|
34
36
|
["p", [
|
|
35
|
-
["button", { on: ["click",
|
|
37
|
+
["button", { on: ["click", "fetch"] }, "Server fetch time"],
|
|
36
38
|
["pre", state.json]
|
|
37
39
|
]]
|
|
38
40
|
];
|
|
39
41
|
};
|
|
40
42
|
|
|
41
43
|
// Action dispatcher, app logic
|
|
42
|
-
const dispatcher: HDispatcher<State> = async function (action, state, dispatch) {
|
|
44
|
+
const dispatcher: HDispatcher<State, Actions> = async function (action, state, dispatch) {
|
|
43
45
|
switch (action.type) {
|
|
46
|
+
case "init":
|
|
47
|
+
case "mount":
|
|
48
|
+
case "umount":
|
|
49
|
+
case "action":
|
|
50
|
+
case "elementAttr":
|
|
51
|
+
break;
|
|
44
52
|
// Dispatch action "say"
|
|
45
|
-
case
|
|
53
|
+
case "say":
|
|
46
54
|
// Change app state message by action data (3. parameter of on click action)
|
|
47
55
|
state.message = action.data;
|
|
48
56
|
break;
|
|
49
|
-
case
|
|
57
|
+
case "fetch":
|
|
50
58
|
// Server async call
|
|
51
59
|
try {
|
|
52
60
|
const res = await fetch("http://date.jsontest.com");
|
|
@@ -63,4 +71,4 @@ const dispatcher: HDispatcher<State> = async function (action, state, dispatch)
|
|
|
63
71
|
HApp.debug = true;
|
|
64
72
|
|
|
65
73
|
// Run application
|
|
66
|
-
(window as any).app = new HApp(state, view, dispatcher);
|
|
74
|
+
(window as any).app = new HApp<State, Actions>(state, view, dispatcher);
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
<happ-app></happ-app>
|
|
13
13
|
|
|
14
14
|
<script type="module" src="hsml-appel_demo.ts"></script>
|
|
15
|
+
<script type="module">
|
|
16
|
+
document.getElementsByTagName("happ-app")[0]
|
|
17
|
+
.addEventListener("action",
|
|
18
|
+
function (e) {
|
|
19
|
+
console.log("EventListener action", e.detail);
|
|
20
|
+
});
|
|
21
|
+
</script>
|
|
15
22
|
</body>
|
|
16
23
|
|
|
17
24
|
</html>
|
package/demo/hsml-appel_demo.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { HAction, HAppAction, happel, HDispatch, HDispatcher, HState, HView } from "../src/hsml-app";
|
|
1
|
+
import { HAction, HAppActions, happel, HDispatcher, HDispatchScopes, HState, HView } from "../src/hsml-app";
|
|
3
2
|
|
|
4
3
|
interface CounterState {
|
|
5
4
|
count: number;
|
|
6
5
|
}
|
|
7
6
|
|
|
8
|
-
enum
|
|
7
|
+
enum CounterActions {
|
|
9
8
|
dec = "counter-dec",
|
|
10
9
|
inc = "counter-inc",
|
|
11
10
|
count = "counter-count"
|
|
@@ -17,57 +16,57 @@ const counterState: HState<CounterState> = function () {
|
|
|
17
16
|
}
|
|
18
17
|
};
|
|
19
18
|
|
|
20
|
-
const counterView: HView<CounterState> = function (state
|
|
19
|
+
const counterView: HView<CounterState, CounterActions> = function (state) {
|
|
21
20
|
return [
|
|
22
21
|
["h3", ["Counter"]],
|
|
23
22
|
["p", [
|
|
24
23
|
["em", ["Count"]], ": ", state.count,
|
|
25
24
|
" ",
|
|
26
|
-
["button", { on: ["click",
|
|
27
|
-
["button", { on: ["click",
|
|
25
|
+
["button", { on: ["click", CounterActions.dec, 1] }, ["-"]],
|
|
26
|
+
["button", { on: ["click", CounterActions.inc, 2] }, ["+"]]
|
|
28
27
|
]]
|
|
29
28
|
];
|
|
30
29
|
};
|
|
31
30
|
|
|
32
|
-
const counterDispatcher: HDispatcher<CounterState> = async function (action
|
|
31
|
+
const counterDispatcher: HDispatcher<CounterState, CounterActions> = async function (action, state, dispatch) {
|
|
33
32
|
console.log("action counter:", action);
|
|
34
33
|
// console.log("state counter:", state);
|
|
35
34
|
// console.log("happ counter:", this);
|
|
36
35
|
|
|
37
36
|
switch (action.type) {
|
|
38
|
-
case
|
|
39
|
-
case
|
|
40
|
-
case
|
|
37
|
+
case HAppActions.init:
|
|
38
|
+
case HAppActions.mount:
|
|
39
|
+
case HAppActions.umount:
|
|
41
40
|
break;
|
|
42
41
|
|
|
43
|
-
case
|
|
42
|
+
case HAppActions.elementAttr:
|
|
44
43
|
if (action.data.attrName === "count") {
|
|
45
44
|
state.count = Number(action.data.newVal);
|
|
46
45
|
}
|
|
47
46
|
break;
|
|
48
47
|
|
|
49
|
-
case
|
|
48
|
+
case CounterActions.inc:
|
|
50
49
|
state.count = state.count + action.data as number;
|
|
51
|
-
setTimeout(() => dispatch(
|
|
52
|
-
dispatch(
|
|
50
|
+
setTimeout(() => dispatch(CounterActions.dec, 1), 1e3); // async call
|
|
51
|
+
dispatch(CounterActions.count, state.count, HDispatchScopes.element);
|
|
53
52
|
break;
|
|
54
53
|
|
|
55
|
-
case
|
|
54
|
+
case CounterActions.dec:
|
|
56
55
|
state.count = state.count - action.data as number;
|
|
57
|
-
dispatch(
|
|
56
|
+
dispatch(CounterActions.count, state.count, HDispatchScopes.element);
|
|
58
57
|
break;
|
|
59
58
|
}
|
|
60
59
|
};
|
|
61
60
|
|
|
62
|
-
happel("happ-counter", ["count"], counterState, counterView, counterDispatcher);
|
|
61
|
+
happel<CounterState, CounterActions>("happ-counter", ["count"], counterState, counterView, counterDispatcher);
|
|
63
62
|
|
|
64
63
|
|
|
65
64
|
interface AppState {
|
|
66
65
|
count: number;
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
enum
|
|
70
|
-
|
|
68
|
+
enum AppActions {
|
|
69
|
+
action = "app-action"
|
|
71
70
|
}
|
|
72
71
|
|
|
73
72
|
const appState: HState<AppState> = function () {
|
|
@@ -76,29 +75,38 @@ const appState: HState<AppState> = function () {
|
|
|
76
75
|
}
|
|
77
76
|
};
|
|
78
77
|
|
|
79
|
-
const appView: HView<AppState> = function (state
|
|
78
|
+
const appView: HView<AppState, AppActions> = function (state) {
|
|
80
79
|
return [
|
|
81
80
|
["h2", ["App count: ", state.count]],
|
|
82
81
|
["happ-counter", {
|
|
83
82
|
count: 33,
|
|
84
|
-
on: [
|
|
83
|
+
on: [HAppActions.action, AppActions.action]
|
|
85
84
|
}]
|
|
86
85
|
];
|
|
87
86
|
};
|
|
88
87
|
|
|
89
|
-
const appDispatcher: HDispatcher<
|
|
88
|
+
const appDispatcher: HDispatcher<AppState, AppActions | CounterActions> = async function (action, state, dispatch) {
|
|
90
89
|
console.log("action:", action);
|
|
91
90
|
// console.log("state:", state);
|
|
92
91
|
// console.log("happ:", this);
|
|
93
92
|
|
|
94
93
|
switch (action.type) {
|
|
95
|
-
case
|
|
96
|
-
|
|
94
|
+
case AppActions.action:
|
|
95
|
+
const a = action.data as HAction<AppActions | CounterActions>;
|
|
96
|
+
switch (a.type) {
|
|
97
|
+
case CounterActions.count:
|
|
98
|
+
state.count = a.data as number;
|
|
99
|
+
dispatch(CounterActions.count, state.count, HDispatchScopes.element);
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
console.log(a);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
97
105
|
break;
|
|
98
106
|
}
|
|
99
107
|
};
|
|
100
108
|
|
|
101
|
-
happel("happ-app", [], appState, appView, appDispatcher);
|
|
109
|
+
happel<AppState, AppActions | CounterActions>("happ-app", [], appState, appView, appDispatcher);
|
|
102
110
|
|
|
103
111
|
// HApp.debug = true;
|
|
104
112
|
// HApp.debug = window.location.hostname === "localhost";
|
package/demo/hsml-appi_demo.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HElements } from "../src/hsml";
|
|
2
|
-
import { HAction, HApp,
|
|
2
|
+
import { HAction, HApp, HAppActions, happi, HAppI, HDispatch } from "../src/hsml-app";
|
|
3
3
|
|
|
4
|
-
enum
|
|
4
|
+
enum Actions {
|
|
5
5
|
name = "name"
|
|
6
6
|
}
|
|
7
7
|
|
|
@@ -9,19 +9,19 @@ interface State {
|
|
|
9
9
|
name: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
class App implements HAppI<State> {
|
|
12
|
+
class App implements HAppI<State, Actions> {
|
|
13
13
|
|
|
14
14
|
state(): State {
|
|
15
15
|
return { name: "" };
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
view(state: State): HElements {
|
|
18
|
+
view(state: State): HElements<Actions> {
|
|
19
19
|
return [
|
|
20
20
|
["h1", "Hello"],
|
|
21
21
|
["input~focus", {
|
|
22
22
|
type: "text",
|
|
23
23
|
placeholder: "name",
|
|
24
|
-
on: ["input",
|
|
24
|
+
on: ["input", Actions.name]
|
|
25
25
|
}],
|
|
26
26
|
["p",
|
|
27
27
|
state.name
|
|
@@ -31,17 +31,17 @@ class App implements HAppI<State> {
|
|
|
31
31
|
];
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
async dispatcher(this: HApp<State>, action: HAction
|
|
34
|
+
async dispatcher(this: HApp<State, Actions>, action: HAction<Actions>, state: State, dispatch: HDispatch<Actions>): Promise<void> {
|
|
35
35
|
console.log(action);
|
|
36
36
|
// console.log(this);
|
|
37
37
|
|
|
38
38
|
switch (action.type) {
|
|
39
39
|
|
|
40
|
-
case
|
|
40
|
+
case HAppActions.mount:
|
|
41
41
|
this.refs["focus"].focus();
|
|
42
42
|
break;
|
|
43
43
|
|
|
44
|
-
case
|
|
44
|
+
case Actions.name:
|
|
45
45
|
state.name = action.data;
|
|
46
46
|
break;
|
|
47
47
|
}
|
|
@@ -53,6 +53,6 @@ class App implements HAppI<State> {
|
|
|
53
53
|
// HApp.debug = true;
|
|
54
54
|
// HApp.debug = window.location.hostname === "localhost";
|
|
55
55
|
|
|
56
|
-
const app = happi(App);
|
|
56
|
+
const app = happi<State, Actions>(App);
|
|
57
57
|
|
|
58
58
|
(self as any).app = app;
|
package/demo/hsml_demo.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { hsmls2idomPatch } from "../src/hsml-idom";
|
|
2
2
|
import { HElements, HElement } from "../src/hsml";
|
|
3
3
|
|
|
4
|
-
type View<
|
|
4
|
+
type View<State, Actions extends string> = (state: State, dispatch: Dispatch<Actions>) => HElements<Actions>;
|
|
5
5
|
|
|
6
|
-
type Dispatch = (
|
|
6
|
+
type Dispatch<Actions extends string> = (action: Actions, data?: any) => void;
|
|
7
7
|
|
|
8
|
-
type Dispatcher<
|
|
8
|
+
type Dispatcher<State, Actions extends string> = (action: Actions, data: any, state: State, dispatch: Dispatch<Actions>) => State;
|
|
9
9
|
|
|
10
|
-
function render<
|
|
11
|
-
view: View<
|
|
12
|
-
state:
|
|
13
|
-
dispatch: Dispatch): void {
|
|
10
|
+
function render<State, Actions extends string>(element: HTMLElement,
|
|
11
|
+
view: View<State, Actions>,
|
|
12
|
+
state: State,
|
|
13
|
+
dispatch: Dispatch<Actions>): void {
|
|
14
14
|
(render as any).scheduled || ((render as any).scheduled = null);
|
|
15
15
|
if (!state) {
|
|
16
16
|
return;
|
|
@@ -19,29 +19,34 @@ function render<STATE>(element: HTMLElement,
|
|
|
19
19
|
(render as any).scheduled = setTimeout(() => {
|
|
20
20
|
const hsml = view(state, dispatch);
|
|
21
21
|
// console.log("render", hsml);
|
|
22
|
-
hsmls2idomPatch(element, hsml);
|
|
22
|
+
hsmls2idomPatch<Actions>(element, hsml);
|
|
23
23
|
(render as any).scheduled = null;
|
|
24
24
|
}, 0);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
const dispatch: Dispatch = (
|
|
29
|
-
// console.log("dispatch",
|
|
30
|
-
const state = dispatcher(
|
|
28
|
+
const dispatch: Dispatch<Actions> = (action, data): void => {
|
|
29
|
+
// console.log("dispatch", action, data);
|
|
30
|
+
const state = dispatcher(action, data, appState, dispatch);
|
|
31
31
|
// console.log("state", state);
|
|
32
32
|
render(appElement!, view, state, dispatch);
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
-
// ----------------------------------------------------------------------------
|
|
36
|
-
|
|
37
35
|
const appState = {
|
|
38
36
|
title: "Counter",
|
|
39
37
|
count: 0
|
|
40
38
|
};
|
|
41
39
|
|
|
42
|
-
type
|
|
40
|
+
type State = typeof appState;
|
|
41
|
+
|
|
42
|
+
type Actions =
|
|
43
|
+
| "inc"
|
|
44
|
+
| "dec"
|
|
45
|
+
| "dec_async"
|
|
46
|
+
| "action"
|
|
47
|
+
| "xxx";
|
|
43
48
|
|
|
44
|
-
const view: View<
|
|
49
|
+
const view: View<State, Actions> = (state, dispatch): HElements<Actions> => {
|
|
45
50
|
return [
|
|
46
51
|
["h2", [state.title]],
|
|
47
52
|
["p", [
|
|
@@ -50,18 +55,18 @@ const view: View<AppState> = (state: AppState, dispatch: Dispatch): HElements =>
|
|
|
50
55
|
button("-", () => dispatch("dec", 1)),
|
|
51
56
|
button("+", () => dispatch("inc", 2)),
|
|
52
57
|
" ",
|
|
53
|
-
button("xxx", () => dispatch("xxx"))
|
|
58
|
+
button("xxx", () => dispatch("xxx"))
|
|
54
59
|
]],
|
|
55
60
|
];
|
|
56
61
|
}
|
|
57
62
|
|
|
58
|
-
function button(label: string, cb: (e: Event) => void): HElement {
|
|
63
|
+
function button(label: string, cb: (e: Event) => void): HElement<Actions> {
|
|
59
64
|
return ["button", { click: cb }, [label]];
|
|
60
65
|
}
|
|
61
66
|
|
|
62
|
-
const dispatcher: Dispatcher<
|
|
63
|
-
|
|
64
|
-
switch (
|
|
67
|
+
const dispatcher: Dispatcher<State, Actions> = (action, data, state, dispatch) => {
|
|
68
|
+
console.log("action:", action, data);
|
|
69
|
+
switch (action) {
|
|
65
70
|
case "inc":
|
|
66
71
|
state.count += data;
|
|
67
72
|
break;
|
|
@@ -73,7 +78,7 @@ const dispatcher: Dispatcher<AppState> = (event: string, data: any, state: AppSt
|
|
|
73
78
|
state.count -= data;
|
|
74
79
|
break;
|
|
75
80
|
default:
|
|
76
|
-
console.warn("unhandled
|
|
81
|
+
console.warn("unhandled action:", action, data);
|
|
77
82
|
}
|
|
78
83
|
return state;
|
|
79
84
|
}
|
|
@@ -82,4 +87,4 @@ const appElement = document.getElementById("app");
|
|
|
82
87
|
|
|
83
88
|
render(appElement!, view, appState, dispatch);
|
|
84
89
|
|
|
85
|
-
dispatch("
|
|
90
|
+
dispatch("action", {});
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// import { HApp, happi } from "../../dist/browser-esmodule/hsml-app.js";
|
|
17
17
|
// import { HApp, happi } from "https://unpkg.com/peryl/dist/browser-esmodule/hsml-app.js";
|
|
18
18
|
|
|
19
|
-
const
|
|
19
|
+
const Actions = {
|
|
20
20
|
change: "change",
|
|
21
21
|
reset: "reset"
|
|
22
22
|
};
|
|
@@ -30,8 +30,16 @@
|
|
|
30
30
|
view(state) {
|
|
31
31
|
return [
|
|
32
32
|
["h1", ["Hello ", state.name]],
|
|
33
|
-
["input", {
|
|
34
|
-
|
|
33
|
+
["input", {
|
|
34
|
+
type: "text",
|
|
35
|
+
placeholder: "Name",
|
|
36
|
+
value: state.name,
|
|
37
|
+
on: ["input", Actions.change]
|
|
38
|
+
}],
|
|
39
|
+
["button", {
|
|
40
|
+
type: "button",
|
|
41
|
+
on: ["click", Actions.reset]
|
|
42
|
+
}, "Reset"]
|
|
35
43
|
];
|
|
36
44
|
}
|
|
37
45
|
|
|
@@ -41,16 +49,16 @@
|
|
|
41
49
|
console.log("happ:", this);
|
|
42
50
|
|
|
43
51
|
switch (action.type) {
|
|
44
|
-
case
|
|
45
|
-
case
|
|
46
|
-
case
|
|
52
|
+
case HAppActions.init:
|
|
53
|
+
case HAppActions.mount:
|
|
54
|
+
case HAppActions.umount:
|
|
47
55
|
break;
|
|
48
56
|
|
|
49
|
-
case
|
|
57
|
+
case Actions.change:
|
|
50
58
|
state.name = action.data;
|
|
51
59
|
break;
|
|
52
60
|
|
|
53
|
-
case
|
|
61
|
+
case Actions.reset:
|
|
54
62
|
state.name = new String();
|
|
55
63
|
break;
|
|
56
64
|
}
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
<script src="../../dist/browser-umd/hsml-app.js"></script>
|
|
19
19
|
<!-- <script src="https://unpkg.com/peryl/dist/browser-umd/hsml-app.js"></script> -->
|
|
20
20
|
<script type="module">
|
|
21
|
-
// import { HApp,
|
|
22
|
-
// import { HApp,
|
|
21
|
+
// import { HApp, HAppActions } from "../../dist/browser-esmodule/hsml-app.js";
|
|
22
|
+
// import { HApp, HAppActions } from "https://unpkg.com/peryl/dist/browser-esmodule/hsml-app.js";
|
|
23
23
|
|
|
24
|
-
const
|
|
24
|
+
const Actions = {
|
|
25
25
|
title: "title",
|
|
26
26
|
dec: "dec",
|
|
27
27
|
inc: "inc",
|
|
@@ -47,12 +47,12 @@
|
|
|
47
47
|
type: "text",
|
|
48
48
|
name: "title",
|
|
49
49
|
value: new String(state.title),
|
|
50
|
-
on: ["input",
|
|
50
|
+
on: ["input", Actions.title]
|
|
51
51
|
}]
|
|
52
52
|
]],
|
|
53
53
|
["p", [
|
|
54
54
|
["button.w3-button.w3-blue",
|
|
55
|
-
{ on: ["click",
|
|
55
|
+
{ on: ["click", Actions.clear] },
|
|
56
56
|
"Clear title"
|
|
57
57
|
]
|
|
58
58
|
]],
|
|
@@ -71,12 +71,12 @@
|
|
|
71
71
|
]
|
|
72
72
|
]],
|
|
73
73
|
["button.w3-button.w3-blue",
|
|
74
|
-
{ on: ["click",
|
|
74
|
+
{ on: ["click", Actions.dec, 1] },
|
|
75
75
|
[["i.fa.fa-chevron-left"]]
|
|
76
76
|
],
|
|
77
77
|
" ",
|
|
78
78
|
["button.w3-button.w3-blue",
|
|
79
|
-
{ on: ["click",
|
|
79
|
+
{ on: ["click", Actions.inc, 2] },
|
|
80
80
|
[["i.fa.fa-chevron-right"]]
|
|
81
81
|
]
|
|
82
82
|
]]
|
|
@@ -89,26 +89,26 @@
|
|
|
89
89
|
console.log("happ:", this);
|
|
90
90
|
|
|
91
91
|
switch (action.type) {
|
|
92
|
-
case
|
|
93
|
-
case
|
|
94
|
-
case
|
|
92
|
+
case HAppActions.init:
|
|
93
|
+
case HAppActions.mount:
|
|
94
|
+
case HAppActions.umount:
|
|
95
95
|
break;
|
|
96
96
|
|
|
97
|
-
case
|
|
97
|
+
case Actions.title:
|
|
98
98
|
state.title = action.data.title;
|
|
99
99
|
break;
|
|
100
100
|
|
|
101
|
-
case
|
|
101
|
+
case Actions.inc:
|
|
102
102
|
state.count = state.count + action.data;
|
|
103
103
|
// async action call
|
|
104
|
-
setTimeout(() => dispatch(
|
|
104
|
+
setTimeout(() => dispatch(Actions.dec, 1), 1e3);
|
|
105
105
|
break;
|
|
106
106
|
|
|
107
|
-
case
|
|
107
|
+
case Actions.dec:
|
|
108
108
|
state.count = state.count - action.data;
|
|
109
109
|
break;
|
|
110
110
|
|
|
111
|
-
case
|
|
111
|
+
case Actions.clear:
|
|
112
112
|
state.title = "";
|
|
113
113
|
break;
|
|
114
114
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["src/encode.ts"],"sourcesContent":["\nexport class UrlEncodedData {\n\n static encode(data: any, prefix = \"\"): string {\n let str: string;\n if (typeof data !== \"object\") {\n str = data;\n } else {\n const params: string[] = [];\n let size = 0;\n for (let key in data) {\n if (data.hasOwnProperty(key)) {\n let value = data[key];\n if (!(value instanceof Array)) {\n value = [value];\n }\n const valueLength = value.length;\n for (let i = 0; i < valueLength; i++) {\n const val = value[i];\n if ((typeof val === \"object\") && (val != null)) {\n params[size++] = arguments.callee(val, prefix + key + \".\");\n } else { // list\n params[size] = encodeURIComponent(prefix + key);\n if (val != null) {\n params[size] += \"=\" + encodeURIComponent(val);\n }\n size++;\n }\n }\n }\n }\n str = params.join(\"&\");\n }\n return str;\n }\n\n static decode(str: string): any {\n const data: any = {};\n if (str) {\n const params = str.split(\"&\");\n const paramsLength = params.length;\n for (let j = 0; j < paramsLength; j++) {\n const parameter = params[j].split(\"=\");\n const key = decodeURIComponent(parameter[0]);\n if (parameter.length > 1) {\n const value = decodeURIComponent(parameter[1]);\n const path = key.split(\".\");\n const size = path.length;\n let obj = data;\n for (let i = 0; i < size; i++) {\n const property = path[i];\n const o = obj[property];\n if (i === (size - 1)) { // list\n if (!o) {\n obj[property] = value;\n } else if (o instanceof Array) {\n obj[property].push(value);\n } else { // create array\n obj[property] = [o];\n obj[property][1] = value;\n }\n } else {\n if (!o) {\n obj[property] = {};\n }\n obj = obj[property];\n }\n }\n } else {\n data[key] = null;\n }\n }\n }\n return data;\n }\n\n}\n\nexport class Base64 {\n\n private static _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n static encode(e: string): string {\n let t = \"\";\n let n: any, r: any, i: any, s: any, o: any, u: any, a: any;\n let f = 0;\n e = Base64._utf8_encode(e);\n while (f < e.length) {\n n = e.charCodeAt(f++);\n r = e.charCodeAt(f++);\n i = e.charCodeAt(f++);\n s = n >> 2;\n o = (n & 3) << 4 | r >> 4;\n u = (r & 15) << 2 | i >> 6;\n a = i & 63;\n if (isNaN(r)) {\n u = a = 64;\n } else if (isNaN(i)) {\n a = 64;\n }\n t = t + Base64._keyStr.charAt(s) + Base64._keyStr.charAt(o) + Base64._keyStr.charAt(u) + Base64._keyStr.charAt(a);\n }\n return t;\n }\n\n static decode(e: string): string {\n let t = \"\";\n let n: any, r: any, i: any;\n let s: any, o: any, u: any, a: any;\n let f = 0;\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n while (f < e.length) {\n s = this._keyStr.indexOf(e.charAt(f++));\n o = this._keyStr.indexOf(e.charAt(f++));\n u = this._keyStr.indexOf(e.charAt(f++));\n a = this._keyStr.indexOf(e.charAt(f++));\n n = s << 2 | o >> 4;\n r = (o & 15) << 4 | u >> 2;\n i = (u & 3) << 6 | a;\n t = t + String.fromCharCode(n);\n if (u !== 64) {\n t = t + String.fromCharCode(r);\n }\n if (a !== 64) {\n t = t + String.fromCharCode(i);\n }\n }\n t = Base64._utf8_decode(t);\n return t;\n }\n\n private static _utf8_encode(e: string): string {\n e = e.replace(/\\r\\n/g, \"\\n\");\n let t = \"\";\n for (let n = 0; n < e.length; n++) {\n const r = e.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n } else if (r > 127 && r < 2048) {\n t += String.fromCharCode(r >> 6 | 192);\n t += String.fromCharCode(r & 63 | 128);\n } else {\n t += String.fromCharCode(r >> 12 | 224);\n t += String.fromCharCode(r >> 6 & 63 | 128);\n t += String.fromCharCode(r & 63 | 128);\n }\n }\n return t;\n }\n\n private static _utf8_decode(e: string): string {\n let t = \"\";\n let n = 0;\n let r = 0;\n let c1 = 0;\n let c2 = 0;\n while (n < e.length) {\n r = e.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n n++;\n } else if (r > 191 && r < 224) {\n c1 = e.charCodeAt(n + 1);\n t += String.fromCharCode((r & 31) << 6 | c1 & 63);\n n += 2;\n } else {\n c1 = e.charCodeAt(n + 1);\n c2 = e.charCodeAt(n + 2);\n t += String.fromCharCode((r & 15) << 12 | (c1 & 63) << 6 | c2 & 63);\n n += 3;\n }\n }\n return t;\n }\n}\n"],"names":[],"version":3,"file":"encode.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["src/encode.ts"],"sourcesContent":["\nexport class UrlEncodedData {\n\n static encode(data: any, prefix = \"\"): string {\n let str: string;\n if (typeof data !== \"object\") {\n str = data;\n } else {\n const params: string[] = [];\n let size = 0;\n for (let key in data) {\n if (data.hasOwnProperty(key)) {\n let value = data[key];\n if (!(value instanceof Array)) {\n value = [value];\n }\n const valueLength = value.length;\n for (let i = 0; i < valueLength; i++) {\n const val = value[i];\n if ((typeof val === \"object\") && (val != null)) {\n params[size++] = arguments.callee(val, prefix + key + \".\");\n } else { // list\n params[size] = encodeURIComponent(prefix + key);\n if (val != null) {\n params[size] += \"=\" + encodeURIComponent(val);\n }\n size++;\n }\n }\n }\n }\n str = params.join(\"&\");\n }\n return str;\n }\n\n static decode(str: string): any {\n const data: any = {};\n if (str) {\n const params = str.split(\"&\");\n const paramsLength = params.length;\n for (let j = 0; j < paramsLength; j++) {\n const parameter = params[j].split(\"=\");\n const key = decodeURIComponent(parameter[0]);\n if (parameter.length > 1) {\n const value = decodeURIComponent(parameter[1]);\n const path = key.split(\".\");\n const size = path.length;\n let obj = data;\n for (let i = 0; i < size; i++) {\n const property = path[i];\n const o = obj[property];\n if (i === (size - 1)) { // list\n if (!o) {\n obj[property] = value;\n } else if (o instanceof Array) {\n obj[property].push(value);\n } else { // create array\n obj[property] = [o];\n obj[property][1] = value;\n }\n } else {\n if (!o) {\n obj[property] = {};\n }\n obj = obj[property];\n }\n }\n } else {\n data[key] = null;\n }\n }\n }\n return data;\n }\n\n}\n\nexport class Base64 {\n\n private static _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n static encode(e: string): string {\n let t = \"\";\n let n: any, r: any, i: any, s: any, o: any, u: any, a: any;\n let f = 0;\n e = Base64._utf8_encode(e);\n while (f < e.length) {\n n = e.charCodeAt(f++);\n r = e.charCodeAt(f++);\n i = e.charCodeAt(f++);\n s = n >> 2;\n o = (n & 3) << 4 | r >> 4;\n u = (r & 15) << 2 | i >> 6;\n a = i & 63;\n if (isNaN(r)) {\n u = a = 64;\n } else if (isNaN(i)) {\n a = 64;\n }\n t = t + Base64._keyStr.charAt(s) + Base64._keyStr.charAt(o) + Base64._keyStr.charAt(u) + Base64._keyStr.charAt(a);\n }\n return t;\n }\n\n static decode(e: string): string {\n let t = \"\";\n let n: any, r: any, i: any;\n let s: any, o: any, u: any, a: any;\n let f = 0;\n e = e.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n while (f < e.length) {\n s = this._keyStr.indexOf(e.charAt(f++));\n o = this._keyStr.indexOf(e.charAt(f++));\n u = this._keyStr.indexOf(e.charAt(f++));\n a = this._keyStr.indexOf(e.charAt(f++));\n n = s << 2 | o >> 4;\n r = (o & 15) << 4 | u >> 2;\n i = (u & 3) << 6 | a;\n t = t + String.fromCharCode(n);\n if (u !== 64) {\n t = t + String.fromCharCode(r);\n }\n if (a !== 64) {\n t = t + String.fromCharCode(i);\n }\n }\n t = Base64._utf8_decode(t);\n return t;\n }\n\n private static _utf8_encode(e: string): string {\n e = e.replace(/\\r\\n/g, \"\\n\");\n let t = \"\";\n for (let n = 0; n < e.length; n++) {\n const r = e.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n } else if (r > 127 && r < 2048) {\n t += String.fromCharCode(r >> 6 | 192);\n t += String.fromCharCode(r & 63 | 128);\n } else {\n t += String.fromCharCode(r >> 12 | 224);\n t += String.fromCharCode(r >> 6 & 63 | 128);\n t += String.fromCharCode(r & 63 | 128);\n }\n }\n return t;\n }\n\n private static _utf8_decode(e: string): string {\n let t = \"\";\n let n = 0;\n let r = 0;\n let c1 = 0;\n let c2 = 0;\n while (n < e.length) {\n r = e.charCodeAt(n);\n if (r < 128) {\n t += String.fromCharCode(r);\n n++;\n } else if (r > 191 && r < 224) {\n c1 = e.charCodeAt(n + 1);\n t += String.fromCharCode((r & 31) << 6 | c1 & 63);\n n += 2;\n } else {\n c1 = e.charCodeAt(n + 1);\n c2 = e.charCodeAt(n + 2);\n t += String.fromCharCode((r & 15) << 12 | (c1 & 63) << 6 | c2 & 63);\n n += 3;\n }\n }\n return t;\n }\n}\n"],"names":[],"version":3,"file":"encode.js.map"}
|