@lvce-editor/virtual-dom 1.19.0 → 1.20.0
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/dist/index.js +380 -408
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,315 +1,308 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
var Code = "code";
|
|
1
|
+
const Audio$1 = 'audio';
|
|
2
|
+
const Button$1 = 'button';
|
|
3
|
+
const Col$1 = 'col';
|
|
4
|
+
const ColGroup$1 = 'colgroup';
|
|
5
|
+
const Del$1 = 'del';
|
|
6
|
+
const Div$1 = 'div';
|
|
7
|
+
const H1$1 = 'h1';
|
|
8
|
+
const H2$1 = 'h2';
|
|
9
|
+
const H3$1 = 'h3';
|
|
10
|
+
const H4$1 = 'h4';
|
|
11
|
+
const H5$1 = 'h5';
|
|
12
|
+
const H6$1 = 'h6';
|
|
13
|
+
const I$1 = 'i';
|
|
14
|
+
const Img$1 = 'img';
|
|
15
|
+
const Input$1 = 'input';
|
|
16
|
+
const Ins$1 = 'ins';
|
|
17
|
+
const Kbd$1 = 'kbd';
|
|
18
|
+
const Span$1 = 'span';
|
|
19
|
+
const Table$1 = 'table';
|
|
20
|
+
const TBody$1 = 'tbody';
|
|
21
|
+
const Td$1 = 'td';
|
|
22
|
+
const Th$1 = 'th';
|
|
23
|
+
const THead$1 = 'thead';
|
|
24
|
+
const Tr$1 = 'tr';
|
|
25
|
+
const Article$1 = 'article';
|
|
26
|
+
const Aside$1 = 'aside';
|
|
27
|
+
const Footer$1 = 'footer';
|
|
28
|
+
const Header$1 = 'header';
|
|
29
|
+
const Nav$1 = 'nav';
|
|
30
|
+
const Section$1 = 'section';
|
|
31
|
+
const Search$1 = 'search';
|
|
32
|
+
const Dd$1 = 'dd';
|
|
33
|
+
const Dl$1 = 'dl';
|
|
34
|
+
const Figcaption$1 = 'figcaption';
|
|
35
|
+
const Figure$1 = 'figure';
|
|
36
|
+
const Hr$1 = 'hr';
|
|
37
|
+
const Li$1 = 'li';
|
|
38
|
+
const Ol$1 = 'ol';
|
|
39
|
+
const P$1 = 'p';
|
|
40
|
+
const Pre$1 = 'pre';
|
|
41
|
+
const A$1 = 'a';
|
|
42
|
+
const Br$1 = 'br';
|
|
43
|
+
const Cite$1 = 'cite';
|
|
44
|
+
const Data$1 = 'data';
|
|
45
|
+
const Time$1 = 'time';
|
|
46
|
+
const Tfoot$1 = 'tfoot';
|
|
47
|
+
const Ul$1 = 'ul';
|
|
48
|
+
const Video$1 = 'video';
|
|
49
|
+
const TextArea$1 = 'textarea';
|
|
50
|
+
const Select$1 = 'select';
|
|
51
|
+
const Option$1 = 'option';
|
|
52
|
+
const Code$1 = 'code';
|
|
54
53
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
var Code2 = 65;
|
|
54
|
+
const Audio = 0;
|
|
55
|
+
const Button = 1;
|
|
56
|
+
const Col = 2;
|
|
57
|
+
const ColGroup = 3;
|
|
58
|
+
const Div = 4;
|
|
59
|
+
const H1 = 5;
|
|
60
|
+
const Input = 6;
|
|
61
|
+
const Kbd = 7;
|
|
62
|
+
const Span = 8;
|
|
63
|
+
const Table = 9;
|
|
64
|
+
const TBody = 10;
|
|
65
|
+
const Td = 11;
|
|
66
|
+
const Text = 12;
|
|
67
|
+
const Th = 13;
|
|
68
|
+
const THead = 14;
|
|
69
|
+
const Tr = 15;
|
|
70
|
+
const I = 16;
|
|
71
|
+
const Img = 17;
|
|
72
|
+
const Ins = 20;
|
|
73
|
+
const Del = 21;
|
|
74
|
+
const H2 = 22;
|
|
75
|
+
const H3 = 23;
|
|
76
|
+
const H4 = 24;
|
|
77
|
+
const H5 = 25;
|
|
78
|
+
const H6 = 26;
|
|
79
|
+
const Article = 27;
|
|
80
|
+
const Aside = 28;
|
|
81
|
+
const Footer = 29;
|
|
82
|
+
const Header = 30;
|
|
83
|
+
const Nav = 40;
|
|
84
|
+
const Section = 41;
|
|
85
|
+
const Search = 42;
|
|
86
|
+
const Dd = 43;
|
|
87
|
+
const Dl = 44;
|
|
88
|
+
const Figcaption = 45;
|
|
89
|
+
const Figure = 46;
|
|
90
|
+
const Hr = 47;
|
|
91
|
+
const Li = 48;
|
|
92
|
+
const Ol = 49;
|
|
93
|
+
const P = 50;
|
|
94
|
+
const Pre = 51;
|
|
95
|
+
const A = 53;
|
|
96
|
+
const Br = 55;
|
|
97
|
+
const Cite = 56;
|
|
98
|
+
const Data = 57;
|
|
99
|
+
const Time = 58;
|
|
100
|
+
const Tfoot = 59;
|
|
101
|
+
const Ul = 60;
|
|
102
|
+
const Video = 61;
|
|
103
|
+
const TextArea = 62;
|
|
104
|
+
const Select = 63;
|
|
105
|
+
const Option = 64;
|
|
106
|
+
const Code = 65;
|
|
109
107
|
|
|
110
|
-
|
|
111
|
-
var getElementTag = (type) => {
|
|
108
|
+
const getElementTag = type => {
|
|
112
109
|
switch (type) {
|
|
113
|
-
case
|
|
114
|
-
return Audio;
|
|
115
|
-
case
|
|
116
|
-
return H1;
|
|
117
|
-
case
|
|
118
|
-
return H2;
|
|
119
|
-
case
|
|
120
|
-
return H3;
|
|
121
|
-
case
|
|
122
|
-
return H4;
|
|
123
|
-
case
|
|
124
|
-
return H5;
|
|
125
|
-
case
|
|
126
|
-
return H6;
|
|
127
|
-
case
|
|
128
|
-
return Div;
|
|
129
|
-
case
|
|
130
|
-
return Kbd;
|
|
131
|
-
case
|
|
132
|
-
return Table;
|
|
133
|
-
case
|
|
134
|
-
return TBody;
|
|
135
|
-
case
|
|
136
|
-
return Th;
|
|
137
|
-
case
|
|
138
|
-
return Td;
|
|
139
|
-
case
|
|
140
|
-
return THead;
|
|
141
|
-
case
|
|
142
|
-
return Tr;
|
|
143
|
-
case
|
|
144
|
-
return Input;
|
|
145
|
-
case
|
|
146
|
-
return ColGroup;
|
|
147
|
-
case
|
|
148
|
-
return Col;
|
|
149
|
-
case
|
|
150
|
-
return Button;
|
|
151
|
-
case
|
|
152
|
-
return Span;
|
|
153
|
-
case
|
|
154
|
-
return I;
|
|
155
|
-
case
|
|
156
|
-
return Img;
|
|
157
|
-
case
|
|
158
|
-
return Ins;
|
|
159
|
-
case
|
|
160
|
-
return Del;
|
|
161
|
-
case
|
|
162
|
-
return Article;
|
|
163
|
-
case
|
|
164
|
-
return Aside;
|
|
165
|
-
case
|
|
166
|
-
return Footer;
|
|
167
|
-
case
|
|
168
|
-
return Header;
|
|
169
|
-
case
|
|
170
|
-
return Nav;
|
|
171
|
-
case
|
|
172
|
-
return Section;
|
|
173
|
-
case
|
|
174
|
-
return Search;
|
|
175
|
-
case
|
|
176
|
-
return Dd;
|
|
177
|
-
case
|
|
178
|
-
return Dl;
|
|
179
|
-
case
|
|
180
|
-
return Figcaption;
|
|
181
|
-
case
|
|
182
|
-
return Figure;
|
|
183
|
-
case
|
|
184
|
-
return Hr;
|
|
185
|
-
case
|
|
186
|
-
return Li;
|
|
187
|
-
case
|
|
188
|
-
return Ol;
|
|
189
|
-
case
|
|
190
|
-
return P;
|
|
191
|
-
case
|
|
192
|
-
return Pre;
|
|
193
|
-
case
|
|
194
|
-
return A;
|
|
195
|
-
case
|
|
196
|
-
return Br;
|
|
197
|
-
case
|
|
198
|
-
return Cite;
|
|
199
|
-
case
|
|
200
|
-
return Data;
|
|
201
|
-
case
|
|
202
|
-
return Time;
|
|
203
|
-
case
|
|
204
|
-
return Tfoot;
|
|
205
|
-
case
|
|
206
|
-
return Ul;
|
|
207
|
-
case
|
|
208
|
-
return Video;
|
|
209
|
-
case
|
|
210
|
-
return TextArea;
|
|
211
|
-
case
|
|
212
|
-
return Select;
|
|
213
|
-
case
|
|
214
|
-
return Option;
|
|
215
|
-
case
|
|
216
|
-
return Code;
|
|
110
|
+
case Audio:
|
|
111
|
+
return Audio$1;
|
|
112
|
+
case H1:
|
|
113
|
+
return H1$1;
|
|
114
|
+
case H2:
|
|
115
|
+
return H2$1;
|
|
116
|
+
case H3:
|
|
117
|
+
return H3$1;
|
|
118
|
+
case H4:
|
|
119
|
+
return H4$1;
|
|
120
|
+
case H5:
|
|
121
|
+
return H5$1;
|
|
122
|
+
case H6:
|
|
123
|
+
return H6$1;
|
|
124
|
+
case Div:
|
|
125
|
+
return Div$1;
|
|
126
|
+
case Kbd:
|
|
127
|
+
return Kbd$1;
|
|
128
|
+
case Table:
|
|
129
|
+
return Table$1;
|
|
130
|
+
case TBody:
|
|
131
|
+
return TBody$1;
|
|
132
|
+
case Th:
|
|
133
|
+
return Th$1;
|
|
134
|
+
case Td:
|
|
135
|
+
return Td$1;
|
|
136
|
+
case THead:
|
|
137
|
+
return THead$1;
|
|
138
|
+
case Tr:
|
|
139
|
+
return Tr$1;
|
|
140
|
+
case Input:
|
|
141
|
+
return Input$1;
|
|
142
|
+
case ColGroup:
|
|
143
|
+
return ColGroup$1;
|
|
144
|
+
case Col:
|
|
145
|
+
return Col$1;
|
|
146
|
+
case Button:
|
|
147
|
+
return Button$1;
|
|
148
|
+
case Span:
|
|
149
|
+
return Span$1;
|
|
150
|
+
case I:
|
|
151
|
+
return I$1;
|
|
152
|
+
case Img:
|
|
153
|
+
return Img$1;
|
|
154
|
+
case Ins:
|
|
155
|
+
return Ins$1;
|
|
156
|
+
case Del:
|
|
157
|
+
return Del$1;
|
|
158
|
+
case Article:
|
|
159
|
+
return Article$1;
|
|
160
|
+
case Aside:
|
|
161
|
+
return Aside$1;
|
|
162
|
+
case Footer:
|
|
163
|
+
return Footer$1;
|
|
164
|
+
case Header:
|
|
165
|
+
return Header$1;
|
|
166
|
+
case Nav:
|
|
167
|
+
return Nav$1;
|
|
168
|
+
case Section:
|
|
169
|
+
return Section$1;
|
|
170
|
+
case Search:
|
|
171
|
+
return Search$1;
|
|
172
|
+
case Dd:
|
|
173
|
+
return Dd$1;
|
|
174
|
+
case Dl:
|
|
175
|
+
return Dl$1;
|
|
176
|
+
case Figcaption:
|
|
177
|
+
return Figcaption$1;
|
|
178
|
+
case Figure:
|
|
179
|
+
return Figure$1;
|
|
180
|
+
case Hr:
|
|
181
|
+
return Hr$1;
|
|
182
|
+
case Li:
|
|
183
|
+
return Li$1;
|
|
184
|
+
case Ol:
|
|
185
|
+
return Ol$1;
|
|
186
|
+
case P:
|
|
187
|
+
return P$1;
|
|
188
|
+
case Pre:
|
|
189
|
+
return Pre$1;
|
|
190
|
+
case A:
|
|
191
|
+
return A$1;
|
|
192
|
+
case Br:
|
|
193
|
+
return Br$1;
|
|
194
|
+
case Cite:
|
|
195
|
+
return Cite$1;
|
|
196
|
+
case Data:
|
|
197
|
+
return Data$1;
|
|
198
|
+
case Time:
|
|
199
|
+
return Time$1;
|
|
200
|
+
case Tfoot:
|
|
201
|
+
return Tfoot$1;
|
|
202
|
+
case Ul:
|
|
203
|
+
return Ul$1;
|
|
204
|
+
case Video:
|
|
205
|
+
return Video$1;
|
|
206
|
+
case TextArea:
|
|
207
|
+
return TextArea$1;
|
|
208
|
+
case Select:
|
|
209
|
+
return Select$1;
|
|
210
|
+
case Option:
|
|
211
|
+
return Option$1;
|
|
212
|
+
case Code:
|
|
213
|
+
return Code$1;
|
|
217
214
|
default:
|
|
218
215
|
throw new Error(`element tag not found ${type}`);
|
|
219
216
|
}
|
|
220
217
|
};
|
|
221
218
|
|
|
222
|
-
|
|
223
|
-
var getEventListenerOptions = (eventName, value) => {
|
|
219
|
+
const getEventListenerOptions = (eventName, value) => {
|
|
224
220
|
if (value.passive) {
|
|
225
221
|
return {
|
|
226
222
|
passive: true
|
|
227
223
|
};
|
|
228
224
|
}
|
|
229
225
|
switch (eventName) {
|
|
230
|
-
case
|
|
226
|
+
case 'wheel':
|
|
231
227
|
return {
|
|
232
228
|
passive: true
|
|
233
229
|
};
|
|
234
230
|
default:
|
|
235
|
-
return
|
|
231
|
+
return undefined;
|
|
236
232
|
}
|
|
237
233
|
};
|
|
238
234
|
|
|
239
|
-
|
|
240
|
-
var uidSymbol = Symbol("uid");
|
|
235
|
+
const uidSymbol = Symbol('uid');
|
|
241
236
|
|
|
242
|
-
|
|
243
|
-
var getUidTarget = ($Element) => {
|
|
237
|
+
const getUidTarget = $Element => {
|
|
244
238
|
while ($Element) {
|
|
245
239
|
if ($Element[uidSymbol]) {
|
|
246
240
|
return $Element;
|
|
247
241
|
}
|
|
248
242
|
$Element = $Element.parentNode;
|
|
249
243
|
}
|
|
250
|
-
return
|
|
244
|
+
return undefined;
|
|
251
245
|
};
|
|
252
246
|
|
|
253
|
-
|
|
254
|
-
var setComponentUid = ($Element, uid) => {
|
|
247
|
+
const setComponentUid = ($Element, uid) => {
|
|
255
248
|
$Element[uidSymbol] = uid;
|
|
256
249
|
};
|
|
257
|
-
|
|
250
|
+
const getComponentUid = $Element => {
|
|
258
251
|
const $Target = getUidTarget($Element);
|
|
259
252
|
if (!$Target) {
|
|
260
253
|
return 0;
|
|
261
254
|
}
|
|
262
255
|
return $Target[uidSymbol];
|
|
263
256
|
};
|
|
264
|
-
|
|
265
|
-
const {
|
|
257
|
+
const getComponentUidFromEvent = event => {
|
|
258
|
+
const {
|
|
259
|
+
target,
|
|
260
|
+
currentTarget
|
|
261
|
+
} = event;
|
|
266
262
|
return getComponentUid(currentTarget || target);
|
|
267
263
|
};
|
|
268
264
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
ipc: void 0
|
|
265
|
+
const state = {
|
|
266
|
+
ipc: undefined
|
|
272
267
|
};
|
|
273
|
-
|
|
268
|
+
const getIpc = () => {
|
|
274
269
|
return state.ipc;
|
|
275
270
|
};
|
|
276
|
-
|
|
271
|
+
const setIpc = value => {
|
|
277
272
|
state.ipc = value;
|
|
278
273
|
};
|
|
279
274
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
var has = (listener) => {
|
|
275
|
+
const cache = new Map();
|
|
276
|
+
const has = listener => {
|
|
283
277
|
return cache.has(listener);
|
|
284
278
|
};
|
|
285
|
-
|
|
279
|
+
const set = (listener, value) => {
|
|
286
280
|
cache.set(listener, value);
|
|
287
281
|
};
|
|
288
|
-
|
|
282
|
+
const get = listener => {
|
|
289
283
|
return cache.get(listener);
|
|
290
284
|
};
|
|
291
285
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
Object.defineProperty(fn, "name", {
|
|
286
|
+
const nameAnonymousFunction = (fn, name) => {
|
|
287
|
+
Object.defineProperty(fn, 'name', {
|
|
295
288
|
value: name
|
|
296
289
|
});
|
|
297
290
|
};
|
|
298
291
|
|
|
299
|
-
|
|
300
|
-
var getWrappedListener = (listener, returnValue) => {
|
|
292
|
+
const getWrappedListener = (listener, returnValue) => {
|
|
301
293
|
if (!returnValue) {
|
|
302
294
|
return listener;
|
|
303
295
|
}
|
|
304
296
|
if (!has(listener)) {
|
|
305
|
-
const wrapped =
|
|
297
|
+
const wrapped = event => {
|
|
306
298
|
const uid = getComponentUidFromEvent(event);
|
|
307
299
|
const result = listener(event);
|
|
300
|
+
// TODO check for empty array by value
|
|
308
301
|
if (result.length === 0) {
|
|
309
302
|
return;
|
|
310
303
|
}
|
|
311
304
|
const ipc = getIpc();
|
|
312
|
-
ipc.send(
|
|
305
|
+
ipc.send('Viewlet.executeViewletCommand', uid, ...result);
|
|
313
306
|
};
|
|
314
307
|
nameAnonymousFunction(wrapped, listener.name);
|
|
315
308
|
set(listener, wrapped);
|
|
@@ -317,112 +310,110 @@ var getWrappedListener = (listener, returnValue) => {
|
|
|
317
310
|
return get(listener);
|
|
318
311
|
};
|
|
319
312
|
|
|
320
|
-
|
|
321
|
-
var getOptions = (fn) => {
|
|
313
|
+
const getOptions = fn => {
|
|
322
314
|
if (fn.passive) {
|
|
323
315
|
return {
|
|
324
316
|
passive: true
|
|
325
317
|
};
|
|
326
318
|
}
|
|
327
|
-
return
|
|
319
|
+
return undefined;
|
|
328
320
|
};
|
|
329
|
-
|
|
321
|
+
const attachEvent = ($Node, eventMap, key, value, newEventMap) => {
|
|
330
322
|
if (newEventMap && newEventMap[value]) {
|
|
331
323
|
const fn = newEventMap[value];
|
|
332
|
-
const
|
|
333
|
-
|
|
324
|
+
const options = getOptions(fn);
|
|
325
|
+
// TODO support event listener options
|
|
326
|
+
$Node.addEventListener(key, newEventMap[value], options);
|
|
334
327
|
return;
|
|
335
328
|
}
|
|
336
329
|
const listener = eventMap[value];
|
|
337
330
|
if (!listener) {
|
|
338
|
-
console.warn(
|
|
331
|
+
console.warn('listener not found', value);
|
|
339
332
|
return;
|
|
340
333
|
}
|
|
341
334
|
const options = getEventListenerOptions(key, value);
|
|
342
|
-
const wrapped = getWrappedListener(
|
|
343
|
-
listener,
|
|
344
|
-
eventMap.returnValue
|
|
345
|
-
);
|
|
335
|
+
const wrapped = getWrappedListener(listener, eventMap.returnValue);
|
|
346
336
|
$Node.addEventListener(key, wrapped, options);
|
|
347
337
|
};
|
|
348
338
|
|
|
349
|
-
|
|
350
|
-
var setProp = ($Element, key, value, eventMap, newEventMap) => {
|
|
339
|
+
const setProp = ($Element, key, value, eventMap, newEventMap) => {
|
|
351
340
|
switch (key) {
|
|
352
|
-
case
|
|
341
|
+
case 'maskImage':
|
|
353
342
|
$Element.style.maskImage = `url('${value}')`;
|
|
354
343
|
$Element.style.webkitMaskImage = `url('${value}')`;
|
|
355
344
|
break;
|
|
356
|
-
case
|
|
357
|
-
case
|
|
358
|
-
case
|
|
359
|
-
case
|
|
360
|
-
case
|
|
361
|
-
$Element.style[key] = typeof value ===
|
|
345
|
+
case 'paddingLeft':
|
|
346
|
+
case 'paddingRight':
|
|
347
|
+
case 'top':
|
|
348
|
+
case 'left':
|
|
349
|
+
case 'marginTop':
|
|
350
|
+
$Element.style[key] = typeof value === 'number' ? `${value}px` : value;
|
|
362
351
|
break;
|
|
363
|
-
case
|
|
352
|
+
case 'translate':
|
|
364
353
|
$Element.style[key] = value;
|
|
365
354
|
break;
|
|
366
|
-
case
|
|
367
|
-
case
|
|
355
|
+
case 'width':
|
|
356
|
+
case 'height':
|
|
368
357
|
if ($Element instanceof HTMLImageElement) {
|
|
369
358
|
$Element[key] = value;
|
|
370
|
-
} else if (typeof value ===
|
|
359
|
+
} else if (typeof value === 'number') {
|
|
371
360
|
$Element.style[key] = `${value}px`;
|
|
372
361
|
} else {
|
|
373
362
|
$Element.style[key] = value;
|
|
374
363
|
}
|
|
375
364
|
break;
|
|
376
|
-
case
|
|
377
|
-
throw new Error(
|
|
378
|
-
case
|
|
379
|
-
case
|
|
365
|
+
case 'style':
|
|
366
|
+
throw new Error('style property is not supported');
|
|
367
|
+
case 'childCount':
|
|
368
|
+
case 'type':
|
|
380
369
|
break;
|
|
381
|
-
case
|
|
370
|
+
case 'ariaOwns':
|
|
371
|
+
// TODO remove this once idl is supported
|
|
382
372
|
if (value) {
|
|
383
|
-
$Element.setAttribute(
|
|
373
|
+
$Element.setAttribute('aria-owns', value);
|
|
384
374
|
} else {
|
|
385
|
-
$Element.removeAttribute(
|
|
375
|
+
$Element.removeAttribute('aria-owns');
|
|
386
376
|
}
|
|
387
377
|
break;
|
|
388
|
-
case
|
|
378
|
+
case 'ariaActivedescendant':
|
|
389
379
|
if (value) {
|
|
390
|
-
$Element.setAttribute(
|
|
380
|
+
$Element.setAttribute('aria-activedescendant', value);
|
|
391
381
|
} else {
|
|
392
|
-
$Element.removeAttribute(
|
|
382
|
+
$Element.removeAttribute('aria-activedescendant');
|
|
393
383
|
}
|
|
394
384
|
break;
|
|
395
|
-
case
|
|
396
|
-
$Element.setAttribute(
|
|
385
|
+
case 'ariaControls':
|
|
386
|
+
$Element.setAttribute('aria-controls', value);
|
|
397
387
|
break;
|
|
398
|
-
case
|
|
388
|
+
case 'inputType':
|
|
389
|
+
// @ts-ignore
|
|
399
390
|
$Element.type = value;
|
|
400
391
|
break;
|
|
401
|
-
case
|
|
402
|
-
$Element.setAttribute(
|
|
392
|
+
case 'ariaLabelledBy':
|
|
393
|
+
$Element.setAttribute('aria-labelledby', value);
|
|
403
394
|
break;
|
|
404
|
-
case
|
|
405
|
-
case
|
|
406
|
-
case
|
|
407
|
-
case
|
|
408
|
-
case
|
|
409
|
-
case
|
|
410
|
-
case
|
|
411
|
-
case
|
|
412
|
-
case
|
|
413
|
-
case
|
|
414
|
-
case
|
|
415
|
-
case
|
|
416
|
-
case
|
|
417
|
-
case
|
|
418
|
-
case
|
|
395
|
+
case 'onBlur':
|
|
396
|
+
case 'onChange':
|
|
397
|
+
case 'onClick':
|
|
398
|
+
case 'onContextMenu':
|
|
399
|
+
case 'onDblClick':
|
|
400
|
+
case 'onFocus':
|
|
401
|
+
case 'onFocusIn':
|
|
402
|
+
case 'onFocusOut':
|
|
403
|
+
case 'onInput':
|
|
404
|
+
case 'onKeyDown':
|
|
405
|
+
case 'onMouseDown':
|
|
406
|
+
case 'onPointerDown':
|
|
407
|
+
case 'onPointerOut':
|
|
408
|
+
case 'onPointerOver':
|
|
409
|
+
case 'onWheel':
|
|
419
410
|
const eventName = key.slice(2).toLowerCase();
|
|
420
411
|
if (!eventMap || !value) {
|
|
421
412
|
return;
|
|
422
413
|
}
|
|
423
414
|
attachEvent($Element, eventMap, eventName, value, newEventMap);
|
|
424
415
|
break;
|
|
425
|
-
case
|
|
416
|
+
case 'id':
|
|
426
417
|
if (value) {
|
|
427
418
|
$Element[key] = value;
|
|
428
419
|
} else {
|
|
@@ -430,38 +421,30 @@ var setProp = ($Element, key, value, eventMap, newEventMap) => {
|
|
|
430
421
|
}
|
|
431
422
|
break;
|
|
432
423
|
default:
|
|
433
|
-
if (key.startsWith(
|
|
434
|
-
$Element.dataset[key.slice(
|
|
424
|
+
if (key.startsWith('data-')) {
|
|
425
|
+
$Element.dataset[key.slice('data-'.length)] = value;
|
|
435
426
|
} else {
|
|
436
427
|
$Element[key] = value;
|
|
437
428
|
}
|
|
438
429
|
}
|
|
439
430
|
};
|
|
440
431
|
|
|
441
|
-
|
|
442
|
-
var setProps = ($Element, props, eventMap, newEventMap) => {
|
|
432
|
+
const setProps = ($Element, props, eventMap, newEventMap) => {
|
|
443
433
|
for (const key in props) {
|
|
444
|
-
setProp(
|
|
445
|
-
$Element,
|
|
446
|
-
key,
|
|
447
|
-
props[key],
|
|
448
|
-
eventMap,
|
|
449
|
-
newEventMap
|
|
450
|
-
);
|
|
434
|
+
setProp($Element, key, props[key], eventMap, newEventMap);
|
|
451
435
|
}
|
|
452
436
|
};
|
|
453
437
|
|
|
454
|
-
|
|
455
|
-
var renderDomTextNode = (element) => {
|
|
438
|
+
const renderDomTextNode = element => {
|
|
456
439
|
return document.createTextNode(element.text);
|
|
457
440
|
};
|
|
458
|
-
|
|
441
|
+
const renderDomElement = (element, eventMap, newEventMap) => {
|
|
459
442
|
const tag = getElementTag(element.type);
|
|
460
443
|
const $Element = document.createElement(tag);
|
|
461
444
|
setProps($Element, element, eventMap, newEventMap);
|
|
462
445
|
return $Element;
|
|
463
446
|
};
|
|
464
|
-
|
|
447
|
+
const render$1 = (element, eventMap, newEventMap) => {
|
|
465
448
|
switch (element.type) {
|
|
466
449
|
case Text:
|
|
467
450
|
return renderDomTextNode(element);
|
|
@@ -470,14 +453,14 @@ var render = (element, eventMap, newEventMap) => {
|
|
|
470
453
|
}
|
|
471
454
|
};
|
|
472
455
|
|
|
473
|
-
|
|
474
|
-
var renderInternal2 = ($Parent, elements, eventMap, newEventMap) => {
|
|
456
|
+
const renderInternal = ($Parent, elements, eventMap, newEventMap) => {
|
|
475
457
|
const max = elements.length - 1;
|
|
476
458
|
let stack = [];
|
|
477
459
|
for (let i = max; i >= 0; i--) {
|
|
478
460
|
const element = elements[i];
|
|
479
|
-
const $Element = render(element, eventMap, newEventMap);
|
|
461
|
+
const $Element = render$1(element, eventMap, newEventMap);
|
|
480
462
|
if (element.childCount > 0) {
|
|
463
|
+
// @ts-expect-error
|
|
481
464
|
$Element.append(...stack.slice(0, element.childCount));
|
|
482
465
|
stack = stack.slice(element.childCount);
|
|
483
466
|
}
|
|
@@ -486,45 +469,38 @@ var renderInternal2 = ($Parent, elements, eventMap, newEventMap) => {
|
|
|
486
469
|
$Parent.append(...stack);
|
|
487
470
|
};
|
|
488
471
|
|
|
489
|
-
|
|
490
|
-
var setAttribute = ($Element, key, value) => {
|
|
472
|
+
const setAttribute = ($Element, key, value) => {
|
|
491
473
|
$Element.setAttribute(key, value);
|
|
492
474
|
};
|
|
493
|
-
|
|
475
|
+
const removeAttribute = ($Element, key) => {
|
|
494
476
|
$Element.removeAttribute(key);
|
|
495
477
|
};
|
|
496
|
-
|
|
478
|
+
const setText = ($Element, value) => {
|
|
497
479
|
$Element.nodeValue = value;
|
|
498
480
|
};
|
|
499
|
-
|
|
481
|
+
const removeChild = ($Element, index) => {
|
|
500
482
|
const $Child = $Element.children[index];
|
|
501
483
|
$Child.remove();
|
|
502
484
|
};
|
|
503
|
-
|
|
504
|
-
|
|
485
|
+
const add = ($Element, nodes) => {
|
|
486
|
+
renderInternal($Element, nodes, {}, {});
|
|
505
487
|
};
|
|
506
488
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
var NavigateSibling = 10;
|
|
489
|
+
const SetText = 1;
|
|
490
|
+
const SetAttribute = 3;
|
|
491
|
+
const RemoveAttribute = 4;
|
|
492
|
+
const Add = 6;
|
|
493
|
+
const NavigateChild = 7;
|
|
494
|
+
const NavigateParent = 8;
|
|
495
|
+
const RemoveChild = 9;
|
|
496
|
+
const NavigateSibling = 10;
|
|
516
497
|
|
|
517
|
-
|
|
518
|
-
var applyPatch = ($Element, patches) => {
|
|
498
|
+
const applyPatch = ($Element, patches) => {
|
|
519
499
|
let $Current = $Element;
|
|
520
500
|
for (const patch of patches) {
|
|
521
501
|
switch (patch.type) {
|
|
522
502
|
case SetAttribute:
|
|
523
|
-
setAttribute(
|
|
524
|
-
$Current,
|
|
525
|
-
patch.key,
|
|
526
|
-
patch.value
|
|
527
|
-
);
|
|
503
|
+
setAttribute($Current, patch.key, patch.value);
|
|
528
504
|
break;
|
|
529
505
|
case RemoveAttribute:
|
|
530
506
|
removeAttribute($Current, patch.key);
|
|
@@ -547,64 +523,60 @@ var applyPatch = ($Element, patches) => {
|
|
|
547
523
|
case NavigateParent:
|
|
548
524
|
$Current = $Current.parentNode;
|
|
549
525
|
break;
|
|
550
|
-
default:
|
|
551
|
-
break;
|
|
552
526
|
}
|
|
553
527
|
}
|
|
554
528
|
};
|
|
555
529
|
|
|
556
|
-
|
|
557
|
-
var getEventListenerArg = (param, event) => {
|
|
530
|
+
const getEventListenerArg = (param, event) => {
|
|
558
531
|
switch (param) {
|
|
559
|
-
case
|
|
532
|
+
case 'event.clientX':
|
|
560
533
|
return event.clientX;
|
|
561
|
-
case
|
|
534
|
+
case 'event.x':
|
|
562
535
|
return event.x;
|
|
563
|
-
case
|
|
536
|
+
case 'event.clientY':
|
|
564
537
|
return event.clientY;
|
|
565
|
-
case
|
|
538
|
+
case 'event.y':
|
|
566
539
|
return event.y;
|
|
567
|
-
case
|
|
540
|
+
case 'event.button':
|
|
568
541
|
return event.button;
|
|
569
|
-
case
|
|
542
|
+
case 'event.target.value':
|
|
570
543
|
return event.target.value;
|
|
571
|
-
case
|
|
544
|
+
case 'event.isTrusted':
|
|
572
545
|
return event.isTrusted;
|
|
573
|
-
case
|
|
546
|
+
case 'event.target.className':
|
|
574
547
|
return event.target.className;
|
|
575
|
-
case
|
|
548
|
+
case 'event.data':
|
|
576
549
|
return event.data;
|
|
577
|
-
case
|
|
550
|
+
case 'event.deltaMode':
|
|
578
551
|
return event.deltaMode;
|
|
579
|
-
case
|
|
552
|
+
case 'event.deltaX':
|
|
580
553
|
return event.deltaX;
|
|
581
|
-
case
|
|
554
|
+
case 'event.deltaY':
|
|
582
555
|
return event.deltaY;
|
|
583
|
-
case
|
|
556
|
+
case 'event.detail':
|
|
584
557
|
return event.detail;
|
|
585
|
-
case
|
|
558
|
+
case 'event.target.name':
|
|
586
559
|
return event.target.name;
|
|
587
|
-
case
|
|
560
|
+
case 'event.target.href':
|
|
588
561
|
return event.target.href;
|
|
589
|
-
case
|
|
562
|
+
case 'event.target.src':
|
|
590
563
|
return event.target.src;
|
|
591
|
-
case
|
|
564
|
+
case 'event.altKey':
|
|
592
565
|
return event.altKey;
|
|
593
|
-
case
|
|
566
|
+
case 'event.key':
|
|
594
567
|
return event.key;
|
|
595
|
-
case
|
|
568
|
+
case 'event.ctrlKey':
|
|
596
569
|
return event.ctrlKey;
|
|
597
|
-
case
|
|
570
|
+
case 'event.shiftKey':
|
|
598
571
|
return event.shiftKey;
|
|
599
|
-
case
|
|
572
|
+
case 'event.inputType':
|
|
600
573
|
return event.inputType;
|
|
601
574
|
default:
|
|
602
575
|
return param;
|
|
603
576
|
}
|
|
604
577
|
};
|
|
605
578
|
|
|
606
|
-
|
|
607
|
-
var getEventListenerArgs = (params, event) => {
|
|
579
|
+
const getEventListenerArgs = (params, event) => {
|
|
608
580
|
const serialized = [];
|
|
609
581
|
for (const param of params) {
|
|
610
582
|
serialized.push(getEventListenerArg(param, event));
|
|
@@ -612,9 +584,8 @@ var getEventListenerArgs = (params, event) => {
|
|
|
612
584
|
return serialized;
|
|
613
585
|
};
|
|
614
586
|
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
const fn = (event) => {
|
|
587
|
+
const createFn = info => {
|
|
588
|
+
const fn = event => {
|
|
618
589
|
if (info.preventDefault) {
|
|
619
590
|
event.preventDefault(event);
|
|
620
591
|
}
|
|
@@ -624,89 +595,99 @@ var createFn = (info) => {
|
|
|
624
595
|
return;
|
|
625
596
|
}
|
|
626
597
|
const ipc = getIpc();
|
|
627
|
-
ipc.send(
|
|
598
|
+
ipc.send('Viewlet.executeViewletCommand', uid, ...args);
|
|
628
599
|
};
|
|
629
600
|
nameAnonymousFunction(fn, info.name);
|
|
630
601
|
if (info.passive) {
|
|
602
|
+
// TODO avoid mutating function property, maybe return an object with function and options
|
|
631
603
|
fn.passive = true;
|
|
632
604
|
}
|
|
633
605
|
return fn;
|
|
634
606
|
};
|
|
635
607
|
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
const map = /* @__PURE__ */ Object.create(null);
|
|
608
|
+
const listeners = Object.create(null);
|
|
609
|
+
const registerEventListeners = (id, eventListeners) => {
|
|
610
|
+
const map = Object.create(null);
|
|
640
611
|
for (const info of eventListeners) {
|
|
641
612
|
const fn = createFn(info);
|
|
642
613
|
map[info.name] = fn;
|
|
643
614
|
}
|
|
644
615
|
listeners[id] = map;
|
|
645
616
|
};
|
|
646
|
-
|
|
617
|
+
const getEventListenerMap = id => {
|
|
647
618
|
const map = listeners[id];
|
|
648
619
|
return map;
|
|
649
620
|
};
|
|
650
621
|
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
return [...$Viewlet.querySelectorAll("input, textarea")];
|
|
622
|
+
const queryInputs = $Viewlet => {
|
|
623
|
+
return [...$Viewlet.querySelectorAll('input, textarea')];
|
|
654
624
|
};
|
|
655
625
|
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
$Node.textContent = "";
|
|
626
|
+
const clearNode = $Node => {
|
|
627
|
+
$Node.textContent = '';
|
|
659
628
|
};
|
|
660
629
|
|
|
661
|
-
|
|
662
|
-
var renderInto = ($Parent, dom, eventMap = {}) => {
|
|
630
|
+
const renderInto = ($Parent, dom, eventMap = {}) => {
|
|
663
631
|
clearNode($Parent);
|
|
664
|
-
|
|
632
|
+
renderInternal($Parent, dom, eventMap);
|
|
665
633
|
};
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
634
|
+
|
|
635
|
+
/**
|
|
636
|
+
*
|
|
637
|
+
* @param {any[]} elements
|
|
638
|
+
* @returns
|
|
639
|
+
*/
|
|
640
|
+
const render = (elements, eventMap = {}, newEventMap = {}) => {
|
|
641
|
+
const $Root = document.createElement('div');
|
|
642
|
+
renderInternal($Root, elements, eventMap, newEventMap);
|
|
669
643
|
return $Root;
|
|
670
644
|
};
|
|
671
645
|
|
|
672
|
-
|
|
673
|
-
var rememberFocus = ($Viewlet, dom, eventMap, uid = 0) => {
|
|
646
|
+
const rememberFocus = ($Viewlet, dom, eventMap, uid = 0) => {
|
|
674
647
|
const oldLeft = $Viewlet.style.left;
|
|
675
648
|
const oldTop = $Viewlet.style.top;
|
|
676
649
|
const oldWidth = $Viewlet.style.width;
|
|
677
650
|
const oldHeight = $Viewlet.style.height;
|
|
678
|
-
const {
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
const
|
|
651
|
+
const {
|
|
652
|
+
activeElement
|
|
653
|
+
} = document;
|
|
654
|
+
const isTreeFocused = activeElement?.getAttribute('role') === 'tree';
|
|
655
|
+
const isRootTree = $Viewlet.getAttribute('role') === 'tree' && activeElement === $Viewlet;
|
|
656
|
+
const focused = activeElement?.getAttribute('name');
|
|
682
657
|
const $$Inputs = queryInputs($Viewlet);
|
|
683
|
-
const inputMap =
|
|
658
|
+
const inputMap = Object.create(null);
|
|
684
659
|
for (const $Input of $$Inputs) {
|
|
660
|
+
// @ts-ignore
|
|
685
661
|
inputMap[$Input.name] = $Input.value;
|
|
686
662
|
}
|
|
687
663
|
if (uid) {
|
|
688
664
|
const newEventMap = getEventListenerMap(uid);
|
|
689
|
-
const $New =
|
|
665
|
+
const $New = render(dom, eventMap, newEventMap).firstChild;
|
|
690
666
|
setComponentUid($New, uid);
|
|
667
|
+
// @ts-ignore
|
|
691
668
|
$Viewlet.replaceWith($New);
|
|
669
|
+
// @ts-ignore
|
|
692
670
|
$Viewlet = $New;
|
|
693
671
|
} else {
|
|
694
672
|
renderInto($Viewlet, dom, eventMap);
|
|
695
673
|
}
|
|
696
674
|
const $$NewInputs = queryInputs($Viewlet);
|
|
697
675
|
for (const $Input of $$NewInputs) {
|
|
698
|
-
|
|
676
|
+
// @ts-ignore
|
|
677
|
+
$Input.value = inputMap[$Input.name] || $Input.value || '';
|
|
699
678
|
}
|
|
700
679
|
if (isRootTree) {
|
|
701
680
|
$Viewlet.focus();
|
|
702
681
|
} else if (isTreeFocused) {
|
|
703
682
|
const $Tree = $Viewlet.querySelector('[role="tree"]');
|
|
704
683
|
if ($Tree) {
|
|
684
|
+
// @ts-ignore
|
|
705
685
|
$Tree.focus();
|
|
706
686
|
}
|
|
707
687
|
} else if (focused) {
|
|
708
688
|
const $Focused = $Viewlet.querySelector(`[name="${focused}"]`);
|
|
709
689
|
if ($Focused) {
|
|
690
|
+
// @ts-ignore
|
|
710
691
|
$Focused.focus();
|
|
711
692
|
}
|
|
712
693
|
}
|
|
@@ -716,14 +697,5 @@ var rememberFocus = ($Viewlet, dom, eventMap, uid = 0) => {
|
|
|
716
697
|
$Viewlet.style.width = oldWidth;
|
|
717
698
|
return $Viewlet;
|
|
718
699
|
};
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
getComponentUid,
|
|
722
|
-
getComponentUidFromEvent,
|
|
723
|
-
registerEventListeners,
|
|
724
|
-
rememberFocus,
|
|
725
|
-
render2 as render,
|
|
726
|
-
renderInto,
|
|
727
|
-
setComponentUid,
|
|
728
|
-
setIpc
|
|
729
|
-
};
|
|
700
|
+
|
|
701
|
+
export { applyPatch, getComponentUid, getComponentUidFromEvent, registerEventListeners, rememberFocus, render, renderInto, setComponentUid, setIpc };
|