efront 4.4.14 → 4.5.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.
Files changed (50) hide show
  1. package/#/345/233/275/351/231/205/345/214/226.yml +53 -5
  2. package/apps/pivot/api.yml +3 -0
  3. package/apps/pivot/cert/main.xht +181 -0
  4. package/apps/pivot/cert/orders.xht +144 -0
  5. package/apps/pivot/menu.yml +1 -0
  6. package/coms/basic/assert.js +40 -16
  7. package/coms/basic/cross_.js +20 -3
  8. package/coms/basic/renderTags.js +23 -0
  9. package/coms/basic/shallowClone.js +8 -0
  10. package/coms/basic/shallowEqual.js +13 -4
  11. package/coms/basic/valid.js +15 -2
  12. package/coms/compile//347/264/240/351/246/250.js +2 -1
  13. package/coms/docs/codetext.xht +3 -3
  14. package/coms/frame/chat.js +1 -1
  15. package/coms/kugou/bindScroll.js +1 -1
  16. package/coms/kugou/krc.js +2 -2
  17. package/coms/layer/leftCenter.js +5 -5
  18. package/coms/pivot/acme2.js +185 -0
  19. package/coms/reptile/colored_console.js +5 -17
  20. package/coms/zimoli/appendChild.js +3 -2
  21. package/coms/zimoli/autofocus.js +2 -2
  22. package/coms/zimoli/button.less +4 -3
  23. package/coms/zimoli/checker.js +34 -15
  24. package/coms/zimoli/checker.less +2 -3
  25. package/coms/zimoli/container.js +20 -16
  26. package/coms/zimoli/data.js +64 -46
  27. package/coms/zimoli/field.js +3 -3
  28. package/coms/zimoli/field.less +8 -2
  29. package/coms/zimoli/filterTime.js +39 -8
  30. package/coms/zimoli/fromBase64.js +2 -0
  31. package/coms/zimoli/grid.js +2 -2
  32. package/coms/zimoli/isMounted.js +3 -3
  33. package/coms/zimoli/list.js +3 -3
  34. package/coms/zimoli/maps.js +1 -1
  35. package/coms/zimoli/menuList.js +1 -1
  36. package/coms/zimoli/model.js +41 -5
  37. package/coms/zimoli/on.js +4 -4
  38. package/coms/zimoli/remove.js +3 -3
  39. package/coms/zimoli/render.js +25 -33
  40. package/coms/zimoli/scrollbar.js +52 -19
  41. package/coms/zimoli/scrollbar.less +14 -2
  42. package/coms/zimoli/scrollbar_test.less +1 -0
  43. package/coms/zimoli/select.js +3 -3
  44. package/coms/zimoli/table.js +1 -1
  45. package/coms/zimoli/toBase64.js +16 -6
  46. package/coms/zimoli/view.js +19 -12
  47. package/coms/zimoli/view.less +5 -3
  48. package/docs/loader.js +1 -1
  49. package/package.json +1 -1
  50. package/public/efront.js +1 -1
