efront 3.20.0 → 3.20.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.
@@ -178,7 +178,7 @@ body:active & {
178
178
 
179
179
  &.hover {
180
180
  text-shadow: none;
181
- color: #fff;
181
+ // color: #fff;
182
182
  }
183
183
 
184
184
  }
@@ -188,17 +188,17 @@ body:active & {
188
188
  line-height: 28px;
189
189
 
190
190
  &.open {
191
- color: #fff;
192
191
  background: #1e282c;
193
-
192
+
194
193
  & s:after {
195
194
  top: -9.2px;
196
195
  }
197
196
  }
198
-
197
+
199
198
  &.checked,
200
199
  &.actived,
201
200
  &.selected {
201
+ color: #fff;
202
202
  border-left-color: #3c8dbc;
203
203
  }
204
204
 
@@ -451,37 +451,25 @@ var directives = {
451
451
  oldValue = value;
452
452
  this.setValue(value);
453
453
  } : null;
454
+ var setter2 = function (key) {
455
+ var value = getter();
456
+ if (value === undefined) value = "";
457
+ if (deepEqual(oldValue, value)) return;
458
+ oldValue = value;
459
+ this[key] = value;
460
+ };
454
461
  if (/^input$/i.test(this.tagName) && /^checkbox$/i.test(this.type) || /^checkbox$/i.test(this.tagName)) {
455
- this.renders.push(setter || function () {
456
- var value = getter();
457
- if (value === undefined) value = "";
458
- if (deepEqual(oldValue, value)) return;
459
- oldValue = value;
460
- this.checked = value;
461
- });
462
+ this.renders.push(setter || setter2.bind(this, 'checked'));
462
463
  var change = new Function(`${search[0]}with(this.$scope)${search[1]}=${getstr || "this.checked"}`).bind(this);
463
464
  } else if (("value" in this || this.getValue instanceof Function) && this.setValue instanceof Function) {
464
- this.renders.push(setter || function () {
465
- var value = getter();
466
- if (value === undefined) value = "";
467
- if (deepEqual(oldValue, value)) return;
468
- oldValue = value;
469
- if ((this.getValue instanceof Function ? this.getValue() : this.value) !== value) this.setValue(value);
470
- });
465
+ this.renders.push(setter);
471
466
  var change = new Function(`${search[0]}with(this.$scope)${search[1]}=${getstr || "this.value"}`).bind(this);
472
467
  } else if (/^(select|input|textarea)$/i.test(this.tagName) || "value" in this) {
473
- this.renders.push(setter || function () {
474
- var value = getter();
475
- if (isEmpty(value)) value = "";
476
- if (deepEqual(oldValue, value)) return;
477
- oldValue = value;
478
- if (this.value !== value) this.value = value;
479
- });
468
+ this.renders.push(setter || setter2.bind(this, 'value'));
480
469
  var change = new Function(`${search[0]}with(this.$scope)${search[1]}=${getstr || "this.value"}`).bind(this);
481
470
  } else {
482
471
  this.renders.push(setter || function () {
483
472
  var value = getter();
484
-
485
473
  if (value === undefined) value = "";
486
474
  if (deepEqual(oldValue, value)) return;
487
475
  oldValue = value;
@@ -489,8 +477,18 @@ var directives = {
489
477
  });
490
478
  var change = new Function("html", `${search[0]}with(this.$scope)${search[1]}=${getstr || "'value' in this?this.value:html(this)"}`).bind(this, html);
491
479
  }
492
- var onchange = change;
493
- eventsHandlers.map(on => on(this, onchange));
480
+ setter2 = null;
481
+ var onchange = function () {
482
+ change.call(this);
483
+ var value = getter();
484
+ if (value === oldValue) {
485
+ return;
486
+ }
487
+ oldValue = value;
488
+ change.call(this, value);
489
+ userChanged = true;
490
+ };
491
+ eventsBinders.forEach(on => on(this, onchange, true));
494
492
  },
495
493
 
496
494
  "class"(search) {
@@ -869,8 +867,16 @@ function render(element, scope, parentScopes, lazy = true) {
869
867
  var digest = lazy(refresh, -{});
870
868
  render.digest = render.apply = render.refresh = digest;
871
869
  render.parseRepeat = parseRepeat;
872
- var eventsHandlers = "fullscreenchange,change,click,paste,resize,keydown,keypress,keyup,input,drop".split(",").map(k => on(k));
873
- eventsHandlers.map(on => on(window, digest));
870
+ var eventsBinders = "fullscreenchange,load,change,click,paste,resize,keydown,keypress,keyup,input,drop".split(",").map(k => on(k));
871
+ var userChanged = false;
872
+ eventsBinders.splice(0, 2).forEach(on => on(window, digest));
873
+ var changeListener = function () {
874
+ if (userChanged) {
875
+ userChanged = false;
876
+ digest();
877
+ }
878
+ };
879
+ eventsBinders.forEach(on => on(window, changeListener));
874
880
  on("render")(window, digest);
875
881
  var register = function (key, creater) {
876
882
  key = key.replace(/\-(\w)/, (_, a) => a.toUpperCase()).replace(/^\w/, a => a.toLowerCase());
@@ -124,11 +124,7 @@ var handle = {
124
124
  css(dragging.rect, style);
125
125
  move.call(rect, isFinite(style.left) ? style.left : rect.offsetLeft, isFinite(style.top) ? style.top : rect.offsetTop);
126
126
  dispatch(dragging.rect, 'resize');
127
- resizingList.forEach(a => {
128
- if (getTargetIn(dragging.rect, a)) {
129
- dispatch(a, 'resize');
130
- }
131
- });
127
+ resizingList.hit(rect);
132
128
  },
133
129
  end(e) {
134
130
  dragging = null;
@@ -151,14 +147,16 @@ resize.on = function (elem, dragHandle) {
151
147
  var computed = getComputedStyle(elem);
152
148
  var resizeh = function () {
153
149
  var elem = this;
150
+ var resized = false;
154
151
  if (elem.scrollWidth > elem.clientWidth) {
155
152
  css(elem, { width: elem.offsetWidth });
156
- dispatch(elem, 'resize');
153
+ resized = true;
157
154
  }
158
155
  if (elem.scrollHeight > elem.clientHeight) {
159
156
  css(elem, { height: elem.offsetHeight });
160
- dispatch(elem, 'resize');
157
+ resized = true;
161
158
  }
159
+ if (resized) dispatch(elem, 'resize'), resizingList.hit(elem);
162
160
  if (unbind && parseInt(computed.height) && parseInt(computed.width)) {
163
161
  unbind();
164
162
  unbind = null;
@@ -1,6 +1,24 @@
1
1
  onresize(window, function () {
2
- for (var cx = 0, dx = resizingList.length; cx < dx; cx++) {
3
- dispatch(resizingList[cx], 'resize');
2
+ for (var r of resizingList) {
3
+ dispatch(r, 'resize');
4
4
  }
5
5
  });
6
- var resizingList = [];
6
+ var mount = function () {
7
+ resizingList.push(this);
8
+ dispatch(this, 'resize');
9
+ };
10
+ var unmount = function () {
11
+ removeFromList(resizingList, this);
12
+ };
13
+ var resizingList = [];
14
+ resizingList.set = function (e) {
15
+ on('append')(e, mount);
16
+ on("remove")(e, unmount);
17
+ };
18
+ resizingList.hit = function (e) {
19
+ for (var a of this) {
20
+ if (getTargetIn(e, a)) {
21
+ dispatch(a, 'resize');
22
+ }
23
+ }
24
+ };
@@ -119,13 +119,25 @@ function select(target, list, removeOnSelect, direction) {
119
119
  }
120
120
  else if (target.$src) {
121
121
  var generator = getGenerator(target);
122
+ var optionsMap = {};
122
123
  var initList2 = function (src) {
124
+ src.forEach(s => {
125
+ optionsMap[s.key] = s;
126
+ });
123
127
  list = selectList(generator, src, !!target.multiple, !!target.editable);
124
128
  if (!target.multiple) {
125
129
  onclick(list, onlistclick);
126
130
  }
131
+ if (target.value) {
132
+ target.setValue(target.value);
133
+ }
127
134
  bindEvent();
128
135
  };
136
+ target.setValue = function (v) {
137
+ var s = optionsMap[v];
138
+ this.innerHTML = `<option selected value="${v}">${s ? s.name : ''}</option>`;
139
+ this.value = v;
140
+ };
129
141
  care(target, initList2);
130
142
  var initList = function () {
131
143
  };
@@ -1,31 +1,4 @@
1
- function getTreeFromArray(array) {
2
- var root = [];
3
- root.tab = -Infinity;
4
- root.count = 0;
5
- root.total = 0;
6
- var path = [root];
7
- for (var cx = 0, dx = array.length; cx < dx; cx++) {
8
- var arg = array[cx];
9
- var item = new Item(arg);
10
- item.root = root;
11
- for (var cy = path.length - 1; cy >= 0; cy--) {
12
- var parentElement = path[cy];
13
- if (parentElement.tab < arg.tab) {
14
- item.parent = parentElement;
15
- parentElement.push(item);
16
- path.splice(cy + 1, path.length - cy - 1, item);
17
- break;
18
- }
19
- parentElement.parent.count += parentElement.count || parentElement.length || 1;
20
- parentElement.parent.total += (parentElement.total || parentElement.length) + 1;
21
- }
22
- }
23
- while (path.length > 1) {
24
- var item = path.pop();
25
- path[path.length - 1].count += item.count || item.length || 1;
26
- }
27
- return root;
28
- }
1
+ var getTreeFromArray = Tree.fromArray;
29
2
  function buildCrack(com, set) {
30
3
  var count = com.length;
31
4
  for (var cx = 0, dx = com.length; cx < dx; cx++) {
@@ -54,55 +27,8 @@ function getCrackTarget(com) {
54
27
  return com.target;
55
28
  }
56
29
 
57
- function getArrayFromTree(root, skipClosed = true) {
58
- var path = [root], pathcx = [0];
59
- var result = [];
60
- var max_deep = 1;
61
- loop: while (pathcx.length) {
62
- var pathindex = pathcx.length - 1;
63
- var cx = pathcx[pathindex];
64
- var item = path[pathindex];
65
- if (cx >= item.length) {
66
- path.pop();
67
- pathcx.pop();
68
- continue loop;
69
- }
70
- var elem = item[cx];
71
- elem.parent = item;
72
- result.push(elem);
73
- pathcx[pathindex] = ++cx;
74
- if (!skipClosed || !elem.isClosed()) {
75
- if (elem.length) {
76
- path.push(elem);
77
- pathcx.push(0);
78
- if (pathcx.length > max_deep) {
79
- max_deep = pathcx.length;
80
- }
81
- }
82
- }
83
- }
84
- result.deep = max_deep;
85
- return result;
86
- }
87
- function appendTo(parent, datas) {
88
- var tab = parent && parent.tab + 1 || 1;
89
- var length = parent.length;
90
- datas.map(function (data) {
91
- if (isObject(data)) {
92
- data.tab = tab;
93
- var item = new Item(data);
94
- item.parent = parent;
95
- item.root = parent.root;
96
- parent.push(item);
97
- }
98
- });
99
-
100
- var delta = parent.length - length;
101
- while (parent) {
102
- parent.count += delta;
103
- parent = parent.parent;
104
- }
105
- }
30
+ var getArrayFromTree = Tree.toArray;
31
+ var appendTo = Tree.appendTo;
106
32
 
107
33
  function tree() {
108
34
  var element, generator;
@@ -294,14 +220,8 @@ function tree() {
294
220
 
295
221
 
296
222
  banner.setData = function (src) {
297
- if (isArray(src)) {
298
- if (src[0] && 'tab' in src[0]) {
299
- root = getTreeFromArray(src);
300
- } else {
301
- root = getTreeFromData(src);
302
- }
303
- refresh();
304
- }
223
+ root = new Tree(src);
224
+ refresh();
305
225
  };
306
226
  banner.addData = function (data, parent = root) {
307
227
  appendTo(parent, data);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.20.0",
3
+ "version": "3.20.3",
4
4
  "description": "一个开发工具,开放源代码,自带组件库和编译环境,可以用来开发web组件,web应用或nodejs模块,或做为已有代码的加密工具,也可以做为静态页面服务器或跨域中转服务器使用",
5
5
  "main": "public/efront.js",
6
6
  "directories": {