efront 4.11.1 → 4.11.2

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.
@@ -190,7 +190,14 @@ class Program {
190
190
  var rowsOf = m => m.replace(/[^\r\n\u2028\u2029]+/g, ';').replace(/\r\n|\r|\n|\u2028|\u2029/g, ' ').replace(/;/g, '').length;
191
191
  var setRows = m => {
192
192
  row += rowsOf(m);
193
- colstart = start + m.length - m.replace(/^[\s\S]*?([^\r\n\u2028\u2029]*)$/, '$1').length - 1;
193
+ var reg = /[\r\n\u2028\u2029]/g;
194
+ reg.lastIndex = 0;
195
+ var index = 0;
196
+ do {
197
+ index = reg.lastIndex;
198
+ var match = reg.exec(m);
199
+ } while (match);
200
+ colstart = start + index;
194
201
  };
195
202
  var queue_push = (scope) => {
196
203
  if (scope.type & (SPACE | COMMENT | PIECE | QUOTED)) {
@@ -904,7 +911,7 @@ class Program {
904
911
  if (p.tag) p.type = ELEMENT;
905
912
  queue_push(p);
906
913
  }
907
- };
914
+ }
908
915
  if (cache_stamp) push_stamp();
909
916
  this.lastIndex = index;
910
917
  if (queue !== origin) {
@@ -198,29 +198,35 @@ macros.escape = function (a) {
198
198
  macros.e = function (a) {
199
199
  return strings.decode(a);
200
200
  };
201
- var wrapColor = function (f) {
202
- return function (c) {
201
+ var wrapColor = function (k) {
202
+ var f = color[k];
203
+ macros[k] = function (c) {
203
204
  if (color.isColor(c)) return f(...arguments);
204
- return f;
205
- }
206
- }
205
+ return `${k}(${Array.apply(null, arguments).join(',')})`;
206
+ };
207
+ };
208
+
209
+ [
210
+ "saturate",
211
+ "desaturate",
212
+ "lighten",
213
+ "darken",
214
+ "fadein",
215
+ "fadeout",
216
+ "fade",
217
+ "spin",
218
+ "mix",
219
+ "tint",
220
+ "shade",
221
+ "grayscale",
222
+ "grayluma",
223
+ "fade"
224
+ ].forEach(wrapColor);
225
+
207
226
  macros[""] = function (a) {
208
227
  return a;
209
228
  };
210
- macros.saturate = wrapColor(color.strurate);
211
- macros.desaturate = wrapColor(color.desaturate);
212
- macros.lighten = wrapColor(color.lighten);
213
- macros.darken = wrapColor(color.darken);
214
- macros.fadein = wrapColor(color.fadein);
215
- macros.fadeout = wrapColor(color.fadeout);
216
- macros.fade = wrapColor(color.fade);
217
- macros.spin = wrapColor(color.spin);
218
- macros.mix = wrapColor(color.mix);
219
- macros.tint = wrapColor(color.tint);
220
- macros.shade = wrapColor(color.shade);
221
- macros.grayscale = wrapColor(color.grayscale);
222
- macros.grayluma = wrapColor(color.grayluma);
223
- macros.fade = wrapColor(color.fade);
229
+
224
230
  macros.each = function (list, body) {
225
231
  var match = /^(?:\s*[#\.]?\(([\s\S]*?)\))?\s*\{([\s\S]*)\}$/.exec(body);
226
232
  if (!match) throw new Error(i18n`each参数异常!`);
@@ -74,6 +74,7 @@ assert(素馨(`@media screen{&.a{b:1}}`, 'a'), `@media screen{a.a{b:1;}}`);
74
74
  assert(素馨(`@media screen and(max-width:100px){&.a{b:1}}`, 'a'), `@media screen and (max-width:100px){a.a{b:1;}}`);
75
75
  assert(素馨(`b{:not([resizing], [dragging]) {transition: padding .2s, margin .2s;}}`), `b :not([resizing], [dragging]){transition:padding .2s, margin .2s;}`);
76
76
  assert(素馨(`@a(@b){a@b{@w:@b/2;c:@w;}} @a(1); @a(2); @a(3)`), `a1{c:0.5;}\r\na2{c:1;}\r\na3{c:1.5;}`);
77
+ assert(素馨(`a{filter:grayscale(.9)}`), `a{filter:grayscale(.9);}`);
77
78
  assert(scanner2(`-0.2em .3em -0.2em 0`, new 素馨.素心)[0].text, '-0.2em');
78
79
  assert(scanner2(`-0.2em .3em -0.2em 0`, new 素馨.素心)[0].isdigit, true);
79
80
  assert(scanner2(`-0.2em .3em -0.2em 0`, new 素馨.素心)[2].text, ".3em");
@@ -294,6 +294,7 @@
294
294
  codesupports.cjs = codesupports.mjs = codesupports.jsx = codesupports.js = codesupports.javascript;
295
295
  codesupports.tsx = codesupports.ts = codesupports.typescript;
296
296
  codesupports.xht = codesupports.jsp = codesupports.asp = codesupports.php = codesupports.xml = codesupports.html;
297
+ codesupports.vue = codesupports.xht;
297
298
  var { SCOPED, QUOTED, SPACE, STAMP, STRAP, EXPRESS, PROPERTY } = compile$common;
298
299
  var patchBlink = function (code, index, blink) {
299
300
  for (var cx = 0, dx = code.length; cx < dx; cx++) {
@@ -182,7 +182,7 @@ function chat(title = '会话窗口') {
182
182
  var fid = 0;
183
183
  var filesMap = Object.create(null);
184
184
  renderWithDefaults(page, {
185
- chat: list,
185
+ chat: zimoli$list,
186
186
  title,
187
187
  msglist: [],
188
188
  showList: 0,
package/coms/kugou/api.js CHANGED
@@ -46,7 +46,7 @@
46
46
  "download-krc;accesskey&id": "get:content download?ver=1&client=pc&fmt=krc&charset=utf8"
47
47
  },
48
48
  "https://music.91q.com/": {// 千千静听/百度音乐
49
- "search-qqjt;word": "get:data.typeTrack v1/search#songname=title&singername=artist<、>.name&avatar=pic&priced=isVip",
49
+ "search-qqjt?word": "get:data.typeTrack v1/search#songname=title&singername=artist<、>.name&avatar=pic&priced=isVip",
50
50
  "qqjt-url?TSID": "get:data v1/song/tracklink#url=path"
51
51
  }
52
52
  })
@@ -67,15 +67,18 @@ on("keydown")(window, function (event) {
67
67
  if (!$scope.audio && !kugou$musicList.getActived()) return;
68
68
  switch (event.keyCode || event.which) {
69
69
  case 32:
70
+ case 179:
70
71
  if (event.repeat) break;
71
72
  if ($scope.playing) $scope.pause();
72
73
  else $scope.play();
73
74
  break;
74
75
  case 37:
76
+ case 177:
75
77
  // left
76
78
  $scope.play($scope.index - 1);
77
79
  break;
78
80
  case 39:
81
+ case 176:
79
82
  $scope.play($scope.index + 1);
80
83
  // right
81
84
  break;
@@ -1,25 +1,28 @@
1
+ var classToMap = function (className) {
2
+ if (isString(className)) className = className.trim().split(/\s+/);
3
+ if (isArray(className)) {
4
+ var classMap = Object.create(null);
5
+ for (var c of className) {
6
+ if (isString(c)) classMap[c] = true;
7
+ else Object.assign(classMap, classToMap(c));
8
+ }
9
+ return classMap;
10
+ }
11
+ else if (isObject(className)) return className;
12
+ return Object.create(null);
13
+ };
1
14
  function addClass(target, classNames) {
2
15
  var _className = target.className;
3
16
  var arr = String(_className || "").trim().split(/\s+/);
4
- var cls = {};
17
+ var cls = Object.create(null);
5
18
  for (var cx = 0, dx = arr.length; cx < dx; cx++) {
6
19
  var c = arr[cx];
7
20
  if (c) cls[c] = true;
8
21
  }
9
- if (isString(classNames)) {
10
- var clsNames = classNames.trim().split(/\s+/);
11
- for (var cx = 0, dx = clsNames.length; cx < dx; cx++) {
12
- var c = clsNames[cx];
13
- if (c) cls[c] = true;
14
- }
15
- } else {
16
- merge(cls, classNames);
17
- }
22
+ classNames = classToMap(classNames);
23
+ Object.assign(cls, classNames);
18
24
  var newarr = [];
19
- for (var k in cls) {
20
- if (k && cls[k]) {
21
- newarr.push(k);
22
- }
23
- }
25
+ for (var k in cls) if (k && cls[k]) newarr.push(k);
24
26
  target.className = newarr.join(" ");
25
- }
27
+ }
28
+ addClass.classToMap = classToMap;
@@ -109,6 +109,16 @@ var cssTargetNode = function (targetNode, oStyle, oValue) {
109
109
  }
110
110
  }
111
111
  };
112
+ var styleToMap = function (style) {
113
+ if (isString(style)) return parseKV(style, ';', ':');
114
+ if (isObject(style)) return style;
115
+ if (isArray(style)) {
116
+ var styleMap = Object.create(null);
117
+ for (var s of style) extend(styleMap, styleToMap(s));
118
+ return styleMap;
119
+ }
120
+ return Object.create(null);
121
+ }
112
122
  /**
113
123
  * 将样式绑定到选择器
114
124
  * @param {string} targetSelector
@@ -185,4 +195,5 @@ var css = function (target, oStyle, oValue) {
185
195
  };
186
196
  css.transformCssKey = transformCssKey;
187
197
  css.transformNodeKey = transformNodeKey;
188
- css.transformValue = transformValue;
198
+ css.transformValue = transformValue;
199
+ css.styleToMap = styleToMap;
@@ -11,18 +11,7 @@ var cloneChildNodes = function (template) {
11
11
  }
12
12
  return cNodes;
13
13
  }
14
- var merge = function (dst, src) {
15
- if (!src) return dst;
16
- if (!dst) return src;
17
- if (dst instanceof Array) {
18
- return dst.concat(src);
19
- }
20
- if (isObject(dst)) return Object.assign(dst, src);
21
- return src;
22
- };
23
- var mergeStruct = function (struct1, struct2) {
24
- for (var k in struct2) struct1[k] = merge(struct1[k], struct2[k]);
25
- }
14
+
26
15
  /**
27
16
  * @param {Element} container
28
17
  * @param {Element|string} tagName;
@@ -67,8 +56,7 @@ var getGenerator = function (container, tagName = 'item') {
67
56
  if (tagTemplate) {
68
57
  render.struct(tagName);
69
58
  var template0 = templates[0];
70
- mergeStruct(tagName.$struct, template0.$struct);
71
- template0.$struct = tagName.$struct;
59
+ template0.$struct = render.mergeStruct(tagName.$struct, template0.$struct);
72
60
  template0.$renderid = tagName.$renderid;
73
61
  }
74
62
  if (templates.length) container.$template = template;
@@ -94,8 +82,13 @@ var getGenerator = function (container, tagName = 'item') {
94
82
  }
95
83
  var scopes = container.$generatorScopes;
96
84
  var parsedSrc = container.$src;
85
+ var wraped = undefined;
86
+ if (com instanceof Item) {
87
+ wraped = com;
88
+ com = com.value;
89
+ }
97
90
  if (parsedSrc) {
98
- var newScope = parsedSrc.createScope(com, index, index);
91
+ var newScope = parsedSrc.createScope(com, index, index, wraped);
99
92
  } else {
100
93
  var newScope = container.src[index];
101
94
  if (!isObject(newScope)) newScope = {
@@ -115,6 +108,7 @@ var getGenerator = function (container, tagName = 'item') {
115
108
  return this.$item;
116
109
  }
117
110
  }
111
+ if (wraped) newScope.$wraped = wraped;
118
112
  }
119
113
  element.$scope = newScope;
120
114
  element.$parentScopes = scopes;
@@ -123,7 +123,8 @@ function main() {
123
123
  var main = this;
124
124
  if (direction == 'y') page.ispop = true;
125
125
  var istoolbar = direction === 't';
126
- function popMenu(item, target) {
126
+ function popMenu(target) {
127
+ var item = getMenu(target);
127
128
  if (page.actived) {
128
129
  clear();
129
130
  page.focus();
@@ -173,7 +174,7 @@ function main() {
173
174
  enterMenuEnabled = false;
174
175
  if (page.ispop) {
175
176
  page.setFocus(menu);
176
- popMenu(menu.menu, menu);
177
+ popMenu(menu);
177
178
  }
178
179
  }, 60);
179
180
  on('pointerdown')(page, unblur);
@@ -181,34 +182,36 @@ function main() {
181
182
  document.activeElement.blur();
182
183
  };
183
184
  var activeMenu = function () {
184
- if (this.menu.line) return;
185
+ const thismenu = getMenu(this);
186
+ if (thismenu.line) return;
185
187
  if (this.hasAttribute("disabled") || this.hasAttribute('line')) return;
186
- var pop = active(this.menu.value, this);
188
+ var pop = active(thismenu.value, this);
187
189
  if (pop === false) return;
188
190
  var root = page.root || page;
189
191
  var istool = root.direction === 't' || root.selected
190
192
  if (root.ispop === 1) root.ispop = false;
191
193
  if (istool) {
192
- var menu = this.menu;
194
+ var menu = thismenu;
193
195
  if (root.selected) root.selected.setActive(false);
194
196
  if (root !== page) {
195
197
  var target = root.actived.target;
196
198
  if (isObject(menu.value)) delete menu.value.children;
197
- target.menu.extends(menu.value);
198
- menu = target.menu;
199
+ var targetmenu = getMenu(target);
200
+ targetmenu.extends(menu.value);
201
+ menu = targetmenu;
199
202
  }
200
203
  else {
201
204
  target = this;
202
205
  }
203
206
  menu.setActive(true);
204
- root.selected = target.menu;
207
+ root.selected = getMenu(target);
205
208
  autoremove();
206
209
  return;
207
210
  }
208
211
  if (page.actived && page.actived.target === this) {
209
212
  if (mounted_menus.indexOf(page.actived) >= 0) while (mounted_menus.length && mounted_menus[mounted_menus.length - 1] !== page.actived) remove(mounted_menus.pop());
210
213
  if (!mounted_menus.length || page === mounted_menus[mounted_menus.length - 1]) {
211
- popMenu(this.menu, this, false);
214
+ popMenu(this, false);
212
215
  }
213
216
  else {
214
217
  remove(mounted_menus.pop());
@@ -218,7 +221,7 @@ function main() {
218
221
  else {
219
222
  while (mounted_menus.length && mounted_menus[mounted_menus.length - 1] !== page) remove(mounted_menus.pop());
220
223
  page.actived = null;
221
- popMenu(this.menu, this, false);
224
+ popMenu(this, false);
222
225
  if (!page.actived) {
223
226
  autoremove();
224
227
  }
@@ -226,7 +229,7 @@ function main() {
226
229
  };
227
230
  var pressMenu = function (event) {
228
231
  if (event.which === 3) {
229
- popMenu(this.menu, this);
232
+ popMenu(this);
230
233
  }
231
234
  else {
232
235
  switchMenu.done = false;
@@ -241,7 +244,7 @@ function main() {
241
244
 
242
245
  var switchMenu = lazy(function (event) {
243
246
  if (onclick.preventClick) return;
244
- popMenu(this.menu, this);
247
+ popMenu(this);
245
248
  switchMenu.done = true;
246
249
  }, 300);
247
250
  var hasIcon = function () {
@@ -255,11 +258,10 @@ function main() {
255
258
  };
256
259
  var $scope = {
257
260
  "menu-item"(e, s) {
258
- if (e && s === e.$scope) s = itemName ? s[itemName] : s.menu;
261
+ if (e && s === e.$scope) s = itemName ? s[itemName] : s.$item.value;
259
262
  var a = button(
260
263
  menuItem(e, s, this.hasIcon)
261
264
  );
262
- a.menu = s;
263
265
  return a;
264
266
  },
265
267
  hasIcon: hasIcon(),
@@ -270,9 +272,9 @@ function main() {
270
272
  if (!page.$src) page.$src = render.parseRepeat("m in menus");
271
273
  var src = page.$src;
272
274
  var itemName = src.itemName;
273
- var className = `{'has-children':${itemName}.children&&${itemName}.children.length,
274
- 'warn':${itemName}.warn,
275
- actived:${itemName}.isActived()
275
+ var className = `{'has-children':$item.children&&$item.children.length,
276
+ warn:$item.warn,
277
+ actived:$item.isActived()
276
278
  }`;
277
279
  var notHidden = `!${itemName}.hidden`;
278
280
  var ItemTemplate = document.createElement('menu-item');
@@ -281,7 +283,6 @@ function main() {
281
283
  else ItemTemplate.setAttribute("on-mouseenter", `enterMenu(this)`);
282
284
  ItemTemplate.setAttribute("e-class", className);
283
285
  if (src.itemName) ItemTemplate.setAttribute("e-if", notHidden);
284
- ItemTemplate.setAttribute("_menu", src.itemName);
285
286
  ItemTemplate.innerHTML = menuItem.template;
286
287
  var generator = getGenerator(page, ItemTemplate);
287
288
  page.$generatorScopes.push($scope);
@@ -299,11 +300,15 @@ function main() {
299
300
  page.$renders.unshift(function () {
300
301
  this.$scope.hasIcon = hasIcon();
301
302
  });
303
+ var getMenu = function (a) {
304
+ return a.$scope.$item;
305
+ }
302
306
  page.open = function (a) {
303
- if (!a.menu || !a.menu.length) {
307
+ var amenu = getMenu(a);
308
+ if (!amenu || !amenu.length) {
304
309
  return;
305
310
  }
306
- var m = popMenu(a.menu, a);
311
+ var m = popMenu(a);
307
312
  m.moveFocus("home");
308
313
  };
309
314
  page.active = function (a) {
@@ -314,8 +319,9 @@ function main() {
314
319
  if (page.selected) page.selected.setActive(false);
315
320
  var selected = null;
316
321
  for (var e of this.children) {
317
- if (!e.menu) continue;
318
- selected = e.menu.pathTo(event.value);
322
+ var emenu = getMenu(e);
323
+ if (!emenu) continue;
324
+ selected = emenu.pathTo(event.value);
319
325
  if (selected) break;
320
326
  }
321
327
  if (!selected) return;
@@ -326,7 +332,7 @@ function main() {
326
332
  });
327
333
  on("focused")(page, function () {
328
334
  var focused = page.focused;
329
- if (page.ispop && !page.parent) popMenu(focused.menu, focused, false);
335
+ if (page.ispop && !page.parent) popMenu(focused, false);
330
336
  });
331
337
  page.openFocus = openFocus;
332
338
  page.closeFocus = closeFocus;
package/coms/zimoli/on.js CHANGED
@@ -118,6 +118,14 @@ var keyCodeMap = {
118
118
  num: 144,
119
119
  numlock: 144,
120
120
  scrolllock: 145,
121
+ mute: 173,// 静音
122
+ volumedown: 174,// 音量减
123
+ quiet: 174,// 音量减
124
+ volumeup: 175,// 音量加
125
+ loud: 175,// 音量加
126
+ next: 176,// 下一首
127
+ prev: 177,// 上一首
128
+ pause: 179,// 暂停/播放
121
129
  semicolon: 186,
122
130
  ";": 186,
123
131
  ":": 186,
@@ -6,12 +6,10 @@ function removeClass(target, classNames) {
6
6
  var c = arr[cx];
7
7
  cls[c] = true;
8
8
  }
9
- if (isString(classNames)) {
10
- var clsNames = classNames.trim().split(/\s+/);
11
- for (var cx = 0, dx = clsNames.length; cx < dx; cx++) {
12
- var c = clsNames[cx];
13
- delete cls[c];
14
- }
9
+ if (isString(classNames)) classNames = classNames.trim().split(/\s+/);
10
+ if (isArray(classNames)) for (var cx = 0, dx = classNames.length; cx < dx; cx++) {
11
+ var c = classNames[cx];
12
+ delete cls[c];
15
13
  }
16
14
  var newarr = [];
17
15
  for (var k in cls) {