Skip to content

Commit 5dcc3bb

Browse files
committed
add the idom-react-client back into the main repo
1 parent 97308cb commit 5dcc3bb

File tree

9 files changed

+426
-13
lines changed

9 files changed

+426
-13
lines changed

src/idom/client/app/package-lock.json

Lines changed: 21 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/idom/client/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"snowpack": "^3.1.0-pre.11"
2020
},
2121
"dependencies": {
22-
"idom-client-react": "^0.7.3",
22+
"idom-client-react": "file:packages/idom-client-react",
2323
"react": "^16.13.1",
2424
"react-dom": "^16.13.1"
2525
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Javascript
2+
# ----------
3+
node_modules
4+
5+
# IDE
6+
# ---
7+
.vscode
8+
.idea
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# idom-client-react
2+
A client for IDOM implemented in React

src/idom/client/app/packages/idom-client-react/package-lock.json

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"name": "idom-client-react",
3+
"description": "A client for IDOM implemented in React",
4+
"version": "0.7.3",
5+
"author": "Ryan Morshead",
6+
"license": "MIT",
7+
"repository": {
8+
"type": "git",
9+
"url": "https://github.com/idom-team/idom-client-react"
10+
},
11+
"main": "src/index.js",
12+
"files": [
13+
"src/**/*.js"
14+
],
15+
"scripts": {
16+
"format": "prettier --print-width 88 --write ./src",
17+
"test": "echo \"Error: no test specified\" && exit 1"
18+
},
19+
"devDependencies": {
20+
"prettier": "^2.2.1"
21+
},
22+
"dependencies": {
23+
"fast-json-patch": "^3.0.0-1",
24+
"htm": "^3.0.3"
25+
},
26+
"peerDependencies": {
27+
"react": "^16.13.1",
28+
"react-dom": "^16.13.1"
29+
}
30+
}
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
function serializeEvent(event) {
2+
const data = {};
3+
if ("value" in event.target) {
4+
data.value = event.target.value;
5+
}
6+
if (event.type in eventTransforms) {
7+
Object.assign(data, eventTransforms[event.type](event));
8+
}
9+
return data;
10+
}
11+
12+
const eventCategoryTransforms = {
13+
clipboard: (event) => ({
14+
clipboardData: event.clipboardData,
15+
}),
16+
composition: (event) => ({
17+
data: event.data,
18+
}),
19+
keyboard: (event) => ({
20+
altKey: event.altKey,
21+
charCode: event.charCode,
22+
ctrlKey: event.ctrlKey,
23+
key: event.key,
24+
keyCode: event.keyCode,
25+
locale: event.locale,
26+
location: event.location,
27+
metaKey: event.metaKey,
28+
repeat: event.repeat,
29+
shiftKey: event.shiftKey,
30+
which: event.which,
31+
}),
32+
mouse: (event) => ({
33+
altKey: event.altKey,
34+
button: event.button,
35+
buttons: event.buttons,
36+
clientX: event.clientX,
37+
clientY: event.clientY,
38+
ctrlKey: event.ctrlKey,
39+
metaKey: event.metaKey,
40+
pageX: event.pageX,
41+
pageY: event.pageY,
42+
screenX: event.screenX,
43+
screenY: event.screenY,
44+
shiftKey: event.shiftKey,
45+
}),
46+
pointer: (event) => ({
47+
pointerId: event.pointerId,
48+
width: event.width,
49+
height: event.height,
50+
pressure: event.pressure,
51+
tiltX: event.tiltX,
52+
tiltY: event.tiltY,
53+
pointerType: event.pointerType,
54+
isPrimary: event.isPrimary,
55+
}),
56+
touch: (event) => ({
57+
altKey: event.altKey,
58+
ctrlKey: event.ctrlKey,
59+
metaKey: event.metaKey,
60+
shiftKey: event.shiftKey,
61+
}),
62+
ui: (event) => ({
63+
detail: event.detail,
64+
}),
65+
wheel: (event) => ({
66+
deltaMode: event.deltaMode,
67+
deltaX: event.deltaX,
68+
deltaY: event.deltaY,
69+
deltaZ: event.deltaZ,
70+
}),
71+
animation: (event) => ({
72+
animationName: event.animationName,
73+
pseudoElement: event.pseudoElement,
74+
elapsedTime: event.elapsedTime,
75+
}),
76+
transition: (event) => ({
77+
propertyName: event.propertyName,
78+
pseudoElement: event.pseudoElement,
79+
elapsedTime: event.elapsedTime,
80+
}),
81+
};
82+
83+
const eventTypeCategories = {
84+
clipboard: ["copy", "cut", "paste"],
85+
composition: ["compositionend", "compositionstart", "compositionupdate"],
86+
keyboard: ["keydown", "keypress", "keyup"],
87+
mouse: [
88+
"click",
89+
"contextmenu",
90+
"doubleclick",
91+
"drag",
92+
"dragend",
93+
"dragenter",
94+
"dragexit",
95+
"dragleave",
96+
"dragover",
97+
"dragstart",
98+
"drop",
99+
"mousedown",
100+
"mouseenter",
101+
"mouseleave",
102+
"mousemove",
103+
"mouseout",
104+
"mouseover",
105+
"mouseup",
106+
],
107+
pointer: [
108+
"pointerdown",
109+
"pointermove",
110+
"pointerup",
111+
"pointercancel",
112+
"gotpointercapture",
113+
"lostpointercapture",
114+
"pointerenter",
115+
"pointerleave",
116+
"pointerover",
117+
"pointerout",
118+
],
119+
selection: ["select"],
120+
touch: ["touchcancel", "touchend", "touchmove", "touchstart"],
121+
ui: ["scroll"],
122+
wheel: ["wheel"],
123+
animation: ["animationstart", "animationend", "animationiteration"],
124+
transition: ["transitionend"],
125+
};
126+
127+
const eventTransforms = {};
128+
129+
Object.keys(eventTypeCategories).forEach((category) => {
130+
eventTypeCategories[category].forEach((type) => {
131+
eventTransforms[type] = eventCategoryTransforms[category];
132+
});
133+
});
134+
135+
export default serializeEvent;

0 commit comments

Comments
 (0)