efront 4.9.3 → 4.10.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/coms/basic/Item.js +6 -1
- package/coms/basic/Tree.js +15 -1
- package/coms/basic_/JSON.js +1 -5
- package/coms/basic_/JSON_test.js +7 -1
- package/coms/compile/Html_test.js +7 -1
- package/coms/compile/Program.js +11 -6
- package/coms/compile/common.js +2 -2
- package/coms/docs/codecolor.js +24 -6
- package/coms/docs/codetext.xht +9 -3
- package/coms/zimoli/XMLHttpRequest.js +2 -5
- package/coms/zimoli/alert.js +2 -2
- package/coms/zimoli/confirm.js +1 -1
- package/coms/zimoli/createEvent.js +6 -7
- package/coms/zimoli/dispatch.js +8 -4
- package/coms/zimoli/getScreenPosition.js +6 -6
- package/coms/zimoli/grid.js +14 -10
- package/coms/zimoli/list.js +13 -1
- package/coms/zimoli/on.js +2 -1
- package/coms/zimoli/picture.js +1 -1
- package/coms/zimoli/slider.js +4 -0
- package/coms/zimoli/tree.js +126 -37
- package/coms/zimoli/tree.less +2 -1
- package/coms/zimoli/vbox.js +5 -5
- package/coms/zimoli/vbox.less +3 -1
- package/coms/zimoli/zimoli.js +1 -1
- package/data/packexe-setup.sfx +0 -0
- package/docs//347/273/204/344/273/266.xht +3 -4
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/zimoli/tree.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
var getTreeFromArray = Tree.fromArray;
|
|
2
2
|
function buildCrack(com, set) {
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
var coms = com;
|
|
4
|
+
while (coms.joined) coms = coms[0];
|
|
5
|
+
var count = coms.length;
|
|
6
|
+
for (var cx = 0, dx = coms.length; cx < dx; cx++) {
|
|
7
|
+
var c = coms[cx];
|
|
6
8
|
if (!c.isClosed() && c.length) {
|
|
7
9
|
count += buildCrack(c, false);
|
|
8
10
|
}
|
|
@@ -13,11 +15,12 @@ function buildCrack(com, set) {
|
|
|
13
15
|
return count;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
function
|
|
18
|
+
function getChildrenBottom(com) {
|
|
19
|
+
while (com.joined) com = com[0];
|
|
17
20
|
for (var cx = com.length - 1; cx >= 0; cx--) {
|
|
18
21
|
var c = com[cx];
|
|
19
22
|
if (!c.isClosed() && c.length) {
|
|
20
|
-
var t =
|
|
23
|
+
var t = getChildrenBottom(c);
|
|
21
24
|
if (t) {
|
|
22
25
|
return t;
|
|
23
26
|
}
|
|
@@ -29,7 +32,7 @@ function getCrackTarget(com) {
|
|
|
29
32
|
|
|
30
33
|
var getArrayFromTree = Tree.toArray;
|
|
31
34
|
var appendTo = Tree.appendTo;
|
|
32
|
-
|
|
35
|
+
var getOffset = e => getScreenPosition(e, false);
|
|
33
36
|
function tree() {
|
|
34
37
|
var element, generator;
|
|
35
38
|
[].forEach.call(arguments, function (arg) {
|
|
@@ -52,35 +55,37 @@ function tree() {
|
|
|
52
55
|
banner.setData(this.src);
|
|
53
56
|
this.src = root;
|
|
54
57
|
});
|
|
55
|
-
|
|
56
|
-
var banner = list(element, function (index) {
|
|
57
|
-
var coms = dom;
|
|
58
|
-
if (index >= coms.length) return;
|
|
59
|
-
var com = coms[index];
|
|
58
|
+
var createChild = function (com, index) {
|
|
60
59
|
var span;
|
|
61
|
-
if (!com) return;
|
|
62
|
-
if (com.target) {
|
|
63
|
-
com.target.index = index;
|
|
64
|
-
com.target.refresh();
|
|
65
|
-
return com.target;
|
|
66
|
-
}
|
|
67
60
|
var tabs = new Array(com.tab + 1).join("<t></t>");
|
|
68
61
|
if (isFunction(generator)) {
|
|
69
62
|
var elem = generator(index, com.constructor === Item ? com.value : com, com);
|
|
70
63
|
if (!elem) return;
|
|
64
|
+
var c = com;
|
|
65
|
+
while (c.joined) {
|
|
66
|
+
c = c[0];
|
|
67
|
+
var e = generator(index, c.constructor === Item ? c.value : c, c);
|
|
68
|
+
appendChild(elem, e.childNodes);
|
|
69
|
+
}
|
|
71
70
|
span = document.createElement('span');
|
|
72
71
|
span.innerHTML = tabs;
|
|
73
72
|
span.setAttribute("tabs", '');
|
|
74
73
|
elem.insertBefore(span, elem.firstChild);
|
|
75
74
|
span = elem;
|
|
76
75
|
} else {
|
|
76
|
+
var name = c => `<c>${c.name}</c>${c.test ? "<i>_test</i>" : ""}`;
|
|
77
|
+
var c = com;
|
|
78
|
+
var names = [name(c)];
|
|
79
|
+
while (c.joined) {
|
|
80
|
+
c = c[0];
|
|
81
|
+
names.push(name(c));
|
|
82
|
+
}
|
|
77
83
|
span = document.createElement("node");
|
|
78
|
-
html(span, `<span tabs>${tabs}</span
|
|
84
|
+
html(span, `<span tabs>${tabs}</span>${names.join('/')}<a class=count>${com.count}</a>`);
|
|
79
85
|
span.count = span.lastElementChild;
|
|
80
86
|
}
|
|
81
87
|
var _div = button(span);
|
|
82
88
|
_div.setAttribute("node", '');
|
|
83
|
-
_div.index = index;
|
|
84
89
|
|
|
85
90
|
if (!com.saved) {
|
|
86
91
|
com.saved = {};
|
|
@@ -116,13 +121,13 @@ function tree() {
|
|
|
116
121
|
}
|
|
117
122
|
_div.style.zIndex = 1;
|
|
118
123
|
_div.itemid = com.id;
|
|
119
|
-
if (_div.
|
|
124
|
+
if (_div._index === changed_index) {
|
|
120
125
|
saved_top = _div;
|
|
121
126
|
setState(true);
|
|
122
127
|
} else {
|
|
123
128
|
setState();
|
|
124
129
|
}
|
|
125
|
-
if (_div.
|
|
130
|
+
if (_div._index === changed_offset) {
|
|
126
131
|
saved_offset = _div;
|
|
127
132
|
}
|
|
128
133
|
com.closed = com.isClosed();
|
|
@@ -132,33 +137,36 @@ function tree() {
|
|
|
132
137
|
var setState = function (closed = com.isClosed()) {
|
|
133
138
|
var saved = com.saved;
|
|
134
139
|
if (com.length) {
|
|
135
|
-
|
|
140
|
+
|
|
141
|
+
if (saved.closed !== closed || _div !== com.target) {
|
|
136
142
|
saved.closed = closed;
|
|
137
143
|
if (closed) {
|
|
138
|
-
addClass(
|
|
139
|
-
removeClass(
|
|
144
|
+
addClass(_div, 'closed');
|
|
145
|
+
removeClass(_div, 'open empty');
|
|
140
146
|
} else {
|
|
141
|
-
addClass(
|
|
142
|
-
removeClass(
|
|
147
|
+
addClass(_div, 'open');
|
|
148
|
+
removeClass(_div, 'closed empty');
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
151
|
if (saved.empty) {
|
|
146
|
-
removeClass(
|
|
152
|
+
removeClass(_div, 'empty');
|
|
147
153
|
saved.empty = false;
|
|
148
154
|
}
|
|
149
155
|
} else {
|
|
150
156
|
if (!saved.empty) {
|
|
151
157
|
saved.empty = true;
|
|
152
|
-
addClass(
|
|
158
|
+
addClass(_div, 'empty');
|
|
153
159
|
}
|
|
154
160
|
if (saved.closed === true || saved.closed === false) {
|
|
155
|
-
removeClass(
|
|
161
|
+
removeClass(_div, 'closed open');
|
|
156
162
|
saved.closed = null;
|
|
157
163
|
}
|
|
158
164
|
}
|
|
159
165
|
};
|
|
160
|
-
|
|
161
|
-
|
|
166
|
+
var getChildrenTop = function (com) {
|
|
167
|
+
while (com.joined) com = com[0];
|
|
168
|
+
return com[0]?.target;
|
|
169
|
+
}
|
|
162
170
|
onclick(_div, function (event) {
|
|
163
171
|
var isClosed = com.isClosed();
|
|
164
172
|
if (!active(banner, com.value, com, banner.$src ? createItemTarget.call(banner, com.value) : _div)) {
|
|
@@ -167,7 +175,7 @@ function tree() {
|
|
|
167
175
|
if (isClosed === com.isClosed() && com.length) {
|
|
168
176
|
com.setClosed(!isClosed);
|
|
169
177
|
}
|
|
170
|
-
var index = this.
|
|
178
|
+
var index = this._index;
|
|
171
179
|
changed_index = index;
|
|
172
180
|
buildCrack(com);
|
|
173
181
|
changed_offset = com.crack + index;
|
|
@@ -195,8 +203,8 @@ function tree() {
|
|
|
195
203
|
if (com.isClosed() && com.length) {
|
|
196
204
|
z0();
|
|
197
205
|
setState(true);
|
|
198
|
-
var bottom =
|
|
199
|
-
var top = com
|
|
206
|
+
var bottom = getChildrenBottom(com);
|
|
207
|
+
var top = getChildrenTop(com);
|
|
200
208
|
if (!top) return refresh();
|
|
201
209
|
var marginTop;
|
|
202
210
|
if (!bottom || !bottom.offsetTop) {
|
|
@@ -229,11 +237,25 @@ function tree() {
|
|
|
229
237
|
timeout(z1, res + 60);
|
|
230
238
|
}
|
|
231
239
|
});
|
|
232
|
-
|
|
240
|
+
return _div;
|
|
241
|
+
};
|
|
242
|
+
var banner = list(element, function (index) {
|
|
243
|
+
var coms = dom;
|
|
244
|
+
if (index >= coms.length) return;
|
|
245
|
+
var com = coms[index];
|
|
246
|
+
if (!com) return;
|
|
247
|
+
if (com.target) {
|
|
248
|
+
com.target._index = index;
|
|
249
|
+
com.target.refresh();
|
|
250
|
+
return com.target;
|
|
251
|
+
}
|
|
252
|
+
var _div = createChild(com, index);
|
|
253
|
+
com.target = _div;
|
|
254
|
+
_div._index = index;
|
|
255
|
+
_div.refresh();
|
|
233
256
|
return _div;
|
|
234
257
|
});
|
|
235
258
|
|
|
236
|
-
|
|
237
259
|
banner.setData = function (src) {
|
|
238
260
|
root = new Tree(src);
|
|
239
261
|
refresh();
|
|
@@ -242,14 +264,81 @@ function tree() {
|
|
|
242
264
|
appendTo(parent, data);
|
|
243
265
|
refresh();
|
|
244
266
|
};
|
|
267
|
+
if (!('joined' in banner)) {
|
|
268
|
+
var joined = banner.hasAttribute("join") && !/^(false|0|null|nill?)/i.test(banner.getAttribute('join')) || banner.join;
|
|
269
|
+
banner.joined = joined != undefined ? joined : 7;
|
|
270
|
+
}
|
|
271
|
+
var stickys = [];
|
|
272
|
+
var setSticky = function () {
|
|
273
|
+
var p = stickys[stickys.length - 1];
|
|
274
|
+
var f = banner.getFirstVisibleElement(stickys.top + 1);
|
|
275
|
+
if (!f) return;
|
|
276
|
+
var limitHeight = f.offsetTop - banner.scrollTop;
|
|
277
|
+
var c = dom[f._index];
|
|
278
|
+
var useLimit = false;
|
|
279
|
+
if (p) {
|
|
280
|
+
var d = dom[p._index];
|
|
281
|
+
if (d.tab == c.tab) {
|
|
282
|
+
var { top, height } = getOffset(p);
|
|
283
|
+
if (top + height >= limitHeight) {
|
|
284
|
+
var ic = c.parent.indexOf(c);
|
|
285
|
+
useLimit = c.parent[ic - 1] === d;
|
|
286
|
+
if (useLimit) c = d;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
useLimit = true;
|
|
291
|
+
limitHeight += getOffset(f).height;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
var parents = [];
|
|
295
|
+
if (c.isClosed() || !c.length) c = c.parent;
|
|
296
|
+
while (c.parent) {
|
|
297
|
+
var p = c.parent;
|
|
298
|
+
if (!p?.joined) {
|
|
299
|
+
parents.push(c);
|
|
300
|
+
}
|
|
301
|
+
c = p;
|
|
302
|
+
}
|
|
303
|
+
stickys.forEach(s => s.sticky = false);
|
|
304
|
+
parents = parents.map(p => {
|
|
305
|
+
p.sticky = true;
|
|
306
|
+
return p.target;
|
|
307
|
+
});
|
|
308
|
+
parents.reverse();
|
|
309
|
+
stickys.forEach(s => {
|
|
310
|
+
if (!s.sticky) {
|
|
311
|
+
css(s, {
|
|
312
|
+
position: "",
|
|
313
|
+
top: '',
|
|
314
|
+
zIndex: 1
|
|
315
|
+
})
|
|
316
|
+
}
|
|
317
|
+
})
|
|
318
|
+
stickys = parents;
|
|
319
|
+
var top = 0;
|
|
320
|
+
stickys.forEach(p => {
|
|
321
|
+
var h = getOffset(p).height;
|
|
322
|
+
var limit = useLimit && top + h > limitHeight;
|
|
323
|
+
css(p, {
|
|
324
|
+
position: 'sticky',
|
|
325
|
+
top: limit ? limitHeight - h : top, zIndex: 3 - limit
|
|
326
|
+
});
|
|
327
|
+
top += h;
|
|
328
|
+
});
|
|
329
|
+
stickys.top = top;
|
|
330
|
+
}
|
|
245
331
|
var refresh = function () {
|
|
246
332
|
var index = banner.index();
|
|
247
333
|
var needremoves = dom.map(d => d.target).filter(d => !!d);
|
|
248
|
-
dom = getArrayFromTree(root,
|
|
334
|
+
dom = getArrayFromTree(root, banner.joined);
|
|
249
335
|
remove(needremoves, false);
|
|
250
336
|
banner.go(index || 0);
|
|
251
337
|
css(banner, { paddingBottom: '' });
|
|
338
|
+
setSticky();
|
|
252
339
|
};
|
|
340
|
+
on("mounted")(banner, setSticky);
|
|
341
|
+
on('scroll')(banner, setSticky);
|
|
253
342
|
banner.refresh = refresh;
|
|
254
343
|
|
|
255
344
|
return banner;
|
package/coms/zimoli/tree.less
CHANGED
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
color: inherit;
|
|
12
12
|
padding-right: 10px;
|
|
13
13
|
box-shadow: none;
|
|
14
|
+
width: 100%;
|
|
15
|
+
border-radius: 0;
|
|
14
16
|
|
|
15
17
|
&.line,
|
|
16
18
|
&[line] {
|
|
@@ -69,7 +71,6 @@ t {
|
|
|
69
71
|
margin-left: -.2em;
|
|
70
72
|
margin-right: .2em;
|
|
71
73
|
margin-top: .2em;
|
|
72
|
-
|
|
73
74
|
border-top: .4em solid;
|
|
74
75
|
border-bottom: .2em solid transparent;
|
|
75
76
|
}
|
package/coms/zimoli/vbox.js
CHANGED
|
@@ -78,12 +78,12 @@ function ybox(generator) {
|
|
|
78
78
|
}
|
|
79
79
|
height = height * Math.pow(.92, t / 6);
|
|
80
80
|
increaser.height = height
|
|
81
|
-
increaser.style.
|
|
81
|
+
increaser.style.marginBottom = fromOffset(height);
|
|
82
82
|
return height;
|
|
83
83
|
}
|
|
84
84
|
if (increaser.height) {
|
|
85
85
|
increaser.height = 0;
|
|
86
|
-
increaser.style.
|
|
86
|
+
increaser.style.marginBottom = 0;
|
|
87
87
|
return 1;
|
|
88
88
|
}
|
|
89
89
|
remove(increaser);
|
|
@@ -121,7 +121,7 @@ function ybox(generator) {
|
|
|
121
121
|
increaser_b.style.marginTop = 0;
|
|
122
122
|
increaser_b.style.marginBottom = 0;
|
|
123
123
|
increaser_b.height = 0;
|
|
124
|
-
increaser_b.style.
|
|
124
|
+
increaser_b.style.marginBottom = 0;
|
|
125
125
|
appendChild(_box, increaser_b);
|
|
126
126
|
var deltaMargin = _box.scrollHeight - increaser_b.offsetTop - parseFloat(getComputedStyle(_box).paddingBottom);
|
|
127
127
|
if (deltaMargin > 0) {
|
|
@@ -133,8 +133,8 @@ function ybox(generator) {
|
|
|
133
133
|
if (t_height > increase_height) t_height = increase_height;
|
|
134
134
|
if (b_height < 0) b_height = 0;
|
|
135
135
|
if (t_height < 0) t_height = 0;
|
|
136
|
-
if (!minusOnly || b_height < increaser_b.height) increaser_b.height = b_height, increaser_b.style.
|
|
137
|
-
if (!minusOnly || t_height < increaser_t.height) increaser_t.height = t_height, increaser_t.style.
|
|
136
|
+
if (!minusOnly || b_height < increaser_b.height) increaser_b.height = b_height, increaser_b.style.marginBottom = fromOffset(b_height);
|
|
137
|
+
if (!minusOnly || t_height < increaser_t.height) increaser_t.height = t_height, increaser_t.style.marginBottom = fromOffset(t_height);
|
|
138
138
|
return t_height < increase_height && b_height < increase_height;
|
|
139
139
|
};
|
|
140
140
|
if (/Edge|Trident/i.test(navigator.userAgent)) {
|
package/coms/zimoli/vbox.less
CHANGED
package/coms/zimoli/zimoli.js
CHANGED
|
@@ -603,7 +603,7 @@ function addGlobal(element, name = null, isDestroy) {
|
|
|
603
603
|
}
|
|
604
604
|
if (isFunction(body.layer)) {
|
|
605
605
|
body.layer(element, oldElement, history);
|
|
606
|
-
} else {
|
|
606
|
+
} else if (body !== element) {
|
|
607
607
|
if (isDestroy || !oldElement) appendChild.insert(body, element);
|
|
608
608
|
else appendChild.after(oldElement, element);
|
|
609
609
|
remove(oldElement);
|
package/data/packexe-setup.sfx
CHANGED
|
Binary file
|
|
@@ -70,13 +70,12 @@
|
|
|
70
70
|
height: 100%;
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
[codearea]
|
|
73
|
+
[codearea]>.codetext {
|
|
74
74
|
overflow: auto;
|
|
75
75
|
display: block;
|
|
76
76
|
height: auto;
|
|
77
77
|
min-height: 100%;
|
|
78
|
-
|
|
79
|
-
white-space: nowrap;
|
|
78
|
+
border-width: 10px 20px 40px 20px;
|
|
80
79
|
outline: none;
|
|
81
80
|
}
|
|
82
81
|
|
|
@@ -380,7 +379,7 @@
|
|
|
380
379
|
if (node) {
|
|
381
380
|
var next = node.nextSibling;
|
|
382
381
|
if (next) {
|
|
383
|
-
next =
|
|
382
|
+
next = /^[\u2002\u0020\u00a0]+/.exec(next.nodeValue);
|
|
384
383
|
if (next) return next[0].length;
|
|
385
384
|
}
|
|
386
385
|
}
|