@@ -71,7 +71,7 @@ var removeRenderElement = function () {
71
71
  function refresh(root) {
72
72
  var rest = [];
73
73
  var body = document.documentElement;
74
- if (root && root.renders) {
74
+ if (root && root.$renders) {
75
75
  for (var k in renderElements) {
76
76
  var element = renderElements[k];
77
77
  if (
@@ -90,8 +90,8 @@ function refresh(root) {
90
90
  if (rest.length) rest.forEach(a => removeRenderElement.call(a));
91
91
  }
92
92
  function rebuild(element) {
93
- if (!element.needchanges) {
94
- element.renders.forEach(a => a.call(element));
93
+ if (!element.$needchanges) {
94
+ element.$renders.forEach(a => a.call(element));
95
95
  return;
96
96
  }
97
97
  var props = {};
@@ -99,7 +99,7 @@ function rebuild(element) {
99
99
  var data = element[key];
100
100
  props[key] = isObject(data) && !isFunction(data) && !isDate(data) && !isNode(data) ? extend(data instanceof Array ? [] : {}, data) : data;
101
101
  });
102
- element.renders.forEach(a => a.call(element));
102
+ element.$renders.forEach(a => a.call(element));
103
103
  var changes = getChanges(element, props);
104
104
  if (changes) {
105
105
  var event = createEvent('changes');
@@ -118,7 +118,7 @@ var createGetter = function (target, search, isprop = true) {
118
118
  };
119
119
  var createComment = function (renders, type, expression) {
120
120
  var comment = document.createComment(`${type} ${expression}`);
121
- comment.renders = renders;
121
+ comment.$renders = renders;
122
122
  comment.$scope = this.$scope;
123
123
  comment.$struct = this.$struct;
124
124
  comment.$parentScopes = this.$parentScopes;
@@ -294,7 +294,7 @@ var createIf = function (search, id = 0) {
294
294
  elements.comment = search;
295
295
  if (this.$struct.repeat) id = -3;
296
296
 
297
- elements.renders = [function () {
297
+ elements.$renders = [function () {
298
298
  var shouldMount = -1;
299
299
  for (var cx = 0, dx = elements.length; cx < dx; cx += 2) {
300
300
  var getter = elements[cx + 1];
@@ -322,7 +322,7 @@ var createIf = function (search, id = 0) {
322
322
  }
323
323
 
324
324
  }];
325
- return elements[0] = createComment.call(element, elements.renders, 'if', elements.comment);
325
+ return elements[0] = createComment.call(element, elements.$renders, 'if', elements.comment);
326
326
  };
327
327
  var parseIfWithRepeat = function (ifExpression, repeatExpression) {
328
328
  var repeater = parseRepeat(repeatExpression);
@@ -443,7 +443,7 @@ var createBinder = function (binder) {
443
443
  return function (search) {
444
444
  var getter = createGetter(this, `(${search})`);
445
445
  var oldValue;
446
- this.renders.push(function () {
446
+ this.$renders.push(function () {
447
447
  var value = getter(this);
448
448
  if (shallowEqual(value, oldValue)) return;
449
449
  var oldv = oldValue;
@@ -465,19 +465,11 @@ var createBinder = function (binder) {
465
465
  var src2 = function (search) {
466
466
  var getter = createGetter(this, search);
467
467
  var savedValue;
468
- this.renders.push(function () {
468
+ this.$renders.push(function () {
469
469
  var origin = getter(this);
470
- var temp = origin;
471
- if (origin instanceof Array) {
472
- temp = extend([], origin);
473
- } else if (isObject(origin)) {
474
- temp = extend({}, origin);
475
- } else if (!isHandled(origin)) {
476
- temp = "";
477
- }
470
+ var temp = shallowClone(origin, 1);
478
471
  if (isHandled(savedValue)) {
479
- var changes = getChanges(temp, savedValue);
480
- if (!changes) return;
472
+ if (shallowEqual(temp, savedValue, 1)) return;
481
473
  }
482
474
  else {
483
475
  if (isSame(savedValue, temp)) return;
@@ -533,16 +525,16 @@ var directives = {
533
525
  this[key] = value;
534
526
  };
535
527
  if (/^input$/i.test(target.tagName) && /^checkbox$/i.test(target.type) || /^checkbox$/i.test(target.tagName)) {
536
- this.renders.push(setter || setter2.bind(target, 'checked'));
528
+ this.$renders.push(setter || setter2.bind(target, 'checked'));
537
529
  var change = getstr || "this.checked";
538
530
  } else if (("value" in target || target.getValue instanceof Function) && target.setValue instanceof Function) {
539
- this.renders.push(setter);
531
+ this.$renders.push(setter);
540
532
  var change = getstr || "this.value";
541
533
  } else if (/^(select|input|textarea)$/i.test(target.tagName) || "value" in target) {
542
- this.renders.push(setter || setter2.bind(target, 'value'));
534
+ this.$renders.push(setter || setter2.bind(target, 'value'));
543
535
  var change = getstr || "this.value";
544
536
  } else {
545
- this.renders.push(setter || function () {
537
+ this.$renders.push(setter || function () {
546
538
  var value = getter(this);
547
539
  if (value === undefined) value = "";
548
540
  if (deepEqual(oldValue, value)) return;
@@ -569,7 +561,7 @@ var directives = {
569
561
  var getter = createGetter(this, `(${search})`);
570
562
  var generatedClassNames = {};
571
563
  var oldValue;
572
- this.renders.push(function () {
564
+ this.$renders.push(function () {
573
565
  var className = getter(this);
574
566
  if (deepEqual(oldValue, className)) return;
575
567
  oldValue = className;
@@ -608,7 +600,7 @@ var binders = {
608
600
  attr = attr.replace(/\-(\w)/g, (_, w) => w.toUpperCase());
609
601
  var getter = createGetter(this, search);
610
602
  var oldValue;
611
- this.renders.push(function () {
603
+ this.$renders.push(function () {
612
604
  var value = getter(this);
613
605
  if (deepEqual(value, oldValue)) return;
614
606
  oldValue = value;
@@ -620,7 +612,7 @@ var binders = {
620
612
  ""(attr, search) {
621
613
  var getter = createGetter(this, search);
622
614
  var oldValue;
623
- this.renders.push(function () {
615
+ this.$renders.push(function () {
624
616
  var value = getter(this);
625
617
  if (deepEqual(value, oldValue)) return;
626
618
  oldValue = value;
@@ -720,8 +712,8 @@ function getFromScopes(key, scope, parentScopes) {
720
712
  }
721
713
 
722
714
  function renderRest(element, struct, replacer = element) {
723
- var renders = element.renders;
724
- element.renders = [];
715
+ var renders = element.$renders;
716
+ element.$renders = [];
725
717
  var { binds, attrs, props } = struct;
726
718
  for (var k in binds) {
727
719
  if (k === 'src') continue;
@@ -741,7 +733,7 @@ function renderRest(element, struct, replacer = element) {
741
733
  } catch (e) { }
742
734
  }
743
735
  if (binds.src) directives.src.call(element, binds.src);
744
- if (renders && renders.length) element.renders.push.apply(element.renders, renders);
736
+ if (renders && renders.length) element.$renders.push.apply(element.$renders, renders);
745
737
  }
746
738
 
747
739
  function renderElement(element, scope = element.$scope, parentScopes = element.$parentScopes, once) {
@@ -786,7 +778,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
786
778
  if (parentNode) {
787
779
  if (parentNode.$renderid > 1 || isMounted(parentNode)) element.$renderid = 2;
788
780
  }
789
- element.renders = element.renders ? [].concat(element.renders) : [];
781
+ element.$renders = element.$renders || element.renders ? [].concat(element.$renders || [], element.renders || []) : [];
790
782
  var { copys, binds, once } = element.$struct;
791
783
  if (once) element.$renderid = 9;
792
784
  if (binds.src) {
@@ -823,8 +815,8 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
823
815
  if (!isFirstRender) return element;
824
816
  renderRest(element, element.$struct, replacer);
825
817
  if (isNode(replacer) && replacer !== element) {
826
- if (!replacer.renders) replacer.renders = [];
827
- replacer.renders.push.apply(replacer.renders, element.renders);
818
+ if (!replacer.$renders) replacer.$renders = [];
819
+ replacer.$renders.push.apply(replacer.$renders, element.$renders);
828
820
  if (replacer.$struct && replacer.$struct !== element.$struct) {
829
821
  element.$struct.ons.forEach(([on, key, value]) => on.call(element, replacer, key, value));
830
822
  }
@@ -833,7 +825,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
833
825
  else {
834
826
  element.$struct.ons.forEach(([on, key, value]) => on.call(element, element, key, value));
835
827
  }
836
- if (element.renders.length) {
828
+ if (element.$renders.length) {
837
829
  if (element.$renderid !== 9) {
838
830
  onmounted(element, addRenderElement);
839
831
  onremove(element, removeRenderElement);
@@ -65,6 +65,13 @@ var scrollbary = function () {
65
65
  css(thumb, { top: targetY });
66
66
  dispatch(target, "change");
67
67
  }
68
+ var tt = target.target;
69
+ if (tt) {
70
+ var { Height, height } = getTargetHeight(tt);
71
+ var top = targetY * (Height - height) / (target.clientHeight - thumb.offsetHeight);
72
+ setTargetTop(tt, top);
73
+ }
74
+
68
75
  };
69
76
 
70
77
  var mouseup = function () {
@@ -141,29 +148,30 @@ var scrollbary = function () {
141
148
  return { Height, height };
142
149
  };
143
150
 
144
- function bindTarget(_container, followResize = _container) {
145
- var _scrollbar = this;
146
- _container.with = _scrollbar;
147
- _scrollbar.target = _container;
148
- onmounted(_container, _scrollbar.reshape);
149
- on("scroll")(_container, function () {
150
- var top = getTargetTop(_container);
151
+ function scrollbar(elem) {
152
+ var onscroll = function () {
153
+ var top = getTargetTop(this);
151
154
  _scrollbar.scrollTo(top);
152
155
  _scrollbar.autoshow();
153
- });
154
- on("change")(_scrollbar, function () {
156
+ };
157
+ var onchange = function () {
155
158
  var top = _scrollbar.$Top();
156
- setTargetTop(_container, top);
157
- });
158
- if (followResize) on("resize")(followResize, _scrollbar.reshape);
159
- }
160
- function scrollbar(elem) {
159
+ setTargetTop(this, top);
160
+ };
161
+ function bindTarget(_container, followResize = _container) {
162
+ _container.with = _scrollbar;
163
+ _scrollbar.target = _container;
164
+ onmounted(_container, _scrollbar.reshape);
165
+ on("scroll")(_container, onscroll);
166
+ on("change")(_scrollbar, onchange);
167
+ if (followResize) resizingList.set(followResize, _scrollbar.reshape);
168
+ }
161
169
  var _scrollbar = elem || document.createElement("scrollbar");
162
- _scrollbar.reshape = function () {
170
+ _scrollbar.reshape = lazy(function () {
163
171
  var _container = _scrollbar.target;
164
172
  var { Height, height } = getTargetHeight(_container);
165
173
  reshape.call(_scrollbar, Height, height);
166
- };
174
+ });
167
175
  _scrollbar.scrollTo = scrollTo;
168
176
  var _handler = document.createElement("scrollbar-thumb");
169
177
  _handler.className = "thumb";
@@ -192,16 +200,41 @@ var scrollbary = function () {
192
200
  }
193
201
  var scrollbar_y = scrollbary();
194
202
  var scrollbar_x = arriswise(scrollbary, arguments)();
195
- function main(direction) {
203
+ var isBody = function (elem) {
204
+ return hasClass(elem, 'body') || elem.hasAttribute('body');
205
+ }
206
+ function main(elem) {
207
+ var direction, bar, target;
208
+ if (typeof elem === 'string') {
209
+ direction = elem;
210
+ elem = null;
211
+ }
212
+ else if (isElement(elem)) {
213
+ direction = elem.tagName;
214
+ var $struct = elem.$struct;
215
+ if ($struct) {
216
+ if ($struct.props?.target);
217
+ else if (isBody(elem.previousElementSibling)) {
218
+ target = elem.previousElementSibling;
219
+ }
220
+ else if (isBody(elem.nextElementSibling)) {
221
+ target = elem.nextElementSibling;
222
+ }
223
+ }
224
+ else if (!/^(\w*\-?)?scroll/i.test(direction)) target = elem, elem = null;
225
+ }
226
+ else {
227
+ elem = null;
228
+ }
196
229
  var bar, target;
197
230
  if (isElement(direction)) {
198
231
  target = direction;
199
232
  direction = target.tagName;
200
233
  }
201
234
  if (/^[xh]/i.test(direction)) {
202
- bar = scrollbar_x();
235
+ bar = scrollbar_x(elem);
203
236
  } else {
204
- bar = scrollbar_y();
237
+ bar = scrollbar_y(elem);
205
238
  }
206
239
  if (target) bar.bindTarget(target);
207
240
  return bar;
@@ -1,12 +1,24 @@
1
1
  & {
2
2
  position: absolute;
3
3
  width: 6px;
4
- background-color: rgba(0, 0, 0, .1);
5
4
  border-radius: 7px;
6
5
  height: 100px;
7
6
  border-left: 3px solid transparent;
8
7
 
9
- &:hover {
8
+ &[x],
9
+ &.x {
10
+ left: 0;
11
+ bottom: 0;
12
+ }
13
+
14
+ &[y],
15
+ &.y {
16
+ top: 0;
17
+ right: 0;
18
+ }
19
+
20
+ &:hover,
21
+ &:active {
10
22
  >.thumb {
11
23
  opacity: 1 !important;
12
24
  overflow: visible;
@@ -1,4 +1,5 @@
1
1
  & {
2
+ background-color: rgba(0, 0, 0, .1);
2
3
  >div {
3
4
  @mask-color: #ccc;
4
5
  width: 200px;
@@ -219,10 +219,10 @@ function select(target, list, removeOnSelect, direction) {
219
219
  }
220
220
  else _remove();
221
221
  };
222
- if (!target.renders) {
223
- target.renders = [];
222
+ if (!target.$renders) {
223
+ target.$renders = [];
224
224
  }
225
- target.renders.push(setIcon);
225
+ target.$renders.push(setIcon);
226
226
  onclick(target, mousedown);
227
227
  return target;
228
228
  }
@@ -506,7 +506,7 @@ function table(elem) {
506
506
  },
507
507
  thead(t) {
508
508
  var tr = document.createElement('thead');
509
- tr.renders = [function () {
509
+ tr.$renders = [function () {
510
510
  resizeT(this.firstChild)
511
511
  }];
512
512
  css(tr, { display: 'block' });
@@ -1,14 +1,24 @@
1
1
  var encoding = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
2
- function toBase64(input) {
2
+ function toBase64(input, url) {
3
+ var encoding1 = encoding;
4
+ if (url) {
5
+ encoding1[62] = "-";
6
+ encoding1[63] = "_";
7
+ }
3
8
  for (var cx = 0, block, output = [], dx = input.length; cx < dx;) {
4
9
  block = input[cx++] << 16 | input[cx++] << 8 | input[cx++];
5
10
  output.push(
6
- encoding[block >> 18],
7
- encoding[block >> 12 & 0b111111],
8
- encoding[block >> 6 & 0b111111],
9
- encoding[block & 0b111111]
11
+ encoding1[block >> 18],
12
+ encoding1[block >> 12 & 0b111111],
13
+ encoding1[block >> 6 & 0b111111],
14
+ encoding1[block & 0b111111]
10
15
  );
11
16
  }
12
- for (cx = output.length + dx - cx, dx = output.length; cx < dx; cx++) output[cx] = '=';
17
+ if (url) {
18
+ encoding1[62] = "+";
19
+ encoding1[63] = "/";
20
+ while (cx-- > dx) output.pop();
21
+ }
22
+ else for (cx = output.length + dx - cx, dx = output.length; cx < dx; cx++) output[cx] = '=';
13
23
  return output.join("");
14
24
  }
@@ -120,22 +120,29 @@ var resize2 = function () {
120
120
  marginTop: fromOffset(-height)
121
121
  })
122
122
  }
123
+ if (body.scrollHeight + body.offsetTop > this.clientHeight) {
124
+ css(body, { height: fromOffset(this.clientHeight) });
125
+ }
126
+ else {
127
+ css(body, { height: '' });
128
+ }
123
129
  };
124
130
  function view(element) {
125
- var window = isNode(element) ? element : document.createElement("form");
131
+ var w = isNode(element) ? element : document.createElement("form");
126
132
  init();
127
- extend(window, prototype);
128
- if (window !== element) {
129
- extend(window, element);
130
- once("append")(window, function () {
131
- if (window.draggable !== true && window.draggable !== false) {
132
- window.draggable = /^(fixed|absolute)$/i.test(getComputedStyle(window).position);
133
+ extend(w, prototype);
134
+ if (w !== element) {
135
+ extend(w, element);
136
+ once("append")(w, function () {
137
+ if (w.draggable !== true && w.draggable !== false) {
138
+ w.draggable = /^(fixed|absolute)$/i.test(getComputedStyle(w).position);
133
139
  }
134
- if (window.draggable) window.setAttribute('draggable', 'draggable');
140
+ if (w.draggable) w.setAttribute('draggable', 'draggable');
135
141
  })
136
- if (window.resizable) resize.on(window);
142
+ if (w.resizable) resize.on(w);
137
143
  }
138
- on('resize')(window, resize2);
139
- onmounted(window, resize2);
140
- return window;
144
+ resizingList.set(w, resize2);
145
+ w.reshape = lazy(resize2);
146
+ onmounted(w, w.reshape);
147
+ return w;
141
148
  }
@@ -40,6 +40,10 @@ body>& {
40
40
  border-top: 6px solid #fff2;
41
41
  border-bottom: 6px solid #fff2;
42
42
 
43
+ +.scrollbar {
44
+ z-index: 3;
45
+ }
46
+
43
47
  &:not(:nth-last-child(1)) {
44
48
  padding-bottom: 42px;
45
49
  }
@@ -116,9 +120,6 @@ body>& {
116
120
  margin-top: -42px;
117
121
  }
118
122
 
119
- .button {
120
- vertical-align: middle;
121
- }
122
123
 
123
124
  >.foot,
124
125
  >[foot] {
@@ -126,6 +127,7 @@ body>& {
126
127
  min-width: 60px;
127
128
  padding: 0 20px;
128
129
  margin-left: 10px;
130
+ vertical-align: top;
129
131
  margin-bottom: 6px;
130
132
  }
131
133
 
package/docs/loader.js CHANGED
@@ -114,7 +114,7 @@ var build = function () {
114
114
  return;
115
115
  }
116
116
  if (isNode(comm)) {
117
- if (!comm.isMounted) appendChild(mainArea, comm);
117
+ if (!comm.$mounted) appendChild(mainArea, comm);
118
118
  }
119
119
  else mainArea.innerHTML = `<div>[Data Object]{\r\n${isObject(comm) ? Object.keys(comm).join("\r\n\t") : comm}</div>`
120
120
  appendChild(mainArea, logpad);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.4.14",
3
+ "version": "4.5.0",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {