@thi.ng/hdom 8.2.32 → 9.0.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/CHANGELOG.md +187 -215
- package/README.md +28 -10
- package/default.d.ts +1 -1
- package/default.js +3 -3
- package/diff.d.ts +1 -1
- package/diff.js +3 -2
- package/dom.d.ts +1 -1
- package/dom.js +7 -3
- package/index.d.ts +9 -9
- package/index.js +9 -9
- package/logger.d.ts +1 -1
- package/logger.js +1 -1
- package/normalize.d.ts +1 -1
- package/normalize.js +7 -4
- package/package.json +62 -31
- package/render-once.d.ts +1 -1
- package/render-once.js +4 -4
- package/resolve.d.ts +3 -0
- package/{utils.js → resolve.js} +1 -1
- package/start.d.ts +1 -1
- package/start.js +4 -4
- package/lib/index.js +0 -632
- package/lib/index.js.map +0 -1
- package/lib/index.umd.js +0 -1
- package/lib/index.umd.js.map +0 -1
- package/utils.d.ts +0 -3
package/lib/index.js
DELETED
|
@@ -1,632 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var api = require('@thi.ng/api');
|
|
6
|
-
var diff = require('@thi.ng/diff');
|
|
7
|
-
var equiv$1 = require('@thi.ng/equiv');
|
|
8
|
-
var checks = require('@thi.ng/checks');
|
|
9
|
-
var hiccup = require('@thi.ng/hiccup');
|
|
10
|
-
var prefixes = require('@thi.ng/prefixes');
|
|
11
|
-
var errors = require('@thi.ng/errors');
|
|
12
|
-
|
|
13
|
-
const isArray$2 = Array.isArray;
|
|
14
|
-
const max = Math.max;
|
|
15
|
-
const OBJP = Object.getPrototypeOf({});
|
|
16
|
-
const FN = "function";
|
|
17
|
-
const STR = "string";
|
|
18
|
-
const INDEX = (() => {
|
|
19
|
-
const res = new Array(2048);
|
|
20
|
-
for (let i = 2, n = res.length; i < n; i++) {
|
|
21
|
-
res[i] = i - 2;
|
|
22
|
-
}
|
|
23
|
-
return res;
|
|
24
|
-
})();
|
|
25
|
-
const buildIndex = (n) => {
|
|
26
|
-
if (n <= INDEX.length) {
|
|
27
|
-
return INDEX.slice(0, n);
|
|
28
|
-
}
|
|
29
|
-
const res = new Array(n);
|
|
30
|
-
while (--n >= 2) {
|
|
31
|
-
res[n] = n - 2;
|
|
32
|
-
}
|
|
33
|
-
return res;
|
|
34
|
-
};
|
|
35
|
-
const diffTree = (opts, impl, parent, prev, curr, child = 0) => {
|
|
36
|
-
const attribs = curr[1];
|
|
37
|
-
if (attribs.__skip) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
if (attribs.__diff === false) {
|
|
41
|
-
releaseTree(prev);
|
|
42
|
-
impl.replaceChild(opts, parent, child, curr);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const pattribs = prev[1];
|
|
46
|
-
if (pattribs && pattribs.__skip) {
|
|
47
|
-
impl.replaceChild(opts, parent, child, curr, false);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
let _impl = attribs.__impl;
|
|
51
|
-
if (_impl && _impl !== impl) {
|
|
52
|
-
return _impl.diffTree(opts, _impl, parent, prev, curr, child);
|
|
53
|
-
}
|
|
54
|
-
const delta = diff.diffArray(prev, curr, "only-distance-linear", equiv);
|
|
55
|
-
if (delta.distance === 0) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const edits = delta.linear;
|
|
59
|
-
const el = impl.getChild(parent, child);
|
|
60
|
-
let ii;
|
|
61
|
-
let status;
|
|
62
|
-
let val;
|
|
63
|
-
if (edits[0] !== 0 || prev[1].key !== attribs.key) {
|
|
64
|
-
releaseTree(prev);
|
|
65
|
-
impl.replaceChild(opts, parent, child, curr);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
if ((val = prev.__release) && val !== curr.__release) {
|
|
69
|
-
releaseTree(prev);
|
|
70
|
-
}
|
|
71
|
-
if (edits[3] !== 0) {
|
|
72
|
-
diffAttributes(impl, el, prev[1], curr[1]);
|
|
73
|
-
if (delta.distance === 2) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
const numEdits = edits.length;
|
|
78
|
-
const prevLength = prev.length - 1;
|
|
79
|
-
const equivKeys = extractEquivElements(edits);
|
|
80
|
-
const offsets = buildIndex(prevLength + 1);
|
|
81
|
-
for (ii = 6; ii < numEdits; ii += 3) {
|
|
82
|
-
status = edits[ii];
|
|
83
|
-
if (!status)
|
|
84
|
-
continue;
|
|
85
|
-
if (status === -1) {
|
|
86
|
-
diffDeleted(opts, impl, el, prev, curr, edits, ii, equivKeys, offsets, prevLength);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
diffAdded(opts, impl, el, edits, ii, equivKeys, offsets, prevLength);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if ((val = curr.__init) && val != prev.__init) {
|
|
93
|
-
val.apply(curr, [el, ...curr.__args]);
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
const diffDeleted = (opts, impl, el, prev, curr, edits, ii, equivKeys, offsets, prevLength) => {
|
|
97
|
-
const val = edits[ii + 2];
|
|
98
|
-
if (isArray$2(val)) {
|
|
99
|
-
let k = val[1].key;
|
|
100
|
-
if (k !== undefined && equivKeys[k][2] !== undefined) {
|
|
101
|
-
const eq = equivKeys[k];
|
|
102
|
-
k = eq[0];
|
|
103
|
-
diffTree(opts, impl, el, prev[k], curr[eq[2]], offsets[k]);
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
const idx = edits[ii + 1];
|
|
107
|
-
releaseTree(val);
|
|
108
|
-
impl.removeChild(el, offsets[idx]);
|
|
109
|
-
incOffsets(offsets, prevLength, idx);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
else if (typeof val === STR) {
|
|
113
|
-
impl.setContent(el, "");
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
const diffAdded = (opts, impl, el, edits, ii, equivKeys, offsets, prevLength) => {
|
|
117
|
-
const val = edits[ii + 2];
|
|
118
|
-
if (typeof val === STR) {
|
|
119
|
-
impl.setContent(el, val);
|
|
120
|
-
}
|
|
121
|
-
else if (isArray$2(val)) {
|
|
122
|
-
const k = val[1].key;
|
|
123
|
-
if (k === undefined || equivKeys[k][0] === undefined) {
|
|
124
|
-
const idx = edits[ii + 1];
|
|
125
|
-
impl.createTree(opts, el, val, offsets[idx]);
|
|
126
|
-
decOffsets(offsets, prevLength, idx);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
const incOffsets = (offsets, j, idx) => {
|
|
131
|
-
for (; j > idx; j--) {
|
|
132
|
-
offsets[j] = max(offsets[j] - 1, 0);
|
|
133
|
-
}
|
|
134
|
-
};
|
|
135
|
-
const decOffsets = (offsets, j, idx) => {
|
|
136
|
-
for (; j >= idx; j--) {
|
|
137
|
-
offsets[j]++;
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
const diffAttributes = (impl, el, prev, curr) => {
|
|
141
|
-
const delta = diff.diffObject(prev, curr, "full", equiv$1.equiv);
|
|
142
|
-
impl.removeAttribs(el, delta.dels, prev);
|
|
143
|
-
let val = api.SEMAPHORE;
|
|
144
|
-
let i, e, edits;
|
|
145
|
-
for (edits = delta.edits, i = edits.length; (i -= 2) >= 0;) {
|
|
146
|
-
e = edits[i];
|
|
147
|
-
e[0] === "o" && e[1] === "n" && impl.removeAttribs(el, [e], prev);
|
|
148
|
-
e !== "value"
|
|
149
|
-
? impl.setAttrib(el, e, edits[i + 1], curr)
|
|
150
|
-
: (val = edits[i + 1]);
|
|
151
|
-
}
|
|
152
|
-
for (edits = delta.adds, i = edits.length; --i >= 0;) {
|
|
153
|
-
e = edits[i];
|
|
154
|
-
e !== "value" ? impl.setAttrib(el, e, curr[e], curr) : (val = curr[e]);
|
|
155
|
-
}
|
|
156
|
-
val !== api.SEMAPHORE && impl.setAttrib(el, "value", val, curr);
|
|
157
|
-
};
|
|
158
|
-
const releaseTree = (tree) => {
|
|
159
|
-
if (isArray$2(tree)) {
|
|
160
|
-
let x;
|
|
161
|
-
if ((x = tree[1]) && x.__release === false) {
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
if (tree.__release) {
|
|
165
|
-
tree.__release.apply(tree.__this, tree.__args);
|
|
166
|
-
delete tree.__release;
|
|
167
|
-
}
|
|
168
|
-
for (x = tree.length; --x >= 2;) {
|
|
169
|
-
releaseTree(tree[x]);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
const extractEquivElements = (edits) => {
|
|
174
|
-
let k;
|
|
175
|
-
let val;
|
|
176
|
-
let ek;
|
|
177
|
-
const equiv = {};
|
|
178
|
-
for (let i = edits.length; (i -= 3) >= 0;) {
|
|
179
|
-
val = edits[i + 2];
|
|
180
|
-
if (isArray$2(val) && (k = val[1].key) !== undefined) {
|
|
181
|
-
ek = equiv[k];
|
|
182
|
-
!ek && (equiv[k] = ek = [, ,]);
|
|
183
|
-
ek[edits[i] + 1] = edits[i + 1];
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return equiv;
|
|
187
|
-
};
|
|
188
|
-
const equiv = (a, b) => {
|
|
189
|
-
let proto;
|
|
190
|
-
if (a === b) {
|
|
191
|
-
return true;
|
|
192
|
-
}
|
|
193
|
-
if (a != null) {
|
|
194
|
-
if (typeof a.equiv === FN) {
|
|
195
|
-
return a.equiv(b);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
return a == b;
|
|
200
|
-
}
|
|
201
|
-
if (b != null) {
|
|
202
|
-
if (typeof b.equiv === FN) {
|
|
203
|
-
return b.equiv(a);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
return a == b;
|
|
208
|
-
}
|
|
209
|
-
if (typeof a === STR || typeof b === STR) {
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
|
-
if (((proto = Object.getPrototypeOf(a)), proto == null || proto === OBJP) &&
|
|
213
|
-
((proto = Object.getPrototypeOf(b)), proto == null || proto === OBJP)) {
|
|
214
|
-
return (!(a.__diff === false || b.__diff === false) &&
|
|
215
|
-
equiv$1.equivObject(a, b, equiv));
|
|
216
|
-
}
|
|
217
|
-
if (typeof a !== FN &&
|
|
218
|
-
a.length !== undefined &&
|
|
219
|
-
typeof b !== FN &&
|
|
220
|
-
b.length !== undefined) {
|
|
221
|
-
return equiv$1.equivArrayLike(a, b, equiv);
|
|
222
|
-
}
|
|
223
|
-
if (a instanceof Set && b instanceof Set) {
|
|
224
|
-
return equiv$1.equivSet(a, b, equiv);
|
|
225
|
-
}
|
|
226
|
-
if (a instanceof Map && b instanceof Map) {
|
|
227
|
-
return equiv$1.equivMap(a, b, equiv);
|
|
228
|
-
}
|
|
229
|
-
if (a instanceof Date && b instanceof Date) {
|
|
230
|
-
return a.getTime() === b.getTime();
|
|
231
|
-
}
|
|
232
|
-
if (a instanceof RegExp && b instanceof RegExp) {
|
|
233
|
-
return a.toString() === b.toString();
|
|
234
|
-
}
|
|
235
|
-
return a !== a && b !== b;
|
|
236
|
-
};
|
|
237
|
-
|
|
238
|
-
const isArray$1 = checks.isArray;
|
|
239
|
-
const isNotStringAndIterable$1 = checks.isNotStringAndIterable;
|
|
240
|
-
const isString = checks.isString;
|
|
241
|
-
const maybeInitElement = (el, tree) => tree.__init && tree.__init.apply(tree.__this, [el, ...tree.__args]);
|
|
242
|
-
const createTree = (opts, impl, parent, tree, insert, init = true) => {
|
|
243
|
-
if (isArray$1(tree)) {
|
|
244
|
-
const tag = tree[0];
|
|
245
|
-
if (typeof tag === "function") {
|
|
246
|
-
return createTree(opts, impl, parent, tag.apply(null, [opts.ctx, ...tree.slice(1)]), insert);
|
|
247
|
-
}
|
|
248
|
-
const attribs = tree[1];
|
|
249
|
-
if (attribs.__impl) {
|
|
250
|
-
return attribs.__impl.createTree(opts, parent, tree, insert, init);
|
|
251
|
-
}
|
|
252
|
-
const el = impl.createElement(parent, tag, attribs, insert);
|
|
253
|
-
if (tree.length > 2) {
|
|
254
|
-
const n = tree.length;
|
|
255
|
-
for (let i = 2; i < n; i++) {
|
|
256
|
-
createTree(opts, impl, el, tree[i], undefined, init);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
init && maybeInitElement(el, tree);
|
|
260
|
-
return el;
|
|
261
|
-
}
|
|
262
|
-
if (isNotStringAndIterable$1(tree)) {
|
|
263
|
-
const res = [];
|
|
264
|
-
for (let t of tree) {
|
|
265
|
-
res.push(createTree(opts, impl, parent, t, insert, init));
|
|
266
|
-
}
|
|
267
|
-
return res;
|
|
268
|
-
}
|
|
269
|
-
if (tree == null) {
|
|
270
|
-
return parent;
|
|
271
|
-
}
|
|
272
|
-
return impl.createTextElement(parent, tree);
|
|
273
|
-
};
|
|
274
|
-
const hydrateTree = (opts, impl, parent, tree, index = 0) => {
|
|
275
|
-
if (isArray$1(tree)) {
|
|
276
|
-
const el = impl.getChild(parent, index);
|
|
277
|
-
if (typeof tree[0] === "function") {
|
|
278
|
-
hydrateTree(opts, impl, parent, tree[0].apply(null, [opts.ctx, ...tree.slice(1)]), index);
|
|
279
|
-
}
|
|
280
|
-
const attribs = tree[1];
|
|
281
|
-
if (attribs.__impl) {
|
|
282
|
-
return attribs.__impl.hydrateTree(opts, parent, tree, index);
|
|
283
|
-
}
|
|
284
|
-
maybeInitElement(el, tree);
|
|
285
|
-
for (let a in attribs) {
|
|
286
|
-
a[0] === "o" && a[1] === "n" && impl.setAttrib(el, a, attribs[a]);
|
|
287
|
-
}
|
|
288
|
-
for (let n = tree.length, i = 2; i < n; i++) {
|
|
289
|
-
hydrateTree(opts, impl, el, tree[i], i - 2);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
else if (isNotStringAndIterable$1(tree)) {
|
|
293
|
-
for (let t of tree) {
|
|
294
|
-
hydrateTree(opts, impl, parent, t, index);
|
|
295
|
-
index++;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
};
|
|
299
|
-
const createElement = (parent, tag, attribs, insert) => {
|
|
300
|
-
const el = hiccup.SVG_TAGS[tag]
|
|
301
|
-
? document.createElementNS(prefixes.XML_SVG, tag)
|
|
302
|
-
: document.createElement(tag);
|
|
303
|
-
attribs && setAttribs(el, attribs);
|
|
304
|
-
return addChild(parent, el, insert);
|
|
305
|
-
};
|
|
306
|
-
const createTextElement = (parent, content, insert) => addChild(parent, document.createTextNode(content), insert);
|
|
307
|
-
const addChild = (parent, child, insert) => parent
|
|
308
|
-
? insert === undefined
|
|
309
|
-
? parent.appendChild(child)
|
|
310
|
-
: parent.insertBefore(child, parent.children[insert])
|
|
311
|
-
: child;
|
|
312
|
-
const getChild = (parent, child) => parent.children[child];
|
|
313
|
-
const replaceChild = (opts, impl, parent, child, tree, init = true) => (impl.removeChild(parent, child),
|
|
314
|
-
impl.createTree(opts, parent, tree, child, init));
|
|
315
|
-
const cloneWithNewAttribs = (el, attribs) => {
|
|
316
|
-
const res = el.cloneNode(true);
|
|
317
|
-
setAttribs(res, attribs);
|
|
318
|
-
el.parentNode.replaceChild(res, el);
|
|
319
|
-
return res;
|
|
320
|
-
};
|
|
321
|
-
const setContent = (el, body) => (el.textContent = body);
|
|
322
|
-
const setAttribs = (el, attribs) => {
|
|
323
|
-
for (let k in attribs) {
|
|
324
|
-
setAttrib(el, k, attribs[k], attribs);
|
|
325
|
-
}
|
|
326
|
-
return el;
|
|
327
|
-
};
|
|
328
|
-
const setAttrib = (el, id, val, attribs) => {
|
|
329
|
-
if (id.startsWith("__"))
|
|
330
|
-
return;
|
|
331
|
-
const isListener = id[0] === "o" && id[1] === "n";
|
|
332
|
-
if (!isListener && typeof val === "function") {
|
|
333
|
-
val = val(attribs);
|
|
334
|
-
}
|
|
335
|
-
if (val !== undefined && val !== false) {
|
|
336
|
-
switch (id) {
|
|
337
|
-
case "style":
|
|
338
|
-
setStyle(el, val);
|
|
339
|
-
break;
|
|
340
|
-
case "value":
|
|
341
|
-
updateValueAttrib(el, val);
|
|
342
|
-
break;
|
|
343
|
-
case "prefix":
|
|
344
|
-
el.setAttribute(id, isString(val) ? val : hiccup.formatPrefixes(val));
|
|
345
|
-
break;
|
|
346
|
-
case "accesskey":
|
|
347
|
-
el.accessKey = val;
|
|
348
|
-
break;
|
|
349
|
-
case "contenteditable":
|
|
350
|
-
el.contentEditable = val;
|
|
351
|
-
break;
|
|
352
|
-
case "tabindex":
|
|
353
|
-
el.tabIndex = val;
|
|
354
|
-
break;
|
|
355
|
-
case "align":
|
|
356
|
-
case "autocapitalize":
|
|
357
|
-
case "checked":
|
|
358
|
-
case "dir":
|
|
359
|
-
case "draggable":
|
|
360
|
-
case "hidden":
|
|
361
|
-
case "id":
|
|
362
|
-
case "lang":
|
|
363
|
-
case "namespaceURI":
|
|
364
|
-
case "scrollTop":
|
|
365
|
-
case "scrollLeft":
|
|
366
|
-
case "title":
|
|
367
|
-
el[id] = val;
|
|
368
|
-
break;
|
|
369
|
-
default:
|
|
370
|
-
isListener
|
|
371
|
-
? setListener(el, id.substr(2), val)
|
|
372
|
-
: el.setAttribute(id, val === true ? "" : val);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
else {
|
|
376
|
-
el[id] != null ? (el[id] = null) : el.removeAttribute(id);
|
|
377
|
-
}
|
|
378
|
-
return el;
|
|
379
|
-
};
|
|
380
|
-
const updateValueAttrib = (el, value) => {
|
|
381
|
-
let ev;
|
|
382
|
-
switch (el.type) {
|
|
383
|
-
case "text":
|
|
384
|
-
case "textarea":
|
|
385
|
-
case "password":
|
|
386
|
-
case "search":
|
|
387
|
-
case "number":
|
|
388
|
-
case "email":
|
|
389
|
-
case "url":
|
|
390
|
-
case "tel":
|
|
391
|
-
case "date":
|
|
392
|
-
case "datetime-local":
|
|
393
|
-
case "time":
|
|
394
|
-
case "week":
|
|
395
|
-
case "month":
|
|
396
|
-
if ((ev = el.value) !== undefined && typeof value === "string") {
|
|
397
|
-
const off = value.length - (ev.length - (el.selectionStart || 0));
|
|
398
|
-
el.value = value;
|
|
399
|
-
el.selectionStart = el.selectionEnd = off;
|
|
400
|
-
break;
|
|
401
|
-
}
|
|
402
|
-
default:
|
|
403
|
-
el.value = value;
|
|
404
|
-
}
|
|
405
|
-
};
|
|
406
|
-
const removeAttribs = (el, attribs, prev) => {
|
|
407
|
-
for (let i = attribs.length; --i >= 0;) {
|
|
408
|
-
const a = attribs[i];
|
|
409
|
-
if (a[0] === "o" && a[1] === "n") {
|
|
410
|
-
removeListener(el, a.substr(2), prev[a]);
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
el.hasAttribute(a) ? el.removeAttribute(a) : (el[a] = null);
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
};
|
|
417
|
-
const setStyle = (el, styles) => (el.setAttribute("style", hiccup.css(styles)), el);
|
|
418
|
-
const setListener = (el, id, listener) => isString(listener)
|
|
419
|
-
? el.setAttribute("on" + id, listener)
|
|
420
|
-
: isArray$1(listener)
|
|
421
|
-
? el.addEventListener(id, ...listener)
|
|
422
|
-
: el.addEventListener(id, listener);
|
|
423
|
-
const removeListener = (el, id, listener) => isArray$1(listener)
|
|
424
|
-
? el.removeEventListener(id, ...listener)
|
|
425
|
-
: el.removeEventListener(id, listener);
|
|
426
|
-
const clearDOM = (el) => (el.innerHTML = "");
|
|
427
|
-
const removeChild = (parent, childIdx) => {
|
|
428
|
-
const n = parent.children[childIdx];
|
|
429
|
-
n !== undefined && parent.removeChild(n);
|
|
430
|
-
};
|
|
431
|
-
|
|
432
|
-
const isArray = checks.isArray;
|
|
433
|
-
const isNotStringAndIterable = checks.isNotStringAndIterable;
|
|
434
|
-
const isPlainObject = checks.isPlainObject;
|
|
435
|
-
const normalizeElement = (spec, keys) => {
|
|
436
|
-
let tag = spec[0];
|
|
437
|
-
let hasAttribs = isPlainObject(spec[1]);
|
|
438
|
-
let match;
|
|
439
|
-
let name;
|
|
440
|
-
let attribs;
|
|
441
|
-
if (typeof tag !== "string" || !(match = hiccup.RE_TAG.exec(tag))) {
|
|
442
|
-
errors.illegalArgs(`${tag} is not a valid tag name`);
|
|
443
|
-
}
|
|
444
|
-
name = match[1];
|
|
445
|
-
if (tag === name && hasAttribs && (!keys || spec[1].key)) {
|
|
446
|
-
return spec;
|
|
447
|
-
}
|
|
448
|
-
attribs = hiccup.mergeEmmetAttribs(hasAttribs ? Object.assign({}, spec[1]) : {}, match[2], match[3]);
|
|
449
|
-
return attribs.__skip && spec.length < 3
|
|
450
|
-
? [name, attribs]
|
|
451
|
-
: [name, attribs, ...spec.slice(hasAttribs ? 2 : 1)];
|
|
452
|
-
};
|
|
453
|
-
const normalizeTree = (opts, tree) => _normalizeTree(tree, opts, opts.ctx, [0], opts.keys !== false, opts.span !== false);
|
|
454
|
-
const _normalizeTree = (tree, opts, ctx, path, keys, span) => {
|
|
455
|
-
if (tree == null) {
|
|
456
|
-
return;
|
|
457
|
-
}
|
|
458
|
-
if (isArray(tree)) {
|
|
459
|
-
if (tree.length === 0) {
|
|
460
|
-
return;
|
|
461
|
-
}
|
|
462
|
-
let norm, nattribs = tree[1], impl;
|
|
463
|
-
if (nattribs &&
|
|
464
|
-
(impl = nattribs.__impl) &&
|
|
465
|
-
(impl = impl.normalizeTree)) {
|
|
466
|
-
return impl(opts, tree);
|
|
467
|
-
}
|
|
468
|
-
const tag = tree[0];
|
|
469
|
-
if (typeof tag === "function") {
|
|
470
|
-
return _normalizeTree(tag.apply(null, [ctx, ...tree.slice(1)]), opts, ctx, path, keys, span);
|
|
471
|
-
}
|
|
472
|
-
if (typeof tag.render === "function") {
|
|
473
|
-
const args = [ctx, ...tree.slice(1)];
|
|
474
|
-
norm = _normalizeTree(tag.render.apply(tag, args), opts, ctx, path, keys, span);
|
|
475
|
-
if (isArray(norm)) {
|
|
476
|
-
norm.__this = tag;
|
|
477
|
-
norm.__init = tag.init;
|
|
478
|
-
norm.__release = tag.release;
|
|
479
|
-
norm.__args = args;
|
|
480
|
-
}
|
|
481
|
-
return norm;
|
|
482
|
-
}
|
|
483
|
-
norm = normalizeElement(tree, keys);
|
|
484
|
-
nattribs = norm[1];
|
|
485
|
-
if (nattribs.__normalize === false) {
|
|
486
|
-
return norm;
|
|
487
|
-
}
|
|
488
|
-
if (keys && nattribs.key === undefined) {
|
|
489
|
-
nattribs.key = path.join("-");
|
|
490
|
-
}
|
|
491
|
-
return norm.length > 2
|
|
492
|
-
? normalizeChildren(norm, nattribs, opts, ctx, path, keys, span)
|
|
493
|
-
: norm;
|
|
494
|
-
}
|
|
495
|
-
return typeof tree === "function"
|
|
496
|
-
? _normalizeTree(tree(ctx), opts, ctx, path, keys, span)
|
|
497
|
-
: typeof tree.toHiccup === "function"
|
|
498
|
-
? _normalizeTree(tree.toHiccup(opts.ctx), opts, ctx, path, keys, span)
|
|
499
|
-
: typeof tree.deref === "function"
|
|
500
|
-
? _normalizeTree(tree.deref(), opts, ctx, path, keys, span)
|
|
501
|
-
: span
|
|
502
|
-
? ["span", keys ? { key: path.join("-") } : {}, tree.toString()]
|
|
503
|
-
: tree.toString();
|
|
504
|
-
};
|
|
505
|
-
const normalizeChildren = (norm, nattribs, opts, ctx, path, keys, span) => {
|
|
506
|
-
const tag = norm[0];
|
|
507
|
-
const res = [tag, nattribs];
|
|
508
|
-
span = span && !hiccup.NO_SPANS[tag];
|
|
509
|
-
for (let i = 2, j = 2, k = 0, n = norm.length; i < n; i++) {
|
|
510
|
-
let el = norm[i];
|
|
511
|
-
if (el != null) {
|
|
512
|
-
const isarray = isArray(el);
|
|
513
|
-
if ((isarray && isArray(el[0])) ||
|
|
514
|
-
(!isarray && isNotStringAndIterable(el))) {
|
|
515
|
-
for (let c of el) {
|
|
516
|
-
c = _normalizeTree(c, opts, ctx, path.concat(k), keys, span);
|
|
517
|
-
if (c !== undefined) {
|
|
518
|
-
res[j++] = c;
|
|
519
|
-
}
|
|
520
|
-
k++;
|
|
521
|
-
}
|
|
522
|
-
}
|
|
523
|
-
else {
|
|
524
|
-
el = _normalizeTree(el, opts, ctx, path.concat(k), keys, span);
|
|
525
|
-
if (el !== undefined) {
|
|
526
|
-
res[j++] = el;
|
|
527
|
-
}
|
|
528
|
-
k++;
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
return res;
|
|
533
|
-
};
|
|
534
|
-
|
|
535
|
-
const DEFAULT_IMPL = {
|
|
536
|
-
createTree(opts, parent, tree, child, init) {
|
|
537
|
-
return createTree(opts, this, parent, tree, child, init);
|
|
538
|
-
},
|
|
539
|
-
hydrateTree(opts, parent, tree, child) {
|
|
540
|
-
return hydrateTree(opts, this, parent, tree, child);
|
|
541
|
-
},
|
|
542
|
-
diffTree(opts, parent, prev, curr, child) {
|
|
543
|
-
diffTree(opts, this, parent, prev, curr, child);
|
|
544
|
-
},
|
|
545
|
-
normalizeTree,
|
|
546
|
-
getElementById(id) {
|
|
547
|
-
return document.getElementById(id);
|
|
548
|
-
},
|
|
549
|
-
getChild,
|
|
550
|
-
createElement,
|
|
551
|
-
createTextElement,
|
|
552
|
-
replaceChild(opts, parent, child, tree, init) {
|
|
553
|
-
replaceChild(opts, this, parent, child, tree, init);
|
|
554
|
-
},
|
|
555
|
-
removeChild,
|
|
556
|
-
setContent,
|
|
557
|
-
removeAttribs,
|
|
558
|
-
setAttrib,
|
|
559
|
-
};
|
|
560
|
-
|
|
561
|
-
exports.LOGGER = api.NULL_LOGGER;
|
|
562
|
-
const setLogger = (logger) => (exports.LOGGER = logger);
|
|
563
|
-
|
|
564
|
-
const resolveRoot = (root, impl) => checks.isString(root) ? impl.getElementById(root) : root;
|
|
565
|
-
|
|
566
|
-
const renderOnce = (tree, opts = {}, impl = DEFAULT_IMPL) => {
|
|
567
|
-
opts = Object.assign({ root: "app" }, opts);
|
|
568
|
-
opts.ctx = hiccup.derefContext(opts.ctx, opts.autoDerefKeys);
|
|
569
|
-
const root = resolveRoot(opts.root, impl);
|
|
570
|
-
tree = impl.normalizeTree(opts, tree);
|
|
571
|
-
if (!tree)
|
|
572
|
-
return;
|
|
573
|
-
opts.hydrate
|
|
574
|
-
? impl.hydrateTree(opts, root, tree)
|
|
575
|
-
: impl.createTree(opts, root, tree);
|
|
576
|
-
};
|
|
577
|
-
|
|
578
|
-
const start = (tree, opts = {}, impl = DEFAULT_IMPL) => {
|
|
579
|
-
const _opts = Object.assign({ root: "app" }, opts);
|
|
580
|
-
let prev = [];
|
|
581
|
-
let isActive = true;
|
|
582
|
-
const root = resolveRoot(_opts.root, impl);
|
|
583
|
-
const update = () => {
|
|
584
|
-
if (isActive) {
|
|
585
|
-
_opts.ctx = hiccup.derefContext(opts.ctx, _opts.autoDerefKeys);
|
|
586
|
-
const curr = impl.normalizeTree(_opts, tree);
|
|
587
|
-
if (curr != null) {
|
|
588
|
-
if (_opts.hydrate) {
|
|
589
|
-
impl.hydrateTree(_opts, root, curr);
|
|
590
|
-
_opts.hydrate = false;
|
|
591
|
-
}
|
|
592
|
-
else {
|
|
593
|
-
impl.diffTree(_opts, root, prev, curr);
|
|
594
|
-
}
|
|
595
|
-
prev = curr;
|
|
596
|
-
}
|
|
597
|
-
isActive && requestAnimationFrame(update);
|
|
598
|
-
}
|
|
599
|
-
};
|
|
600
|
-
requestAnimationFrame(update);
|
|
601
|
-
return () => (isActive = false);
|
|
602
|
-
};
|
|
603
|
-
|
|
604
|
-
exports.DEFAULT_IMPL = DEFAULT_IMPL;
|
|
605
|
-
exports.addChild = addChild;
|
|
606
|
-
exports.clearDOM = clearDOM;
|
|
607
|
-
exports.cloneWithNewAttribs = cloneWithNewAttribs;
|
|
608
|
-
exports.createElement = createElement;
|
|
609
|
-
exports.createTextElement = createTextElement;
|
|
610
|
-
exports.createTree = createTree;
|
|
611
|
-
exports.diffAttributes = diffAttributes;
|
|
612
|
-
exports.diffTree = diffTree;
|
|
613
|
-
exports.equiv = equiv;
|
|
614
|
-
exports.getChild = getChild;
|
|
615
|
-
exports.hydrateTree = hydrateTree;
|
|
616
|
-
exports.normalizeElement = normalizeElement;
|
|
617
|
-
exports.normalizeTree = normalizeTree;
|
|
618
|
-
exports.releaseTree = releaseTree;
|
|
619
|
-
exports.removeAttribs = removeAttribs;
|
|
620
|
-
exports.removeChild = removeChild;
|
|
621
|
-
exports.removeListener = removeListener;
|
|
622
|
-
exports.renderOnce = renderOnce;
|
|
623
|
-
exports.replaceChild = replaceChild;
|
|
624
|
-
exports.resolveRoot = resolveRoot;
|
|
625
|
-
exports.setAttrib = setAttrib;
|
|
626
|
-
exports.setAttribs = setAttribs;
|
|
627
|
-
exports.setContent = setContent;
|
|
628
|
-
exports.setListener = setListener;
|
|
629
|
-
exports.setLogger = setLogger;
|
|
630
|
-
exports.setStyle = setStyle;
|
|
631
|
-
exports.start = start;
|
|
632
|
-
exports.updateValueAttrib = updateValueAttrib;
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../diff.js","../dom.js","../normalize.js","../default.js","../logger.js","../utils.js","../render-once.js","../start.js"],"sourcesContent":null,"names":["isArray","diffArray","diffObject","_equiv","SEMAPHORE","equivObject","equivArrayLike","equivSet","equivMap","isa","isNotStringAndIterable","isi","iss","SVG_TAGS","XML_SVG","formatPrefixes","css","iso","RE_TAG","illegalArgs","mergeEmmetAttribs","NO_SPANS","LOGGER","NULL_LOGGER","isString","derefContext"],"mappings":"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"}
|