Skip to content

Commit 975b54a

Browse files
committed
support currentTime attr of audio/video elements
1 parent 9494bc0 commit 975b54a

File tree

4 files changed

+229
-10
lines changed

4 files changed

+229
-10
lines changed

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

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

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

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "idom-client-react",
33
"description": "A client for IDOM implemented in React",
4-
"version": "0.7.3",
4+
"version": "0.7.4",
55
"author": "Ryan Morshead",
66
"license": "MIT",
77
"repository": {
@@ -13,7 +13,7 @@
1313
"src/**/*.js"
1414
],
1515
"scripts": {
16-
"format": "prettier --print-width 88 --write ./src",
16+
"format": "prettier --write ./src",
1717
"test": "echo \"Error: no test specified\" && exit 1"
1818
},
1919
"devDependencies": {

src/idom/client/app/packages/idom-client-react/src/event-to-object.js

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,41 @@
11
function serializeEvent(event) {
22
const data = {};
3-
if ("value" in event.target) {
4-
data.value = event.target.value;
5-
}
3+
64
if (event.type in eventTransforms) {
75
Object.assign(data, eventTransforms[event.type](event));
86
}
7+
8+
const target = event.target;
9+
if (target.tagName in targetTransforms) {
10+
Object.assign(data, targetTransforms[target.tagName](target));
11+
}
12+
913
return data;
1014
}
1115

12-
const eventCategoryTransforms = {
16+
const targetTransformCategories = {
17+
hasValue: (target) => ({
18+
value: target.value,
19+
}),
20+
hasCurrentTime: (target) => ({
21+
currentTime: target.currentTime,
22+
}),
23+
};
24+
25+
const targetTagCategories = {
26+
hasValue: ["BUTTON", "INPUT", "OPTION", "LI", "METER", "PROGRESS", "PARAM"],
27+
hasCurrentTime: ["AUDIO", "VIDEO"],
28+
};
29+
30+
const targetTransforms = {};
31+
32+
Object.keys(targetTagCategories).forEach((category) => {
33+
targetTagCategories[category].forEach((type) => {
34+
targetTransforms[type] = targetTransformCategories[category];
35+
});
36+
});
37+
38+
const eventTransformCategories = {
1339
clipboard: (event) => ({
1440
clipboardData: event.clipboardData,
1541
}),
@@ -128,7 +154,7 @@ const eventTransforms = {};
128154

129155
Object.keys(eventTypeCategories).forEach((category) => {
130156
eventTypeCategories[category].forEach((type) => {
131-
eventTransforms[type] = eventCategoryTransforms[category];
157+
eventTransforms[type] = eventTransformCategories[category];
132158
});
133159
});
134160

0 commit comments

Comments
 (0)