efront 3.20.8 → 3.20.13

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.
@@ -29,7 +29,12 @@ function isChildPath(relative, path) {
29
29
  }
30
30
 
31
31
  var getCrossUrl = function (domain, headers, encrypt) {
32
- if (notCross(domain, !!encrypt)) return domain;
32
+ if (notCross(domain, encrypt)) return domain;
33
+ var basehost = parseURL(base).host || parseURL(location_href).host;
34
+ if (parseURL(domain).host === basehost) {
35
+ if (!encrypt) return domain;
36
+ domain = domain.replace(domainReg, "/$3$4");
37
+ }
33
38
  var originDomain = getDomainPath(domain);
34
39
  var _cookies = getCookies(originDomain);
35
40
  var _headers = {};
@@ -102,7 +107,7 @@ function cross_(jsonp, digest = noop, method, url, headers) {
102
107
  };
103
108
  if (/^jsonp/i.test(method)) {
104
109
  var cb = method.split('\-')[1] || 'callback';
105
- setTimeout(function () {
110
+ Promise.resolve().then(function () {
106
111
  if (!isEmpty(jsondata) && isEmpty(datas)) {
107
112
  datas = serialize(jsondata);
108
113
  }
@@ -112,6 +117,7 @@ function cross_(jsonp, digest = noop, method, url, headers) {
112
117
  });
113
118
  var xhr = jsonp(url, {
114
119
  [cb](a) {
120
+ removeFromList(requests, this);
115
121
  onload({ status: 200, response: JSON.stringify(a), toString: toResponse });
116
122
  }
117
123
  });
@@ -280,9 +286,7 @@ function cross_(jsonp, digest = noop, method, url, headers) {
280
286
  else send.call(xhr);
281
287
  digest();
282
288
  };
283
-
284
- setTimeout(fire, 0);
285
-
289
+ Promise.resolve().then(fire);
286
290
  }
287
291
  var setRequestHeader = xhr.setRequestHeader;
288
292
  var realHeaders = Object.create(null);
@@ -335,7 +339,7 @@ function addDirect(a) {
335
339
  function notCross(domain, encrypt) {
336
340
  if (!location_href || !base || !/^https?\:\/\/|^s?\/\//.test(domain)) return true;
337
341
  if (location_href === domain.slice(0, location_href.length) ||
338
- domain.replace(domainReg, '$2') === base.replace(domainReg, '$2')) return !encrypt;
342
+ domain.replace(domainReg, '$2') === base.replace(domainReg, '$2') || /^\/[^\/]/.test(domain)) return !encrypt;
339
343
  for (var cx = 0, dx = cors_hosts.length; cx < dx; cx++) {
340
344
  var host = cors_hosts[cx];
341
345
  if (host instanceof RegExp) {
@@ -2,7 +2,7 @@
2
2
  // 2.如果time小于0,传入的函数会立即执行,并忽略-time内的连续调用,time时间后触发最后一次调用
3
3
  // 如果time传false或0 使用requestAnimationFrame代替setTimeout按第1步执行
4
4
  // 如果time传null或undefined或NaN使用requestAnimationFrame代替setTimeout按第2步执行
5
- function lazy(run, time = false) {
5
+ function lazy(run, time) {
6
6
  var wait = +time ? setTimeout : requestAnimationFrame;
7
7
  var ing, args, that;
8
8
  var hire = function () {
@@ -49,11 +49,14 @@ function lazy(run, time = false) {
49
49
  if (time >= 0) {
50
50
  ing = wait(fire, +time);
51
51
  }
52
- else {
52
+ else if (time < 0) {
53
53
  ing = run.apply(that, args);
54
54
  if (ing instanceof Promise) ing.then(hire, hire);
55
55
  else ing = wait(fire, -time);
56
56
  }
57
+ else {
58
+ ing = true; wait(fire);
59
+ }
57
60
  };
58
61
  }
59
62
  module.exports = lazy;
@@ -0,0 +1,20 @@
1
+ function autofocus(e) {
2
+ if (!e.renders) e.renders = [];
3
+ var savedElement;
4
+ e.renders.push(function () {
5
+ var parent = rootElements[rootElements.length - 1] || document.body;
6
+ if (savedElement === parent) {
7
+ if (this !== parent || getTargetIn(parent, document.activeElement)) return;
8
+ }
9
+ savedElement = parent;
10
+ if (/^(input|textarea)$/i.test(this.tagName) || /^true$/.test(this.contentEditable)) {
11
+ if (getTargetIn(parent, this)) {
12
+ this.focus();
13
+ }
14
+ }
15
+ else if (parent === this) {
16
+ var e = this.querySelector("input,textarea,[contenteditable]");
17
+ if (e) e.focus();
18
+ }
19
+ });
20
+ }
@@ -5,12 +5,11 @@ function bind(eventName, bindTo = window) {
5
5
  if (off) off();
6
6
  off = on(eventName).call(bindTo, target, eventListener);
7
7
  };
8
- if (isMounted(target)) mount();
9
- var off1 = on("append")(target, mount);
8
+ var off1 = onmounted(target, mount);
10
9
  var off2 = on("remove")(target, function () {
11
10
  if (off) off();
12
11
  off = null;
13
12
  });
14
- return function () { off1(); off2(); };
13
+ return function () { off1(); off2(); if (off) off(); };
15
14
  }
16
15
  }
@@ -17,9 +17,9 @@ if (cookiesData) {
17
17
  }
18
18
  }
19
19
 
20
- var digest = lazy(function () {
20
+ var digest = function () {
21
21
  dispatch('render', window);
22
- }, 0);
22
+ };
23
23
 
24
24
  var cross = cross_.bind(function (callback, onerror) {
25
25
  var xhr = new XMLHttpRequest;
@@ -9,5 +9,5 @@ function onmounted(target, handle) {
9
9
  if (isMounted(target)) {
10
10
  handle.call(target);
11
11
  }
12
- on("mounted")(target, handle);
12
+ return on("mounted")(target, handle);
13
13
  }
@@ -99,8 +99,7 @@ var popup_path = function (path = "", parameters, target) {
99
99
  element.$reload = fullfill;
100
100
  if (!target && target !== false && parameters !== false) {
101
101
  element.style.opacity = 0;
102
- if (element.parentNode) move.bindPosition(element, [.5, .5]), element.style.opacity = 1;
103
- else once('append')(element, function () {
102
+ oncemount(element, function () {
104
103
  move.bindPosition(element, [.5, .5]);
105
104
  element.style.opacity = 1;
106
105
  });
@@ -573,6 +573,7 @@ var createEmiter = function (on) {
573
573
  getter1 = createGetter(search, false);
574
574
  }
575
575
  on(key)(this, function (e) {
576
+ digest();
576
577
  if (parsedSrc) {
577
578
  var target = e.currentTarget || e.target;
578
579
  var scopes = target && target.$parentScopes;
@@ -601,7 +602,6 @@ var createEmiter = function (on) {
601
602
  res = getter0.call(this, e);
602
603
  }
603
604
  if (res && isFunction(res.then)) res.then(digest, digest);
604
- digest();
605
605
  return res;
606
606
  });
607
607
  };
@@ -135,39 +135,36 @@ function resize(elem, initialEvent) {
135
135
  }
136
136
  moveupon(window, handle);
137
137
 
138
+ var offmousemove;
139
+ var resizeh = lazy(function () {
140
+ // 用于刷新自定义的scrollbar/lattice/gallery组件
141
+ var elem = this;
142
+ var resized = false;
143
+ if (elem.scrollWidth > elem.clientWidth) {
144
+ css(elem, { width: elem.offsetWidth });
145
+ resized = true;
146
+ }
147
+ if (elem.scrollHeight > elem.clientHeight) {
148
+ css(elem, { height: elem.offsetHeight });
149
+ resized = true;
150
+ }
151
+ if (resized) dispatch(elem, 'resize'), resizingList.hit(elem);
152
+ });
138
153
 
139
154
  resize.on = function (elem, dragHandle) {
140
155
  if (elem) {
141
156
  elem.dragHandle = dragHandle;
142
157
  }
143
158
  onmounted(elem, function () {
144
- var off = onmousemove(window, getResizer);
145
- onremove(elem, off);
146
- });
147
- var computed = getComputedStyle(elem);
148
- var resizeh = function () {
149
- var elem = this;
150
- var resized = false;
151
- if (elem.scrollWidth > elem.clientWidth) {
152
- css(elem, { width: elem.offsetWidth });
153
- resized = true;
159
+ if (!offmousemove) offmousemove = onmousemove(window, getResizer);
160
+ if (!~resizingElements.indexOf(elem)) {
161
+ resizingElements.push(elem);
154
162
  }
155
- if (elem.scrollHeight > elem.clientHeight) {
156
- css(elem, { height: elem.offsetHeight });
157
- resized = true;
158
- }
159
- if (resized) dispatch(elem, 'resize'), resizingList.hit(elem);
160
- if (unbind && parseInt(computed.height) && parseInt(computed.width)) {
161
- unbind();
162
- unbind = null;
163
- };
164
- }
165
- if (!parseInt(computed.height) || !parseInt(computed.width)) var unbind = bind('render')(elem, resizeh);
166
- if (!~resizingElements.indexOf(elem)) {
167
- resizingElements.push(elem);
168
- once('remove')(elem, function () {
169
- var index = resizingElements.indexOf(this);
170
- if (~index) resizingElements.splice(index, 1);
171
- });
172
- }
163
+ bind('render')(elem, resizeh);
164
+ });
165
+ on('remove')(elem, function () {
166
+ var index = resizingElements.indexOf(this);
167
+ if (~index) resizingElements.splice(index, 1);
168
+ if (!resizingElements.length && offmousemove) offmousemove(), offmousemove = null;
169
+ });
173
170
  };
@@ -67,7 +67,7 @@ function script(url, judger) {
67
67
  return promise.catch(f);
68
68
  };
69
69
  script.src = url;
70
- setTimeout(function () {
70
+ Promise.resolve().then(function () {
71
71
  if (!script.parentNode) {
72
72
  if (judger) {
73
73
  var res = seek(window, judger);
@@ -144,8 +144,8 @@ var scrollbary = function () {
144
144
  function bindTarget(_container, followResize = _container) {
145
145
  var _scrollbar = this;
146
146
  _container.with = _scrollbar;
147
- onappend(_container, _scrollbar.reshape);
148
147
  _scrollbar.target = _container;
148
+ onmounted(_container, _scrollbar.reshape);
149
149
  on("scroll")(_container, function () {
150
150
  var top = getTargetTop(_container);
151
151
  _scrollbar.scrollTo(top);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "3.20.8",
3
+ "version": "3.20.13",
4
4
  "description": "一个开发工具,开放源代码,自带组件库和编译环境,可以用来开发web组件,web应用或nodejs模块,或做为已有代码的加密工具,也可以做为静态页面服务器或跨域中转服务器使用",
5
5
  "main": "public/efront.js",
6
6
  "directories": {