@wiajs/core 0.1.19 → 1.0.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.
@@ -1,2257 +0,0 @@
1
- /*!
2
- * wia core v0.1.16
3
- * (c) 2021 Sibyl Yu
4
- * @license MIT
5
- */
6
- 'use strict';
7
-
8
- Object.defineProperty(exports, '__esModule', { value: true });
9
-
10
- /**
11
- * promise version ajax get、post
12
- * return Promise objext.
13
- * get move to base.js
14
- */
15
- var Ajax = /*#__PURE__*/function () {
16
- function Ajax() {}
17
-
18
- var _proto = Ajax.prototype;
19
-
20
- _proto.post = function post(url, data) {
21
- var pm = new Promise(function (res, rej) {
22
- var xhr = $.getXhr();
23
-
24
- xhr.onreadystatechange = function () {
25
- if (xhr.readyState === 4) {
26
- if (xhr.status === 200) res(xhr.responseText);else rej(new Error(xhr.statusText), xhr.responseText);
27
- }
28
- /*
29
- if ((xhr.readyState === 4) && (xhr.status === 200)) {
30
- cb(xhr.responseText);
31
- }
32
- */
33
-
34
- }; // 异步 post,回调通知
35
-
36
-
37
- xhr.open('POST', url, true);
38
- var param = data;
39
- if (typeof data === 'object') param = objToParam(data); // 发送 FormData 数据, 会自动设置为 multipart/form-data
40
-
41
- xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=AaB03x');
42
- // alert(param);
43
-
44
- xhr.send(param);
45
- });
46
- return pm;
47
- }
48
- /**
49
- * xmlHttpRequest POST 方法
50
- * 发送 FormData 数据, 会自动设置为 multipart/form-data
51
- * 其他数据,应该是 application/x-www-form-urlencoded
52
- * @param url post的url地址
53
- * @param data 要post的数据
54
- * @param cb 回调
55
- */
56
- ;
57
-
58
- _proto.postForm = function postForm(url, data) {
59
- var pm = new Promise(function (res, rej) {
60
- var xhr = $.getXhr();
61
-
62
- xhr.onreadystatechange = function () {
63
- if (xhr.readyState === 4) {
64
- if (xhr.status === 200) res(null, xhr.responseText);else rej(new Error(xhr.status), xhr.responseText);
65
- }
66
- }; // 异步 post,回调通知
67
-
68
-
69
- xhr.open('POST', url, true); // 发送 FormData 数据, 会自动设置为 multipart/form-data
70
- // xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
71
- // xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=AaB03x');
72
-
73
- xhr.send(data);
74
- });
75
- return pm;
76
- };
77
-
78
- _proto.get = function get(url, param) {
79
- return $.get(url, param);
80
- };
81
-
82
- return Ajax;
83
- }();
84
-
85
- function objToParam(obj) {
86
- var rs = '';
87
- var arr = [];
88
-
89
- for (var k in obj) {
90
- if (obj.hasOwnProperty(k)) {
91
- arr.push(k + "=" + obj[k]);
92
- } // rs += `${k}=${obj[k]}&`;
93
-
94
- } // 排序
95
-
96
-
97
- rs = arr.sort().join('&'); // alert(rs);
98
-
99
- return rs;
100
- }
101
-
102
- function _defineProperties(target, props) {
103
- for (var i = 0; i < props.length; i++) {
104
- var descriptor = props[i];
105
- descriptor.enumerable = descriptor.enumerable || false;
106
- descriptor.configurable = true;
107
- if ("value" in descriptor) descriptor.writable = true;
108
- Object.defineProperty(target, descriptor.key, descriptor);
109
- }
110
- }
111
-
112
- function _createClass(Constructor, protoProps, staticProps) {
113
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
114
- if (staticProps) _defineProperties(Constructor, staticProps);
115
- return Constructor;
116
- }
117
-
118
- function _inheritsLoose(subClass, superClass) {
119
- subClass.prototype = Object.create(superClass.prototype);
120
- subClass.prototype.constructor = subClass;
121
-
122
- _setPrototypeOf(subClass, superClass);
123
- }
124
-
125
- function _setPrototypeOf(o, p) {
126
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
127
- o.__proto__ = p;
128
- return o;
129
- };
130
-
131
- return _setPrototypeOf(o, p);
132
- }
133
-
134
- function _isNativeReflectConstruct() {
135
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
136
- if (Reflect.construct.sham) return false;
137
- if (typeof Proxy === "function") return true;
138
-
139
- try {
140
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
141
- return true;
142
- } catch (e) {
143
- return false;
144
- }
145
- }
146
-
147
- function _construct(Parent, args, Class) {
148
- if (_isNativeReflectConstruct()) {
149
- _construct = Reflect.construct;
150
- } else {
151
- _construct = function _construct(Parent, args, Class) {
152
- var a = [null];
153
- a.push.apply(a, args);
154
- var Constructor = Function.bind.apply(Parent, a);
155
- var instance = new Constructor();
156
- if (Class) _setPrototypeOf(instance, Class.prototype);
157
- return instance;
158
- };
159
- }
160
-
161
- return _construct.apply(null, arguments);
162
- }
163
-
164
- function _assertThisInitialized(self) {
165
- if (self === void 0) {
166
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
167
- }
168
-
169
- return self;
170
- }
171
-
172
- /* eslint no-control-regex: "off" */
173
- var _uniqueNumber = 1;
174
- var Utils = {
175
- uniqueNumber: function uniqueNumber() {
176
- _uniqueNumber += 1;
177
- return _uniqueNumber;
178
- },
179
- id: function id(mask, map) {
180
- if (mask === void 0) {
181
- mask = 'xxxxxxxxxx';
182
- }
183
-
184
- if (map === void 0) {
185
- map = '0123456789abcdef';
186
- }
187
-
188
- return $.uid(mask, map);
189
- },
190
- mdPreloaderContent: "\n <span class=\"preloader-inner\">\n\t\t\t<svg viewBox=\"0 0 36 36\">\n\t\t\t\t<circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n\t\t\t</svg>\n </span>\n ".trim(),
191
- iosPreloaderContent: ("\n <span class=\"preloader-inner\">\n\t\t\t" + [0, 1, 2, 3, 4, 5, 6, 7].map(function () {
192
- return '<span class="preloader-inner-line"></span>';
193
- }).join('') + "\n </span>\n ").trim(),
194
- auroraPreloaderContent: "\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-circle\"></span>\n </span>\n ",
195
- eventNameToColonCase: function eventNameToColonCase(eventName) {
196
- var hasColon;
197
- return eventName.split('').map(function (char, index) {
198
- if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {
199
- hasColon = true;
200
- return ":" + char.toLowerCase();
201
- }
202
-
203
- return char.toLowerCase();
204
- }).join('');
205
- },
206
- deleteProps: function deleteProps(obj) {
207
- $.deleteProps(obj);
208
- },
209
- nextTick: function nextTick(callback, delay) {
210
- if (delay === void 0) {
211
- delay = 0;
212
- }
213
-
214
- return setTimeout(callback, delay);
215
- },
216
- nextFrame: function nextFrame(cb) {
217
- return $.nextFrame(cb);
218
- },
219
- now: function now() {
220
- return Date.now();
221
- },
222
- requestAnimationFrame: function requestAnimationFrame(cb) {
223
- return $.requestAnimationFrame(cb);
224
- },
225
- cancelAnimationFrame: function cancelAnimationFrame(id) {
226
- return $.cancelAnimationFrame(id);
227
- },
228
- parseUrlQuery: function parseUrlQuery(url) {
229
- return $.urlParam(url);
230
- },
231
- getTranslate: function getTranslate(el, axis) {
232
- if (axis === void 0) {
233
- axis = 'x';
234
- }
235
-
236
- return $.getTranslate(el, axis);
237
- },
238
- serializeObject: function serializeObject(obj, parents) {
239
- if (parents === void 0) {
240
- parents = [];
241
- }
242
-
243
- if (typeof obj === 'string') return obj;
244
- var resultArray = [];
245
- var separator = '&';
246
- var newParents;
247
-
248
- function varName(name) {
249
- if (parents.length > 0) {
250
- var parentParts = '';
251
-
252
- for (var j = 0; j < parents.length; j += 1) {
253
- if (j === 0) parentParts += parents[j];else parentParts += "[" + encodeURIComponent(parents[j]) + "]";
254
- }
255
-
256
- return parentParts + "[" + encodeURIComponent(name) + "]";
257
- }
258
-
259
- return encodeURIComponent(name);
260
- }
261
-
262
- function varValue(value) {
263
- return encodeURIComponent(value);
264
- }
265
-
266
- Object.keys(obj).forEach(function (prop) {
267
- var toPush;
268
-
269
- if (Array.isArray(obj[prop])) {
270
- toPush = [];
271
-
272
- for (var i = 0; i < obj[prop].length; i += 1) {
273
- if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {
274
- newParents = parents.slice();
275
- newParents.push(prop);
276
- newParents.push(String(i));
277
- toPush.push(Utils.serializeObject(obj[prop][i], newParents));
278
- } else {
279
- toPush.push(varName(prop) + "[]=" + varValue(obj[prop][i]));
280
- }
281
- }
282
-
283
- if (toPush.length > 0) resultArray.push(toPush.join(separator));
284
- } else if (obj[prop] === null || obj[prop] === '') {
285
- resultArray.push(varName(prop) + "=");
286
- } else if (typeof obj[prop] === 'object') {
287
- // Object, convert to named array
288
- newParents = parents.slice();
289
- newParents.push(prop);
290
- toPush = Utils.serializeObject(obj[prop], newParents);
291
- if (toPush !== '') resultArray.push(toPush);
292
- } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {
293
- // Should be string or plain value
294
- resultArray.push(varName(prop) + "=" + varValue(obj[prop]));
295
- } else if (obj[prop] === '') resultArray.push(varName(prop));
296
- });
297
- return resultArray.join(separator);
298
- },
299
- isObject: function isObject(o) {
300
- return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
301
- },
302
- merge: function merge() {
303
- var _$;
304
-
305
- return (_$ = $).merge.apply(_$, arguments);
306
- },
307
- extend: function extend() {
308
- var _$2;
309
-
310
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
311
- args[_key] = arguments[_key];
312
- }
313
-
314
- var to = args[0];
315
- args.splice(0, 1);
316
- return (_$2 = $).assign.apply(_$2, [to].concat(args));
317
- },
318
- // ���෽������ʵ�������������ԡ���������
319
- bindMethods: function bindMethods(instance, obj) {
320
- var _this = this;
321
-
322
- Object.keys(obj).forEach(function (key) {
323
- if (_this.isObject(obj[key])) {
324
- Object.keys(obj[key]).forEach(function (subKey) {
325
- if (typeof obj[key][subKey] === 'function') {
326
- obj[key][subKey] = obj[key][subKey].bind(instance);
327
- }
328
- });
329
- }
330
-
331
- instance[key] = obj[key];
332
- });
333
- },
334
- colorHexToRgb: function colorHexToRgb(hex) {
335
- var h = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (m, r, g, b) {
336
- return r + r + g + g + b + b;
337
- });
338
- var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(h);
339
- return result ? result.slice(1).map(function (n) {
340
- return parseInt(n, 16);
341
- }) : null;
342
- },
343
- colorRgbToHex: function colorRgbToHex(r, g, b) {
344
- var result = [r, g, b].map(function (n) {
345
- var hex = n.toString(16);
346
- return hex.length === 1 ? "0" + hex : hex;
347
- }).join('');
348
- return "#" + result;
349
- },
350
- colorRgbToHsl: function colorRgbToHsl(r, g, b) {
351
- r /= 255; // eslint-disable-line
352
-
353
- g /= 255; // eslint-disable-line
354
-
355
- b /= 255; // eslint-disable-line
356
-
357
- var max = Math.max(r, g, b);
358
- var min = Math.min(r, g, b);
359
- var d = max - min;
360
- var h;
361
- if (d === 0) h = 0;else if (max === r) h = (g - b) / d % 6;else if (max === g) h = (b - r) / d + 2;else if (max === b) h = (r - g) / d + 4;
362
- var l = (min + max) / 2;
363
- var s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
364
- if (h < 0) h = 360 / 60 + h;
365
- return [h * 60, s, l];
366
- },
367
- colorHslToRgb: function colorHslToRgb(h, s, l) {
368
- var c = (1 - Math.abs(2 * l - 1)) * s;
369
- var hp = h / 60;
370
- var x = c * (1 - Math.abs(hp % 2 - 1));
371
- var rgb1;
372
-
373
- if (Number.isNaN(h) || typeof h === 'undefined') {
374
- rgb1 = [0, 0, 0];
375
- } else if (hp <= 1) rgb1 = [c, x, 0];else if (hp <= 2) rgb1 = [x, c, 0];else if (hp <= 3) rgb1 = [0, c, x];else if (hp <= 4) rgb1 = [0, x, c];else if (hp <= 5) rgb1 = [x, 0, c];else if (hp <= 6) rgb1 = [c, 0, x];
376
-
377
- var m = l - c / 2;
378
- return rgb1.map(function (n) {
379
- return Math.max(0, Math.min(255, Math.round(255 * (n + m))));
380
- });
381
- },
382
- colorHsbToHsl: function colorHsbToHsl(h, s, b) {
383
- var HSL = {
384
- h: h,
385
- s: 0,
386
- l: 0
387
- };
388
- var HSB = {
389
- h: h,
390
- s: s,
391
- b: b
392
- };
393
- HSL.l = (2 - HSB.s) * HSB.b / 2;
394
- HSL.s = HSL.l && HSL.l < 1 ? HSB.s * HSB.b / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;
395
- return [HSL.h, HSL.s, HSL.l];
396
- },
397
- colorHslToHsb: function colorHslToHsb(h, s, l) {
398
- var HSB = {
399
- h: h,
400
- s: 0,
401
- b: 0
402
- };
403
- var HSL = {
404
- h: h,
405
- s: s,
406
- l: l
407
- };
408
- var t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);
409
- HSB.b = HSL.l + t;
410
- HSB.s = HSL.l > 0 ? 2 * t / HSB.b : HSB.s;
411
- return [HSB.h, HSB.s, HSB.b];
412
- },
413
- colorThemeCSSProperties: function colorThemeCSSProperties() {
414
- var hex;
415
- var rgb;
416
-
417
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
418
- args[_key2] = arguments[_key2];
419
- }
420
-
421
- if (args.length === 1) {
422
- hex = args[0];
423
- rgb = Utils.colorHexToRgb(hex);
424
- } else if (args.length === 3) {
425
- rgb = args;
426
- hex = Utils.colorRgbToHex.apply(Utils, rgb);
427
- }
428
-
429
- if (!rgb) return {};
430
- var hsl = Utils.colorRgbToHsl.apply(Utils, rgb);
431
- var hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];
432
- var hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];
433
- var shade = Utils.colorRgbToHex.apply(Utils, Utils.colorHslToRgb.apply(Utils, hslShade));
434
- var tint = Utils.colorRgbToHex.apply(Utils, Utils.colorHslToRgb.apply(Utils, hslTint));
435
- return {
436
- '--f7-theme-color': hex,
437
- '--f7-theme-color-rgb': rgb.join(', '),
438
- '--f7-theme-color-shade': shade,
439
- '--f7-theme-color-tint': tint
440
- };
441
- }
442
- };
443
-
444
- /**
445
- * 事件类,提供对象的事件侦听、触发,只在类实例中有效。
446
- * 需要支持事件的对象,可以从这个类继承,则类实例具备事件功能。
447
- * Fork from Framework7,
448
- */
449
- var Event = /*#__PURE__*/function () {
450
- function Event(params, parents) {
451
- if (params === void 0) {
452
- params = {};
453
- }
454
-
455
- if (parents === void 0) {
456
- parents = [];
457
- }
458
-
459
- var self = this;
460
- self.params = params;
461
- self.eventsParents = parents;
462
- self.eventsListeners = {}; // 通过 params 中的 on 加载事件响应
463
-
464
- if (self.params && self.params.on) {
465
- Object.keys(self.params.on).forEach(function (eventName) {
466
- self.on(eventName, self.params.on[eventName]);
467
- });
468
- }
469
- }
470
-
471
- var _proto = Event.prototype;
472
-
473
- _proto.on = function on(events, handler, priority) {
474
- var self = this;
475
- if (typeof handler !== 'function') return self;
476
- var method = priority ? 'unshift' : 'push';
477
- events.split(' ').forEach(function (event) {
478
- if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
479
- self.eventsListeners[event][method](handler);
480
- });
481
- return self;
482
- };
483
-
484
- _proto.once = function once(events, handler, priority) {
485
- var self = this;
486
- if (typeof handler !== 'function') return self;
487
-
488
- function onceHandler() {
489
- self.off(events, onceHandler);
490
-
491
- if (onceHandler.proxy) {
492
- delete onceHandler.proxy;
493
- }
494
-
495
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
496
- args[_key] = arguments[_key];
497
- }
498
-
499
- handler.apply(self, args);
500
- }
501
-
502
- onceHandler.proxy = handler;
503
- return self.on(events, onceHandler, priority);
504
- };
505
-
506
- _proto.off = function off(events, handler) {
507
- var self = this;
508
- if (!self.eventsListeners) return self;
509
- events.split(' ').forEach(function (event) {
510
- if (typeof handler === 'undefined') {
511
- self.eventsListeners[event] = [];
512
- } else if (self.eventsListeners[event]) {
513
- self.eventsListeners[event].forEach(function (eventHandler, index) {
514
- if (eventHandler === handler || eventHandler.proxy && eventHandler.proxy === handler) {
515
- self.eventsListeners[event].splice(index, 1);
516
- }
517
- });
518
- }
519
- });
520
- return self;
521
- };
522
-
523
- _proto.emit = function emit() {
524
- var self = this;
525
- if (!self.eventsListeners) return self;
526
- var events;
527
- var data;
528
- var context;
529
- var eventsParents;
530
-
531
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
532
- args[_key2] = arguments[_key2];
533
- }
534
-
535
- if (typeof args[0] === 'string' || Array.isArray(args[0])) {
536
- events = args[0];
537
- data = args.slice(1, args.length);
538
- context = self;
539
- eventsParents = self.eventsParents;
540
- } else {
541
- events = args[0].events;
542
- data = args[0].data;
543
- context = args[0].context || self;
544
- eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;
545
- }
546
-
547
- var eventsArray = Array.isArray(events) ? events : events.split(' ');
548
- var localEvents = eventsArray.map(function (eventName) {
549
- return eventName.replace('local::', '');
550
- });
551
- var parentEvents = eventsArray.filter(function (eventName) {
552
- return eventName.indexOf('local::') < 0;
553
- });
554
- localEvents.forEach(function (event) {
555
- if (self.eventsListeners && self.eventsListeners[event]) {
556
- var handlers = [];
557
- self.eventsListeners[event].forEach(function (eventHandler) {
558
- handlers.push(eventHandler);
559
- });
560
- handlers.forEach(function (eventHandler) {
561
- eventHandler.apply(context, data);
562
- });
563
- }
564
- });
565
-
566
- if (eventsParents && eventsParents.length > 0) {
567
- eventsParents.forEach(function (eventsParent) {
568
- eventsParent.emit.apply(eventsParent, [parentEvents].concat(data));
569
- });
570
- }
571
-
572
- return self;
573
- };
574
-
575
- return Event;
576
- }();
577
-
578
- var Module = /*#__PURE__*/function (_Event) {
579
- _inheritsLoose(Module, _Event);
580
-
581
- function Module(params, parents) {
582
- if (params === void 0) {
583
- params = {};
584
- }
585
-
586
- if (parents === void 0) {
587
- parents = [];
588
- }
589
-
590
- return _Event.call(this, params, parents) || this;
591
- } // eslint-disable-next-line
592
-
593
-
594
- var _proto = Module.prototype;
595
-
596
- _proto.useModuleParams = function useModuleParams(module, instanceParams) {
597
- if (module.params) {
598
- var originalParams = {};
599
- Object.keys(module.params).forEach(function (paramKey) {
600
- if (typeof instanceParams[paramKey] === 'undefined') return;
601
- originalParams[paramKey] = $.extend({}, instanceParams[paramKey]);
602
- });
603
- $.extend(instanceParams, module.params);
604
- Object.keys(originalParams).forEach(function (paramKey) {
605
- $.extend(instanceParams[paramKey], originalParams[paramKey]);
606
- });
607
- }
608
- };
609
-
610
- _proto.useModulesParams = function useModulesParams(instanceParams) {
611
- var instance = this;
612
- if (!instance.modules) return;
613
- Object.keys(instance.modules).forEach(function (moduleName) {
614
- var module = instance.modules[moduleName]; // Extend params
615
-
616
- if (module.params) {
617
- $.extend(instanceParams, module.params);
618
- }
619
- });
620
- }
621
- /**
622
- * 将扩展模块的相关方法、事件加载到类实例
623
- * @param {*} moduleName 扩展模块名称
624
- * @param {*} moduleParams
625
- */
626
- ;
627
-
628
- _proto.useModule = function useModule(moduleName, moduleParams) {
629
- if (moduleName === void 0) {
630
- moduleName = '';
631
- }
632
-
633
- if (moduleParams === void 0) {
634
- moduleParams = {};
635
- }
636
-
637
- var instance = this;
638
- if (!instance.modules) return; // 从原型中获得的模块类引用
639
-
640
- var module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;
641
- if (!module) return; // 扩展实例的方法和属性,Extend instance methods and props
642
-
643
- if (module.instance) {
644
- Object.keys(module.instance).forEach(function (modulePropName) {
645
- var moduleProp = module.instance[modulePropName];
646
-
647
- if (typeof moduleProp === 'function') {
648
- instance[modulePropName] = moduleProp.bind(instance);
649
- } else {
650
- instance[modulePropName] = moduleProp;
651
- }
652
- });
653
- } // 将扩展模块中的on加载到实例的事件侦听中,比如 init 在实例初始化时被调用
654
-
655
-
656
- if (module.on && instance.on) {
657
- Object.keys(module.on).forEach(function (moduleEventName) {
658
- instance.on(moduleEventName, module.on[moduleEventName]);
659
- });
660
- } // 加载扩展模块的vnodeHooks,Add vnode hooks
661
-
662
-
663
- if (module.vnode) {
664
- if (!instance.vnodeHooks) instance.vnodeHooks = {};
665
- Object.keys(module.vnode).forEach(function (vnodeId) {
666
- Object.keys(module.vnode[vnodeId]).forEach(function (hookName) {
667
- var handler = module.vnode[vnodeId][hookName];
668
- if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};
669
- if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];
670
- instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));
671
- });
672
- });
673
- } // 执行模块的create方法,模块实例化回调,Module create callback
674
-
675
-
676
- if (module.create) {
677
- module.create.bind(instance)(moduleParams);
678
- }
679
- }
680
- /**
681
- * 实例创建初始化时,执行扩展模块中定义的相关回调
682
- * @param {*} modulesParams
683
- */
684
- ;
685
-
686
- _proto.useModules = function useModules(modulesParams) {
687
- if (modulesParams === void 0) {
688
- modulesParams = {};
689
- }
690
-
691
- var instance = this;
692
- if (!instance.modules) return;
693
- Object.keys(instance.modules).forEach(function (moduleName) {
694
- var moduleParams = modulesParams[moduleName] || {};
695
- instance.useModule(moduleName, moduleParams);
696
- });
697
- };
698
-
699
- /**
700
- * 将模块类装配到指定类的modules属性,用于扩展类
701
- * @param {*} module 模块类
702
- * @param {...any} params 参数
703
- */
704
- Module.installModule = function installModule(module) {
705
- var Class = this;
706
- if (!Class.prototype.modules) Class.prototype.modules = {};
707
- var name = module.name || Object.keys(Class.prototype.modules).length + "_" + $.now(); // 原型属性中引用该模块类,类实例
708
-
709
- Class.prototype.modules[name] = module; // 模块如果定义了原型,则将模块原型加载到类原型
710
-
711
- if (module.proto) {
712
- Object.keys(module.proto).forEach(function (key) {
713
- Class.prototype[key] = module.proto[key];
714
- });
715
- } // 加载静态属性
716
-
717
-
718
- if (module.static) {
719
- Object.keys(module.static).forEach(function (key) {
720
- Class[key] = module.static[key];
721
- });
722
- } // 执行加载回调函数
723
-
724
-
725
- if (module.install) {
726
- for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
727
- params[_key - 1] = arguments[_key];
728
- }
729
-
730
- module.install.apply(Class, params);
731
- }
732
-
733
- return Class;
734
- }
735
- /**
736
- * 加载类扩展模块到类
737
- * @param {*} module
738
- * @param {...any} params
739
- */
740
- ;
741
-
742
- Module.use = function use(module) {
743
- var Class = this;
744
-
745
- if (Array.isArray(module)) {
746
- module.forEach(function (m) {
747
- return Class.installModule(m);
748
- });
749
- return Class;
750
- }
751
-
752
- for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
753
- params[_key2 - 1] = arguments[_key2];
754
- }
755
-
756
- return Class.installModule.apply(Class, [module].concat(params));
757
- };
758
-
759
- _createClass(Module, null, [{
760
- key: "components",
761
- set: function set(components) {
762
- var Class = this;
763
- if (!Class.use) return;
764
- Class.use(components);
765
- }
766
- }]);
767
-
768
- return Module;
769
- }(Event);
770
-
771
- /**
772
- * 扩展构造函数
773
- * @param {*} parameters
774
- */
775
- function Constructors (parameters) {
776
- if (parameters === void 0) {
777
- parameters = {};
778
- }
779
-
780
- var _parameters = parameters,
781
- defaultSelector = _parameters.defaultSelector,
782
- Constructor = _parameters.constructor,
783
- domProp = _parameters.domProp,
784
- app = _parameters.app,
785
- addMethods = _parameters.addMethods;
786
- var methods = {
787
- create: function create() {
788
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
789
- args[_key] = arguments[_key];
790
- }
791
-
792
- if (app) return _construct(Constructor, [app].concat(args));
793
- return _construct(Constructor, args);
794
- },
795
- get: function get(el) {
796
- if (el === void 0) {
797
- el = defaultSelector;
798
- }
799
-
800
- if (el instanceof Constructor) return el;
801
- var $el = $(el);
802
- if ($el.length === 0) return undefined;
803
- return $el[0][domProp];
804
- },
805
- destroy: function destroy(el) {
806
- var instance = methods.get(el);
807
- if (instance && instance.destroy) return instance.destroy();
808
- return undefined;
809
- }
810
- };
811
-
812
- if (addMethods && Array.isArray(addMethods)) {
813
- addMethods.forEach(function (methodName) {
814
- methods[methodName] = function (el) {
815
- if (el === void 0) {
816
- el = defaultSelector;
817
- }
818
-
819
- var instance = methods.get(el);
820
-
821
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
822
- args[_key2 - 1] = arguments[_key2];
823
- }
824
-
825
- if (instance && instance[methodName]) return instance[methodName].apply(instance, args);
826
- return undefined;
827
- };
828
- });
829
- }
830
-
831
- return methods;
832
- }
833
-
834
- function Modals (parameters) {
835
- if (parameters === void 0) {
836
- parameters = {};
837
- }
838
-
839
- var _parameters = parameters,
840
- defaultSelector = _parameters.defaultSelector,
841
- constructor = _parameters.constructor,
842
- app = _parameters.app;
843
- var methods = $.extend(Constructors({
844
- defaultSelector: defaultSelector,
845
- constructor: constructor,
846
- app: app,
847
- domProp: 'f7Modal'
848
- }), {
849
- open: function open(el, animate) {
850
- var $el = $(el);
851
- var instance = $el[0].f7Modal;
852
- if (!instance) instance = new constructor(app, {
853
- el: $el
854
- });
855
- return instance.open(animate);
856
- },
857
- close: function close(el, animate) {
858
- if (el === void 0) {
859
- el = defaultSelector;
860
- }
861
-
862
- var $el = $(el);
863
- if ($el.length === 0) return undefined;
864
- var instance = $el[0].f7Modal;
865
- if (!instance) instance = new constructor(app, {
866
- el: $el
867
- });
868
- return instance.close(animate);
869
- }
870
- });
871
- return methods;
872
- }
873
-
874
- /**
875
- * 动态加载扩展模块,被 App调用。
876
- * 通过写入页面标签实现动态加载js、css
877
- * wia base中已经实现了动态下载、加载模块功能,该模块应删除
878
- */
879
- var fetchedModules = [];
880
-
881
- function loadModule(moduleToLoad) {
882
- var App = this;
883
- return new Promise(function (resolve, reject) {
884
- var app = App.instance;
885
- var modulePath;
886
- var moduleObj;
887
- var moduleFunc;
888
-
889
- if (!moduleToLoad) {
890
- reject(new Error('Wia: Lazy module must be specified'));
891
- return;
892
- }
893
-
894
- function install(module) {
895
- App.use(module);
896
-
897
- if (app) {
898
- app.useModuleParams(module, app.params);
899
- app.useModule(module);
900
- }
901
- }
902
-
903
- if (typeof moduleToLoad === 'string') {
904
- var matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);
905
-
906
- if (moduleToLoad.indexOf('.') < 0 && matchNamePattern && matchNamePattern[0].length === moduleToLoad.length) {
907
- if (!app || app && !app.params.lazyModulesPath) {
908
- reject(new Error('Wia: "lazyModulesPath" app parameter must be specified to fetch module by name'));
909
- return;
910
- }
911
-
912
- modulePath = app.params.lazyModulesPath + "/" + moduleToLoad + ".js";
913
- } else {
914
- modulePath = moduleToLoad;
915
- }
916
- } else if (typeof moduleToLoad === 'function') {
917
- moduleFunc = moduleToLoad;
918
- } else {
919
- // considering F7-Plugin object
920
- moduleObj = moduleToLoad;
921
- }
922
-
923
- if (moduleFunc) {
924
- var module = moduleFunc(App, false);
925
-
926
- if (!module) {
927
- reject(new Error("Wia: Can't find Wia component in specified component function"));
928
- return;
929
- } // Check if it was added
930
-
931
-
932
- if (App.prototype.modules && App.prototype.modules[module.name]) {
933
- resolve();
934
- return;
935
- } // Install It
936
-
937
-
938
- install(module);
939
- resolve();
940
- }
941
-
942
- if (moduleObj) {
943
- var _module = moduleObj;
944
-
945
- if (!_module) {
946
- reject(new Error("Wia: Can't find Wia component in specified component"));
947
- return;
948
- } // Check if it was added
949
-
950
-
951
- if (App.prototype.modules && App.prototype.modules[_module.name]) {
952
- resolve();
953
- return;
954
- } // Install It
955
-
956
-
957
- install(_module);
958
- resolve();
959
- }
960
-
961
- if (modulePath) {
962
- if (fetchedModules.indexOf(modulePath) >= 0) {
963
- resolve();
964
- return;
965
- }
966
-
967
- fetchedModules.push(modulePath); // 动态加载 js 脚本
968
-
969
- var scriptLoad = new Promise(function (resolveScript, rejectScript) {
970
- App.request.get(modulePath, function (scriptContent) {
971
- var id = $.id();
972
- var callbackLoadName = "wia_component_loader_callback_" + id;
973
- var scriptEl = document.createElement('script');
974
- scriptEl.innerHTML = "window." + callbackLoadName + " = function (Wia, WiaAutoInstallComponent) {return " + scriptContent.trim() + "}"; // 动态加载 js
975
-
976
- $('head').append(scriptEl);
977
- var componentLoader = window[callbackLoadName];
978
- delete window[callbackLoadName];
979
- $(scriptEl).remove();
980
- var module = componentLoader(App, false);
981
-
982
- if (!module) {
983
- rejectScript(new Error("Wia: Can't find Wia component in " + modulePath + " file"));
984
- return;
985
- } // Check if it was added
986
-
987
-
988
- if (App.prototype.modules && App.prototype.modules[module.name]) {
989
- resolveScript();
990
- return;
991
- } // Install It
992
-
993
-
994
- install(module);
995
- resolveScript();
996
- }, function (xhr, status) {
997
- rejectScript(xhr, status);
998
- });
999
- }); // 动态加载css样式
1000
-
1001
- var styleLoad = new Promise(function (resolveStyle) {
1002
- App.request.get(modulePath.replace('.js', app.rtl ? '.rtl.css' : '.css'), function (styleContent) {
1003
- var styleEl = document.createElement('style');
1004
- styleEl.innerHTML = styleContent;
1005
- $('head').append(styleEl);
1006
- resolveStyle();
1007
- }, function () {
1008
- resolveStyle();
1009
- });
1010
- });
1011
- Promise.all([scriptLoad, styleLoad]).then(function () {
1012
- resolve();
1013
- }).catch(function (err) {
1014
- reject(err);
1015
- });
1016
- }
1017
- });
1018
- }
1019
-
1020
- var Resize = {
1021
- name: 'resize',
1022
- instance: {
1023
- getSize: function getSize() {
1024
- var app = this;
1025
- if (!app.root[0]) return {
1026
- width: 0,
1027
- height: 0,
1028
- left: 0,
1029
- top: 0
1030
- };
1031
- var offset = app.root.offset();
1032
- var _ref = [app.root[0].offsetWidth, app.root[0].offsetHeight, offset.left, offset.top],
1033
- width = _ref[0],
1034
- height = _ref[1],
1035
- left = _ref[2],
1036
- top = _ref[3];
1037
- app.width = width;
1038
- app.height = height;
1039
- app.left = left;
1040
- app.top = top;
1041
- return {
1042
- width: width,
1043
- height: height,
1044
- left: left,
1045
- top: top
1046
- };
1047
- }
1048
- },
1049
- on: {
1050
- init: function init() {
1051
- var app = this; // Get Size
1052
-
1053
- app.getSize(); // Emit resize
1054
-
1055
- window.addEventListener('resize', function () {
1056
- app.emit('resize');
1057
- }, false); // Emit orientationchange
1058
-
1059
- window.addEventListener('orientationchange', function () {
1060
- app.emit('orientationchange');
1061
- });
1062
- },
1063
- orientationchange: function orientationchange() {
1064
- var app = this; // Fix iPad weird body scroll
1065
-
1066
- if (app.device.ipad) {
1067
- document.body.scrollLeft = 0;
1068
- setTimeout(function () {
1069
- document.body.scrollLeft = 0;
1070
- }, 0);
1071
- }
1072
- },
1073
- resize: function resize() {
1074
- var app = this;
1075
- app.getSize();
1076
- }
1077
- }
1078
- };
1079
-
1080
- /**
1081
- * document 绑定click事件
1082
- * 支持touch则绑定touch,否则绑定click
1083
- * 无论touch 还是 click事件,都会触发事件响应函数
1084
- * @param {*} cb
1085
- */
1086
- function bindClick(cb) {
1087
- var touchStartX;
1088
- var touchStartY;
1089
-
1090
- function touchStart(ev) {
1091
- // ev.preventDefault();
1092
- touchStartX = ev.changedTouches[0].clientX;
1093
- touchStartY = ev.changedTouches[0].clientY;
1094
- }
1095
-
1096
- function touchEnd(ev) {
1097
- // ev.preventDefault();
1098
- var x = Math.abs(ev.changedTouches[0].clientX - touchStartX);
1099
- var y = Math.abs(ev.changedTouches[0].clientY - touchStartY); // console.log('touchEnd', {x, y});
1100
-
1101
- if (x <= 5 && y <= 5) {
1102
- cb.call(this, ev);
1103
- }
1104
- } // 在捕捉时触发,不影响后续冒泡阶段再次触发
1105
-
1106
-
1107
- if ($.support.touch) {
1108
- // console.log('bind touch');
1109
- document.addEventListener('touchstart', touchStart, true);
1110
- document.addEventListener('touchend', touchEnd, true);
1111
- } else {
1112
- // console.log('bind click');
1113
- document.addEventListener('click', cb, true);
1114
- }
1115
- }
1116
-
1117
- function initClicks(app) {
1118
- function appClick(ev) {
1119
- app.emit({
1120
- events: 'click',
1121
- data: [ev]
1122
- });
1123
- }
1124
-
1125
- function handleClicks(e) {
1126
- var $clickedEl = $(e.target);
1127
- var $clickedLinkEl = $clickedEl.closest('a');
1128
- var isLink = $clickedLinkEl.length > 0;
1129
- isLink && $clickedLinkEl.attr('href'); // call Modules Clicks
1130
-
1131
- Object.keys(app.modules).forEach(function (moduleName) {
1132
- var moduleClicks = app.modules[moduleName].clicks;
1133
- if (!moduleClicks) return;
1134
- if (e.preventF7Router) return;
1135
- Object.keys(moduleClicks).forEach(function (clickSelector) {
1136
- var matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);
1137
-
1138
- if (matchingClickedElement.length > 0) {
1139
- moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset(), e);
1140
- }
1141
- });
1142
- });
1143
- } // 绑定click 或 touch 事件,触发时,发射click事件
1144
-
1145
-
1146
- bindClick(appClick); // click event 响应
1147
-
1148
- app.on('click', handleClicks);
1149
- }
1150
-
1151
- var Click = {
1152
- name: 'clicks',
1153
- params: {
1154
- clicks: {
1155
- // External Links
1156
- externalLinks: '.ext'
1157
- }
1158
- },
1159
- on: {
1160
- // app 创建时被调用
1161
- init: function init() {
1162
- var app = this;
1163
- initClicks(app);
1164
- }
1165
- }
1166
- };
1167
-
1168
- var SW = {
1169
- registrations: [],
1170
- register: function register(path, scope) {
1171
- var app = this;
1172
-
1173
- if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {
1174
- return new Promise(function (resolve, reject) {
1175
- reject(new Error('Service worker is not supported'));
1176
- });
1177
- }
1178
-
1179
- return new Promise(function (resolve, reject) {
1180
- app.serviceWorker.container.register(path, scope ? {
1181
- scope: scope
1182
- } : {}).then(function (reg) {
1183
- SW.registrations.push(reg);
1184
- app.emit('serviceWorkerRegisterSuccess', reg);
1185
- resolve(reg);
1186
- }).catch(function (error) {
1187
- app.emit('serviceWorkerRegisterError', error);
1188
- reject(error);
1189
- });
1190
- });
1191
- },
1192
- unregister: function unregister(registration) {
1193
- var app = this;
1194
-
1195
- if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {
1196
- return new Promise(function (resolve, reject) {
1197
- reject(new Error('Service worker is not supported'));
1198
- });
1199
- }
1200
-
1201
- var registrations;
1202
- if (!registration) registrations = SW.registrations;else if (Array.isArray(registration)) registrations = registration;else registrations = [registration];
1203
- return Promise.all(registrations.map(function (reg) {
1204
- return new Promise(function (resolve, reject) {
1205
- reg.unregister().then(function () {
1206
- if (SW.registrations.indexOf(reg) >= 0) {
1207
- SW.registrations.splice(SW.registrations.indexOf(reg), 1);
1208
- }
1209
-
1210
- app.emit('serviceWorkerUnregisterSuccess', reg);
1211
- resolve();
1212
- }).catch(function (error) {
1213
- app.emit('serviceWorkerUnregisterError', reg, error);
1214
- reject(error);
1215
- });
1216
- });
1217
- }));
1218
- }
1219
- };
1220
- var SW$1 = {
1221
- name: 'sw',
1222
- params: {
1223
- serviceWorker: {
1224
- path: undefined,
1225
- scope: undefined
1226
- }
1227
- },
1228
- create: function create() {
1229
- var app = this;
1230
- $.extend(app, {
1231
- serviceWorker: {
1232
- container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,
1233
- registrations: SW.registrations,
1234
- register: SW.register.bind(app),
1235
- unregister: SW.unregister.bind(app)
1236
- }
1237
- });
1238
- },
1239
- on: {
1240
- init: function init() {
1241
- if (!('serviceWorker' in window.navigator)) return;
1242
- var app = this;
1243
- if (!app.serviceWorker.container) return;
1244
- var paths = app.params.serviceWorker.path;
1245
- var scope = app.params.serviceWorker.scope;
1246
- if (!paths || Array.isArray(paths) && !paths.length) return;
1247
- var toRegister = Array.isArray(paths) ? paths : [paths];
1248
- toRegister.forEach(function (path) {
1249
- app.serviceWorker.register(path, scope);
1250
- });
1251
- }
1252
- }
1253
- };
1254
-
1255
- var Support$1 = $.support;
1256
- var Device$1 = $.device;
1257
- /**
1258
- * 应用类,每个wia应用从该类继承,由 首页加载创建或者路由创建
1259
- */
1260
-
1261
- var App = /*#__PURE__*/function (_Module) {
1262
- _inheritsLoose(App, _Module);
1263
-
1264
- function App(opt) {
1265
- var _this;
1266
-
1267
- _this = _Module.call(this, opt) || this;
1268
- var passedParams = $.extend({}, opt);
1269
-
1270
- var app = _assertThisInitialized(_this);
1271
-
1272
- app.device = Device$1;
1273
- app.support = Support$1; // Default
1274
-
1275
- var def = {
1276
- version: '0.0.1',
1277
- root: 'body',
1278
- theme: 'auto',
1279
- language: window.navigator.language,
1280
- routes: [],
1281
- lazyModulesPath: null,
1282
- initOnDeviceReady: true,
1283
- // init: true, // 路由加载时,为 false,,为true
1284
- autoDarkTheme: false,
1285
- iosTranslucentBars: true,
1286
- iosTranslucentModals: true,
1287
- component: undefined,
1288
- componentUrl: undefined
1289
- }; // Extend defaults with modules params
1290
-
1291
- app.useModulesParams(def); // Extend defaults with passed params
1292
-
1293
- app.params = $.extend(def, opt);
1294
- var $rootEl = $(app.params.root);
1295
- $.extend(app, {
1296
- owner: app.params.owner,
1297
- name: app.params.name,
1298
- id: app.params.owner + "." + app.params.name,
1299
- // App version
1300
- version: app.params.version,
1301
- // Routes
1302
- routes: app.params.routes,
1303
- // Lang
1304
- language: app.params.language,
1305
- // Root
1306
- root: $rootEl,
1307
- $el: $rootEl,
1308
- cfg: app.params.cfg,
1309
- // app config
1310
- api: app.params.api,
1311
- // api config
1312
- // RTL
1313
- rtl: $rootEl.css('direction') === 'rtl',
1314
- // Theme
1315
- theme: function getTheme() {
1316
- if (app.params.theme === 'auto') {
1317
- if (Device$1.ios) return 'ios';
1318
- if (Device$1.desktop) return 'aurora';
1319
- return 'md';
1320
- }
1321
-
1322
- return app.params.theme;
1323
- }(),
1324
- // Initially passed parameters
1325
- passedParams: passedParams,
1326
- online: window.navigator.onLine
1327
- }); // Save Root
1328
-
1329
- if (app.root && app.root[0]) {
1330
- app.root[0].wia = app;
1331
- }
1332
-
1333
- app.touchEvents = {
1334
- start: Support$1.touch ? 'touchstart' : Support$1.pointerEvents ? 'pointerdown' : 'mousedown',
1335
- move: Support$1.touch ? 'touchmove' : Support$1.pointerEvents ? 'pointermove' : 'mousemove',
1336
- end: Support$1.touch ? 'touchend' : Support$1.pointerEvents ? 'pointerup' : 'mouseup'
1337
- }; // 加载use插入的模块类,每个模块作为app的一个属性,合并到实例。
1338
- // 模块包括相关属性及方法(如:create、get、destroy)
1339
- // 调用每个模块的 create 方法
1340
-
1341
- app.useModules(); // 初始化数据,Init Data & Methods
1342
-
1343
- app.initData(); // 自动暗黑主题,Auto Dark Theme
1344
-
1345
- var DARK = '(prefers-color-scheme: dark)';
1346
- var LIGHT = '(prefers-color-scheme: light)';
1347
- app.mq = {};
1348
-
1349
- if (window.matchMedia) {
1350
- app.mq.dark = window.matchMedia(DARK);
1351
- app.mq.light = window.matchMedia(LIGHT);
1352
- }
1353
-
1354
- app.colorSchemeListener = function (_ref) {
1355
- var matches = _ref.matches,
1356
- media = _ref.media;
1357
-
1358
- if (!matches) {
1359
- return;
1360
- }
1361
-
1362
- var html = document.querySelector('html');
1363
-
1364
- if (media === DARK) {
1365
- html.classList.add('theme-dark');
1366
- } else if (media === LIGHT) {
1367
- html.classList.remove('theme-dark');
1368
- }
1369
- }; // app 初始化,Init
1370
-
1371
-
1372
- function init() {
1373
- if (Device$1.cordova && app.params.initOnDeviceReady) {
1374
- $(document).on('deviceready', function () {
1375
- app.init();
1376
- });
1377
- } else {
1378
- app.init();
1379
- }
1380
- } // 应用初始化,路由跳转时不执行初始化
1381
-
1382
-
1383
- if (app.params.init) init(); // Return app instance
1384
-
1385
- return app || _assertThisInitialized(_this);
1386
- } // 首次加载事件,全局只触发一次
1387
-
1388
-
1389
- var _proto = App.prototype;
1390
-
1391
- _proto.load = function load(param) {
1392
- this.emit('local::load appLoad', param);
1393
- } // 从后台切换到前台显示事件
1394
- ;
1395
-
1396
- _proto.show = function show(url, data) {
1397
- this.emit('local::show appShow', url, data);
1398
- } // 从前台显示切换到后台事件
1399
- ;
1400
-
1401
- _proto.hide = function hide() {
1402
- this.emit('local::hide appHide');
1403
- } // 卸载应用事件
1404
- ;
1405
-
1406
- _proto.unload = function unload() {
1407
- this.emit('local::unload appUnload');
1408
- }
1409
- /**
1410
- * 初始化数据
1411
- */
1412
- ;
1413
-
1414
- _proto.initData = function initData() {
1415
- var app = this; // Data
1416
-
1417
- app.data = {};
1418
-
1419
- if (app.params.data && typeof app.params.data === 'function') {
1420
- $.extend(app.data, app.params.data.bind(app)());
1421
- } else if (app.params.data) {
1422
- $.extend(app.data, app.params.data);
1423
- } // Methods
1424
-
1425
-
1426
- app.methods = {};
1427
-
1428
- if (app.params.methods) {
1429
- Object.keys(app.params.methods).forEach(function (methodName) {
1430
- if (typeof app.params.methods[methodName] === 'function') {
1431
- app.methods[methodName] = app.params.methods[methodName].bind(app);
1432
- } else {
1433
- app.methods[methodName] = app.params.methods[methodName];
1434
- }
1435
- });
1436
- }
1437
- };
1438
-
1439
- _proto.enableAutoDarkTheme = function enableAutoDarkTheme() {
1440
- if (!window.matchMedia) return;
1441
- var app = this;
1442
- var html = document.querySelector('html');
1443
-
1444
- if (app.mq.dark && app.mq.light) {
1445
- app.mq.dark.addListener(app.colorSchemeListener);
1446
- app.mq.light.addListener(app.colorSchemeListener);
1447
- }
1448
-
1449
- if (app.mq.dark && app.mq.dark.matches) {
1450
- html.classList.add('theme-dark');
1451
- } else if (app.mq.light && app.mq.light.matches) {
1452
- html.classList.remove('theme-dark');
1453
- }
1454
- };
1455
-
1456
- _proto.disableAutoDarkTheme = function disableAutoDarkTheme() {
1457
- if (!window.matchMedia) return;
1458
- var app = this;
1459
- if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);
1460
- if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);
1461
- } // 初始化,包括控制 html 样式,wia app 启动时需要执行,切换app时,不需要
1462
- ;
1463
-
1464
- _proto.init = function init() {
1465
- var app = this;
1466
- if (app.initialized) return app;
1467
- $.App = App;
1468
-
1469
- if (Device$1.ios && Device$1.webView) {
1470
- // Strange hack required for iOS 8 webview to work on inputs
1471
- window.addEventListener('touchstart', function () {});
1472
- }
1473
-
1474
- app.root.addClass('framework7-initializing'); // RTL attr
1475
-
1476
- if (app.rtl) {
1477
- $('html').attr('dir', 'rtl');
1478
- } // Auto Dark Theme
1479
-
1480
-
1481
- if (app.params.autoDarkTheme) {
1482
- app.enableAutoDarkTheme();
1483
- } // Watch for online/offline state
1484
-
1485
-
1486
- window.addEventListener('offline', function () {
1487
- app.online = false;
1488
- app.emit('offline');
1489
- app.emit('connection', false);
1490
- });
1491
- window.addEventListener('online', function () {
1492
- app.online = true;
1493
- app.emit('online');
1494
- app.emit('connection', true);
1495
- }); // Root class
1496
-
1497
- app.root.addClass('framework7-root'); // Theme class
1498
-
1499
- $('html').removeClass('ios md aurora').addClass(app.theme); // iOS Translucent
1500
-
1501
- if (app.params.iosTranslucentBars && app.theme === 'ios' && Device$1.ios) {
1502
- $('html').addClass('ios-translucent-bars');
1503
- }
1504
-
1505
- if (app.params.iosTranslucentModals && app.theme === 'ios' && Device$1.ios) {
1506
- $('html').addClass('ios-translucent-modals');
1507
- } // Init class
1508
-
1509
-
1510
- $.nextFrame(function () {
1511
- app.root.removeClass('framework7-initializing');
1512
- });
1513
- initStyle(); // Emit, init other modules
1514
-
1515
- app.initialized = true; // 发起init 事件,模块 on 里面有 init方法的会被触发
1516
-
1517
- app.emit('init');
1518
- return app;
1519
- } // eslint-disable-next-line
1520
- ;
1521
-
1522
- _proto.loadModule = function loadModule(m) {
1523
- App.loadModule(m); // 模块初始化
1524
-
1525
- if (this[m.name].init) this[m.name].init();
1526
- } // eslint-disable-next-line
1527
- ;
1528
-
1529
- _proto.loadModules = function loadModules() {
1530
- return App.loadModules.apply(App, arguments);
1531
- };
1532
-
1533
- _proto.getVnodeHooks = function getVnodeHooks(hook, id) {
1534
- var app = this;
1535
- if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];
1536
- return app.vnodeHooks[hook][id] || [];
1537
- } // eslint-disable-next-line
1538
- ;
1539
-
1540
- _createClass(App, [{
1541
- key: "$",
1542
- get: function get() {
1543
- return $;
1544
- }
1545
- }], [{
1546
- key: "Dom",
1547
- get: function get() {
1548
- return $;
1549
- }
1550
- }, {
1551
- key: "$",
1552
- get: function get() {
1553
- return $;
1554
- }
1555
- }, {
1556
- key: "Module",
1557
- get: function get() {
1558
- return Module;
1559
- }
1560
- }, {
1561
- key: "Event",
1562
- get: function get() {
1563
- return Event;
1564
- }
1565
- }]);
1566
-
1567
- return App;
1568
- }(Module);
1569
- /**
1570
- * 初始化html样式
1571
- * from device module
1572
- */
1573
-
1574
-
1575
- App.apps = {};
1576
-
1577
- function initStyle() {
1578
- var classNames = [];
1579
- var html = document.querySelector('html');
1580
- var metaStatusbar = document.querySelector('meta[name="apple-mobile-web-app-status-bar-style"]');
1581
- if (!html) return;
1582
-
1583
- if (Device$1.standalone && Device$1.ios && metaStatusbar && metaStatusbar.content === 'black-translucent') {
1584
- classNames.push('device-full-viewport');
1585
- } // Pixel Ratio
1586
-
1587
-
1588
- classNames.push("device-pixel-ratio-" + Math.floor(Device$1.pixelRatio)); // OS classes
1589
-
1590
- if (Device$1.os && !Device$1.desktop) {
1591
- classNames.push("device-" + Device$1.os);
1592
- } else if (Device$1.desktop) {
1593
- classNames.push('device-desktop');
1594
-
1595
- if (Device$1.os) {
1596
- classNames.push("device-" + Device$1.os);
1597
- }
1598
- }
1599
-
1600
- if (Device$1.cordova || Device$1.phonegap) {
1601
- classNames.push('device-cordova');
1602
- } // Add html classes
1603
-
1604
-
1605
- classNames.forEach(function (className) {
1606
- html.classList.add(className); // console.log({className});
1607
- });
1608
- } // App 类 静态方法、属性
1609
-
1610
-
1611
- App.ModalMethods = Modals;
1612
- App.ConstructorMethods = Constructors; // 动态加载模块(base里面已经内置动态加载,这个方法应该用不上)
1613
-
1614
- App.loadModule = loadModule;
1615
-
1616
- App.loadModules = function (modules) {
1617
- return Promise.all(modules.map(function (module) {
1618
- return App.loadModule(module);
1619
- }));
1620
- }; // app 加载到 app实例的一些扩展模块
1621
-
1622
-
1623
- App.support = Support$1;
1624
- App.device = Device$1;
1625
- App.utils = Utils; // 添加应用缺省模块
1626
-
1627
- App.use([Resize, // 控制屏幕大小
1628
- Click, // 触发UI组件的点击(Click 或 Touch)事件
1629
- SW$1 // ServiceWorker
1630
- //INSTALL_COMPONENTS
1631
- ]);
1632
-
1633
- /**
1634
- * Released on: August 28, 2016
1635
- * 图片延迟加载
1636
- * 使用方法:
1637
- * import {Lazy from '@wiajs/core';
1638
- * const _lazy = new Lazy();
1639
- * _lazy.start(dv); // 注意,这个dv是滚动的层,错了无法触发加载,sui 就是内容层!
1640
- * setTimeout(() => {loadView()}, 1); // krouter 里面已经做了处理,bind 时直接 加载视图即可!
1641
- * loadView 加载视图中(每次页面更新内容后,需调用)
1642
- * _lazy.update(); // 没有显示的图片,加入 待加载数组,并检查是否可视,可视则加载!
1643
- */
1644
- // options
1645
- var _opts = {
1646
- normal: 'nor',
1647
- // 'data-normal' 普通图片
1648
- retina: 'ret',
1649
- // 'data-retina',
1650
- srcset: 'set',
1651
- // 'data-srcset', 浏览器根据宽、高和像素密度来加载相应的图片资源
1652
- threshold: 0
1653
- };
1654
-
1655
- var _opt;
1656
-
1657
- var _ticking;
1658
-
1659
- var _nodes;
1660
-
1661
- var _windowHeight = window.innerHeight;
1662
-
1663
- var _root; // private
1664
-
1665
-
1666
- var _prevLoc = getLoc(); // feature detection
1667
- // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/img/srcset.js
1668
-
1669
-
1670
- var _srcset = document.body.classList.contains('srcset') || 'srcset' in document.createElement('img'); // 设备分辨率
1671
- // not supported in IE10 - https://msdn.microsoft.com/en-us/library/dn265030(v=vs.85).aspx
1672
-
1673
-
1674
- var _dpr = window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI;
1675
- /**
1676
- * 输外部可调用的类
1677
- * 类外面的变量、函数作为模块内部私有属性、方法,外部无法调用
1678
- * 如果全部放入类中,属性、函数相互调用,都需要 this,非常麻烦!
1679
- * 也可以直接使用 export default (options = {}) => {} 输出一个函数!
1680
- * 函数内部反而不需要this,比较方便。
1681
- */
1682
-
1683
-
1684
- var Lazy = /*#__PURE__*/function () {
1685
- // 实例属性
1686
- function Lazy(opt) {
1687
- _opt = $.assign({}, _opts, opt);
1688
- } // API
1689
- //----------------------------------------
1690
- // dom 就绪后 start,dom 更新后,需 update
1691
-
1692
- /**
1693
- * 启动延迟加载, 加载事件, dom ready时调用!
1694
- * @param root 根对象, scroll的目标对象,错了无法触发scroll 事件!
1695
- * @returns {init}
1696
- */
1697
-
1698
-
1699
- var _proto = Lazy.prototype;
1700
-
1701
- _proto.start = function start(root) {
1702
- // sui window scroll event invalid!!!
1703
- // ['scroll', 'resize'].forEach(event => window[action](event, requestScroll));
1704
- ['scroll', 'resize'].forEach(function (event) {
1705
- return root['addEventListener'](event, requestScroll);
1706
- });
1707
- _root = root;
1708
- return this;
1709
- }
1710
- /**
1711
- * 停止延迟加载,卸载事件!
1712
- * @param root 根对象, scroll的目标对象
1713
- * @returns {init}
1714
- */
1715
- ;
1716
-
1717
- _proto.stop = function stop() {
1718
- // sui window scroll event invalid!!!
1719
- // ['scroll', 'resize'].forEach(event => window[action](event, requestScroll));
1720
- ['scroll', 'resize'].forEach(function (event) {
1721
- return _root['removeEventListener'](event, requestScroll);
1722
- });
1723
- return this;
1724
- };
1725
-
1726
- _proto.update = function update() {
1727
- setTimeout(function () {
1728
- _update();
1729
-
1730
- check();
1731
- }, 1);
1732
- };
1733
-
1734
- return Lazy;
1735
- }();
1736
-
1737
- function getLoc() {
1738
- // console.log(`window.scrollY:${window.scrollY} window.pageYOffset:${window.pageYOffset}`);
1739
- return window.scrollY || window.pageYOffset;
1740
- } // debounce helpers
1741
-
1742
-
1743
- function requestScroll() {
1744
- _prevLoc = getLoc();
1745
- requestFrame();
1746
- }
1747
-
1748
- function requestFrame() {
1749
- if (!_ticking) {
1750
- window.requestAnimationFrame(function () {
1751
- return check();
1752
- });
1753
- _ticking = true;
1754
- }
1755
- } // offset helper
1756
-
1757
- /**
1758
- * 节点相对视口的坐标,对于动态加载的,好像得到都是0,使用定时器延迟加载就能正确获取!
1759
- */
1760
-
1761
-
1762
- function getOffset(node) {
1763
- // 元素四个位置的相对于视口的坐标
1764
- return node.getBoundingClientRect().top + _prevLoc; // return node.offsetTop + _prevLoc;
1765
- }
1766
- /**
1767
- * 节点是否在可视窗口判断
1768
- * 通过可视窗口顶部、底部坐标来判断
1769
- * 顶部坐标就是页面的滚动条滚动的距离
1770
- * 底部坐标就是滚动条的距离加上当前可视窗口的高度
1771
- * dom元素中心:元素到最顶端的高度加上自身高度的一半
1772
- * @param {*} node
1773
- */
1774
-
1775
-
1776
- function inViewport(node) {
1777
- var viewTop = _prevLoc; // 视口顶部坐标
1778
-
1779
- var viewBot = viewTop + _windowHeight; // 视口底部坐标
1780
- // console.log(`viewTop:${viewTop} viewBot:${viewBot}`);
1781
- // 节点坐标
1782
-
1783
- var nodeTop = getOffset(node);
1784
- var nodeBot = nodeTop + node.offsetHeight; // console.log(`nodeTop:${nodeTop} nodeBot:${nodeBot}`);
1785
-
1786
- var offset = _opt.threshold / 100 * _windowHeight; // 节点在可视范围内
1787
-
1788
- var rc = nodeBot >= viewTop - offset && nodeTop <= viewBot + offset; // if (rc)
1789
- // console.log(`nodeBot:${nodeBot} >= view:${viewTop - offset} nodeTop:${nodeTop} <= view:${viewBot + offset}`);
1790
-
1791
- return rc;
1792
- } // source helper
1793
-
1794
-
1795
- function setSource(node) {
1796
- $.emit('lazy:src:before', node); // prefer srcset, fallback to pixel density
1797
-
1798
- if (_srcset && node.hasAttribute(_opt.srcset)) {
1799
- node.setAttribute('srcset', node.getAttribute(_opt.srcset));
1800
- } else {
1801
- var retina = _dpr > 1 && node.getAttribute(_opt.retina);
1802
- var src = retina || node.getAttribute(_opt.normal);
1803
- node.setAttribute('src', src);
1804
- console.log("set src:" + src);
1805
- }
1806
-
1807
- $.emit('lazy:src:after', node); // 删除懒加载属性,避免重复加载
1808
-
1809
- [_opt.normal, _opt.retina, _opt.srcset].forEach(function (attr) {
1810
- return node.removeAttribute(attr);
1811
- });
1812
-
1813
- _update();
1814
- }
1815
- /**
1816
- * 检查是否可视,如果可视则更改图片src,加载图片
1817
- * @returns {check}
1818
- */
1819
-
1820
-
1821
- function check() {
1822
- if (!_nodes) return;
1823
- _windowHeight = window.innerHeight;
1824
-
1825
- _nodes.forEach(function (node) {
1826
- return inViewport(node) && setSource(node);
1827
- });
1828
-
1829
- _ticking = false;
1830
- return this;
1831
- }
1832
- /**
1833
- * 新的图片加入dom,需重新获取属性为nor的图片节点,
1834
- * @returns {update}
1835
- */
1836
-
1837
-
1838
- function _update(root) {
1839
- if (root) _nodes = Array.prototype.slice.call(root.querySelectorAll("[" + _opt.normal + "]"));else _nodes = Array.prototype.slice.call(document.querySelectorAll("[" + _opt.normal + "]"));
1840
- return this;
1841
- }
1842
-
1843
- var Page = /*#__PURE__*/function (_Event) {
1844
- _inheritsLoose(Page, _Event);
1845
-
1846
- function Page(app, name, title, style) {
1847
- var _this;
1848
-
1849
- _this = _Event.call(this, null, [app]) || this;
1850
- _this.app = app;
1851
- _this.cfg = app.cfg;
1852
- _this.name = name; // 名称,支持带路径:admin/login
1853
-
1854
- _this.title = title; // 浏览器标题
1855
-
1856
- _this.style = style || "./page/" + name + ".css";
1857
- _this.path = "" + name; // url 路径,不使用正则,直接查找
1858
-
1859
- _this.view = null; // 页面的div层$Dom对象,router创建实例时赋值
1860
-
1861
- _this.el = null; // $dom
1862
-
1863
- _this.$el = null; // $dom
1864
-
1865
- _this.html = ''; // 页面html文本,router创建实例时赋值
1866
-
1867
- _this.css = ''; // 页面css样式,router创建实例时赋值
1868
-
1869
- _this.js = ''; // 页面代码,router创建实例时赋值
1870
-
1871
- _this.data = {}; // 页面数据对象
1872
-
1873
- _this.param = {}; // 页面切换传递进来的参数对象,router创建实例时赋值
1874
-
1875
- return _this;
1876
- }
1877
- /**
1878
- * 异步加载页面视图内容
1879
- * 返回Promise对象
1880
- * @param {*} param
1881
- * @param {*} cfg
1882
- */
1883
-
1884
-
1885
- var _proto = Page.prototype;
1886
-
1887
- _proto.load = function load(param) {
1888
- // $.assign(this.data, param);
1889
- this.emit('local::load pageLoad', param);
1890
- }
1891
- /**
1892
- * 在已经加载就绪的视图上操作
1893
- * @param {*} view 页面层的 Dom 对象,已经使用`$(#page-name)`,做了处理
1894
- * @param {*} param go 函数的参数,或 网址中 url 中的参数
1895
- * @param {*} back 是否为回退,A->B, B->A,这种操作属于回退
1896
- */
1897
- ;
1898
-
1899
- _proto.ready = function ready(view, param, back) {
1900
- // $.assign(this, {page, param, back});
1901
- // $.assign(this.data, param);
1902
- // 隐藏所有模板
1903
- this.init();
1904
- this.emit('local::ready pageReady', view, param, back);
1905
- }
1906
- /**
1907
- * 对页面进行初始化处理,或页面内容动态变更时,对局部页面容器进行初始化
1908
- * 具备name属性的dom节点直接赋值给页面view
1909
- * 只挂载一个,多个同名name,最后一个起作用,因此一个页面内,name不要重复
1910
- * 同节点多次调用不覆盖,同名不同dom节点,覆盖
1911
- * 覆盖后,原直接节点属性的 bind 会失效,需真的新的$dom重新bind
1912
- * @param {*} v dom 容器,默认为页面实例的view
1913
- */
1914
- ;
1915
-
1916
- _proto.init = function init(v) {
1917
- var view = this.view;
1918
- v = v ? $(v) : view; // 页面上带name属性节点,直接作为page.view的属性,方便页面代码直接调用
1919
-
1920
- var ns = v.qus('[name]');
1921
- ns === null || ns === void 0 ? void 0 : ns.forEach(function (n) {
1922
- var $n = $(n);
1923
- var name = $n.attr('name');
1924
- if (!view[name] || view[name].dom !== n) view[name] = $n;
1925
- }); // 隐藏所有模板
1926
-
1927
- v.qus('[name$=-tp]').hide(); // 防止空链接,刷新页面
1928
-
1929
- v.qus('a[href=""]').attr('href', 'javascript:;');
1930
- } // 显示已加载的页面
1931
- // view:页面Dom层,param:参数
1932
- ;
1933
-
1934
- _proto.show = function show(view, param) {
1935
- // 隐藏所有模板
1936
- view.qus('[name$=-tp]').hide(); // 防止空链接,刷新页面
1937
-
1938
- view.qus('a[href=""]').attr('href', 'javascript:;'); // this.init();
1939
-
1940
- if (this.reset) this.reset();
1941
- this.emit('local::show pageShow', view, param);
1942
- } // 回退显示已加载的页面
1943
- // view:页面Dom层,param:参数
1944
- ;
1945
-
1946
- _proto.back = function back(view, param) {
1947
- // 隐藏所有模板
1948
- view.qus('[name$=-tp]').hide(); // 防止空链接,刷新页面
1949
-
1950
- view.qus('a[href=""]').attr('href', 'javascript:;');
1951
- this.emit('local::back pageBack', view, param);
1952
- };
1953
-
1954
- _proto.hide = function hide(view) {
1955
- this.emit('local::hide pageHide', view);
1956
- };
1957
-
1958
- return Page;
1959
- }(Event);
1960
-
1961
- var openedModals = [];
1962
- var dialogsQueue = [];
1963
-
1964
- function clearDialogsQueue() {
1965
- if (dialogsQueue.length === 0) return;
1966
- var dialog = dialogsQueue.shift();
1967
- dialog.open();
1968
- }
1969
-
1970
- var Modal = /*#__PURE__*/function (_Event) {
1971
- _inheritsLoose(Modal, _Event);
1972
-
1973
- function Modal(app, params) {
1974
- var _this;
1975
-
1976
- _this = _Event.call(this, params, [app]) || this;
1977
-
1978
- var modal = _assertThisInitialized(_this);
1979
-
1980
- var defaults = {};
1981
- modal.params = Utils.extend(defaults, params);
1982
- modal.opened = false;
1983
- return _assertThisInitialized(_this) || _assertThisInitialized(_this);
1984
- }
1985
-
1986
- var _proto = Modal.prototype;
1987
-
1988
- _proto.onOpen = function onOpen() {
1989
- var modal = this;
1990
- modal.opened = true;
1991
- openedModals.push(modal);
1992
- $('html').addClass("with-modal-" + modal.type.toLowerCase());
1993
- modal.$el.trigger("modal:open " + modal.type.toLowerCase() + ":open");
1994
- modal.emit("local::open modalOpen " + modal.type + "Open", modal);
1995
- };
1996
-
1997
- _proto.onOpened = function onOpened() {
1998
- var modal = this;
1999
- modal.$el.trigger("modal:opened " + modal.type.toLowerCase() + ":opened");
2000
- modal.emit("local::opened modalOpened " + modal.type + "Opened", modal);
2001
- };
2002
-
2003
- _proto.onClose = function onClose() {
2004
- var modal = this;
2005
- modal.opened = false;
2006
- if (!modal.type || !modal.$el) return;
2007
- openedModals.splice(openedModals.indexOf(modal), 1);
2008
- $('html').removeClass("with-modal-" + modal.type.toLowerCase());
2009
- modal.$el.trigger("modal:close " + modal.type.toLowerCase() + ":close");
2010
- modal.emit("local::close modalClose " + modal.type + "Close", modal);
2011
- };
2012
-
2013
- _proto.onClosed = function onClosed() {
2014
- var modal = this;
2015
- if (!modal.type || !modal.$el) return;
2016
- modal.$el.removeClass('modal-out');
2017
- modal.$el.hide();
2018
- modal.$el.trigger("modal:closed " + modal.type.toLowerCase() + ":closed");
2019
- modal.emit("local::closed modalClosed " + modal.type + "Closed", modal);
2020
- };
2021
-
2022
- _proto.open = function open(animateModal) {
2023
- var modal = this;
2024
- var app = modal.app,
2025
- $el = modal.$el,
2026
- type = modal.type,
2027
- $backdropEl = modal.$backdropEl;
2028
- var moveToRoot = modal.params.moveToRoot;
2029
- var animate = true;
2030
- if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
2031
- animate = modal.params.animate;
2032
- }
2033
-
2034
- if (!$el || $el.hasClass('modal-in')) {
2035
- return modal;
2036
- }
2037
-
2038
- if (type === 'dialog' && app.params.modal.queueDialogs) {
2039
- var pushToQueue;
2040
-
2041
- if ($('.dialog.modal-in').length > 0) {
2042
- pushToQueue = true;
2043
- } else if (openedModals.length > 0) {
2044
- openedModals.forEach(function (openedModal) {
2045
- if (openedModal.type === 'dialog') pushToQueue = true;
2046
- });
2047
- }
2048
-
2049
- if (pushToQueue) {
2050
- dialogsQueue.push(modal);
2051
- return modal;
2052
- }
2053
- }
2054
-
2055
- var $modalParentEl = $el.parent();
2056
- var wasInDom = $el.parents(document).length > 0;
2057
-
2058
- if (moveToRoot && app.params.modal.moveToRoot && !$modalParentEl.is(app.root)) {
2059
- app.root.append($el);
2060
- modal.once(type + "Closed", function () {
2061
- if (wasInDom) {
2062
- $modalParentEl.append($el);
2063
- } else {
2064
- $el.remove();
2065
- }
2066
- });
2067
- } // Show Modal
2068
-
2069
-
2070
- $el.show();
2071
- /* eslint no-underscore-dangle: ["error", { "allow": ["_clientLeft"] }] */
2072
-
2073
- modal._clientLeft = $el[0].clientLeft; // Modal
2074
-
2075
- function transitionEnd() {
2076
- if ($el.hasClass('modal-out')) {
2077
- modal.onClosed();
2078
- } else if ($el.hasClass('modal-in')) {
2079
- modal.onOpened();
2080
- }
2081
- }
2082
-
2083
- if (animate) {
2084
- if ($backdropEl) {
2085
- $backdropEl.removeClass('not-animated');
2086
- $backdropEl.addClass('backdrop-in');
2087
- }
2088
-
2089
- $el.animationEnd(function () {
2090
- transitionEnd();
2091
- });
2092
- $el.transitionEnd(function () {
2093
- transitionEnd();
2094
- });
2095
- $el.removeClass('modal-out not-animated').addClass('modal-in');
2096
- modal.onOpen();
2097
- } else {
2098
- if ($backdropEl) {
2099
- $backdropEl.addClass('backdrop-in not-animated');
2100
- }
2101
-
2102
- $el.removeClass('modal-out').addClass('modal-in not-animated');
2103
- modal.onOpen();
2104
- modal.onOpened();
2105
- }
2106
-
2107
- return modal;
2108
- };
2109
-
2110
- _proto.close = function close(animateModal) {
2111
- var modal = this;
2112
- var $el = modal.$el;
2113
- var $backdropEl = modal.$backdropEl;
2114
- var animate = true;
2115
- if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
2116
- animate = modal.params.animate;
2117
- }
2118
-
2119
- if (!$el || !$el.hasClass('modal-in')) {
2120
- if (dialogsQueue.indexOf(modal) >= 0) {
2121
- dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);
2122
- }
2123
-
2124
- return modal;
2125
- } // backdrop
2126
-
2127
-
2128
- if ($backdropEl) {
2129
- var needToHideBackdrop = true;
2130
-
2131
- if (modal.type === 'popup') {
2132
- modal.$el.prevAll('.popup.modal-in').each(function (index, popupEl) {
2133
- var popupInstance = popupEl.f7Modal;
2134
- if (!popupInstance) return;
2135
-
2136
- if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {
2137
- needToHideBackdrop = false;
2138
- }
2139
- });
2140
- }
2141
-
2142
- if (needToHideBackdrop) {
2143
- $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
2144
- $backdropEl.removeClass('backdrop-in');
2145
- }
2146
- } // Modal
2147
-
2148
-
2149
- $el[animate ? 'removeClass' : 'addClass']('not-animated');
2150
-
2151
- function transitionEnd() {
2152
- if ($el.hasClass('modal-out')) {
2153
- modal.onClosed();
2154
- } else if ($el.hasClass('modal-in')) {
2155
- modal.onOpened();
2156
- }
2157
- }
2158
-
2159
- if (animate) {
2160
- $el.animationEnd(function () {
2161
- transitionEnd();
2162
- });
2163
- $el.transitionEnd(function () {
2164
- transitionEnd();
2165
- });
2166
- $el.removeClass('modal-in').addClass('modal-out'); // Emit close
2167
-
2168
- modal.onClose();
2169
- } else {
2170
- $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out'); // Emit close
2171
-
2172
- modal.onClose();
2173
- modal.onClosed();
2174
- }
2175
-
2176
- if (modal.type === 'dialog') {
2177
- clearDialogsQueue();
2178
- }
2179
-
2180
- return modal;
2181
- };
2182
-
2183
- _proto.destroy = function destroy() {
2184
- var modal = this;
2185
- if (modal.destroyed) return;
2186
- modal.emit("local::beforeDestroy modalBeforeDestroy " + modal.type + "BeforeDestroy", modal);
2187
-
2188
- if (modal.$el) {
2189
- modal.$el.trigger("modal:beforedestroy " + modal.type.toLowerCase() + ":beforedestroy");
2190
-
2191
- if (modal.$el.length && modal.$el[0].f7Modal) {
2192
- delete modal.$el[0].f7Modal;
2193
- }
2194
- }
2195
-
2196
- Utils.deleteProps(modal);
2197
- modal.destroyed = true;
2198
- };
2199
-
2200
- return Modal;
2201
- }(Event);
2202
-
2203
- // replace react, use by @babel/plugin-transform-react-jsx
2204
-
2205
- /* eslint-disable prefer-rest-params */
2206
- function jsx(tag, props) {
2207
- var attrs = props || {};
2208
-
2209
- for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
2210
- args[_key - 2] = arguments[_key];
2211
- }
2212
-
2213
- var children = args || [];
2214
- var attrsString = Object.keys(attrs).map(function (attr) {
2215
- if (attr[0] === '_') {
2216
- if (attrs[attr]) return attr.replace('_', '');
2217
- return '';
2218
- }
2219
-
2220
- return attr + "=\"" + attrs[attr] + "\"";
2221
- }).filter(function (attr) {
2222
- return !!attr;
2223
- }).join(' ');
2224
-
2225
- if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {
2226
- return ("<" + tag + " " + attrsString + " />").trim();
2227
- }
2228
-
2229
- var childrenContent = children.filter(function (c) {
2230
- return !!c;
2231
- }).map(function (c) {
2232
- return Array.isArray(c) ? c.join('') : c;
2233
- }).join('');
2234
- return ("<" + tag + " " + attrsString + ">" + childrenContent + "</" + tag + ">").trim();
2235
- }
2236
-
2237
- // export {default as Device} from './device';
2238
-
2239
- var Support = $.support;
2240
- var Device = $.device;
2241
-
2242
- exports.Ajax = Ajax;
2243
- exports.App = App;
2244
- exports.Constructors = Constructors;
2245
- exports.Device = Device;
2246
- exports.Event = Event;
2247
- exports.Lazy = Lazy;
2248
- exports.Modal = Modal;
2249
- exports.Modals = Modals;
2250
- exports.Module = Module;
2251
- exports.Page = Page;
2252
- exports.Resize = Resize;
2253
- exports.SW = SW$1;
2254
- exports.Support = Support;
2255
- exports.Utils = Utils;
2256
- exports.jsx = jsx;
2257
- exports.loadModule = loadModule;