|
1 | 1 | function serializeEvent(event) { |
2 | 2 | const data = {}; |
3 | | - if ("value" in event.target) { |
4 | | - data.value = event.target.value; |
5 | | - } |
6 | 3 | if (event.type in eventTransforms) { |
7 | 4 | Object.assign(data, eventTransforms[event.type](event)); |
8 | 5 | } |
| 6 | + if (event.target.tagName in targetTransforms) { |
| 7 | + Object.assign(data, targetTransforms[event.target.tagName]); |
| 8 | + } |
9 | 9 | return data; |
10 | 10 | } |
11 | 11 |
|
12 | | -const eventCategoryTransforms = { |
| 12 | +const targetTransformCategories = { |
| 13 | + hasValue: (target) => ({ |
| 14 | + value: target.value, |
| 15 | + }), |
| 16 | + hasCurrentTime: (target) => ({ |
| 17 | + currentTime: target.currentTime, |
| 18 | + }), |
| 19 | +}; |
| 20 | + |
| 21 | +const targetTagCategories = { |
| 22 | + hasValue: ["BUTTON", "INPUT", "OPTION", "LI", "METER", "PROGRESS", "PARAM"], |
| 23 | + hasCurrentTime: ["AUDIO", "VIDEO"], |
| 24 | +}; |
| 25 | + |
| 26 | +const targetTransforms = {}; |
| 27 | + |
| 28 | +Object.keys(targetTagCategories).forEach((category) => { |
| 29 | + targetTagCategories[category].forEach((type) => { |
| 30 | + targetTransforms[type] = targetTransformCategories[category]; |
| 31 | + }); |
| 32 | +}); |
| 33 | + |
| 34 | +const eventTransformCategories = { |
13 | 35 | clipboard: (event) => ({ |
14 | 36 | clipboardData: event.clipboardData, |
15 | 37 | }), |
@@ -128,7 +150,7 @@ const eventTransforms = {}; |
128 | 150 |
|
129 | 151 | Object.keys(eventTypeCategories).forEach((category) => { |
130 | 152 | eventTypeCategories[category].forEach((type) => { |
131 | | - eventTransforms[type] = eventCategoryTransforms[category]; |
| 153 | + eventTransforms[type] = eventTransformCategories[category]; |
132 | 154 | }); |
133 | 155 | }); |
134 | 156 |
|
|
0 commit comments