1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | (function (global, factory) {
|
14 | typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
15 | typeof define === 'function' && define.amd ? define(factory) :
|
16 | (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Framework7 = factory());
|
17 | }(this, (function () { 'use strict';
|
18 |
|
19 | |
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 | function isObject$2(obj) {
|
33 | return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;
|
34 | }
|
35 |
|
36 | function extend$2(target, src) {
|
37 | if (target === void 0) {
|
38 | target = {};
|
39 | }
|
40 |
|
41 | if (src === void 0) {
|
42 | src = {};
|
43 | }
|
44 |
|
45 | Object.keys(src).forEach(function (key) {
|
46 | if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) {
|
47 | extend$2(target[key], src[key]);
|
48 | }
|
49 | });
|
50 | }
|
51 |
|
52 | var ssrDocument = {
|
53 | body: {},
|
54 | addEventListener: function addEventListener() {},
|
55 | removeEventListener: function removeEventListener() {},
|
56 | activeElement: {
|
57 | blur: function blur() {},
|
58 | nodeName: ''
|
59 | },
|
60 | querySelector: function querySelector() {
|
61 | return null;
|
62 | },
|
63 | querySelectorAll: function querySelectorAll() {
|
64 | return [];
|
65 | },
|
66 | getElementById: function getElementById() {
|
67 | return null;
|
68 | },
|
69 | createEvent: function createEvent() {
|
70 | return {
|
71 | initEvent: function initEvent() {}
|
72 | };
|
73 | },
|
74 | createElement: function createElement() {
|
75 | return {
|
76 | children: [],
|
77 | childNodes: [],
|
78 | style: {},
|
79 | setAttribute: function setAttribute() {},
|
80 | getElementsByTagName: function getElementsByTagName() {
|
81 | return [];
|
82 | }
|
83 | };
|
84 | },
|
85 | createElementNS: function createElementNS() {
|
86 | return {};
|
87 | },
|
88 | importNode: function importNode() {
|
89 | return null;
|
90 | },
|
91 | location: {
|
92 | hash: '',
|
93 | host: '',
|
94 | hostname: '',
|
95 | href: '',
|
96 | origin: '',
|
97 | pathname: '',
|
98 | protocol: '',
|
99 | search: ''
|
100 | }
|
101 | };
|
102 |
|
103 | function getDocument() {
|
104 | var doc = typeof document !== 'undefined' ? document : {};
|
105 | extend$2(doc, ssrDocument);
|
106 | return doc;
|
107 | }
|
108 |
|
109 | var ssrWindow = {
|
110 | document: ssrDocument,
|
111 | navigator: {
|
112 | userAgent: ''
|
113 | },
|
114 | location: {
|
115 | hash: '',
|
116 | host: '',
|
117 | hostname: '',
|
118 | href: '',
|
119 | origin: '',
|
120 | pathname: '',
|
121 | protocol: '',
|
122 | search: ''
|
123 | },
|
124 | history: {
|
125 | replaceState: function replaceState() {},
|
126 | pushState: function pushState() {},
|
127 | go: function go() {},
|
128 | back: function back() {}
|
129 | },
|
130 | CustomEvent: function CustomEvent() {
|
131 | return this;
|
132 | },
|
133 | addEventListener: function addEventListener() {},
|
134 | removeEventListener: function removeEventListener() {},
|
135 | getComputedStyle: function getComputedStyle() {
|
136 | return {
|
137 | getPropertyValue: function getPropertyValue() {
|
138 | return '';
|
139 | }
|
140 | };
|
141 | },
|
142 | Image: function Image() {},
|
143 | Date: function Date() {},
|
144 | screen: {},
|
145 | setTimeout: function setTimeout() {},
|
146 | clearTimeout: function clearTimeout() {},
|
147 | matchMedia: function matchMedia() {
|
148 | return {};
|
149 | },
|
150 | requestAnimationFrame: function requestAnimationFrame(callback) {
|
151 | if (typeof setTimeout === 'undefined') {
|
152 | callback();
|
153 | return null;
|
154 | }
|
155 |
|
156 | return setTimeout(callback, 0);
|
157 | },
|
158 | cancelAnimationFrame: function cancelAnimationFrame(id) {
|
159 | if (typeof setTimeout === 'undefined') {
|
160 | return;
|
161 | }
|
162 |
|
163 | clearTimeout(id);
|
164 | }
|
165 | };
|
166 |
|
167 | function getWindow() {
|
168 | var win = typeof window !== 'undefined' ? window : {};
|
169 | extend$2(win, ssrWindow);
|
170 | return win;
|
171 | }
|
172 |
|
173 | |
174 |
|
175 |
|
176 |
|
177 |
|
178 |
|
179 |
|
180 |
|
181 |
|
182 |
|
183 |
|
184 |
|
185 | function _inheritsLoose$1(subClass, superClass) {
|
186 | subClass.prototype = Object.create(superClass.prototype);
|
187 | subClass.prototype.constructor = subClass;
|
188 | subClass.__proto__ = superClass;
|
189 | }
|
190 |
|
191 | function _getPrototypeOf$1(o) {
|
192 | _getPrototypeOf$1 = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
|
193 | return o.__proto__ || Object.getPrototypeOf(o);
|
194 | };
|
195 | return _getPrototypeOf$1(o);
|
196 | }
|
197 |
|
198 | function _setPrototypeOf$1(o, p) {
|
199 | _setPrototypeOf$1 = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
200 | o.__proto__ = p;
|
201 | return o;
|
202 | };
|
203 |
|
204 | return _setPrototypeOf$1(o, p);
|
205 | }
|
206 |
|
207 | function _isNativeReflectConstruct$1() {
|
208 | if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
209 | if (Reflect.construct.sham) return false;
|
210 | if (typeof Proxy === "function") return true;
|
211 |
|
212 | try {
|
213 | Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
|
214 | return true;
|
215 | } catch (e) {
|
216 | return false;
|
217 | }
|
218 | }
|
219 |
|
220 | function _construct$1(Parent, args, Class) {
|
221 | if (_isNativeReflectConstruct$1()) {
|
222 | _construct$1 = Reflect.construct;
|
223 | } else {
|
224 | _construct$1 = function _construct(Parent, args, Class) {
|
225 | var a = [null];
|
226 | a.push.apply(a, args);
|
227 | var Constructor = Function.bind.apply(Parent, a);
|
228 | var instance = new Constructor();
|
229 | if (Class) _setPrototypeOf$1(instance, Class.prototype);
|
230 | return instance;
|
231 | };
|
232 | }
|
233 |
|
234 | return _construct$1.apply(null, arguments);
|
235 | }
|
236 |
|
237 | function _isNativeFunction$1(fn) {
|
238 | return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
239 | }
|
240 |
|
241 | function _wrapNativeSuper$1(Class) {
|
242 | var _cache = typeof Map === "function" ? new Map() : undefined;
|
243 |
|
244 | _wrapNativeSuper$1 = function _wrapNativeSuper(Class) {
|
245 | if (Class === null || !_isNativeFunction$1(Class)) return Class;
|
246 |
|
247 | if (typeof Class !== "function") {
|
248 | throw new TypeError("Super expression must either be null or a function");
|
249 | }
|
250 |
|
251 | if (typeof _cache !== "undefined") {
|
252 | if (_cache.has(Class)) return _cache.get(Class);
|
253 |
|
254 | _cache.set(Class, Wrapper);
|
255 | }
|
256 |
|
257 | function Wrapper() {
|
258 | return _construct$1(Class, arguments, _getPrototypeOf$1(this).constructor);
|
259 | }
|
260 |
|
261 | Wrapper.prototype = Object.create(Class.prototype, {
|
262 | constructor: {
|
263 | value: Wrapper,
|
264 | enumerable: false,
|
265 | writable: true,
|
266 | configurable: true
|
267 | }
|
268 | });
|
269 | return _setPrototypeOf$1(Wrapper, Class);
|
270 | };
|
271 |
|
272 | return _wrapNativeSuper$1(Class);
|
273 | }
|
274 |
|
275 | function _assertThisInitialized$1(self) {
|
276 | if (self === void 0) {
|
277 | throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
278 | }
|
279 |
|
280 | return self;
|
281 | }
|
282 |
|
283 |
|
284 |
|
285 | function makeReactive(obj) {
|
286 | var proto = obj.__proto__;
|
287 | Object.defineProperty(obj, '__proto__', {
|
288 | get: function get() {
|
289 | return proto;
|
290 | },
|
291 | set: function set(value) {
|
292 | proto.__proto__ = value;
|
293 | }
|
294 | });
|
295 | }
|
296 |
|
297 | var Dom7 = function (_Array) {
|
298 | _inheritsLoose$1(Dom7, _Array);
|
299 |
|
300 | function Dom7(items) {
|
301 | var _this;
|
302 |
|
303 | _this = _Array.call.apply(_Array, [this].concat(items)) || this;
|
304 | makeReactive(_assertThisInitialized$1(_this));
|
305 | return _this;
|
306 | }
|
307 |
|
308 | return Dom7;
|
309 | }( _wrapNativeSuper$1(Array));
|
310 |
|
311 | function arrayFlat(arr) {
|
312 | if (arr === void 0) {
|
313 | arr = [];
|
314 | }
|
315 |
|
316 | var res = [];
|
317 | arr.forEach(function (el) {
|
318 | if (Array.isArray(el)) {
|
319 | res.push.apply(res, arrayFlat(el));
|
320 | } else {
|
321 | res.push(el);
|
322 | }
|
323 | });
|
324 | return res;
|
325 | }
|
326 |
|
327 | function arrayFilter(arr, callback) {
|
328 | return Array.prototype.filter.call(arr, callback);
|
329 | }
|
330 |
|
331 | function arrayUnique(arr) {
|
332 | var uniqueArray = [];
|
333 |
|
334 | for (var i = 0; i < arr.length; i += 1) {
|
335 | if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);
|
336 | }
|
337 |
|
338 | return uniqueArray;
|
339 | }
|
340 |
|
341 | function toCamelCase$1(string) {
|
342 | return string.toLowerCase().replace(/-(.)/g, function (match, group) {
|
343 | return group.toUpperCase();
|
344 | });
|
345 | }
|
346 |
|
347 | function qsa(selector, context) {
|
348 | if (typeof selector !== 'string') {
|
349 | return [selector];
|
350 | }
|
351 |
|
352 | var a = [];
|
353 | var res = context.querySelectorAll(selector);
|
354 |
|
355 | for (var i = 0; i < res.length; i += 1) {
|
356 | a.push(res[i]);
|
357 | }
|
358 |
|
359 | return a;
|
360 | }
|
361 |
|
362 | function $$1(selector, context) {
|
363 | var window = getWindow();
|
364 | var document = getDocument();
|
365 | var arr = [];
|
366 |
|
367 | if (!context && selector instanceof Dom7) {
|
368 | return selector;
|
369 | }
|
370 |
|
371 | if (!selector) {
|
372 | return new Dom7(arr);
|
373 | }
|
374 |
|
375 | if (typeof selector === 'string') {
|
376 | var html = selector.trim();
|
377 |
|
378 | if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {
|
379 | var toCreate = 'div';
|
380 | if (html.indexOf('<li') === 0) toCreate = 'ul';
|
381 | if (html.indexOf('<tr') === 0) toCreate = 'tbody';
|
382 | if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';
|
383 | if (html.indexOf('<tbody') === 0) toCreate = 'table';
|
384 | if (html.indexOf('<option') === 0) toCreate = 'select';
|
385 | var tempParent = document.createElement(toCreate);
|
386 | tempParent.innerHTML = html;
|
387 |
|
388 | for (var i = 0; i < tempParent.childNodes.length; i += 1) {
|
389 | arr.push(tempParent.childNodes[i]);
|
390 | }
|
391 | } else {
|
392 | arr = qsa(selector.trim(), context || document);
|
393 | }
|
394 |
|
395 | } else if (selector.nodeType || selector === window || selector === document) {
|
396 | arr.push(selector);
|
397 | } else if (Array.isArray(selector)) {
|
398 | if (selector instanceof Dom7) return selector;
|
399 | arr = selector;
|
400 | }
|
401 |
|
402 | return new Dom7(arrayUnique(arr));
|
403 | }
|
404 |
|
405 | $$1.fn = Dom7.prototype;
|
406 |
|
407 | function addClass() {
|
408 | for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) {
|
409 | classes[_key] = arguments[_key];
|
410 | }
|
411 |
|
412 | var classNames = arrayFlat(classes.map(function (c) {
|
413 | return c.split(' ');
|
414 | }));
|
415 | this.forEach(function (el) {
|
416 | var _el$classList;
|
417 |
|
418 | (_el$classList = el.classList).add.apply(_el$classList, classNames);
|
419 | });
|
420 | return this;
|
421 | }
|
422 |
|
423 | function removeClass() {
|
424 | for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
425 | classes[_key2] = arguments[_key2];
|
426 | }
|
427 |
|
428 | var classNames = arrayFlat(classes.map(function (c) {
|
429 | return c.split(' ');
|
430 | }));
|
431 | this.forEach(function (el) {
|
432 | var _el$classList2;
|
433 |
|
434 | (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames);
|
435 | });
|
436 | return this;
|
437 | }
|
438 |
|
439 | function toggleClass() {
|
440 | for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
441 | classes[_key3] = arguments[_key3];
|
442 | }
|
443 |
|
444 | var classNames = arrayFlat(classes.map(function (c) {
|
445 | return c.split(' ');
|
446 | }));
|
447 | this.forEach(function (el) {
|
448 | classNames.forEach(function (className) {
|
449 | el.classList.toggle(className);
|
450 | });
|
451 | });
|
452 | }
|
453 |
|
454 | function hasClass() {
|
455 | for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
456 | classes[_key4] = arguments[_key4];
|
457 | }
|
458 |
|
459 | var classNames = arrayFlat(classes.map(function (c) {
|
460 | return c.split(' ');
|
461 | }));
|
462 | return arrayFilter(this, function (el) {
|
463 | return classNames.filter(function (className) {
|
464 | return el.classList.contains(className);
|
465 | }).length > 0;
|
466 | }).length > 0;
|
467 | }
|
468 |
|
469 | function attr(attrs, value) {
|
470 | if (arguments.length === 1 && typeof attrs === 'string') {
|
471 |
|
472 | if (this[0]) return this[0].getAttribute(attrs);
|
473 | return undefined;
|
474 | }
|
475 |
|
476 |
|
477 | for (var i = 0; i < this.length; i += 1) {
|
478 | if (arguments.length === 2) {
|
479 |
|
480 | this[i].setAttribute(attrs, value);
|
481 | } else {
|
482 |
|
483 | for (var attrName in attrs) {
|
484 | this[i][attrName] = attrs[attrName];
|
485 | this[i].setAttribute(attrName, attrs[attrName]);
|
486 | }
|
487 | }
|
488 | }
|
489 |
|
490 | return this;
|
491 | }
|
492 |
|
493 | function removeAttr(attr) {
|
494 | for (var i = 0; i < this.length; i += 1) {
|
495 | this[i].removeAttribute(attr);
|
496 | }
|
497 |
|
498 | return this;
|
499 | }
|
500 |
|
501 | function prop(props, value) {
|
502 | if (arguments.length === 1 && typeof props === 'string') {
|
503 |
|
504 | if (this[0]) return this[0][props];
|
505 | } else {
|
506 |
|
507 | for (var i = 0; i < this.length; i += 1) {
|
508 | if (arguments.length === 2) {
|
509 |
|
510 | this[i][props] = value;
|
511 | } else {
|
512 |
|
513 | for (var propName in props) {
|
514 | this[i][propName] = props[propName];
|
515 | }
|
516 | }
|
517 | }
|
518 |
|
519 | return this;
|
520 | }
|
521 |
|
522 | return this;
|
523 | }
|
524 |
|
525 | function data(key, value) {
|
526 | var el;
|
527 |
|
528 | if (typeof value === 'undefined') {
|
529 | el = this[0];
|
530 | if (!el) return undefined;
|
531 |
|
532 | if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {
|
533 | return el.dom7ElementDataStorage[key];
|
534 | }
|
535 |
|
536 | var dataKey = el.getAttribute("data-" + key);
|
537 |
|
538 | if (dataKey) {
|
539 | return dataKey;
|
540 | }
|
541 |
|
542 | return undefined;
|
543 | }
|
544 |
|
545 |
|
546 | for (var i = 0; i < this.length; i += 1) {
|
547 | el = this[i];
|
548 | if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};
|
549 | el.dom7ElementDataStorage[key] = value;
|
550 | }
|
551 |
|
552 | return this;
|
553 | }
|
554 |
|
555 | function removeData(key) {
|
556 | for (var i = 0; i < this.length; i += 1) {
|
557 | var el = this[i];
|
558 |
|
559 | if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {
|
560 | el.dom7ElementDataStorage[key] = null;
|
561 | delete el.dom7ElementDataStorage[key];
|
562 | }
|
563 | }
|
564 | }
|
565 |
|
566 | function dataset() {
|
567 | var el = this[0];
|
568 | if (!el) return undefined;
|
569 | var dataset = {};
|
570 |
|
571 | if (el.dataset) {
|
572 | for (var dataKey in el.dataset) {
|
573 | dataset[dataKey] = el.dataset[dataKey];
|
574 | }
|
575 | } else {
|
576 | for (var i = 0; i < el.attributes.length; i += 1) {
|
577 | var _attr = el.attributes[i];
|
578 |
|
579 | if (_attr.name.indexOf('data-') >= 0) {
|
580 | dataset[toCamelCase$1(_attr.name.split('data-')[1])] = _attr.value;
|
581 | }
|
582 | }
|
583 | }
|
584 |
|
585 | for (var key in dataset) {
|
586 | if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;
|
587 | }
|
588 |
|
589 | return dataset;
|
590 | }
|
591 |
|
592 | function val(value) {
|
593 | if (typeof value === 'undefined') {
|
594 |
|
595 | var el = this[0];
|
596 | if (!el) return undefined;
|
597 |
|
598 | if (el.multiple && el.nodeName.toLowerCase() === 'select') {
|
599 | var values = [];
|
600 |
|
601 | for (var i = 0; i < el.selectedOptions.length; i += 1) {
|
602 | values.push(el.selectedOptions[i].value);
|
603 | }
|
604 |
|
605 | return values;
|
606 | }
|
607 |
|
608 | return el.value;
|
609 | }
|
610 |
|
611 |
|
612 | for (var _i = 0; _i < this.length; _i += 1) {
|
613 | var _el = this[_i];
|
614 |
|
615 | if (Array.isArray(value) && _el.multiple && _el.nodeName.toLowerCase() === 'select') {
|
616 | for (var j = 0; j < _el.options.length; j += 1) {
|
617 | _el.options[j].selected = value.indexOf(_el.options[j].value) >= 0;
|
618 | }
|
619 | } else {
|
620 | _el.value = value;
|
621 | }
|
622 | }
|
623 |
|
624 | return this;
|
625 | }
|
626 |
|
627 | function value(value) {
|
628 | return this.val(value);
|
629 | }
|
630 |
|
631 | function transform(transform) {
|
632 | for (var i = 0; i < this.length; i += 1) {
|
633 | this[i].style.transform = transform;
|
634 | }
|
635 |
|
636 | return this;
|
637 | }
|
638 |
|
639 | function transition$1(duration) {
|
640 | for (var i = 0; i < this.length; i += 1) {
|
641 | this[i].style.transitionDuration = typeof duration !== 'string' ? duration + "ms" : duration;
|
642 | }
|
643 |
|
644 | return this;
|
645 | }
|
646 |
|
647 | function on() {
|
648 | for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
649 | args[_key5] = arguments[_key5];
|
650 | }
|
651 |
|
652 | var eventType = args[0],
|
653 | targetSelector = args[1],
|
654 | listener = args[2],
|
655 | capture = args[3];
|
656 |
|
657 | if (typeof args[1] === 'function') {
|
658 | eventType = args[0];
|
659 | listener = args[1];
|
660 | capture = args[2];
|
661 | targetSelector = undefined;
|
662 | }
|
663 |
|
664 | if (!capture) capture = false;
|
665 |
|
666 | function handleLiveEvent(e) {
|
667 | var target = e.target;
|
668 | if (!target) return;
|
669 | var eventData = e.target.dom7EventData || [];
|
670 |
|
671 | if (eventData.indexOf(e) < 0) {
|
672 | eventData.unshift(e);
|
673 | }
|
674 |
|
675 | if ($$1(target).is(targetSelector)) listener.apply(target, eventData);else {
|
676 | var _parents = $$1(target).parents();
|
677 |
|
678 |
|
679 | for (var k = 0; k < _parents.length; k += 1) {
|
680 | if ($$1(_parents[k]).is(targetSelector)) listener.apply(_parents[k], eventData);
|
681 | }
|
682 | }
|
683 | }
|
684 |
|
685 | function handleEvent(e) {
|
686 | var eventData = e && e.target ? e.target.dom7EventData || [] : [];
|
687 |
|
688 | if (eventData.indexOf(e) < 0) {
|
689 | eventData.unshift(e);
|
690 | }
|
691 |
|
692 | listener.apply(this, eventData);
|
693 | }
|
694 |
|
695 | var events = eventType.split(' ');
|
696 | var j;
|
697 |
|
698 | for (var i = 0; i < this.length; i += 1) {
|
699 | var el = this[i];
|
700 |
|
701 | if (!targetSelector) {
|
702 | for (j = 0; j < events.length; j += 1) {
|
703 | var event = events[j];
|
704 | if (!el.dom7Listeners) el.dom7Listeners = {};
|
705 | if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];
|
706 | el.dom7Listeners[event].push({
|
707 | listener: listener,
|
708 | proxyListener: handleEvent
|
709 | });
|
710 | el.addEventListener(event, handleEvent, capture);
|
711 | }
|
712 | } else {
|
713 |
|
714 | for (j = 0; j < events.length; j += 1) {
|
715 | var _event = events[j];
|
716 | if (!el.dom7LiveListeners) el.dom7LiveListeners = {};
|
717 | if (!el.dom7LiveListeners[_event]) el.dom7LiveListeners[_event] = [];
|
718 |
|
719 | el.dom7LiveListeners[_event].push({
|
720 | listener: listener,
|
721 | proxyListener: handleLiveEvent
|
722 | });
|
723 |
|
724 | el.addEventListener(_event, handleLiveEvent, capture);
|
725 | }
|
726 | }
|
727 | }
|
728 |
|
729 | return this;
|
730 | }
|
731 |
|
732 | function off() {
|
733 | for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
734 | args[_key6] = arguments[_key6];
|
735 | }
|
736 |
|
737 | var eventType = args[0],
|
738 | targetSelector = args[1],
|
739 | listener = args[2],
|
740 | capture = args[3];
|
741 |
|
742 | if (typeof args[1] === 'function') {
|
743 | eventType = args[0];
|
744 | listener = args[1];
|
745 | capture = args[2];
|
746 | targetSelector = undefined;
|
747 | }
|
748 |
|
749 | if (!capture) capture = false;
|
750 | var events = eventType.split(' ');
|
751 |
|
752 | for (var i = 0; i < events.length; i += 1) {
|
753 | var event = events[i];
|
754 |
|
755 | for (var j = 0; j < this.length; j += 1) {
|
756 | var el = this[j];
|
757 | var handlers = void 0;
|
758 |
|
759 | if (!targetSelector && el.dom7Listeners) {
|
760 | handlers = el.dom7Listeners[event];
|
761 | } else if (targetSelector && el.dom7LiveListeners) {
|
762 | handlers = el.dom7LiveListeners[event];
|
763 | }
|
764 |
|
765 | if (handlers && handlers.length) {
|
766 | for (var k = handlers.length - 1; k >= 0; k -= 1) {
|
767 | var handler = handlers[k];
|
768 |
|
769 | if (listener && handler.listener === listener) {
|
770 | el.removeEventListener(event, handler.proxyListener, capture);
|
771 | handlers.splice(k, 1);
|
772 | } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {
|
773 | el.removeEventListener(event, handler.proxyListener, capture);
|
774 | handlers.splice(k, 1);
|
775 | } else if (!listener) {
|
776 | el.removeEventListener(event, handler.proxyListener, capture);
|
777 | handlers.splice(k, 1);
|
778 | }
|
779 | }
|
780 | }
|
781 | }
|
782 | }
|
783 |
|
784 | return this;
|
785 | }
|
786 |
|
787 | function once() {
|
788 | var dom = this;
|
789 |
|
790 | for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
791 | args[_key7] = arguments[_key7];
|
792 | }
|
793 |
|
794 | var eventName = args[0],
|
795 | targetSelector = args[1],
|
796 | listener = args[2],
|
797 | capture = args[3];
|
798 |
|
799 | if (typeof args[1] === 'function') {
|
800 | eventName = args[0];
|
801 | listener = args[1];
|
802 | capture = args[2];
|
803 | targetSelector = undefined;
|
804 | }
|
805 |
|
806 | function onceHandler() {
|
807 | for (var _len8 = arguments.length, eventArgs = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
808 | eventArgs[_key8] = arguments[_key8];
|
809 | }
|
810 |
|
811 | listener.apply(this, eventArgs);
|
812 | dom.off(eventName, targetSelector, onceHandler, capture);
|
813 |
|
814 | if (onceHandler.dom7proxy) {
|
815 | delete onceHandler.dom7proxy;
|
816 | }
|
817 | }
|
818 |
|
819 | onceHandler.dom7proxy = listener;
|
820 | return dom.on(eventName, targetSelector, onceHandler, capture);
|
821 | }
|
822 |
|
823 | function trigger() {
|
824 | var window = getWindow();
|
825 |
|
826 | for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
827 | args[_key9] = arguments[_key9];
|
828 | }
|
829 |
|
830 | var events = args[0].split(' ');
|
831 | var eventData = args[1];
|
832 |
|
833 | for (var i = 0; i < events.length; i += 1) {
|
834 | var event = events[i];
|
835 |
|
836 | for (var j = 0; j < this.length; j += 1) {
|
837 | var el = this[j];
|
838 |
|
839 | if (window.CustomEvent) {
|
840 | var evt = new window.CustomEvent(event, {
|
841 | detail: eventData,
|
842 | bubbles: true,
|
843 | cancelable: true
|
844 | });
|
845 | el.dom7EventData = args.filter(function (data, dataIndex) {
|
846 | return dataIndex > 0;
|
847 | });
|
848 | el.dispatchEvent(evt);
|
849 | el.dom7EventData = [];
|
850 | delete el.dom7EventData;
|
851 | }
|
852 | }
|
853 | }
|
854 |
|
855 | return this;
|
856 | }
|
857 |
|
858 | function transitionEnd$1(callback) {
|
859 | var dom = this;
|
860 |
|
861 | function fireCallBack(e) {
|
862 | if (e.target !== this) return;
|
863 | callback.call(this, e);
|
864 | dom.off('transitionend', fireCallBack);
|
865 | }
|
866 |
|
867 | if (callback) {
|
868 | dom.on('transitionend', fireCallBack);
|
869 | }
|
870 |
|
871 | return this;
|
872 | }
|
873 |
|
874 | function animationEnd(callback) {
|
875 | var dom = this;
|
876 |
|
877 | function fireCallBack(e) {
|
878 | if (e.target !== this) return;
|
879 | callback.call(this, e);
|
880 | dom.off('animationend', fireCallBack);
|
881 | }
|
882 |
|
883 | if (callback) {
|
884 | dom.on('animationend', fireCallBack);
|
885 | }
|
886 |
|
887 | return this;
|
888 | }
|
889 |
|
890 | function width() {
|
891 | var window = getWindow();
|
892 |
|
893 | if (this[0] === window) {
|
894 | return window.innerWidth;
|
895 | }
|
896 |
|
897 | if (this.length > 0) {
|
898 | return parseFloat(this.css('width'));
|
899 | }
|
900 |
|
901 | return null;
|
902 | }
|
903 |
|
904 | function outerWidth(includeMargins) {
|
905 | if (this.length > 0) {
|
906 | if (includeMargins) {
|
907 | var _styles = this.styles();
|
908 |
|
909 | return this[0].offsetWidth + parseFloat(_styles.getPropertyValue('margin-right')) + parseFloat(_styles.getPropertyValue('margin-left'));
|
910 | }
|
911 |
|
912 | return this[0].offsetWidth;
|
913 | }
|
914 |
|
915 | return null;
|
916 | }
|
917 |
|
918 | function height() {
|
919 | var window = getWindow();
|
920 |
|
921 | if (this[0] === window) {
|
922 | return window.innerHeight;
|
923 | }
|
924 |
|
925 | if (this.length > 0) {
|
926 | return parseFloat(this.css('height'));
|
927 | }
|
928 |
|
929 | return null;
|
930 | }
|
931 |
|
932 | function outerHeight(includeMargins) {
|
933 | if (this.length > 0) {
|
934 | if (includeMargins) {
|
935 | var _styles2 = this.styles();
|
936 |
|
937 | return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue('margin-top')) + parseFloat(_styles2.getPropertyValue('margin-bottom'));
|
938 | }
|
939 |
|
940 | return this[0].offsetHeight;
|
941 | }
|
942 |
|
943 | return null;
|
944 | }
|
945 |
|
946 | function offset() {
|
947 | if (this.length > 0) {
|
948 | var window = getWindow();
|
949 | var document = getDocument();
|
950 | var el = this[0];
|
951 | var box = el.getBoundingClientRect();
|
952 | var body = document.body;
|
953 | var clientTop = el.clientTop || body.clientTop || 0;
|
954 | var clientLeft = el.clientLeft || body.clientLeft || 0;
|
955 | var scrollTop = el === window ? window.scrollY : el.scrollTop;
|
956 | var scrollLeft = el === window ? window.scrollX : el.scrollLeft;
|
957 | return {
|
958 | top: box.top + scrollTop - clientTop,
|
959 | left: box.left + scrollLeft - clientLeft
|
960 | };
|
961 | }
|
962 |
|
963 | return null;
|
964 | }
|
965 |
|
966 | function hide() {
|
967 | for (var i = 0; i < this.length; i += 1) {
|
968 | this[i].style.display = 'none';
|
969 | }
|
970 |
|
971 | return this;
|
972 | }
|
973 |
|
974 | function show() {
|
975 | var window = getWindow();
|
976 |
|
977 | for (var i = 0; i < this.length; i += 1) {
|
978 | var el = this[i];
|
979 |
|
980 | if (el.style.display === 'none') {
|
981 | el.style.display = '';
|
982 | }
|
983 |
|
984 | if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {
|
985 |
|
986 | el.style.display = 'block';
|
987 | }
|
988 | }
|
989 |
|
990 | return this;
|
991 | }
|
992 |
|
993 | function styles() {
|
994 | var window = getWindow();
|
995 | if (this[0]) return window.getComputedStyle(this[0], null);
|
996 | return {};
|
997 | }
|
998 |
|
999 | function css(props, value) {
|
1000 | var window = getWindow();
|
1001 | var i;
|
1002 |
|
1003 | if (arguments.length === 1) {
|
1004 | if (typeof props === 'string') {
|
1005 |
|
1006 | if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);
|
1007 | } else {
|
1008 |
|
1009 | for (i = 0; i < this.length; i += 1) {
|
1010 | for (var _prop in props) {
|
1011 | this[i].style[_prop] = props[_prop];
|
1012 | }
|
1013 | }
|
1014 |
|
1015 | return this;
|
1016 | }
|
1017 | }
|
1018 |
|
1019 | if (arguments.length === 2 && typeof props === 'string') {
|
1020 |
|
1021 | for (i = 0; i < this.length; i += 1) {
|
1022 | this[i].style[props] = value;
|
1023 | }
|
1024 |
|
1025 | return this;
|
1026 | }
|
1027 |
|
1028 | return this;
|
1029 | }
|
1030 |
|
1031 | function each(callback) {
|
1032 | if (!callback) return this;
|
1033 | this.forEach(function (el, index) {
|
1034 | callback.apply(el, [el, index]);
|
1035 | });
|
1036 | return this;
|
1037 | }
|
1038 |
|
1039 | function filter(callback) {
|
1040 | var result = arrayFilter(this, callback);
|
1041 | return $$1(result);
|
1042 | }
|
1043 |
|
1044 | function html(html) {
|
1045 | if (typeof html === 'undefined') {
|
1046 | return this[0] ? this[0].innerHTML : null;
|
1047 | }
|
1048 |
|
1049 | for (var i = 0; i < this.length; i += 1) {
|
1050 | this[i].innerHTML = html;
|
1051 | }
|
1052 |
|
1053 | return this;
|
1054 | }
|
1055 |
|
1056 | function text(text) {
|
1057 | if (typeof text === 'undefined') {
|
1058 | return this[0] ? this[0].textContent.trim() : null;
|
1059 | }
|
1060 |
|
1061 | for (var i = 0; i < this.length; i += 1) {
|
1062 | this[i].textContent = text;
|
1063 | }
|
1064 |
|
1065 | return this;
|
1066 | }
|
1067 |
|
1068 | function is(selector) {
|
1069 | var window = getWindow();
|
1070 | var document = getDocument();
|
1071 | var el = this[0];
|
1072 | var compareWith;
|
1073 | var i;
|
1074 | if (!el || typeof selector === 'undefined') return false;
|
1075 |
|
1076 | if (typeof selector === 'string') {
|
1077 | if (el.matches) return el.matches(selector);
|
1078 | if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);
|
1079 | if (el.msMatchesSelector) return el.msMatchesSelector(selector);
|
1080 | compareWith = $$1(selector);
|
1081 |
|
1082 | for (i = 0; i < compareWith.length; i += 1) {
|
1083 | if (compareWith[i] === el) return true;
|
1084 | }
|
1085 |
|
1086 | return false;
|
1087 | }
|
1088 |
|
1089 | if (selector === document) {
|
1090 | return el === document;
|
1091 | }
|
1092 |
|
1093 | if (selector === window) {
|
1094 | return el === window;
|
1095 | }
|
1096 |
|
1097 | if (selector.nodeType || selector instanceof Dom7) {
|
1098 | compareWith = selector.nodeType ? [selector] : selector;
|
1099 |
|
1100 | for (i = 0; i < compareWith.length; i += 1) {
|
1101 | if (compareWith[i] === el) return true;
|
1102 | }
|
1103 |
|
1104 | return false;
|
1105 | }
|
1106 |
|
1107 | return false;
|
1108 | }
|
1109 |
|
1110 | function index() {
|
1111 | var child = this[0];
|
1112 | var i;
|
1113 |
|
1114 | if (child) {
|
1115 | i = 0;
|
1116 |
|
1117 | while ((child = child.previousSibling) !== null) {
|
1118 | if (child.nodeType === 1) i += 1;
|
1119 | }
|
1120 |
|
1121 | return i;
|
1122 | }
|
1123 |
|
1124 | return undefined;
|
1125 | }
|
1126 |
|
1127 | function eq(index) {
|
1128 | if (typeof index === 'undefined') return this;
|
1129 | var length = this.length;
|
1130 |
|
1131 | if (index > length - 1) {
|
1132 | return $$1([]);
|
1133 | }
|
1134 |
|
1135 | if (index < 0) {
|
1136 | var returnIndex = length + index;
|
1137 | if (returnIndex < 0) return $$1([]);
|
1138 | return $$1([this[returnIndex]]);
|
1139 | }
|
1140 |
|
1141 | return $$1([this[index]]);
|
1142 | }
|
1143 |
|
1144 | function append() {
|
1145 | var newChild;
|
1146 | var document = getDocument();
|
1147 |
|
1148 | for (var k = 0; k < arguments.length; k += 1) {
|
1149 | newChild = k < 0 || arguments.length <= k ? undefined : arguments[k];
|
1150 |
|
1151 | for (var i = 0; i < this.length; i += 1) {
|
1152 | if (typeof newChild === 'string') {
|
1153 | var tempDiv = document.createElement('div');
|
1154 | tempDiv.innerHTML = newChild;
|
1155 |
|
1156 | while (tempDiv.firstChild) {
|
1157 | this[i].appendChild(tempDiv.firstChild);
|
1158 | }
|
1159 | } else if (newChild instanceof Dom7) {
|
1160 | for (var j = 0; j < newChild.length; j += 1) {
|
1161 | this[i].appendChild(newChild[j]);
|
1162 | }
|
1163 | } else {
|
1164 | this[i].appendChild(newChild);
|
1165 | }
|
1166 | }
|
1167 | }
|
1168 |
|
1169 | return this;
|
1170 | }
|
1171 |
|
1172 | function appendTo(parent) {
|
1173 | $$1(parent).append(this);
|
1174 | return this;
|
1175 | }
|
1176 |
|
1177 | function prepend(newChild) {
|
1178 | var document = getDocument();
|
1179 | var i;
|
1180 | var j;
|
1181 |
|
1182 | for (i = 0; i < this.length; i += 1) {
|
1183 | if (typeof newChild === 'string') {
|
1184 | var tempDiv = document.createElement('div');
|
1185 | tempDiv.innerHTML = newChild;
|
1186 |
|
1187 | for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {
|
1188 | this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);
|
1189 | }
|
1190 | } else if (newChild instanceof Dom7) {
|
1191 | for (j = 0; j < newChild.length; j += 1) {
|
1192 | this[i].insertBefore(newChild[j], this[i].childNodes[0]);
|
1193 | }
|
1194 | } else {
|
1195 | this[i].insertBefore(newChild, this[i].childNodes[0]);
|
1196 | }
|
1197 | }
|
1198 |
|
1199 | return this;
|
1200 | }
|
1201 |
|
1202 | function prependTo(parent) {
|
1203 | $$1(parent).prepend(this);
|
1204 | return this;
|
1205 | }
|
1206 |
|
1207 | function insertBefore$1(selector) {
|
1208 | var before = $$1(selector);
|
1209 |
|
1210 | for (var i = 0; i < this.length; i += 1) {
|
1211 | if (before.length === 1) {
|
1212 | before[0].parentNode.insertBefore(this[i], before[0]);
|
1213 | } else if (before.length > 1) {
|
1214 | for (var j = 0; j < before.length; j += 1) {
|
1215 | before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);
|
1216 | }
|
1217 | }
|
1218 | }
|
1219 | }
|
1220 |
|
1221 | function insertAfter(selector) {
|
1222 | var after = $$1(selector);
|
1223 |
|
1224 | for (var i = 0; i < this.length; i += 1) {
|
1225 | if (after.length === 1) {
|
1226 | after[0].parentNode.insertBefore(this[i], after[0].nextSibling);
|
1227 | } else if (after.length > 1) {
|
1228 | for (var j = 0; j < after.length; j += 1) {
|
1229 | after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);
|
1230 | }
|
1231 | }
|
1232 | }
|
1233 | }
|
1234 |
|
1235 | function next(selector) {
|
1236 | if (this.length > 0) {
|
1237 | if (selector) {
|
1238 | if (this[0].nextElementSibling && $$1(this[0].nextElementSibling).is(selector)) {
|
1239 | return $$1([this[0].nextElementSibling]);
|
1240 | }
|
1241 |
|
1242 | return $$1([]);
|
1243 | }
|
1244 |
|
1245 | if (this[0].nextElementSibling) return $$1([this[0].nextElementSibling]);
|
1246 | return $$1([]);
|
1247 | }
|
1248 |
|
1249 | return $$1([]);
|
1250 | }
|
1251 |
|
1252 | function nextAll(selector) {
|
1253 | var nextEls = [];
|
1254 | var el = this[0];
|
1255 | if (!el) return $$1([]);
|
1256 |
|
1257 | while (el.nextElementSibling) {
|
1258 | var _next = el.nextElementSibling;
|
1259 |
|
1260 | if (selector) {
|
1261 | if ($$1(_next).is(selector)) nextEls.push(_next);
|
1262 | } else nextEls.push(_next);
|
1263 |
|
1264 | el = _next;
|
1265 | }
|
1266 |
|
1267 | return $$1(nextEls);
|
1268 | }
|
1269 |
|
1270 | function prev(selector) {
|
1271 | if (this.length > 0) {
|
1272 | var el = this[0];
|
1273 |
|
1274 | if (selector) {
|
1275 | if (el.previousElementSibling && $$1(el.previousElementSibling).is(selector)) {
|
1276 | return $$1([el.previousElementSibling]);
|
1277 | }
|
1278 |
|
1279 | return $$1([]);
|
1280 | }
|
1281 |
|
1282 | if (el.previousElementSibling) return $$1([el.previousElementSibling]);
|
1283 | return $$1([]);
|
1284 | }
|
1285 |
|
1286 | return $$1([]);
|
1287 | }
|
1288 |
|
1289 | function prevAll(selector) {
|
1290 | var prevEls = [];
|
1291 | var el = this[0];
|
1292 | if (!el) return $$1([]);
|
1293 |
|
1294 | while (el.previousElementSibling) {
|
1295 | var _prev = el.previousElementSibling;
|
1296 |
|
1297 | if (selector) {
|
1298 | if ($$1(_prev).is(selector)) prevEls.push(_prev);
|
1299 | } else prevEls.push(_prev);
|
1300 |
|
1301 | el = _prev;
|
1302 | }
|
1303 |
|
1304 | return $$1(prevEls);
|
1305 | }
|
1306 |
|
1307 | function siblings(selector) {
|
1308 | return this.nextAll(selector).add(this.prevAll(selector));
|
1309 | }
|
1310 |
|
1311 | function parent(selector) {
|
1312 | var parents = [];
|
1313 |
|
1314 | for (var i = 0; i < this.length; i += 1) {
|
1315 | if (this[i].parentNode !== null) {
|
1316 | if (selector) {
|
1317 | if ($$1(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);
|
1318 | } else {
|
1319 | parents.push(this[i].parentNode);
|
1320 | }
|
1321 | }
|
1322 | }
|
1323 |
|
1324 | return $$1(parents);
|
1325 | }
|
1326 |
|
1327 | function parents(selector) {
|
1328 | var parents = [];
|
1329 |
|
1330 | for (var i = 0; i < this.length; i += 1) {
|
1331 | var _parent = this[i].parentNode;
|
1332 |
|
1333 | while (_parent) {
|
1334 | if (selector) {
|
1335 | if ($$1(_parent).is(selector)) parents.push(_parent);
|
1336 | } else {
|
1337 | parents.push(_parent);
|
1338 | }
|
1339 |
|
1340 | _parent = _parent.parentNode;
|
1341 | }
|
1342 | }
|
1343 |
|
1344 | return $$1(parents);
|
1345 | }
|
1346 |
|
1347 | function closest(selector) {
|
1348 | var closest = this;
|
1349 |
|
1350 | if (typeof selector === 'undefined') {
|
1351 | return $$1([]);
|
1352 | }
|
1353 |
|
1354 | if (!closest.is(selector)) {
|
1355 | closest = closest.parents(selector).eq(0);
|
1356 | }
|
1357 |
|
1358 | return closest;
|
1359 | }
|
1360 |
|
1361 | function find(selector) {
|
1362 | var foundElements = [];
|
1363 |
|
1364 | for (var i = 0; i < this.length; i += 1) {
|
1365 | var found = this[i].querySelectorAll(selector);
|
1366 |
|
1367 | for (var j = 0; j < found.length; j += 1) {
|
1368 | foundElements.push(found[j]);
|
1369 | }
|
1370 | }
|
1371 |
|
1372 | return $$1(foundElements);
|
1373 | }
|
1374 |
|
1375 | function children(selector) {
|
1376 | var children = [];
|
1377 |
|
1378 | for (var i = 0; i < this.length; i += 1) {
|
1379 | var childNodes = this[i].children;
|
1380 |
|
1381 | for (var j = 0; j < childNodes.length; j += 1) {
|
1382 | if (!selector || $$1(childNodes[j]).is(selector)) {
|
1383 | children.push(childNodes[j]);
|
1384 | }
|
1385 | }
|
1386 | }
|
1387 |
|
1388 | return $$1(children);
|
1389 | }
|
1390 |
|
1391 | function remove() {
|
1392 | for (var i = 0; i < this.length; i += 1) {
|
1393 | if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);
|
1394 | }
|
1395 |
|
1396 | return this;
|
1397 | }
|
1398 |
|
1399 | function detach() {
|
1400 | return this.remove();
|
1401 | }
|
1402 |
|
1403 | function add() {
|
1404 | var dom = this;
|
1405 | var i;
|
1406 | var j;
|
1407 |
|
1408 | for (var _len10 = arguments.length, els = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
1409 | els[_key10] = arguments[_key10];
|
1410 | }
|
1411 |
|
1412 | for (i = 0; i < els.length; i += 1) {
|
1413 | var toAdd = $$1(els[i]);
|
1414 |
|
1415 | for (j = 0; j < toAdd.length; j += 1) {
|
1416 | dom.push(toAdd[j]);
|
1417 | }
|
1418 | }
|
1419 |
|
1420 | return dom;
|
1421 | }
|
1422 |
|
1423 | function empty() {
|
1424 | for (var i = 0; i < this.length; i += 1) {
|
1425 | var el = this[i];
|
1426 |
|
1427 | if (el.nodeType === 1) {
|
1428 | for (var j = 0; j < el.childNodes.length; j += 1) {
|
1429 | if (el.childNodes[j].parentNode) {
|
1430 | el.childNodes[j].parentNode.removeChild(el.childNodes[j]);
|
1431 | }
|
1432 | }
|
1433 |
|
1434 | el.textContent = '';
|
1435 | }
|
1436 | }
|
1437 |
|
1438 | return this;
|
1439 | }
|
1440 |
|
1441 | function scrollTo() {
|
1442 | var window = getWindow();
|
1443 |
|
1444 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
1445 | args[_key] = arguments[_key];
|
1446 | }
|
1447 |
|
1448 | var left = args[0],
|
1449 | top = args[1],
|
1450 | duration = args[2],
|
1451 | easing = args[3],
|
1452 | callback = args[4];
|
1453 |
|
1454 | if (args.length === 4 && typeof easing === 'function') {
|
1455 | callback = easing;
|
1456 | left = args[0];
|
1457 | top = args[1];
|
1458 | duration = args[2];
|
1459 | callback = args[3];
|
1460 | easing = args[4];
|
1461 | }
|
1462 |
|
1463 | if (typeof easing === 'undefined') easing = 'swing';
|
1464 | return this.each(function animate() {
|
1465 | var el = this;
|
1466 | var currentTop;
|
1467 | var currentLeft;
|
1468 | var maxTop;
|
1469 | var maxLeft;
|
1470 | var newTop;
|
1471 | var newLeft;
|
1472 | var scrollTop;
|
1473 |
|
1474 | var scrollLeft;
|
1475 |
|
1476 | var animateTop = top > 0 || top === 0;
|
1477 | var animateLeft = left > 0 || left === 0;
|
1478 |
|
1479 | if (typeof easing === 'undefined') {
|
1480 | easing = 'swing';
|
1481 | }
|
1482 |
|
1483 | if (animateTop) {
|
1484 | currentTop = el.scrollTop;
|
1485 |
|
1486 | if (!duration) {
|
1487 | el.scrollTop = top;
|
1488 | }
|
1489 | }
|
1490 |
|
1491 | if (animateLeft) {
|
1492 | currentLeft = el.scrollLeft;
|
1493 |
|
1494 | if (!duration) {
|
1495 | el.scrollLeft = left;
|
1496 | }
|
1497 | }
|
1498 |
|
1499 | if (!duration) return;
|
1500 |
|
1501 | if (animateTop) {
|
1502 | maxTop = el.scrollHeight - el.offsetHeight;
|
1503 | newTop = Math.max(Math.min(top, maxTop), 0);
|
1504 | }
|
1505 |
|
1506 | if (animateLeft) {
|
1507 | maxLeft = el.scrollWidth - el.offsetWidth;
|
1508 | newLeft = Math.max(Math.min(left, maxLeft), 0);
|
1509 | }
|
1510 |
|
1511 | var startTime = null;
|
1512 | if (animateTop && newTop === currentTop) animateTop = false;
|
1513 | if (animateLeft && newLeft === currentLeft) animateLeft = false;
|
1514 |
|
1515 | function render(time) {
|
1516 | if (time === void 0) {
|
1517 | time = new Date().getTime();
|
1518 | }
|
1519 |
|
1520 | if (startTime === null) {
|
1521 | startTime = time;
|
1522 | }
|
1523 |
|
1524 | var progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
|
1525 | var easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;
|
1526 | var done;
|
1527 | if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);
|
1528 | if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);
|
1529 |
|
1530 | if (animateTop && newTop > currentTop && scrollTop >= newTop) {
|
1531 | el.scrollTop = newTop;
|
1532 | done = true;
|
1533 | }
|
1534 |
|
1535 | if (animateTop && newTop < currentTop && scrollTop <= newTop) {
|
1536 | el.scrollTop = newTop;
|
1537 | done = true;
|
1538 | }
|
1539 |
|
1540 | if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {
|
1541 | el.scrollLeft = newLeft;
|
1542 | done = true;
|
1543 | }
|
1544 |
|
1545 | if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {
|
1546 | el.scrollLeft = newLeft;
|
1547 | done = true;
|
1548 | }
|
1549 |
|
1550 | if (done) {
|
1551 | if (callback) callback();
|
1552 | return;
|
1553 | }
|
1554 |
|
1555 | if (animateTop) el.scrollTop = scrollTop;
|
1556 | if (animateLeft) el.scrollLeft = scrollLeft;
|
1557 | window.requestAnimationFrame(render);
|
1558 | }
|
1559 |
|
1560 | window.requestAnimationFrame(render);
|
1561 | });
|
1562 | }
|
1563 |
|
1564 |
|
1565 | function scrollTop() {
|
1566 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
1567 | args[_key2] = arguments[_key2];
|
1568 | }
|
1569 |
|
1570 | var top = args[0],
|
1571 | duration = args[1],
|
1572 | easing = args[2],
|
1573 | callback = args[3];
|
1574 |
|
1575 | if (args.length === 3 && typeof easing === 'function') {
|
1576 | top = args[0];
|
1577 | duration = args[1];
|
1578 | callback = args[2];
|
1579 | easing = args[3];
|
1580 | }
|
1581 |
|
1582 | var dom = this;
|
1583 |
|
1584 | if (typeof top === 'undefined') {
|
1585 | if (dom.length > 0) return dom[0].scrollTop;
|
1586 | return null;
|
1587 | }
|
1588 |
|
1589 | return dom.scrollTo(undefined, top, duration, easing, callback);
|
1590 | }
|
1591 |
|
1592 | function scrollLeft() {
|
1593 | for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
1594 | args[_key3] = arguments[_key3];
|
1595 | }
|
1596 |
|
1597 | var left = args[0],
|
1598 | duration = args[1],
|
1599 | easing = args[2],
|
1600 | callback = args[3];
|
1601 |
|
1602 | if (args.length === 3 && typeof easing === 'function') {
|
1603 | left = args[0];
|
1604 | duration = args[1];
|
1605 | callback = args[2];
|
1606 | easing = args[3];
|
1607 | }
|
1608 |
|
1609 | var dom = this;
|
1610 |
|
1611 | if (typeof left === 'undefined') {
|
1612 | if (dom.length > 0) return dom[0].scrollLeft;
|
1613 | return null;
|
1614 | }
|
1615 |
|
1616 | return dom.scrollTo(left, undefined, duration, easing, callback);
|
1617 | }
|
1618 |
|
1619 | function animate(initialProps, initialParams) {
|
1620 | var window = getWindow();
|
1621 | var els = this;
|
1622 | var a = {
|
1623 | props: Object.assign({}, initialProps),
|
1624 | params: Object.assign({
|
1625 | duration: 300,
|
1626 | easing: 'swing'
|
1627 |
|
1628 | |
1629 |
|
1630 |
|
1631 |
|
1632 |
|
1633 |
|
1634 | }, initialParams),
|
1635 | elements: els,
|
1636 | animating: false,
|
1637 | que: [],
|
1638 | easingProgress: function easingProgress(easing, progress) {
|
1639 | if (easing === 'swing') {
|
1640 | return 0.5 - Math.cos(progress * Math.PI) / 2;
|
1641 | }
|
1642 |
|
1643 | if (typeof easing === 'function') {
|
1644 | return easing(progress);
|
1645 | }
|
1646 |
|
1647 | return progress;
|
1648 | },
|
1649 | stop: function stop() {
|
1650 | if (a.frameId) {
|
1651 | window.cancelAnimationFrame(a.frameId);
|
1652 | }
|
1653 |
|
1654 | a.animating = false;
|
1655 | a.elements.each(function (el) {
|
1656 | var element = el;
|
1657 | delete element.dom7AnimateInstance;
|
1658 | });
|
1659 | a.que = [];
|
1660 | },
|
1661 | done: function done(complete) {
|
1662 | a.animating = false;
|
1663 | a.elements.each(function (el) {
|
1664 | var element = el;
|
1665 | delete element.dom7AnimateInstance;
|
1666 | });
|
1667 | if (complete) complete(els);
|
1668 |
|
1669 | if (a.que.length > 0) {
|
1670 | var que = a.que.shift();
|
1671 | a.animate(que[0], que[1]);
|
1672 | }
|
1673 | },
|
1674 | animate: function animate(props, params) {
|
1675 | if (a.animating) {
|
1676 | a.que.push([props, params]);
|
1677 | return a;
|
1678 | }
|
1679 |
|
1680 | var elements = [];
|
1681 |
|
1682 | a.elements.each(function (el, index) {
|
1683 | var initialFullValue;
|
1684 | var initialValue;
|
1685 | var unit;
|
1686 | var finalValue;
|
1687 | var finalFullValue;
|
1688 | if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;
|
1689 | elements[index] = {
|
1690 | container: el
|
1691 | };
|
1692 | Object.keys(props).forEach(function (prop) {
|
1693 | initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');
|
1694 | initialValue = parseFloat(initialFullValue);
|
1695 | unit = initialFullValue.replace(initialValue, '');
|
1696 | finalValue = parseFloat(props[prop]);
|
1697 | finalFullValue = props[prop] + unit;
|
1698 | elements[index][prop] = {
|
1699 | initialFullValue: initialFullValue,
|
1700 | initialValue: initialValue,
|
1701 | unit: unit,
|
1702 | finalValue: finalValue,
|
1703 | finalFullValue: finalFullValue,
|
1704 | currentValue: initialValue
|
1705 | };
|
1706 | });
|
1707 | });
|
1708 | var startTime = null;
|
1709 | var time;
|
1710 | var elementsDone = 0;
|
1711 | var propsDone = 0;
|
1712 | var done;
|
1713 | var began = false;
|
1714 | a.animating = true;
|
1715 |
|
1716 | function render() {
|
1717 | time = new Date().getTime();
|
1718 | var progress;
|
1719 | var easeProgress;
|
1720 |
|
1721 | if (!began) {
|
1722 | began = true;
|
1723 | if (params.begin) params.begin(els);
|
1724 | }
|
1725 |
|
1726 | if (startTime === null) {
|
1727 | startTime = time;
|
1728 | }
|
1729 |
|
1730 | if (params.progress) {
|
1731 |
|
1732 | params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);
|
1733 | }
|
1734 |
|
1735 | elements.forEach(function (element) {
|
1736 | var el = element;
|
1737 | if (done || el.done) return;
|
1738 | Object.keys(props).forEach(function (prop) {
|
1739 | if (done || el.done) return;
|
1740 | progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);
|
1741 | easeProgress = a.easingProgress(params.easing, progress);
|
1742 | var _el$prop = el[prop],
|
1743 | initialValue = _el$prop.initialValue,
|
1744 | finalValue = _el$prop.finalValue,
|
1745 | unit = _el$prop.unit;
|
1746 | el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);
|
1747 | var currentValue = el[prop].currentValue;
|
1748 |
|
1749 | if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {
|
1750 | el.container.style[prop] = finalValue + unit;
|
1751 | propsDone += 1;
|
1752 |
|
1753 | if (propsDone === Object.keys(props).length) {
|
1754 | el.done = true;
|
1755 | elementsDone += 1;
|
1756 | }
|
1757 |
|
1758 | if (elementsDone === elements.length) {
|
1759 | done = true;
|
1760 | }
|
1761 | }
|
1762 |
|
1763 | if (done) {
|
1764 | a.done(params.complete);
|
1765 | return;
|
1766 | }
|
1767 |
|
1768 | el.container.style[prop] = currentValue + unit;
|
1769 | });
|
1770 | });
|
1771 | if (done) return;
|
1772 |
|
1773 | a.frameId = window.requestAnimationFrame(render);
|
1774 | }
|
1775 |
|
1776 | a.frameId = window.requestAnimationFrame(render);
|
1777 | return a;
|
1778 | }
|
1779 | };
|
1780 |
|
1781 | if (a.elements.length === 0) {
|
1782 | return els;
|
1783 | }
|
1784 |
|
1785 | var animateInstance;
|
1786 |
|
1787 | for (var i = 0; i < a.elements.length; i += 1) {
|
1788 | if (a.elements[i].dom7AnimateInstance) {
|
1789 | animateInstance = a.elements[i].dom7AnimateInstance;
|
1790 | } else a.elements[i].dom7AnimateInstance = a;
|
1791 | }
|
1792 |
|
1793 | if (!animateInstance) {
|
1794 | animateInstance = a;
|
1795 | }
|
1796 |
|
1797 | if (initialProps === 'stop') {
|
1798 | animateInstance.stop();
|
1799 | } else {
|
1800 | animateInstance.animate(a.props, a.params);
|
1801 | }
|
1802 |
|
1803 | return els;
|
1804 | }
|
1805 |
|
1806 | function stop() {
|
1807 | var els = this;
|
1808 |
|
1809 | for (var i = 0; i < els.length; i += 1) {
|
1810 | if (els[i].dom7AnimateInstance) {
|
1811 | els[i].dom7AnimateInstance.stop();
|
1812 | }
|
1813 | }
|
1814 | }
|
1815 |
|
1816 | var noTrigger = 'resize scroll'.split(' ');
|
1817 |
|
1818 | function shortcut(name) {
|
1819 | function eventHandler() {
|
1820 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
1821 | args[_key] = arguments[_key];
|
1822 | }
|
1823 |
|
1824 | if (typeof args[0] === 'undefined') {
|
1825 | for (var i = 0; i < this.length; i += 1) {
|
1826 | if (noTrigger.indexOf(name) < 0) {
|
1827 | if (name in this[i]) this[i][name]();else {
|
1828 | $$1(this[i]).trigger(name);
|
1829 | }
|
1830 | }
|
1831 | }
|
1832 |
|
1833 | return this;
|
1834 | }
|
1835 |
|
1836 | return this.on.apply(this, [name].concat(args));
|
1837 | }
|
1838 |
|
1839 | return eventHandler;
|
1840 | }
|
1841 |
|
1842 | var click = shortcut('click');
|
1843 | var blur = shortcut('blur');
|
1844 | var focus = shortcut('focus');
|
1845 | var focusin = shortcut('focusin');
|
1846 | var focusout = shortcut('focusout');
|
1847 | var keyup = shortcut('keyup');
|
1848 | var keydown = shortcut('keydown');
|
1849 | var keypress = shortcut('keypress');
|
1850 | var submit = shortcut('submit');
|
1851 | var change = shortcut('change');
|
1852 | var mousedown = shortcut('mousedown');
|
1853 | var mousemove = shortcut('mousemove');
|
1854 | var mouseup = shortcut('mouseup');
|
1855 | var mouseenter = shortcut('mouseenter');
|
1856 | var mouseleave = shortcut('mouseleave');
|
1857 | var mouseout = shortcut('mouseout');
|
1858 | var mouseover = shortcut('mouseover');
|
1859 | var touchstart = shortcut('touchstart');
|
1860 | var touchend = shortcut('touchend');
|
1861 | var touchmove = shortcut('touchmove');
|
1862 | var resize = shortcut('resize');
|
1863 | var scroll = shortcut('scroll');
|
1864 |
|
1865 | var methods = Object.freeze({
|
1866 | __proto__: null,
|
1867 | 'default': $$1,
|
1868 | $: $$1,
|
1869 | add: add,
|
1870 | addClass: addClass,
|
1871 | animate: animate,
|
1872 | animationEnd: animationEnd,
|
1873 | append: append,
|
1874 | appendTo: appendTo,
|
1875 | attr: attr,
|
1876 | blur: blur,
|
1877 | change: change,
|
1878 | children: children,
|
1879 | click: click,
|
1880 | closest: closest,
|
1881 | css: css,
|
1882 | data: data,
|
1883 | dataset: dataset,
|
1884 | detach: detach,
|
1885 | each: each,
|
1886 | empty: empty,
|
1887 | eq: eq,
|
1888 | filter: filter,
|
1889 | find: find,
|
1890 | focus: focus,
|
1891 | focusin: focusin,
|
1892 | focusout: focusout,
|
1893 | hasClass: hasClass,
|
1894 | height: height,
|
1895 | hide: hide,
|
1896 | html: html,
|
1897 | index: index,
|
1898 | insertAfter: insertAfter,
|
1899 | insertBefore: insertBefore$1,
|
1900 | is: is,
|
1901 | keydown: keydown,
|
1902 | keypress: keypress,
|
1903 | keyup: keyup,
|
1904 | mousedown: mousedown,
|
1905 | mouseenter: mouseenter,
|
1906 | mouseleave: mouseleave,
|
1907 | mousemove: mousemove,
|
1908 | mouseout: mouseout,
|
1909 | mouseover: mouseover,
|
1910 | mouseup: mouseup,
|
1911 | next: next,
|
1912 | nextAll: nextAll,
|
1913 | off: off,
|
1914 | offset: offset,
|
1915 | on: on,
|
1916 | once: once,
|
1917 | outerHeight: outerHeight,
|
1918 | outerWidth: outerWidth,
|
1919 | parent: parent,
|
1920 | parents: parents,
|
1921 | prepend: prepend,
|
1922 | prependTo: prependTo,
|
1923 | prev: prev,
|
1924 | prevAll: prevAll,
|
1925 | prop: prop,
|
1926 | remove: remove,
|
1927 | removeAttr: removeAttr,
|
1928 | removeClass: removeClass,
|
1929 | removeData: removeData,
|
1930 | resize: resize,
|
1931 | scroll: scroll,
|
1932 | scrollLeft: scrollLeft,
|
1933 | scrollTo: scrollTo,
|
1934 | scrollTop: scrollTop,
|
1935 | show: show,
|
1936 | siblings: siblings,
|
1937 | stop: stop,
|
1938 | styles: styles,
|
1939 | submit: submit,
|
1940 | text: text,
|
1941 | toggleClass: toggleClass,
|
1942 | touchend: touchend,
|
1943 | touchmove: touchmove,
|
1944 | touchstart: touchstart,
|
1945 | transform: transform,
|
1946 | transition: transition$1,
|
1947 | transitionEnd: transitionEnd$1,
|
1948 | trigger: trigger,
|
1949 | val: val,
|
1950 | value: value,
|
1951 | width: width
|
1952 | });
|
1953 |
|
1954 | Object.keys(methods).forEach(function (methodName) {
|
1955 | if (methodName === '$') return;
|
1956 | $$1.fn[methodName] = methods[methodName];
|
1957 | });
|
1958 | var $ = $$1;
|
1959 |
|
1960 | var REACT_ELEMENT_TYPE;
|
1961 |
|
1962 | function _jsx(type, props, key, children) {
|
1963 | if (!REACT_ELEMENT_TYPE) {
|
1964 | REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") || 0xeac7;
|
1965 | }
|
1966 |
|
1967 | var defaultProps = type && type.defaultProps;
|
1968 | var childrenLength = arguments.length - 3;
|
1969 |
|
1970 | if (!props && childrenLength !== 0) {
|
1971 | props = {
|
1972 | children: void 0
|
1973 | };
|
1974 | }
|
1975 |
|
1976 | if (childrenLength === 1) {
|
1977 | props.children = children;
|
1978 | } else if (childrenLength > 1) {
|
1979 | var childArray = new Array(childrenLength);
|
1980 |
|
1981 | for (var i = 0; i < childrenLength; i++) {
|
1982 | childArray[i] = arguments[i + 3];
|
1983 | }
|
1984 |
|
1985 | props.children = childArray;
|
1986 | }
|
1987 |
|
1988 | if (props && defaultProps) {
|
1989 | for (var propName in defaultProps) {
|
1990 | if (props[propName] === void 0) {
|
1991 | props[propName] = defaultProps[propName];
|
1992 | }
|
1993 | }
|
1994 | } else if (!props) {
|
1995 | props = defaultProps || {};
|
1996 | }
|
1997 |
|
1998 | return {
|
1999 | $$typeof: REACT_ELEMENT_TYPE,
|
2000 | type: type,
|
2001 | key: key === undefined ? null : "" + key,
|
2002 | ref: null,
|
2003 | props: props,
|
2004 | _owner: null
|
2005 | };
|
2006 | }
|
2007 |
|
2008 | function ownKeys(object, enumerableOnly) {
|
2009 | var keys = Object.keys(object);
|
2010 |
|
2011 | if (Object.getOwnPropertySymbols) {
|
2012 | var symbols = Object.getOwnPropertySymbols(object);
|
2013 |
|
2014 | if (enumerableOnly) {
|
2015 | symbols = symbols.filter(function (sym) {
|
2016 | return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
2017 | });
|
2018 | }
|
2019 |
|
2020 | keys.push.apply(keys, symbols);
|
2021 | }
|
2022 |
|
2023 | return keys;
|
2024 | }
|
2025 |
|
2026 | function _objectSpread2(target) {
|
2027 | for (var i = 1; i < arguments.length; i++) {
|
2028 | var source = arguments[i] != null ? arguments[i] : {};
|
2029 |
|
2030 | if (i % 2) {
|
2031 | ownKeys(Object(source), true).forEach(function (key) {
|
2032 | _defineProperty(target, key, source[key]);
|
2033 | });
|
2034 | } else if (Object.getOwnPropertyDescriptors) {
|
2035 | Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
2036 | } else {
|
2037 | ownKeys(Object(source)).forEach(function (key) {
|
2038 | Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
2039 | });
|
2040 | }
|
2041 | }
|
2042 |
|
2043 | return target;
|
2044 | }
|
2045 |
|
2046 | function _typeof(obj) {
|
2047 | "@babel/helpers - typeof";
|
2048 |
|
2049 | if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
2050 | _typeof = function (obj) {
|
2051 | return typeof obj;
|
2052 | };
|
2053 | } else {
|
2054 | _typeof = function (obj) {
|
2055 | return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
2056 | };
|
2057 | }
|
2058 |
|
2059 | return _typeof(obj);
|
2060 | }
|
2061 |
|
2062 | function _wrapRegExp() {
|
2063 | _wrapRegExp = function (re, groups) {
|
2064 | return new BabelRegExp(re, undefined, groups);
|
2065 | };
|
2066 |
|
2067 | var _super = RegExp.prototype;
|
2068 |
|
2069 | var _groups = new WeakMap();
|
2070 |
|
2071 | function BabelRegExp(re, flags, groups) {
|
2072 | var _this = new RegExp(re, flags);
|
2073 |
|
2074 | _groups.set(_this, groups || _groups.get(re));
|
2075 |
|
2076 | return _setPrototypeOf(_this, BabelRegExp.prototype);
|
2077 | }
|
2078 |
|
2079 | _inherits(BabelRegExp, RegExp);
|
2080 |
|
2081 | BabelRegExp.prototype.exec = function (str) {
|
2082 | var result = _super.exec.call(this, str);
|
2083 |
|
2084 | if (result) result.groups = buildGroups(result, this);
|
2085 | return result;
|
2086 | };
|
2087 |
|
2088 | BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {
|
2089 | if (typeof substitution === "string") {
|
2090 | var groups = _groups.get(this);
|
2091 |
|
2092 | return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) {
|
2093 | return "$" + groups[name];
|
2094 | }));
|
2095 | } else if (typeof substitution === "function") {
|
2096 | var _this = this;
|
2097 |
|
2098 | return _super[Symbol.replace].call(this, str, function () {
|
2099 | var args = arguments;
|
2100 |
|
2101 | if (typeof args[args.length - 1] !== "object") {
|
2102 | args = [].slice.call(args);
|
2103 | args.push(buildGroups(args, _this));
|
2104 | }
|
2105 |
|
2106 | return substitution.apply(this, args);
|
2107 | });
|
2108 | } else {
|
2109 | return _super[Symbol.replace].call(this, str, substitution);
|
2110 | }
|
2111 | };
|
2112 |
|
2113 | function buildGroups(result, re) {
|
2114 | var g = _groups.get(re);
|
2115 |
|
2116 | return Object.keys(g).reduce(function (groups, name) {
|
2117 | groups[name] = result[g[name]];
|
2118 | return groups;
|
2119 | }, Object.create(null));
|
2120 | }
|
2121 |
|
2122 | return _wrapRegExp.apply(this, arguments);
|
2123 | }
|
2124 |
|
2125 | function _asyncIterator(iterable) {
|
2126 | var method;
|
2127 |
|
2128 | if (typeof Symbol !== "undefined") {
|
2129 | if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator];
|
2130 | if (method == null && Symbol.iterator) method = iterable[Symbol.iterator];
|
2131 | }
|
2132 |
|
2133 | if (method == null) method = iterable["@@asyncIterator"];
|
2134 | if (method == null) method = iterable["@@iterator"];
|
2135 | if (method == null) throw new TypeError("Object is not async iterable");
|
2136 | return method.call(iterable);
|
2137 | }
|
2138 |
|
2139 | function _AwaitValue(value) {
|
2140 | this.wrapped = value;
|
2141 | }
|
2142 |
|
2143 | function _AsyncGenerator(gen) {
|
2144 | var front, back;
|
2145 |
|
2146 | function send(key, arg) {
|
2147 | return new Promise(function (resolve, reject) {
|
2148 | var request = {
|
2149 | key: key,
|
2150 | arg: arg,
|
2151 | resolve: resolve,
|
2152 | reject: reject,
|
2153 | next: null
|
2154 | };
|
2155 |
|
2156 | if (back) {
|
2157 | back = back.next = request;
|
2158 | } else {
|
2159 | front = back = request;
|
2160 | resume(key, arg);
|
2161 | }
|
2162 | });
|
2163 | }
|
2164 |
|
2165 | function resume(key, arg) {
|
2166 | try {
|
2167 | var result = gen[key](arg);
|
2168 | var value = result.value;
|
2169 | var wrappedAwait = value instanceof _AwaitValue;
|
2170 | Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {
|
2171 | if (wrappedAwait) {
|
2172 | resume(key === "return" ? "return" : "next", arg);
|
2173 | return;
|
2174 | }
|
2175 |
|
2176 | settle(result.done ? "return" : "normal", arg);
|
2177 | }, function (err) {
|
2178 | resume("throw", err);
|
2179 | });
|
2180 | } catch (err) {
|
2181 | settle("throw", err);
|
2182 | }
|
2183 | }
|
2184 |
|
2185 | function settle(type, value) {
|
2186 | switch (type) {
|
2187 | case "return":
|
2188 | front.resolve({
|
2189 | value: value,
|
2190 | done: true
|
2191 | });
|
2192 | break;
|
2193 |
|
2194 | case "throw":
|
2195 | front.reject(value);
|
2196 | break;
|
2197 |
|
2198 | default:
|
2199 | front.resolve({
|
2200 | value: value,
|
2201 | done: false
|
2202 | });
|
2203 | break;
|
2204 | }
|
2205 |
|
2206 | front = front.next;
|
2207 |
|
2208 | if (front) {
|
2209 | resume(front.key, front.arg);
|
2210 | } else {
|
2211 | back = null;
|
2212 | }
|
2213 | }
|
2214 |
|
2215 | this._invoke = send;
|
2216 |
|
2217 | if (typeof gen.return !== "function") {
|
2218 | this.return = undefined;
|
2219 | }
|
2220 | }
|
2221 |
|
2222 | _AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () {
|
2223 | return this;
|
2224 | };
|
2225 |
|
2226 | _AsyncGenerator.prototype.next = function (arg) {
|
2227 | return this._invoke("next", arg);
|
2228 | };
|
2229 |
|
2230 | _AsyncGenerator.prototype.throw = function (arg) {
|
2231 | return this._invoke("throw", arg);
|
2232 | };
|
2233 |
|
2234 | _AsyncGenerator.prototype.return = function (arg) {
|
2235 | return this._invoke("return", arg);
|
2236 | };
|
2237 |
|
2238 | function _wrapAsyncGenerator(fn) {
|
2239 | return function () {
|
2240 | return new _AsyncGenerator(fn.apply(this, arguments));
|
2241 | };
|
2242 | }
|
2243 |
|
2244 | function _awaitAsyncGenerator(value) {
|
2245 | return new _AwaitValue(value);
|
2246 | }
|
2247 |
|
2248 | function _asyncGeneratorDelegate(inner, awaitWrap) {
|
2249 | var iter = {},
|
2250 | waiting = false;
|
2251 |
|
2252 | function pump(key, value) {
|
2253 | waiting = true;
|
2254 | value = new Promise(function (resolve) {
|
2255 | resolve(inner[key](value));
|
2256 | });
|
2257 | return {
|
2258 | done: false,
|
2259 | value: awaitWrap(value)
|
2260 | };
|
2261 | }
|
2262 |
|
2263 | ;
|
2264 |
|
2265 | iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () {
|
2266 | return this;
|
2267 | };
|
2268 |
|
2269 | iter.next = function (value) {
|
2270 | if (waiting) {
|
2271 | waiting = false;
|
2272 | return value;
|
2273 | }
|
2274 |
|
2275 | return pump("next", value);
|
2276 | };
|
2277 |
|
2278 | if (typeof inner.throw === "function") {
|
2279 | iter.throw = function (value) {
|
2280 | if (waiting) {
|
2281 | waiting = false;
|
2282 | throw value;
|
2283 | }
|
2284 |
|
2285 | return pump("throw", value);
|
2286 | };
|
2287 | }
|
2288 |
|
2289 | if (typeof inner.return === "function") {
|
2290 | iter.return = function (value) {
|
2291 | if (waiting) {
|
2292 | waiting = false;
|
2293 | return value;
|
2294 | }
|
2295 |
|
2296 | return pump("return", value);
|
2297 | };
|
2298 | }
|
2299 |
|
2300 | return iter;
|
2301 | }
|
2302 |
|
2303 | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
2304 | try {
|
2305 | var info = gen[key](arg);
|
2306 | var value = info.value;
|
2307 | } catch (error) {
|
2308 | reject(error);
|
2309 | return;
|
2310 | }
|
2311 |
|
2312 | if (info.done) {
|
2313 | resolve(value);
|
2314 | } else {
|
2315 | Promise.resolve(value).then(_next, _throw);
|
2316 | }
|
2317 | }
|
2318 |
|
2319 | function _asyncToGenerator(fn) {
|
2320 | return function () {
|
2321 | var self = this,
|
2322 | args = arguments;
|
2323 | return new Promise(function (resolve, reject) {
|
2324 | var gen = fn.apply(self, args);
|
2325 |
|
2326 | function _next(value) {
|
2327 | asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
2328 | }
|
2329 |
|
2330 | function _throw(err) {
|
2331 | asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
2332 | }
|
2333 |
|
2334 | _next(undefined);
|
2335 | });
|
2336 | };
|
2337 | }
|
2338 |
|
2339 | function _classCallCheck(instance, Constructor) {
|
2340 | if (!(instance instanceof Constructor)) {
|
2341 | throw new TypeError("Cannot call a class as a function");
|
2342 | }
|
2343 | }
|
2344 |
|
2345 | function _defineProperties$1(target, props) {
|
2346 | for (var i = 0; i < props.length; i++) {
|
2347 | var descriptor = props[i];
|
2348 | descriptor.enumerable = descriptor.enumerable || false;
|
2349 | descriptor.configurable = true;
|
2350 | if ("value" in descriptor) descriptor.writable = true;
|
2351 | Object.defineProperty(target, descriptor.key, descriptor);
|
2352 | }
|
2353 | }
|
2354 |
|
2355 | function _createClass$1(Constructor, protoProps, staticProps) {
|
2356 | if (protoProps) _defineProperties$1(Constructor.prototype, protoProps);
|
2357 | if (staticProps) _defineProperties$1(Constructor, staticProps);
|
2358 | return Constructor;
|
2359 | }
|
2360 |
|
2361 | function _defineEnumerableProperties(obj, descs) {
|
2362 | for (var key in descs) {
|
2363 | var desc = descs[key];
|
2364 | desc.configurable = desc.enumerable = true;
|
2365 | if ("value" in desc) desc.writable = true;
|
2366 | Object.defineProperty(obj, key, desc);
|
2367 | }
|
2368 |
|
2369 | if (Object.getOwnPropertySymbols) {
|
2370 | var objectSymbols = Object.getOwnPropertySymbols(descs);
|
2371 |
|
2372 | for (var i = 0; i < objectSymbols.length; i++) {
|
2373 | var sym = objectSymbols[i];
|
2374 | var desc = descs[sym];
|
2375 | desc.configurable = desc.enumerable = true;
|
2376 | if ("value" in desc) desc.writable = true;
|
2377 | Object.defineProperty(obj, sym, desc);
|
2378 | }
|
2379 | }
|
2380 |
|
2381 | return obj;
|
2382 | }
|
2383 |
|
2384 | function _defaults(obj, defaults) {
|
2385 | var keys = Object.getOwnPropertyNames(defaults);
|
2386 |
|
2387 | for (var i = 0; i < keys.length; i++) {
|
2388 | var key = keys[i];
|
2389 | var value = Object.getOwnPropertyDescriptor(defaults, key);
|
2390 |
|
2391 | if (value && value.configurable && obj[key] === undefined) {
|
2392 | Object.defineProperty(obj, key, value);
|
2393 | }
|
2394 | }
|
2395 |
|
2396 | return obj;
|
2397 | }
|
2398 |
|
2399 | function _defineProperty(obj, key, value) {
|
2400 | if (key in obj) {
|
2401 | Object.defineProperty(obj, key, {
|
2402 | value: value,
|
2403 | enumerable: true,
|
2404 | configurable: true,
|
2405 | writable: true
|
2406 | });
|
2407 | } else {
|
2408 | obj[key] = value;
|
2409 | }
|
2410 |
|
2411 | return obj;
|
2412 | }
|
2413 |
|
2414 | function _extends$j() {
|
2415 | _extends$j = Object.assign || function (target) {
|
2416 | for (var i = 1; i < arguments.length; i++) {
|
2417 | var source = arguments[i];
|
2418 |
|
2419 | for (var key in source) {
|
2420 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
2421 | target[key] = source[key];
|
2422 | }
|
2423 | }
|
2424 | }
|
2425 |
|
2426 | return target;
|
2427 | };
|
2428 |
|
2429 | return _extends$j.apply(this, arguments);
|
2430 | }
|
2431 |
|
2432 | function _objectSpread(target) {
|
2433 | for (var i = 1; i < arguments.length; i++) {
|
2434 | var source = arguments[i] != null ? Object(arguments[i]) : {};
|
2435 | var ownKeys = Object.keys(source);
|
2436 |
|
2437 | if (typeof Object.getOwnPropertySymbols === 'function') {
|
2438 | ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
2439 | return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
2440 | }));
|
2441 | }
|
2442 |
|
2443 | ownKeys.forEach(function (key) {
|
2444 | _defineProperty(target, key, source[key]);
|
2445 | });
|
2446 | }
|
2447 |
|
2448 | return target;
|
2449 | }
|
2450 |
|
2451 | function _inherits(subClass, superClass) {
|
2452 | if (typeof superClass !== "function" && superClass !== null) {
|
2453 | throw new TypeError("Super expression must either be null or a function");
|
2454 | }
|
2455 |
|
2456 | subClass.prototype = Object.create(superClass && superClass.prototype, {
|
2457 | constructor: {
|
2458 | value: subClass,
|
2459 | writable: true,
|
2460 | configurable: true
|
2461 | }
|
2462 | });
|
2463 | if (superClass) _setPrototypeOf(subClass, superClass);
|
2464 | }
|
2465 |
|
2466 | function _inheritsLoose(subClass, superClass) {
|
2467 | subClass.prototype = Object.create(superClass.prototype);
|
2468 | subClass.prototype.constructor = subClass;
|
2469 |
|
2470 | _setPrototypeOf(subClass, superClass);
|
2471 | }
|
2472 |
|
2473 | function _getPrototypeOf(o) {
|
2474 | _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
|
2475 | return o.__proto__ || Object.getPrototypeOf(o);
|
2476 | };
|
2477 | return _getPrototypeOf(o);
|
2478 | }
|
2479 |
|
2480 | function _setPrototypeOf(o, p) {
|
2481 | _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
|
2482 | o.__proto__ = p;
|
2483 | return o;
|
2484 | };
|
2485 |
|
2486 | return _setPrototypeOf(o, p);
|
2487 | }
|
2488 |
|
2489 | function _isNativeReflectConstruct() {
|
2490 | if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
2491 | if (Reflect.construct.sham) return false;
|
2492 | if (typeof Proxy === "function") return true;
|
2493 |
|
2494 | try {
|
2495 | Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
2496 | return true;
|
2497 | } catch (e) {
|
2498 | return false;
|
2499 | }
|
2500 | }
|
2501 |
|
2502 | function _construct(Parent, args, Class) {
|
2503 | if (_isNativeReflectConstruct()) {
|
2504 | _construct = Reflect.construct;
|
2505 | } else {
|
2506 | _construct = function _construct(Parent, args, Class) {
|
2507 | var a = [null];
|
2508 | a.push.apply(a, args);
|
2509 | var Constructor = Function.bind.apply(Parent, a);
|
2510 | var instance = new Constructor();
|
2511 | if (Class) _setPrototypeOf(instance, Class.prototype);
|
2512 | return instance;
|
2513 | };
|
2514 | }
|
2515 |
|
2516 | return _construct.apply(null, arguments);
|
2517 | }
|
2518 |
|
2519 | function _isNativeFunction(fn) {
|
2520 | return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
2521 | }
|
2522 |
|
2523 | function _wrapNativeSuper(Class) {
|
2524 | var _cache = typeof Map === "function" ? new Map() : undefined;
|
2525 |
|
2526 | _wrapNativeSuper = function _wrapNativeSuper(Class) {
|
2527 | if (Class === null || !_isNativeFunction(Class)) return Class;
|
2528 |
|
2529 | if (typeof Class !== "function") {
|
2530 | throw new TypeError("Super expression must either be null or a function");
|
2531 | }
|
2532 |
|
2533 | if (typeof _cache !== "undefined") {
|
2534 | if (_cache.has(Class)) return _cache.get(Class);
|
2535 |
|
2536 | _cache.set(Class, Wrapper);
|
2537 | }
|
2538 |
|
2539 | function Wrapper() {
|
2540 | return _construct(Class, arguments, _getPrototypeOf(this).constructor);
|
2541 | }
|
2542 |
|
2543 | Wrapper.prototype = Object.create(Class.prototype, {
|
2544 | constructor: {
|
2545 | value: Wrapper,
|
2546 | enumerable: false,
|
2547 | writable: true,
|
2548 | configurable: true
|
2549 | }
|
2550 | });
|
2551 | return _setPrototypeOf(Wrapper, Class);
|
2552 | };
|
2553 |
|
2554 | return _wrapNativeSuper(Class);
|
2555 | }
|
2556 |
|
2557 | function _instanceof(left, right) {
|
2558 | if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
2559 | return !!right[Symbol.hasInstance](left);
|
2560 | } else {
|
2561 | return left instanceof right;
|
2562 | }
|
2563 | }
|
2564 |
|
2565 | function _interopRequireDefault(obj) {
|
2566 | return obj && obj.__esModule ? obj : {
|
2567 | default: obj
|
2568 | };
|
2569 | }
|
2570 |
|
2571 | function _getRequireWildcardCache(nodeInterop) {
|
2572 | if (typeof WeakMap !== "function") return null;
|
2573 | var cacheBabelInterop = new WeakMap();
|
2574 | var cacheNodeInterop = new WeakMap();
|
2575 | return (_getRequireWildcardCache = function (nodeInterop) {
|
2576 | return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
2577 | })(nodeInterop);
|
2578 | }
|
2579 |
|
2580 | function _interopRequireWildcard(obj, nodeInterop) {
|
2581 | if (!nodeInterop && obj && obj.__esModule) {
|
2582 | return obj;
|
2583 | }
|
2584 |
|
2585 | if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
2586 | return {
|
2587 | default: obj
|
2588 | };
|
2589 | }
|
2590 |
|
2591 | var cache = _getRequireWildcardCache(nodeInterop);
|
2592 |
|
2593 | if (cache && cache.has(obj)) {
|
2594 | return cache.get(obj);
|
2595 | }
|
2596 |
|
2597 | var newObj = {};
|
2598 | var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
2599 |
|
2600 | for (var key in obj) {
|
2601 | if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
2602 | var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
2603 |
|
2604 | if (desc && (desc.get || desc.set)) {
|
2605 | Object.defineProperty(newObj, key, desc);
|
2606 | } else {
|
2607 | newObj[key] = obj[key];
|
2608 | }
|
2609 | }
|
2610 | }
|
2611 |
|
2612 | newObj.default = obj;
|
2613 |
|
2614 | if (cache) {
|
2615 | cache.set(obj, newObj);
|
2616 | }
|
2617 |
|
2618 | return newObj;
|
2619 | }
|
2620 |
|
2621 | function _newArrowCheck(innerThis, boundThis) {
|
2622 | if (innerThis !== boundThis) {
|
2623 | throw new TypeError("Cannot instantiate an arrow function");
|
2624 | }
|
2625 | }
|
2626 |
|
2627 | function _objectDestructuringEmpty(obj) {
|
2628 | if (obj == null) throw new TypeError("Cannot destructure undefined");
|
2629 | }
|
2630 |
|
2631 | function _objectWithoutPropertiesLoose(source, excluded) {
|
2632 | if (source == null) return {};
|
2633 | var target = {};
|
2634 | var sourceKeys = Object.keys(source);
|
2635 | var key, i;
|
2636 |
|
2637 | for (i = 0; i < sourceKeys.length; i++) {
|
2638 | key = sourceKeys[i];
|
2639 | if (excluded.indexOf(key) >= 0) continue;
|
2640 | target[key] = source[key];
|
2641 | }
|
2642 |
|
2643 | return target;
|
2644 | }
|
2645 |
|
2646 | function _objectWithoutProperties(source, excluded) {
|
2647 | if (source == null) return {};
|
2648 |
|
2649 | var target = _objectWithoutPropertiesLoose(source, excluded);
|
2650 |
|
2651 | var key, i;
|
2652 |
|
2653 | if (Object.getOwnPropertySymbols) {
|
2654 | var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
2655 |
|
2656 | for (i = 0; i < sourceSymbolKeys.length; i++) {
|
2657 | key = sourceSymbolKeys[i];
|
2658 | if (excluded.indexOf(key) >= 0) continue;
|
2659 | if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
|
2660 | target[key] = source[key];
|
2661 | }
|
2662 | }
|
2663 |
|
2664 | return target;
|
2665 | }
|
2666 |
|
2667 | function _assertThisInitialized(self) {
|
2668 | if (self === void 0) {
|
2669 | throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
2670 | }
|
2671 |
|
2672 | return self;
|
2673 | }
|
2674 |
|
2675 | function _possibleConstructorReturn(self, call) {
|
2676 | if (call && (typeof call === "object" || typeof call === "function")) {
|
2677 | return call;
|
2678 | }
|
2679 |
|
2680 | return _assertThisInitialized(self);
|
2681 | }
|
2682 |
|
2683 | function _createSuper(Derived) {
|
2684 | var hasNativeReflectConstruct = _isNativeReflectConstruct();
|
2685 |
|
2686 | return function _createSuperInternal() {
|
2687 | var Super = _getPrototypeOf(Derived),
|
2688 | result;
|
2689 |
|
2690 | if (hasNativeReflectConstruct) {
|
2691 | var NewTarget = _getPrototypeOf(this).constructor;
|
2692 |
|
2693 | result = Reflect.construct(Super, arguments, NewTarget);
|
2694 | } else {
|
2695 | result = Super.apply(this, arguments);
|
2696 | }
|
2697 |
|
2698 | return _possibleConstructorReturn(this, result);
|
2699 | };
|
2700 | }
|
2701 |
|
2702 | function _superPropBase(object, property) {
|
2703 | while (!Object.prototype.hasOwnProperty.call(object, property)) {
|
2704 | object = _getPrototypeOf(object);
|
2705 | if (object === null) break;
|
2706 | }
|
2707 |
|
2708 | return object;
|
2709 | }
|
2710 |
|
2711 | function _get(target, property, receiver) {
|
2712 | if (typeof Reflect !== "undefined" && Reflect.get) {
|
2713 | _get = Reflect.get;
|
2714 | } else {
|
2715 | _get = function _get(target, property, receiver) {
|
2716 | var base = _superPropBase(target, property);
|
2717 |
|
2718 | if (!base) return;
|
2719 | var desc = Object.getOwnPropertyDescriptor(base, property);
|
2720 |
|
2721 | if (desc.get) {
|
2722 | return desc.get.call(receiver);
|
2723 | }
|
2724 |
|
2725 | return desc.value;
|
2726 | };
|
2727 | }
|
2728 |
|
2729 | return _get(target, property, receiver || target);
|
2730 | }
|
2731 |
|
2732 | function set(target, property, value, receiver) {
|
2733 | if (typeof Reflect !== "undefined" && Reflect.set) {
|
2734 | set = Reflect.set;
|
2735 | } else {
|
2736 | set = function set(target, property, value, receiver) {
|
2737 | var base = _superPropBase(target, property);
|
2738 |
|
2739 | var desc;
|
2740 |
|
2741 | if (base) {
|
2742 | desc = Object.getOwnPropertyDescriptor(base, property);
|
2743 |
|
2744 | if (desc.set) {
|
2745 | desc.set.call(receiver, value);
|
2746 | return true;
|
2747 | } else if (!desc.writable) {
|
2748 | return false;
|
2749 | }
|
2750 | }
|
2751 |
|
2752 | desc = Object.getOwnPropertyDescriptor(receiver, property);
|
2753 |
|
2754 | if (desc) {
|
2755 | if (!desc.writable) {
|
2756 | return false;
|
2757 | }
|
2758 |
|
2759 | desc.value = value;
|
2760 | Object.defineProperty(receiver, property, desc);
|
2761 | } else {
|
2762 | _defineProperty(receiver, property, value);
|
2763 | }
|
2764 |
|
2765 | return true;
|
2766 | };
|
2767 | }
|
2768 |
|
2769 | return set(target, property, value, receiver);
|
2770 | }
|
2771 |
|
2772 | function _set(target, property, value, receiver, isStrict) {
|
2773 | var s = set(target, property, value, receiver || target);
|
2774 |
|
2775 | if (!s && isStrict) {
|
2776 | throw new Error('failed to set property');
|
2777 | }
|
2778 |
|
2779 | return value;
|
2780 | }
|
2781 |
|
2782 | function _taggedTemplateLiteral(strings, raw) {
|
2783 | if (!raw) {
|
2784 | raw = strings.slice(0);
|
2785 | }
|
2786 |
|
2787 | return Object.freeze(Object.defineProperties(strings, {
|
2788 | raw: {
|
2789 | value: Object.freeze(raw)
|
2790 | }
|
2791 | }));
|
2792 | }
|
2793 |
|
2794 | function _taggedTemplateLiteralLoose(strings, raw) {
|
2795 | if (!raw) {
|
2796 | raw = strings.slice(0);
|
2797 | }
|
2798 |
|
2799 | strings.raw = raw;
|
2800 | return strings;
|
2801 | }
|
2802 |
|
2803 | function _readOnlyError(name) {
|
2804 | throw new TypeError("\"" + name + "\" is read-only");
|
2805 | }
|
2806 |
|
2807 | function _writeOnlyError(name) {
|
2808 | throw new TypeError("\"" + name + "\" is write-only");
|
2809 | }
|
2810 |
|
2811 | function _classNameTDZError(name) {
|
2812 | throw new Error("Class \"" + name + "\" cannot be referenced in computed property keys.");
|
2813 | }
|
2814 |
|
2815 | function _temporalUndefined() {}
|
2816 |
|
2817 | function _tdz(name) {
|
2818 | throw new ReferenceError(name + " is not defined - temporal dead zone");
|
2819 | }
|
2820 |
|
2821 | function _temporalRef(val, name) {
|
2822 | return val === _temporalUndefined ? _tdz(name) : val;
|
2823 | }
|
2824 |
|
2825 | function _slicedToArray(arr, i) {
|
2826 | return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
2827 | }
|
2828 |
|
2829 | function _slicedToArrayLoose(arr, i) {
|
2830 | return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
2831 | }
|
2832 |
|
2833 | function _toArray(arr) {
|
2834 | return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
|
2835 | }
|
2836 |
|
2837 | function _toConsumableArray(arr) {
|
2838 | return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
2839 | }
|
2840 |
|
2841 | function _arrayWithoutHoles(arr) {
|
2842 | if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
2843 | }
|
2844 |
|
2845 | function _arrayWithHoles(arr) {
|
2846 | if (Array.isArray(arr)) return arr;
|
2847 | }
|
2848 |
|
2849 | function _maybeArrayLike(next, arr, i) {
|
2850 | if (arr && !Array.isArray(arr) && typeof arr.length === "number") {
|
2851 | var len = arr.length;
|
2852 | return _arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);
|
2853 | }
|
2854 |
|
2855 | return next(arr, i);
|
2856 | }
|
2857 |
|
2858 | function _iterableToArray(iter) {
|
2859 | if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
2860 | }
|
2861 |
|
2862 | function _iterableToArrayLimit(arr, i) {
|
2863 | var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
|
2864 |
|
2865 | if (_i == null) return;
|
2866 | var _arr = [];
|
2867 | var _n = true;
|
2868 | var _d = false;
|
2869 |
|
2870 | var _s, _e;
|
2871 |
|
2872 | try {
|
2873 | for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
2874 | _arr.push(_s.value);
|
2875 |
|
2876 | if (i && _arr.length === i) break;
|
2877 | }
|
2878 | } catch (err) {
|
2879 | _d = true;
|
2880 | _e = err;
|
2881 | } finally {
|
2882 | try {
|
2883 | if (!_n && _i["return"] != null) _i["return"]();
|
2884 | } finally {
|
2885 | if (_d) throw _e;
|
2886 | }
|
2887 | }
|
2888 |
|
2889 | return _arr;
|
2890 | }
|
2891 |
|
2892 | function _iterableToArrayLimitLoose(arr, i) {
|
2893 | var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
|
2894 |
|
2895 | if (_i == null) return;
|
2896 | var _arr = [];
|
2897 |
|
2898 | for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) {
|
2899 | _arr.push(_step.value);
|
2900 |
|
2901 | if (i && _arr.length === i) break;
|
2902 | }
|
2903 |
|
2904 | return _arr;
|
2905 | }
|
2906 |
|
2907 | function _unsupportedIterableToArray(o, minLen) {
|
2908 | if (!o) return;
|
2909 | if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
2910 | var n = Object.prototype.toString.call(o).slice(8, -1);
|
2911 | if (n === "Object" && o.constructor) n = o.constructor.name;
|
2912 | if (n === "Map" || n === "Set") return Array.from(o);
|
2913 | if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
2914 | }
|
2915 |
|
2916 | function _arrayLikeToArray(arr, len) {
|
2917 | if (len == null || len > arr.length) len = arr.length;
|
2918 |
|
2919 | for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
2920 |
|
2921 | return arr2;
|
2922 | }
|
2923 |
|
2924 | function _nonIterableSpread() {
|
2925 | throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
2926 | }
|
2927 |
|
2928 | function _nonIterableRest() {
|
2929 | throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
2930 | }
|
2931 |
|
2932 | function _createForOfIteratorHelper(o, allowArrayLike) {
|
2933 | var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
2934 |
|
2935 | if (!it) {
|
2936 | if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
2937 | if (it) o = it;
|
2938 | var i = 0;
|
2939 |
|
2940 | var F = function () {};
|
2941 |
|
2942 | return {
|
2943 | s: F,
|
2944 | n: function () {
|
2945 | if (i >= o.length) return {
|
2946 | done: true
|
2947 | };
|
2948 | return {
|
2949 | done: false,
|
2950 | value: o[i++]
|
2951 | };
|
2952 | },
|
2953 | e: function (e) {
|
2954 | throw e;
|
2955 | },
|
2956 | f: F
|
2957 | };
|
2958 | }
|
2959 |
|
2960 | throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
2961 | }
|
2962 |
|
2963 | var normalCompletion = true,
|
2964 | didErr = false,
|
2965 | err;
|
2966 | return {
|
2967 | s: function () {
|
2968 | it = it.call(o);
|
2969 | },
|
2970 | n: function () {
|
2971 | var step = it.next();
|
2972 | normalCompletion = step.done;
|
2973 | return step;
|
2974 | },
|
2975 | e: function (e) {
|
2976 | didErr = true;
|
2977 | err = e;
|
2978 | },
|
2979 | f: function () {
|
2980 | try {
|
2981 | if (!normalCompletion && it.return != null) it.return();
|
2982 | } finally {
|
2983 | if (didErr) throw err;
|
2984 | }
|
2985 | }
|
2986 | };
|
2987 | }
|
2988 |
|
2989 | function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
2990 | var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
2991 | if (it) return (it = it.call(o)).next.bind(it);
|
2992 |
|
2993 | if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
2994 | if (it) o = it;
|
2995 | var i = 0;
|
2996 | return function () {
|
2997 | if (i >= o.length) return {
|
2998 | done: true
|
2999 | };
|
3000 | return {
|
3001 | done: false,
|
3002 | value: o[i++]
|
3003 | };
|
3004 | };
|
3005 | }
|
3006 |
|
3007 | throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
3008 | }
|
3009 |
|
3010 | function _skipFirstGeneratorNext(fn) {
|
3011 | return function () {
|
3012 | var it = fn.apply(this, arguments);
|
3013 | it.next();
|
3014 | return it;
|
3015 | };
|
3016 | }
|
3017 |
|
3018 | function _toPrimitive(input, hint) {
|
3019 | if (typeof input !== "object" || input === null) return input;
|
3020 | var prim = input[Symbol.toPrimitive];
|
3021 |
|
3022 | if (prim !== undefined) {
|
3023 | var res = prim.call(input, hint || "default");
|
3024 | if (typeof res !== "object") return res;
|
3025 | throw new TypeError("@@toPrimitive must return a primitive value.");
|
3026 | }
|
3027 |
|
3028 | return (hint === "string" ? String : Number)(input);
|
3029 | }
|
3030 |
|
3031 | function _toPropertyKey(arg) {
|
3032 | var key = _toPrimitive(arg, "string");
|
3033 |
|
3034 | return typeof key === "symbol" ? key : String(key);
|
3035 | }
|
3036 |
|
3037 | function _initializerWarningHelper(descriptor, context) {
|
3038 | throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.');
|
3039 | }
|
3040 |
|
3041 | function _initializerDefineProperty(target, property, descriptor, context) {
|
3042 | if (!descriptor) return;
|
3043 | Object.defineProperty(target, property, {
|
3044 | enumerable: descriptor.enumerable,
|
3045 | configurable: descriptor.configurable,
|
3046 | writable: descriptor.writable,
|
3047 | value: descriptor.initializer ? descriptor.initializer.call(context) : void 0
|
3048 | });
|
3049 | }
|
3050 |
|
3051 | function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
|
3052 | var desc = {};
|
3053 | Object.keys(descriptor).forEach(function (key) {
|
3054 | desc[key] = descriptor[key];
|
3055 | });
|
3056 | desc.enumerable = !!desc.enumerable;
|
3057 | desc.configurable = !!desc.configurable;
|
3058 |
|
3059 | if ('value' in desc || desc.initializer) {
|
3060 | desc.writable = true;
|
3061 | }
|
3062 |
|
3063 | desc = decorators.slice().reverse().reduce(function (desc, decorator) {
|
3064 | return decorator(target, property, desc) || desc;
|
3065 | }, desc);
|
3066 |
|
3067 | if (context && desc.initializer !== void 0) {
|
3068 | desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
|
3069 | desc.initializer = undefined;
|
3070 | }
|
3071 |
|
3072 | if (desc.initializer === void 0) {
|
3073 | Object.defineProperty(target, property, desc);
|
3074 | desc = null;
|
3075 | }
|
3076 |
|
3077 | return desc;
|
3078 | }
|
3079 |
|
3080 | var id$1 = 0;
|
3081 |
|
3082 | function _classPrivateFieldLooseKey(name) {
|
3083 | return "__private_" + id$1++ + "_" + name;
|
3084 | }
|
3085 |
|
3086 | function _classPrivateFieldLooseBase(receiver, privateKey) {
|
3087 | if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
|
3088 | throw new TypeError("attempted to use private field on non-instance");
|
3089 | }
|
3090 |
|
3091 | return receiver;
|
3092 | }
|
3093 |
|
3094 | function _classPrivateFieldGet(receiver, privateMap) {
|
3095 | var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get");
|
3096 |
|
3097 | return _classApplyDescriptorGet(receiver, descriptor);
|
3098 | }
|
3099 |
|
3100 | function _classPrivateFieldSet(receiver, privateMap, value) {
|
3101 | var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set");
|
3102 |
|
3103 | _classApplyDescriptorSet(receiver, descriptor, value);
|
3104 |
|
3105 | return value;
|
3106 | }
|
3107 |
|
3108 | function _classPrivateFieldDestructureSet(receiver, privateMap) {
|
3109 | var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set");
|
3110 |
|
3111 | return _classApplyDescriptorDestructureSet(receiver, descriptor);
|
3112 | }
|
3113 |
|
3114 | function _classExtractFieldDescriptor(receiver, privateMap, action) {
|
3115 | if (!privateMap.has(receiver)) {
|
3116 | throw new TypeError("attempted to " + action + " private field on non-instance");
|
3117 | }
|
3118 |
|
3119 | return privateMap.get(receiver);
|
3120 | }
|
3121 |
|
3122 | function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
|
3123 | _classCheckPrivateStaticAccess(receiver, classConstructor);
|
3124 |
|
3125 | _classCheckPrivateStaticFieldDescriptor(descriptor, "get");
|
3126 |
|
3127 | return _classApplyDescriptorGet(receiver, descriptor);
|
3128 | }
|
3129 |
|
3130 | function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
|
3131 | _classCheckPrivateStaticAccess(receiver, classConstructor);
|
3132 |
|
3133 | _classCheckPrivateStaticFieldDescriptor(descriptor, "set");
|
3134 |
|
3135 | _classApplyDescriptorSet(receiver, descriptor, value);
|
3136 |
|
3137 | return value;
|
3138 | }
|
3139 |
|
3140 | function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
|
3141 | _classCheckPrivateStaticAccess(receiver, classConstructor);
|
3142 |
|
3143 | return method;
|
3144 | }
|
3145 |
|
3146 | function _classStaticPrivateMethodSet() {
|
3147 | throw new TypeError("attempted to set read only static private field");
|
3148 | }
|
3149 |
|
3150 | function _classApplyDescriptorGet(receiver, descriptor) {
|
3151 | if (descriptor.get) {
|
3152 | return descriptor.get.call(receiver);
|
3153 | }
|
3154 |
|
3155 | return descriptor.value;
|
3156 | }
|
3157 |
|
3158 | function _classApplyDescriptorSet(receiver, descriptor, value) {
|
3159 | if (descriptor.set) {
|
3160 | descriptor.set.call(receiver, value);
|
3161 | } else {
|
3162 | if (!descriptor.writable) {
|
3163 | throw new TypeError("attempted to set read only private field");
|
3164 | }
|
3165 |
|
3166 | descriptor.value = value;
|
3167 | }
|
3168 | }
|
3169 |
|
3170 | function _classApplyDescriptorDestructureSet(receiver, descriptor) {
|
3171 | if (descriptor.set) {
|
3172 | if (!("__destrObj" in descriptor)) {
|
3173 | descriptor.__destrObj = {
|
3174 | set value(v) {
|
3175 | descriptor.set.call(receiver, v);
|
3176 | }
|
3177 |
|
3178 | };
|
3179 | }
|
3180 |
|
3181 | return descriptor.__destrObj;
|
3182 | } else {
|
3183 | if (!descriptor.writable) {
|
3184 | throw new TypeError("attempted to set read only private field");
|
3185 | }
|
3186 |
|
3187 | return descriptor;
|
3188 | }
|
3189 | }
|
3190 |
|
3191 | function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {
|
3192 | _classCheckPrivateStaticAccess(receiver, classConstructor);
|
3193 |
|
3194 | _classCheckPrivateStaticFieldDescriptor(descriptor, "set");
|
3195 |
|
3196 | return _classApplyDescriptorDestructureSet(receiver, descriptor);
|
3197 | }
|
3198 |
|
3199 | function _classCheckPrivateStaticAccess(receiver, classConstructor) {
|
3200 | if (receiver !== classConstructor) {
|
3201 | throw new TypeError("Private static access of wrong provenance");
|
3202 | }
|
3203 | }
|
3204 |
|
3205 | function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {
|
3206 | if (descriptor === undefined) {
|
3207 | throw new TypeError("attempted to " + action + " private static field before its declaration");
|
3208 | }
|
3209 | }
|
3210 |
|
3211 | function _decorate(decorators, factory, superClass, mixins) {
|
3212 | var api = _getDecoratorsApi();
|
3213 |
|
3214 | if (mixins) {
|
3215 | for (var i = 0; i < mixins.length; i++) {
|
3216 | api = mixins[i](api);
|
3217 | }
|
3218 | }
|
3219 |
|
3220 | var r = factory(function initialize(O) {
|
3221 | api.initializeInstanceElements(O, decorated.elements);
|
3222 | }, superClass);
|
3223 | var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);
|
3224 | api.initializeClassElements(r.F, decorated.elements);
|
3225 | return api.runClassFinishers(r.F, decorated.finishers);
|
3226 | }
|
3227 |
|
3228 | function _getDecoratorsApi() {
|
3229 | _getDecoratorsApi = function () {
|
3230 | return api;
|
3231 | };
|
3232 |
|
3233 | var api = {
|
3234 | elementsDefinitionOrder: [["method"], ["field"]],
|
3235 | initializeInstanceElements: function (O, elements) {
|
3236 | ["method", "field"].forEach(function (kind) {
|
3237 | elements.forEach(function (element) {
|
3238 | if (element.kind === kind && element.placement === "own") {
|
3239 | this.defineClassElement(O, element);
|
3240 | }
|
3241 | }, this);
|
3242 | }, this);
|
3243 | },
|
3244 | initializeClassElements: function (F, elements) {
|
3245 | var proto = F.prototype;
|
3246 | ["method", "field"].forEach(function (kind) {
|
3247 | elements.forEach(function (element) {
|
3248 | var placement = element.placement;
|
3249 |
|
3250 | if (element.kind === kind && (placement === "static" || placement === "prototype")) {
|
3251 | var receiver = placement === "static" ? F : proto;
|
3252 | this.defineClassElement(receiver, element);
|
3253 | }
|
3254 | }, this);
|
3255 | }, this);
|
3256 | },
|
3257 | defineClassElement: function (receiver, element) {
|
3258 | var descriptor = element.descriptor;
|
3259 |
|
3260 | if (element.kind === "field") {
|
3261 | var initializer = element.initializer;
|
3262 | descriptor = {
|
3263 | enumerable: descriptor.enumerable,
|
3264 | writable: descriptor.writable,
|
3265 | configurable: descriptor.configurable,
|
3266 | value: initializer === void 0 ? void 0 : initializer.call(receiver)
|
3267 | };
|
3268 | }
|
3269 |
|
3270 | Object.defineProperty(receiver, element.key, descriptor);
|
3271 | },
|
3272 | decorateClass: function (elements, decorators) {
|
3273 | var newElements = [];
|
3274 | var finishers = [];
|
3275 | var placements = {
|
3276 | static: [],
|
3277 | prototype: [],
|
3278 | own: []
|
3279 | };
|
3280 | elements.forEach(function (element) {
|
3281 | this.addElementPlacement(element, placements);
|
3282 | }, this);
|
3283 | elements.forEach(function (element) {
|
3284 | if (!_hasDecorators(element)) return newElements.push(element);
|
3285 | var elementFinishersExtras = this.decorateElement(element, placements);
|
3286 | newElements.push(elementFinishersExtras.element);
|
3287 | newElements.push.apply(newElements, elementFinishersExtras.extras);
|
3288 | finishers.push.apply(finishers, elementFinishersExtras.finishers);
|
3289 | }, this);
|
3290 |
|
3291 | if (!decorators) {
|
3292 | return {
|
3293 | elements: newElements,
|
3294 | finishers: finishers
|
3295 | };
|
3296 | }
|
3297 |
|
3298 | var result = this.decorateConstructor(newElements, decorators);
|
3299 | finishers.push.apply(finishers, result.finishers);
|
3300 | result.finishers = finishers;
|
3301 | return result;
|
3302 | },
|
3303 | addElementPlacement: function (element, placements, silent) {
|
3304 | var keys = placements[element.placement];
|
3305 |
|
3306 | if (!silent && keys.indexOf(element.key) !== -1) {
|
3307 | throw new TypeError("Duplicated element (" + element.key + ")");
|
3308 | }
|
3309 |
|
3310 | keys.push(element.key);
|
3311 | },
|
3312 | decorateElement: function (element, placements) {
|
3313 | var extras = [];
|
3314 | var finishers = [];
|
3315 |
|
3316 | for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {
|
3317 | var keys = placements[element.placement];
|
3318 | keys.splice(keys.indexOf(element.key), 1);
|
3319 | var elementObject = this.fromElementDescriptor(element);
|
3320 | var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);
|
3321 | element = elementFinisherExtras.element;
|
3322 | this.addElementPlacement(element, placements);
|
3323 |
|
3324 | if (elementFinisherExtras.finisher) {
|
3325 | finishers.push(elementFinisherExtras.finisher);
|
3326 | }
|
3327 |
|
3328 | var newExtras = elementFinisherExtras.extras;
|
3329 |
|
3330 | if (newExtras) {
|
3331 | for (var j = 0; j < newExtras.length; j++) {
|
3332 | this.addElementPlacement(newExtras[j], placements);
|
3333 | }
|
3334 |
|
3335 | extras.push.apply(extras, newExtras);
|
3336 | }
|
3337 | }
|
3338 |
|
3339 | return {
|
3340 | element: element,
|
3341 | finishers: finishers,
|
3342 | extras: extras
|
3343 | };
|
3344 | },
|
3345 | decorateConstructor: function (elements, decorators) {
|
3346 | var finishers = [];
|
3347 |
|
3348 | for (var i = decorators.length - 1; i >= 0; i--) {
|
3349 | var obj = this.fromClassDescriptor(elements);
|
3350 | var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);
|
3351 |
|
3352 | if (elementsAndFinisher.finisher !== undefined) {
|
3353 | finishers.push(elementsAndFinisher.finisher);
|
3354 | }
|
3355 |
|
3356 | if (elementsAndFinisher.elements !== undefined) {
|
3357 | elements = elementsAndFinisher.elements;
|
3358 |
|
3359 | for (var j = 0; j < elements.length - 1; j++) {
|
3360 | for (var k = j + 1; k < elements.length; k++) {
|
3361 | if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {
|
3362 | throw new TypeError("Duplicated element (" + elements[j].key + ")");
|
3363 | }
|
3364 | }
|
3365 | }
|
3366 | }
|
3367 | }
|
3368 |
|
3369 | return {
|
3370 | elements: elements,
|
3371 | finishers: finishers
|
3372 | };
|
3373 | },
|
3374 | fromElementDescriptor: function (element) {
|
3375 | var obj = {
|
3376 | kind: element.kind,
|
3377 | key: element.key,
|
3378 | placement: element.placement,
|
3379 | descriptor: element.descriptor
|
3380 | };
|
3381 | var desc = {
|
3382 | value: "Descriptor",
|
3383 | configurable: true
|
3384 | };
|
3385 | Object.defineProperty(obj, Symbol.toStringTag, desc);
|
3386 | if (element.kind === "field") obj.initializer = element.initializer;
|
3387 | return obj;
|
3388 | },
|
3389 | toElementDescriptors: function (elementObjects) {
|
3390 | if (elementObjects === undefined) return;
|
3391 | return _toArray(elementObjects).map(function (elementObject) {
|
3392 | var element = this.toElementDescriptor(elementObject);
|
3393 | this.disallowProperty(elementObject, "finisher", "An element descriptor");
|
3394 | this.disallowProperty(elementObject, "extras", "An element descriptor");
|
3395 | return element;
|
3396 | }, this);
|
3397 | },
|
3398 | toElementDescriptor: function (elementObject) {
|
3399 | var kind = String(elementObject.kind);
|
3400 |
|
3401 | if (kind !== "method" && kind !== "field") {
|
3402 | throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"');
|
3403 | }
|
3404 |
|
3405 | var key = _toPropertyKey(elementObject.key);
|
3406 |
|
3407 | var placement = String(elementObject.placement);
|
3408 |
|
3409 | if (placement !== "static" && placement !== "prototype" && placement !== "own") {
|
3410 | throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"');
|
3411 | }
|
3412 |
|
3413 | var descriptor = elementObject.descriptor;
|
3414 | this.disallowProperty(elementObject, "elements", "An element descriptor");
|
3415 | var element = {
|
3416 | kind: kind,
|
3417 | key: key,
|
3418 | placement: placement,
|
3419 | descriptor: Object.assign({}, descriptor)
|
3420 | };
|
3421 |
|
3422 | if (kind !== "field") {
|
3423 | this.disallowProperty(elementObject, "initializer", "A method descriptor");
|
3424 | } else {
|
3425 | this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor");
|
3426 | this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor");
|
3427 | this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor");
|
3428 | element.initializer = elementObject.initializer;
|
3429 | }
|
3430 |
|
3431 | return element;
|
3432 | },
|
3433 | toElementFinisherExtras: function (elementObject) {
|
3434 | var element = this.toElementDescriptor(elementObject);
|
3435 |
|
3436 | var finisher = _optionalCallableProperty(elementObject, "finisher");
|
3437 |
|
3438 | var extras = this.toElementDescriptors(elementObject.extras);
|
3439 | return {
|
3440 | element: element,
|
3441 | finisher: finisher,
|
3442 | extras: extras
|
3443 | };
|
3444 | },
|
3445 | fromClassDescriptor: function (elements) {
|
3446 | var obj = {
|
3447 | kind: "class",
|
3448 | elements: elements.map(this.fromElementDescriptor, this)
|
3449 | };
|
3450 | var desc = {
|
3451 | value: "Descriptor",
|
3452 | configurable: true
|
3453 | };
|
3454 | Object.defineProperty(obj, Symbol.toStringTag, desc);
|
3455 | return obj;
|
3456 | },
|
3457 | toClassDescriptor: function (obj) {
|
3458 | var kind = String(obj.kind);
|
3459 |
|
3460 | if (kind !== "class") {
|
3461 | throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"');
|
3462 | }
|
3463 |
|
3464 | this.disallowProperty(obj, "key", "A class descriptor");
|
3465 | this.disallowProperty(obj, "placement", "A class descriptor");
|
3466 | this.disallowProperty(obj, "descriptor", "A class descriptor");
|
3467 | this.disallowProperty(obj, "initializer", "A class descriptor");
|
3468 | this.disallowProperty(obj, "extras", "A class descriptor");
|
3469 |
|
3470 | var finisher = _optionalCallableProperty(obj, "finisher");
|
3471 |
|
3472 | var elements = this.toElementDescriptors(obj.elements);
|
3473 | return {
|
3474 | elements: elements,
|
3475 | finisher: finisher
|
3476 | };
|
3477 | },
|
3478 | runClassFinishers: function (constructor, finishers) {
|
3479 | for (var i = 0; i < finishers.length; i++) {
|
3480 | var newConstructor = (0, finishers[i])(constructor);
|
3481 |
|
3482 | if (newConstructor !== undefined) {
|
3483 | if (typeof newConstructor !== "function") {
|
3484 | throw new TypeError("Finishers must return a constructor.");
|
3485 | }
|
3486 |
|
3487 | constructor = newConstructor;
|
3488 | }
|
3489 | }
|
3490 |
|
3491 | return constructor;
|
3492 | },
|
3493 | disallowProperty: function (obj, name, objectType) {
|
3494 | if (obj[name] !== undefined) {
|
3495 | throw new TypeError(objectType + " can't have a ." + name + " property.");
|
3496 | }
|
3497 | }
|
3498 | };
|
3499 | return api;
|
3500 | }
|
3501 |
|
3502 | function _createElementDescriptor(def) {
|
3503 | var key = _toPropertyKey(def.key);
|
3504 |
|
3505 | var descriptor;
|
3506 |
|
3507 | if (def.kind === "method") {
|
3508 | descriptor = {
|
3509 | value: def.value,
|
3510 | writable: true,
|
3511 | configurable: true,
|
3512 | enumerable: false
|
3513 | };
|
3514 | } else if (def.kind === "get") {
|
3515 | descriptor = {
|
3516 | get: def.value,
|
3517 | configurable: true,
|
3518 | enumerable: false
|
3519 | };
|
3520 | } else if (def.kind === "set") {
|
3521 | descriptor = {
|
3522 | set: def.value,
|
3523 | configurable: true,
|
3524 | enumerable: false
|
3525 | };
|
3526 | } else if (def.kind === "field") {
|
3527 | descriptor = {
|
3528 | configurable: true,
|
3529 | writable: true,
|
3530 | enumerable: true
|
3531 | };
|
3532 | }
|
3533 |
|
3534 | var element = {
|
3535 | kind: def.kind === "field" ? "field" : "method",
|
3536 | key: key,
|
3537 | placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype",
|
3538 | descriptor: descriptor
|
3539 | };
|
3540 | if (def.decorators) element.decorators = def.decorators;
|
3541 | if (def.kind === "field") element.initializer = def.value;
|
3542 | return element;
|
3543 | }
|
3544 |
|
3545 | function _coalesceGetterSetter(element, other) {
|
3546 | if (element.descriptor.get !== undefined) {
|
3547 | other.descriptor.get = element.descriptor.get;
|
3548 | } else {
|
3549 | other.descriptor.set = element.descriptor.set;
|
3550 | }
|
3551 | }
|
3552 |
|
3553 | function _coalesceClassElements(elements) {
|
3554 | var newElements = [];
|
3555 |
|
3556 | var isSameElement = function (other) {
|
3557 | return other.kind === "method" && other.key === element.key && other.placement === element.placement;
|
3558 | };
|
3559 |
|
3560 | for (var i = 0; i < elements.length; i++) {
|
3561 | var element = elements[i];
|
3562 | var other;
|
3563 |
|
3564 | if (element.kind === "method" && (other = newElements.find(isSameElement))) {
|
3565 | if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {
|
3566 | if (_hasDecorators(element) || _hasDecorators(other)) {
|
3567 | throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated.");
|
3568 | }
|
3569 |
|
3570 | other.descriptor = element.descriptor;
|
3571 | } else {
|
3572 | if (_hasDecorators(element)) {
|
3573 | if (_hasDecorators(other)) {
|
3574 | throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ").");
|
3575 | }
|
3576 |
|
3577 | other.decorators = element.decorators;
|
3578 | }
|
3579 |
|
3580 | _coalesceGetterSetter(element, other);
|
3581 | }
|
3582 | } else {
|
3583 | newElements.push(element);
|
3584 | }
|
3585 | }
|
3586 |
|
3587 | return newElements;
|
3588 | }
|
3589 |
|
3590 | function _hasDecorators(element) {
|
3591 | return element.decorators && element.decorators.length;
|
3592 | }
|
3593 |
|
3594 | function _isDataDescriptor(desc) {
|
3595 | return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);
|
3596 | }
|
3597 |
|
3598 | function _optionalCallableProperty(obj, name) {
|
3599 | var value = obj[name];
|
3600 |
|
3601 | if (value !== undefined && typeof value !== "function") {
|
3602 | throw new TypeError("Expected '" + name + "' to be a function");
|
3603 | }
|
3604 |
|
3605 | return value;
|
3606 | }
|
3607 |
|
3608 | function _classPrivateMethodGet(receiver, privateSet, fn) {
|
3609 | if (!privateSet.has(receiver)) {
|
3610 | throw new TypeError("attempted to get private field on non-instance");
|
3611 | }
|
3612 |
|
3613 | return fn;
|
3614 | }
|
3615 |
|
3616 | function _classPrivateMethodSet() {
|
3617 | throw new TypeError("attempted to reassign private method");
|
3618 | }
|
3619 |
|
3620 | var uniqueNum = 0;
|
3621 | function uniqueNumber() {
|
3622 | uniqueNum += 1;
|
3623 | return uniqueNum;
|
3624 | }
|
3625 | function id(mask, map) {
|
3626 | if (mask === void 0) {
|
3627 | mask = 'xxxxxxxxxx';
|
3628 | }
|
3629 |
|
3630 | if (map === void 0) {
|
3631 | map = '0123456789abcdef';
|
3632 | }
|
3633 |
|
3634 | var length = map.length;
|
3635 | return mask.replace(/x/g, function () {
|
3636 | return map[Math.floor(Math.random() * length)];
|
3637 | });
|
3638 | }
|
3639 | var mdPreloaderContent = "\n <span class=\"preloader-inner\">\n <svg viewBox=\"0 0 36 36\">\n <circle cx=\"18\" cy=\"18\" r=\"16\"></circle>\n </svg>\n </span>\n".trim();
|
3640 | var iosPreloaderContent = ("\n <span class=\"preloader-inner\">\n " + [0, 1, 2, 3, 4, 5, 6, 7].map(function () {
|
3641 | return '<span class="preloader-inner-line"></span>';
|
3642 | }).join('') + "\n </span>\n").trim();
|
3643 | var auroraPreloaderContent = "\n <span class=\"preloader-inner\">\n <span class=\"preloader-inner-circle\"></span>\n </span>\n";
|
3644 | function eventNameToColonCase(eventName) {
|
3645 | var hasColon;
|
3646 | return eventName.split('').map(function (char, index) {
|
3647 | if (char.match(/[A-Z]/) && index !== 0 && !hasColon) {
|
3648 | hasColon = true;
|
3649 | return ":" + char.toLowerCase();
|
3650 | }
|
3651 |
|
3652 | return char.toLowerCase();
|
3653 | }).join('');
|
3654 | }
|
3655 | function deleteProps$1(obj) {
|
3656 | var object = obj;
|
3657 | Object.keys(object).forEach(function (key) {
|
3658 | try {
|
3659 | object[key] = null;
|
3660 | } catch (e) {
|
3661 | }
|
3662 |
|
3663 | try {
|
3664 | delete object[key];
|
3665 | } catch (e) {
|
3666 | }
|
3667 | });
|
3668 | }
|
3669 | function requestAnimationFrame(callback) {
|
3670 | var window = getWindow();
|
3671 | return window.requestAnimationFrame(callback);
|
3672 | }
|
3673 | function cancelAnimationFrame$1(frameId) {
|
3674 | var window = getWindow();
|
3675 | return window.cancelAnimationFrame(frameId);
|
3676 | }
|
3677 | function nextTick$1(callback, delay) {
|
3678 | if (delay === void 0) {
|
3679 | delay = 0;
|
3680 | }
|
3681 |
|
3682 | return setTimeout(callback, delay);
|
3683 | }
|
3684 | function nextFrame$1(callback) {
|
3685 | return requestAnimationFrame(function () {
|
3686 | requestAnimationFrame(callback);
|
3687 | });
|
3688 | }
|
3689 | function now$1() {
|
3690 | return Date.now();
|
3691 | }
|
3692 | function parseUrlQuery(url) {
|
3693 | var window = getWindow();
|
3694 | var query = {};
|
3695 | var urlToParse = url || window.location.href;
|
3696 | var i;
|
3697 | var params;
|
3698 | var param;
|
3699 | var length;
|
3700 |
|
3701 | if (typeof urlToParse === 'string' && urlToParse.length) {
|
3702 | urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\S*\?/, '') : '';
|
3703 | params = urlToParse.split('&').filter(function (paramsPart) {
|
3704 | return paramsPart !== '';
|
3705 | });
|
3706 | length = params.length;
|
3707 |
|
3708 | for (i = 0; i < length; i += 1) {
|
3709 | param = params[i].replace(/#\S+/g, '').split('=');
|
3710 | query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param.slice(1).join('=')) || '';
|
3711 | }
|
3712 | }
|
3713 |
|
3714 | return query;
|
3715 | }
|
3716 | function getTranslate$1(el, axis) {
|
3717 | if (axis === void 0) {
|
3718 | axis = 'x';
|
3719 | }
|
3720 |
|
3721 | var window = getWindow();
|
3722 | var matrix;
|
3723 | var curTransform;
|
3724 | var transformMatrix;
|
3725 | var curStyle = window.getComputedStyle(el, null);
|
3726 |
|
3727 | if (window.WebKitCSSMatrix) {
|
3728 | curTransform = curStyle.transform || curStyle.webkitTransform;
|
3729 |
|
3730 | if (curTransform.split(',').length > 6) {
|
3731 | curTransform = curTransform.split(', ').map(function (a) {
|
3732 | return a.replace(',', '.');
|
3733 | }).join(', ');
|
3734 | }
|
3735 |
|
3736 |
|
3737 |
|
3738 | transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
|
3739 | } else {
|
3740 | transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
|
3741 | matrix = transformMatrix.toString().split(',');
|
3742 | }
|
3743 |
|
3744 | if (axis === 'x') {
|
3745 |
|
3746 | if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
|
3747 | else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
|
3748 | else curTransform = parseFloat(matrix[4]);
|
3749 | }
|
3750 |
|
3751 | if (axis === 'y') {
|
3752 |
|
3753 | if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
|
3754 | else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
|
3755 | else curTransform = parseFloat(matrix[5]);
|
3756 | }
|
3757 |
|
3758 | return curTransform || 0;
|
3759 | }
|
3760 | function serializeObject(obj, parents) {
|
3761 | if (parents === void 0) {
|
3762 | parents = [];
|
3763 | }
|
3764 |
|
3765 | if (typeof obj === 'string') return obj;
|
3766 | var resultArray = [];
|
3767 | var separator = '&';
|
3768 | var newParents;
|
3769 |
|
3770 | function varName(name) {
|
3771 | if (parents.length > 0) {
|
3772 | var parentParts = '';
|
3773 |
|
3774 | for (var j = 0; j < parents.length; j += 1) {
|
3775 | if (j === 0) parentParts += parents[j];else parentParts += "[" + encodeURIComponent(parents[j]) + "]";
|
3776 | }
|
3777 |
|
3778 | return parentParts + "[" + encodeURIComponent(name) + "]";
|
3779 | }
|
3780 |
|
3781 | return encodeURIComponent(name);
|
3782 | }
|
3783 |
|
3784 | function varValue(value) {
|
3785 | return encodeURIComponent(value);
|
3786 | }
|
3787 |
|
3788 | Object.keys(obj).forEach(function (prop) {
|
3789 | var toPush;
|
3790 |
|
3791 | if (Array.isArray(obj[prop])) {
|
3792 | toPush = [];
|
3793 |
|
3794 | for (var i = 0; i < obj[prop].length; i += 1) {
|
3795 | if (!Array.isArray(obj[prop][i]) && typeof obj[prop][i] === 'object') {
|
3796 | newParents = parents.slice();
|
3797 | newParents.push(prop);
|
3798 | newParents.push(String(i));
|
3799 | toPush.push(serializeObject(obj[prop][i], newParents));
|
3800 | } else {
|
3801 | toPush.push(varName(prop) + "[]=" + varValue(obj[prop][i]));
|
3802 | }
|
3803 | }
|
3804 |
|
3805 | if (toPush.length > 0) resultArray.push(toPush.join(separator));
|
3806 | } else if (obj[prop] === null || obj[prop] === '') {
|
3807 | resultArray.push(varName(prop) + "=");
|
3808 | } else if (typeof obj[prop] === 'object') {
|
3809 |
|
3810 | newParents = parents.slice();
|
3811 | newParents.push(prop);
|
3812 | toPush = serializeObject(obj[prop], newParents);
|
3813 | if (toPush !== '') resultArray.push(toPush);
|
3814 | } else if (typeof obj[prop] !== 'undefined' && obj[prop] !== '') {
|
3815 |
|
3816 | resultArray.push(varName(prop) + "=" + varValue(obj[prop]));
|
3817 | } else if (obj[prop] === '') resultArray.push(varName(prop));
|
3818 | });
|
3819 | return resultArray.join(separator);
|
3820 | }
|
3821 | function isObject$1(o) {
|
3822 | return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;
|
3823 | }
|
3824 | function merge() {
|
3825 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
3826 | args[_key] = arguments[_key];
|
3827 | }
|
3828 |
|
3829 | var to = args[0];
|
3830 | args.splice(0, 1);
|
3831 | var from = args;
|
3832 |
|
3833 | for (var i = 0; i < from.length; i += 1) {
|
3834 | var nextSource = args[i];
|
3835 |
|
3836 | if (nextSource !== undefined && nextSource !== null) {
|
3837 | var keysArray = Object.keys(Object(nextSource));
|
3838 |
|
3839 | for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
|
3840 | var nextKey = keysArray[nextIndex];
|
3841 | var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
|
3842 |
|
3843 | if (desc !== undefined && desc.enumerable) {
|
3844 | to[nextKey] = nextSource[nextKey];
|
3845 | }
|
3846 | }
|
3847 | }
|
3848 | }
|
3849 |
|
3850 | return to;
|
3851 | }
|
3852 | function extend$1() {
|
3853 | var deep = true;
|
3854 | var to;
|
3855 | var from;
|
3856 |
|
3857 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
3858 | args[_key2] = arguments[_key2];
|
3859 | }
|
3860 |
|
3861 | if (typeof args[0] === 'boolean') {
|
3862 | deep = args[0];
|
3863 | to = args[1];
|
3864 | args.splice(0, 2);
|
3865 | from = args;
|
3866 | } else {
|
3867 | to = args[0];
|
3868 | args.splice(0, 1);
|
3869 | from = args;
|
3870 | }
|
3871 |
|
3872 | for (var i = 0; i < from.length; i += 1) {
|
3873 | var nextSource = args[i];
|
3874 |
|
3875 | if (nextSource !== undefined && nextSource !== null) {
|
3876 | var keysArray = Object.keys(Object(nextSource));
|
3877 |
|
3878 | for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
|
3879 | var nextKey = keysArray[nextIndex];
|
3880 | var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
|
3881 |
|
3882 | if (desc !== undefined && desc.enumerable) {
|
3883 | if (!deep) {
|
3884 | to[nextKey] = nextSource[nextKey];
|
3885 | } else if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
|
3886 | extend$1(to[nextKey], nextSource[nextKey]);
|
3887 | } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) {
|
3888 | to[nextKey] = {};
|
3889 | extend$1(to[nextKey], nextSource[nextKey]);
|
3890 | } else {
|
3891 | to[nextKey] = nextSource[nextKey];
|
3892 | }
|
3893 | }
|
3894 | }
|
3895 | }
|
3896 | }
|
3897 |
|
3898 | return to;
|
3899 | }
|
3900 | function colorHexToRgb(hex) {
|
3901 | var h = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (m, r, g, b) {
|
3902 | return r + r + g + g + b + b;
|
3903 | });
|
3904 | var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(h);
|
3905 | return result ? result.slice(1).map(function (n) {
|
3906 | return parseInt(n, 16);
|
3907 | }) : null;
|
3908 | }
|
3909 | function colorRgbToHex(r, g, b) {
|
3910 | var result = [r, g, b].map(function (n) {
|
3911 | var hex = n.toString(16);
|
3912 | return hex.length === 1 ? "0" + hex : hex;
|
3913 | }).join('');
|
3914 | return "#" + result;
|
3915 | }
|
3916 | function colorRgbToHsl(r, g, b) {
|
3917 | r /= 255;
|
3918 |
|
3919 | g /= 255;
|
3920 |
|
3921 | b /= 255;
|
3922 |
|
3923 | var max = Math.max(r, g, b);
|
3924 | var min = Math.min(r, g, b);
|
3925 | var d = max - min;
|
3926 | var h;
|
3927 | 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;
|
3928 | var l = (min + max) / 2;
|
3929 | var s = d === 0 ? 0 : d / (1 - Math.abs(2 * l - 1));
|
3930 | if (h < 0) h = 360 / 60 + h;
|
3931 | return [h * 60, s, l];
|
3932 | }
|
3933 | function colorHslToRgb(h, s, l) {
|
3934 | var c = (1 - Math.abs(2 * l - 1)) * s;
|
3935 | var hp = h / 60;
|
3936 | var x = c * (1 - Math.abs(hp % 2 - 1));
|
3937 | var rgb1;
|
3938 |
|
3939 | if (Number.isNaN(h) || typeof h === 'undefined') {
|
3940 | rgb1 = [0, 0, 0];
|
3941 | } 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];
|
3942 |
|
3943 | var m = l - c / 2;
|
3944 | return rgb1.map(function (n) {
|
3945 | return Math.max(0, Math.min(255, Math.round(255 * (n + m))));
|
3946 | });
|
3947 | }
|
3948 | function colorHsbToHsl(h, s, b) {
|
3949 | var HSL = {
|
3950 | h: h,
|
3951 | s: 0,
|
3952 | l: 0
|
3953 | };
|
3954 | var HSB = {
|
3955 | h: h,
|
3956 | s: s,
|
3957 | b: b
|
3958 | };
|
3959 | HSL.l = (2 - HSB.s) * HSB.b / 2;
|
3960 | HSL.s = HSL.l && HSL.l < 1 ? HSB.s * HSB.b / (HSL.l < 0.5 ? HSL.l * 2 : 2 - HSL.l * 2) : HSL.s;
|
3961 | return [HSL.h, HSL.s, HSL.l];
|
3962 | }
|
3963 | function colorHslToHsb(h, s, l) {
|
3964 | var HSB = {
|
3965 | h: h,
|
3966 | s: 0,
|
3967 | b: 0
|
3968 | };
|
3969 | var HSL = {
|
3970 | h: h,
|
3971 | s: s,
|
3972 | l: l
|
3973 | };
|
3974 | var t = HSL.s * (HSL.l < 0.5 ? HSL.l : 1 - HSL.l);
|
3975 | HSB.b = HSL.l + t;
|
3976 | HSB.s = HSL.l > 0 ? 2 * t / HSB.b : HSB.s;
|
3977 | return [HSB.h, HSB.s, HSB.b];
|
3978 | }
|
3979 | function colorThemeCSSProperties() {
|
3980 | var hex;
|
3981 | var rgb;
|
3982 |
|
3983 | for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
3984 | args[_key3] = arguments[_key3];
|
3985 | }
|
3986 |
|
3987 | if (args.length === 1) {
|
3988 | hex = args[0];
|
3989 | rgb = colorHexToRgb(hex);
|
3990 | } else if (args.length === 3) {
|
3991 | rgb = args;
|
3992 | hex = colorRgbToHex.apply(void 0, rgb);
|
3993 | }
|
3994 |
|
3995 | if (!rgb) return {};
|
3996 | var hsl = colorRgbToHsl.apply(void 0, rgb);
|
3997 | var hslShade = [hsl[0], hsl[1], Math.max(0, hsl[2] - 0.08)];
|
3998 | var hslTint = [hsl[0], hsl[1], Math.max(0, hsl[2] + 0.08)];
|
3999 | var shade = colorRgbToHex.apply(void 0, colorHslToRgb.apply(void 0, hslShade));
|
4000 | var tint = colorRgbToHex.apply(void 0, colorHslToRgb.apply(void 0, hslTint));
|
4001 | return {
|
4002 | '--f7-theme-color': hex,
|
4003 | '--f7-theme-color-rgb': rgb.join(', '),
|
4004 | '--f7-theme-color-shade': shade,
|
4005 | '--f7-theme-color-tint': tint
|
4006 | };
|
4007 | }
|
4008 | function bindMethods(instance, obj) {
|
4009 | Object.keys(obj).forEach(function (key) {
|
4010 | if (isObject$1(obj[key])) {
|
4011 | Object.keys(obj[key]).forEach(function (subKey) {
|
4012 | if (typeof obj[key][subKey] === 'function') {
|
4013 | obj[key][subKey] = obj[key][subKey].bind(instance);
|
4014 | }
|
4015 | });
|
4016 | }
|
4017 |
|
4018 | instance[key] = obj[key];
|
4019 | });
|
4020 | }
|
4021 | function flattenArray() {
|
4022 | var arr = [];
|
4023 |
|
4024 | for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
4025 | args[_key4] = arguments[_key4];
|
4026 | }
|
4027 |
|
4028 | args.forEach(function (arg) {
|
4029 | if (Array.isArray(arg)) arr.push.apply(arr, flattenArray.apply(void 0, arg));else arr.push(arg);
|
4030 | });
|
4031 | return arr;
|
4032 | }
|
4033 |
|
4034 | var utils = Object.freeze({
|
4035 | __proto__: null,
|
4036 | uniqueNumber: uniqueNumber,
|
4037 | id: id,
|
4038 | mdPreloaderContent: mdPreloaderContent,
|
4039 | iosPreloaderContent: iosPreloaderContent,
|
4040 | auroraPreloaderContent: auroraPreloaderContent,
|
4041 | eventNameToColonCase: eventNameToColonCase,
|
4042 | deleteProps: deleteProps$1,
|
4043 | requestAnimationFrame: requestAnimationFrame,
|
4044 | cancelAnimationFrame: cancelAnimationFrame$1,
|
4045 | nextTick: nextTick$1,
|
4046 | nextFrame: nextFrame$1,
|
4047 | now: now$1,
|
4048 | parseUrlQuery: parseUrlQuery,
|
4049 | getTranslate: getTranslate$1,
|
4050 | serializeObject: serializeObject,
|
4051 | isObject: isObject$1,
|
4052 | merge: merge,
|
4053 | extend: extend$1,
|
4054 | colorHexToRgb: colorHexToRgb,
|
4055 | colorRgbToHex: colorRgbToHex,
|
4056 | colorRgbToHsl: colorRgbToHsl,
|
4057 | colorHslToRgb: colorHslToRgb,
|
4058 | colorHsbToHsl: colorHsbToHsl,
|
4059 | colorHslToHsb: colorHslToHsb,
|
4060 | colorThemeCSSProperties: colorThemeCSSProperties,
|
4061 | bindMethods: bindMethods,
|
4062 | flattenArray: flattenArray
|
4063 | });
|
4064 |
|
4065 | var support$1;
|
4066 |
|
4067 | function calcSupport$1() {
|
4068 | var window = getWindow();
|
4069 | var document = getDocument();
|
4070 | return {
|
4071 | touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
|
4072 | pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
|
4073 | passiveListener: function checkPassiveListener() {
|
4074 | var supportsPassive = false;
|
4075 |
|
4076 | try {
|
4077 | var opts = Object.defineProperty({}, 'passive', {
|
4078 |
|
4079 | get: function get() {
|
4080 | supportsPassive = true;
|
4081 | }
|
4082 | });
|
4083 | window.addEventListener('testPassiveListener', null, opts);
|
4084 | } catch (e) {
|
4085 | }
|
4086 |
|
4087 | return supportsPassive;
|
4088 | }(),
|
4089 | intersectionObserver: function checkObserver() {
|
4090 | return 'IntersectionObserver' in window;
|
4091 | }()
|
4092 | };
|
4093 | }
|
4094 |
|
4095 | function getSupport$1() {
|
4096 | if (!support$1) {
|
4097 | support$1 = calcSupport$1();
|
4098 | }
|
4099 |
|
4100 | return support$1;
|
4101 | }
|
4102 |
|
4103 | var deviceCalculated;
|
4104 |
|
4105 | function calcDevice$1(_temp) {
|
4106 | var _ref = _temp === void 0 ? {} : _temp,
|
4107 | userAgent = _ref.userAgent;
|
4108 |
|
4109 | var support = getSupport$1();
|
4110 | var window = getWindow();
|
4111 | var platform = window.navigator.platform;
|
4112 | var ua = userAgent || window.navigator.userAgent;
|
4113 | var device = {
|
4114 | ios: false,
|
4115 | android: false,
|
4116 | androidChrome: false,
|
4117 | desktop: false,
|
4118 | iphone: false,
|
4119 | ipod: false,
|
4120 | ipad: false,
|
4121 | edge: false,
|
4122 | ie: false,
|
4123 | firefox: false,
|
4124 | macos: false,
|
4125 | windows: false,
|
4126 | cordova: !!(window.cordova || window.phonegap),
|
4127 | phonegap: !!(window.cordova || window.phonegap),
|
4128 | electron: false,
|
4129 | capacitor: !!window.Capacitor,
|
4130 | nwjs: false
|
4131 | };
|
4132 | var screenWidth = window.screen.width;
|
4133 | var screenHeight = window.screen.height;
|
4134 | var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
|
4135 |
|
4136 | var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
|
4137 | var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
|
4138 | var iphone = !ipad && ua.match(/(iPhone\sOS|iOS|iPhone;\sCPU\sOS)\s([\d_]+)/);
|
4139 | var ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;
|
4140 | var edge = ua.indexOf('Edge/') >= 0;
|
4141 | var firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;
|
4142 | var windows = platform === 'Win32';
|
4143 | var electron = ua.toLowerCase().indexOf('electron') >= 0;
|
4144 | var nwjs = typeof nw !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.nw !== 'undefined';
|
4145 | var macos = platform === 'MacIntel';
|
4146 |
|
4147 | var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
|
4148 |
|
4149 | if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
|
4150 | ipad = ua.match(/(Version)\/([\d.]+)/);
|
4151 | if (!ipad) ipad = [0, 1, '13_0_0'];
|
4152 | macos = false;
|
4153 | }
|
4154 |
|
4155 | device.ie = ie;
|
4156 | device.edge = edge;
|
4157 | device.firefox = firefox;
|
4158 |
|
4159 | if (android) {
|
4160 | device.os = 'android';
|
4161 | device.osVersion = android[2];
|
4162 | device.android = true;
|
4163 | device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;
|
4164 | }
|
4165 |
|
4166 | if (ipad || iphone || ipod) {
|
4167 | device.os = 'ios';
|
4168 | device.ios = true;
|
4169 | }
|
4170 |
|
4171 |
|
4172 | if (iphone && !ipod) {
|
4173 | device.osVersion = iphone[2].replace(/_/g, '.');
|
4174 | device.iphone = true;
|
4175 | }
|
4176 |
|
4177 | if (ipad) {
|
4178 | device.osVersion = ipad[2].replace(/_/g, '.');
|
4179 | device.ipad = true;
|
4180 | }
|
4181 |
|
4182 | if (ipod) {
|
4183 | device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;
|
4184 | device.ipod = true;
|
4185 | }
|
4186 |
|
4187 |
|
4188 | if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {
|
4189 | if (device.osVersion.split('.')[0] === '10') {
|
4190 | device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];
|
4191 | }
|
4192 | }
|
4193 |
|
4194 |
|
4195 | device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone)) || window.matchMedia && window.matchMedia('(display-mode: standalone)').matches;
|
4196 | device.webview = device.webView;
|
4197 | device.standalone = device.webView;
|
4198 |
|
4199 | device.desktop = !(device.ios || device.android) || electron || nwjs;
|
4200 |
|
4201 | if (device.desktop) {
|
4202 | device.electron = electron;
|
4203 | device.nwjs = nwjs;
|
4204 | device.macos = macos;
|
4205 | device.windows = windows;
|
4206 |
|
4207 | if (device.macos) {
|
4208 | device.os = 'macos';
|
4209 | }
|
4210 |
|
4211 | if (device.windows) {
|
4212 | device.os = 'windows';
|
4213 | }
|
4214 | }
|
4215 |
|
4216 |
|
4217 | device.pixelRatio = window.devicePixelRatio || 1;
|
4218 |
|
4219 | var DARK = '(prefers-color-scheme: dark)';
|
4220 | var LIGHT = '(prefers-color-scheme: light)';
|
4221 |
|
4222 | device.prefersColorScheme = function prefersColorTheme() {
|
4223 | var theme;
|
4224 |
|
4225 | if (window.matchMedia && window.matchMedia(LIGHT).matches) {
|
4226 | theme = 'light';
|
4227 | }
|
4228 |
|
4229 | if (window.matchMedia && window.matchMedia(DARK).matches) {
|
4230 | theme = 'dark';
|
4231 | }
|
4232 |
|
4233 | return theme;
|
4234 | };
|
4235 |
|
4236 |
|
4237 | return device;
|
4238 | }
|
4239 |
|
4240 | function getDevice$1(overrides, reset) {
|
4241 | if (overrides === void 0) {
|
4242 | overrides = {};
|
4243 | }
|
4244 |
|
4245 | if (!deviceCalculated || reset) {
|
4246 | deviceCalculated = calcDevice$1(overrides);
|
4247 | }
|
4248 |
|
4249 | return deviceCalculated;
|
4250 | }
|
4251 |
|
4252 | var EventsClass = function () {
|
4253 | function EventsClass(parents) {
|
4254 | if (parents === void 0) {
|
4255 | parents = [];
|
4256 | }
|
4257 |
|
4258 | var self = this;
|
4259 | self.eventsParents = parents;
|
4260 | self.eventsListeners = {};
|
4261 | }
|
4262 |
|
4263 | var _proto = EventsClass.prototype;
|
4264 |
|
4265 | _proto.on = function on(events, handler, priority) {
|
4266 | var self = this;
|
4267 | if (typeof handler !== 'function') return self;
|
4268 | var method = priority ? 'unshift' : 'push';
|
4269 | events.split(' ').forEach(function (event) {
|
4270 | if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
|
4271 | self.eventsListeners[event][method](handler);
|
4272 | });
|
4273 | return self;
|
4274 | };
|
4275 |
|
4276 | _proto.once = function once(events, handler, priority) {
|
4277 | var self = this;
|
4278 | if (typeof handler !== 'function') return self;
|
4279 |
|
4280 | function onceHandler() {
|
4281 | self.off(events, onceHandler);
|
4282 |
|
4283 | if (onceHandler.f7proxy) {
|
4284 | delete onceHandler.f7proxy;
|
4285 | }
|
4286 |
|
4287 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
4288 | args[_key] = arguments[_key];
|
4289 | }
|
4290 |
|
4291 | handler.apply(self, args);
|
4292 | }
|
4293 |
|
4294 | onceHandler.f7proxy = handler;
|
4295 | return self.on(events, onceHandler, priority);
|
4296 | };
|
4297 |
|
4298 | _proto.off = function off(events, handler) {
|
4299 | var self = this;
|
4300 | if (!self.eventsListeners) return self;
|
4301 | events.split(' ').forEach(function (event) {
|
4302 | if (typeof handler === 'undefined') {
|
4303 | self.eventsListeners[event] = [];
|
4304 | } else if (self.eventsListeners[event]) {
|
4305 | self.eventsListeners[event].forEach(function (eventHandler, index) {
|
4306 | if (eventHandler === handler || eventHandler.f7proxy && eventHandler.f7proxy === handler) {
|
4307 | self.eventsListeners[event].splice(index, 1);
|
4308 | }
|
4309 | });
|
4310 | }
|
4311 | });
|
4312 | return self;
|
4313 | };
|
4314 |
|
4315 | _proto.emit = function emit() {
|
4316 | var self = this;
|
4317 | if (!self.eventsListeners) return self;
|
4318 | var events;
|
4319 | var data;
|
4320 | var context;
|
4321 | var eventsParents;
|
4322 |
|
4323 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
4324 | args[_key2] = arguments[_key2];
|
4325 | }
|
4326 |
|
4327 | if (typeof args[0] === 'string' || Array.isArray(args[0])) {
|
4328 | events = args[0];
|
4329 | data = args.slice(1, args.length);
|
4330 | context = self;
|
4331 | eventsParents = self.eventsParents;
|
4332 | } else {
|
4333 | events = args[0].events;
|
4334 | data = args[0].data;
|
4335 | context = args[0].context || self;
|
4336 | eventsParents = args[0].local ? [] : args[0].parents || self.eventsParents;
|
4337 | }
|
4338 |
|
4339 | var eventsArray = Array.isArray(events) ? events : events.split(' ');
|
4340 | var localEvents = eventsArray.map(function (eventName) {
|
4341 | return eventName.replace('local::', '');
|
4342 | });
|
4343 | var parentEvents = eventsArray.filter(function (eventName) {
|
4344 | return eventName.indexOf('local::') < 0;
|
4345 | });
|
4346 | localEvents.forEach(function (event) {
|
4347 | if (self.eventsListeners && self.eventsListeners[event]) {
|
4348 | var handlers = [];
|
4349 | self.eventsListeners[event].forEach(function (eventHandler) {
|
4350 | handlers.push(eventHandler);
|
4351 | });
|
4352 | handlers.forEach(function (eventHandler) {
|
4353 | eventHandler.apply(context, data);
|
4354 | });
|
4355 | }
|
4356 | });
|
4357 |
|
4358 | if (eventsParents && eventsParents.length > 0) {
|
4359 | eventsParents.forEach(function (eventsParent) {
|
4360 | eventsParent.emit.apply(eventsParent, [parentEvents].concat(data));
|
4361 | });
|
4362 | }
|
4363 |
|
4364 | return self;
|
4365 | };
|
4366 |
|
4367 | return EventsClass;
|
4368 | }();
|
4369 |
|
4370 | var Framework7Class = function (_EventsClass) {
|
4371 | _inheritsLoose(Framework7Class, _EventsClass);
|
4372 |
|
4373 | function Framework7Class(params, parents) {
|
4374 | var _this;
|
4375 |
|
4376 | if (params === void 0) {
|
4377 | params = {};
|
4378 | }
|
4379 |
|
4380 | if (parents === void 0) {
|
4381 | parents = [];
|
4382 | }
|
4383 |
|
4384 | _this = _EventsClass.call(this, parents) || this;
|
4385 |
|
4386 | var self = _assertThisInitialized(_this);
|
4387 |
|
4388 | self.params = params;
|
4389 |
|
4390 | if (self.params && self.params.on) {
|
4391 | Object.keys(self.params.on).forEach(function (eventName) {
|
4392 | self.on(eventName, self.params.on[eventName]);
|
4393 | });
|
4394 | }
|
4395 |
|
4396 | return _this;
|
4397 | }
|
4398 |
|
4399 |
|
4400 | var _proto = Framework7Class.prototype;
|
4401 |
|
4402 | _proto.useModuleParams = function useModuleParams(module, instanceParams) {
|
4403 | if (module.params) {
|
4404 | var originalParams = {};
|
4405 | Object.keys(module.params).forEach(function (paramKey) {
|
4406 | if (typeof instanceParams[paramKey] === 'undefined') return;
|
4407 | originalParams[paramKey] = extend$1({}, instanceParams[paramKey]);
|
4408 | });
|
4409 | extend$1(instanceParams, module.params);
|
4410 | Object.keys(originalParams).forEach(function (paramKey) {
|
4411 | extend$1(instanceParams[paramKey], originalParams[paramKey]);
|
4412 | });
|
4413 | }
|
4414 | };
|
4415 |
|
4416 | _proto.useModulesParams = function useModulesParams(instanceParams) {
|
4417 | var instance = this;
|
4418 | if (!instance.modules) return;
|
4419 | Object.keys(instance.modules).forEach(function (moduleName) {
|
4420 | var module = instance.modules[moduleName];
|
4421 |
|
4422 | if (module.params) {
|
4423 | extend$1(instanceParams, module.params);
|
4424 | }
|
4425 | });
|
4426 | };
|
4427 |
|
4428 | _proto.useModule = function useModule(moduleName, moduleParams) {
|
4429 | if (moduleName === void 0) {
|
4430 | moduleName = '';
|
4431 | }
|
4432 |
|
4433 | if (moduleParams === void 0) {
|
4434 | moduleParams = {};
|
4435 | }
|
4436 |
|
4437 | var instance = this;
|
4438 | if (!instance.modules) return;
|
4439 | var module = typeof moduleName === 'string' ? instance.modules[moduleName] : moduleName;
|
4440 | if (!module) return;
|
4441 |
|
4442 | if (module.instance) {
|
4443 | Object.keys(module.instance).forEach(function (modulePropName) {
|
4444 | var moduleProp = module.instance[modulePropName];
|
4445 |
|
4446 | if (typeof moduleProp === 'function') {
|
4447 | instance[modulePropName] = moduleProp.bind(instance);
|
4448 | } else {
|
4449 | instance[modulePropName] = moduleProp;
|
4450 | }
|
4451 | });
|
4452 | }
|
4453 |
|
4454 |
|
4455 | if (module.on && instance.on) {
|
4456 | Object.keys(module.on).forEach(function (moduleEventName) {
|
4457 | instance.on(moduleEventName, module.on[moduleEventName]);
|
4458 | });
|
4459 | }
|
4460 |
|
4461 |
|
4462 | if (module.vnode) {
|
4463 | if (!instance.vnodeHooks) instance.vnodeHooks = {};
|
4464 | Object.keys(module.vnode).forEach(function (vnodeId) {
|
4465 | Object.keys(module.vnode[vnodeId]).forEach(function (hookName) {
|
4466 | var handler = module.vnode[vnodeId][hookName];
|
4467 | if (!instance.vnodeHooks[hookName]) instance.vnodeHooks[hookName] = {};
|
4468 | if (!instance.vnodeHooks[hookName][vnodeId]) instance.vnodeHooks[hookName][vnodeId] = [];
|
4469 | instance.vnodeHooks[hookName][vnodeId].push(handler.bind(instance));
|
4470 | });
|
4471 | });
|
4472 | }
|
4473 |
|
4474 |
|
4475 | if (module.create) {
|
4476 | module.create.bind(instance)(moduleParams);
|
4477 | }
|
4478 | };
|
4479 |
|
4480 | _proto.useModules = function useModules(modulesParams) {
|
4481 | if (modulesParams === void 0) {
|
4482 | modulesParams = {};
|
4483 | }
|
4484 |
|
4485 | var instance = this;
|
4486 | if (!instance.modules) return;
|
4487 | Object.keys(instance.modules).forEach(function (moduleName) {
|
4488 | var moduleParams = modulesParams[moduleName] || {};
|
4489 | instance.useModule(moduleName, moduleParams);
|
4490 | });
|
4491 | };
|
4492 |
|
4493 | Framework7Class.installModule = function installModule(module) {
|
4494 | var Class = this;
|
4495 | if (!Class.prototype.modules) Class.prototype.modules = {};
|
4496 | var name = module.name || Object.keys(Class.prototype.modules).length + "_" + now$1();
|
4497 | Class.prototype.modules[name] = module;
|
4498 |
|
4499 | if (module.proto) {
|
4500 | Object.keys(module.proto).forEach(function (key) {
|
4501 | Class.prototype[key] = module.proto[key];
|
4502 | });
|
4503 | }
|
4504 |
|
4505 |
|
4506 | if (module.static) {
|
4507 | Object.keys(module.static).forEach(function (key) {
|
4508 | Class[key] = module.static[key];
|
4509 | });
|
4510 | }
|
4511 |
|
4512 |
|
4513 | if (module.install) {
|
4514 | for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
4515 | params[_key - 1] = arguments[_key];
|
4516 | }
|
4517 |
|
4518 | module.install.apply(Class, params);
|
4519 | }
|
4520 |
|
4521 | return Class;
|
4522 | };
|
4523 |
|
4524 | Framework7Class.use = function use(module) {
|
4525 | var Class = this;
|
4526 |
|
4527 | if (Array.isArray(module)) {
|
4528 | module.forEach(function (m) {
|
4529 | return Class.installModule(m);
|
4530 | });
|
4531 | return Class;
|
4532 | }
|
4533 |
|
4534 | for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
4535 | params[_key2 - 1] = arguments[_key2];
|
4536 | }
|
4537 |
|
4538 | return Class.installModule.apply(Class, [module].concat(params));
|
4539 | };
|
4540 |
|
4541 | _createClass$1(Framework7Class, null, [{
|
4542 | key: "components",
|
4543 | set: function set(components) {
|
4544 | var Class = this;
|
4545 | if (!Class.use) return;
|
4546 | Class.use(components);
|
4547 | }
|
4548 | }]);
|
4549 |
|
4550 | return Framework7Class;
|
4551 | }(EventsClass);
|
4552 |
|
4553 | function ConstructorMethods(parameters) {
|
4554 | if (parameters === void 0) {
|
4555 | parameters = {};
|
4556 | }
|
4557 |
|
4558 | var _parameters = parameters,
|
4559 | defaultSelector = _parameters.defaultSelector,
|
4560 | Constructor = _parameters.constructor,
|
4561 | domProp = _parameters.domProp,
|
4562 | app = _parameters.app,
|
4563 | addMethods = _parameters.addMethods;
|
4564 | var methods = {
|
4565 | create: function create() {
|
4566 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
4567 | args[_key] = arguments[_key];
|
4568 | }
|
4569 |
|
4570 | if (app) return _construct(Constructor, [app].concat(args));
|
4571 | return _construct(Constructor, args);
|
4572 | },
|
4573 | get: function get(el) {
|
4574 | if (el === void 0) {
|
4575 | el = defaultSelector;
|
4576 | }
|
4577 |
|
4578 | if (el instanceof Constructor) return el;
|
4579 | var $el = $(el);
|
4580 | if ($el.length === 0) return undefined;
|
4581 | return $el[0][domProp];
|
4582 | },
|
4583 | destroy: function destroy(el) {
|
4584 | var instance = methods.get(el);
|
4585 | if (instance && instance.destroy) return instance.destroy();
|
4586 | return undefined;
|
4587 | }
|
4588 | };
|
4589 |
|
4590 | if (addMethods && Array.isArray(addMethods)) {
|
4591 | addMethods.forEach(function (methodName) {
|
4592 | methods[methodName] = function (el) {
|
4593 | if (el === void 0) {
|
4594 | el = defaultSelector;
|
4595 | }
|
4596 |
|
4597 | var instance = methods.get(el);
|
4598 |
|
4599 | for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
4600 | args[_key2 - 1] = arguments[_key2];
|
4601 | }
|
4602 |
|
4603 | if (instance && instance[methodName]) return instance[methodName].apply(instance, args);
|
4604 | return undefined;
|
4605 | };
|
4606 | });
|
4607 | }
|
4608 |
|
4609 | return methods;
|
4610 | }
|
4611 |
|
4612 | function ModalMethods(parameters) {
|
4613 | if (parameters === void 0) {
|
4614 | parameters = {};
|
4615 | }
|
4616 |
|
4617 | var _parameters = parameters,
|
4618 | defaultSelector = _parameters.defaultSelector,
|
4619 | Constructor = _parameters.constructor,
|
4620 | app = _parameters.app;
|
4621 | var methods = extend$1(ConstructorMethods({
|
4622 | defaultSelector: defaultSelector,
|
4623 | constructor: Constructor,
|
4624 | app: app,
|
4625 | domProp: 'f7Modal'
|
4626 | }), {
|
4627 | open: function open(el, animate, targetEl) {
|
4628 | var $el = $(el);
|
4629 |
|
4630 | if ($el.length > 1 && targetEl) {
|
4631 |
|
4632 | var $targetPage = $(targetEl).parents('.page');
|
4633 |
|
4634 | if ($targetPage.length) {
|
4635 | $el.each(function (modalEl) {
|
4636 | var $modalEl = $(modalEl);
|
4637 |
|
4638 | if ($modalEl.parents($targetPage)[0] === $targetPage[0]) {
|
4639 | $el = $modalEl;
|
4640 | }
|
4641 | });
|
4642 | }
|
4643 | }
|
4644 |
|
4645 | if ($el.length > 1) {
|
4646 | $el = $el.eq($el.length - 1);
|
4647 | }
|
4648 |
|
4649 | if (!$el.length) return undefined;
|
4650 | var instance = $el[0].f7Modal;
|
4651 |
|
4652 | if (!instance) {
|
4653 | var params = $el.dataset();
|
4654 | instance = new Constructor(app, _extends$j({
|
4655 | el: $el
|
4656 | }, params));
|
4657 | }
|
4658 |
|
4659 | return instance.open(animate);
|
4660 | },
|
4661 | close: function close(el, animate, targetEl) {
|
4662 | if (el === void 0) {
|
4663 | el = defaultSelector;
|
4664 | }
|
4665 |
|
4666 | var $el = $(el);
|
4667 | if (!$el.length) return undefined;
|
4668 |
|
4669 | if ($el.length > 1) {
|
4670 |
|
4671 | var $parentEl;
|
4672 |
|
4673 | if (targetEl) {
|
4674 | var $targetEl = $(targetEl);
|
4675 |
|
4676 | if ($targetEl.length) {
|
4677 | $parentEl = $targetEl.parents($el);
|
4678 | }
|
4679 | }
|
4680 |
|
4681 | if ($parentEl && $parentEl.length > 0) {
|
4682 | $el = $parentEl;
|
4683 | } else {
|
4684 | $el = $el.eq($el.length - 1);
|
4685 | }
|
4686 | }
|
4687 |
|
4688 | var instance = $el[0].f7Modal;
|
4689 |
|
4690 | if (!instance) {
|
4691 | var params = $el.dataset();
|
4692 | instance = new Constructor(app, _extends$j({
|
4693 | el: $el
|
4694 | }, params));
|
4695 | }
|
4696 |
|
4697 | return instance.close(animate);
|
4698 | }
|
4699 | });
|
4700 | return methods;
|
4701 | }
|
4702 |
|
4703 | var fetchedModules = [];
|
4704 |
|
4705 | function loadModule(moduleToLoad) {
|
4706 | var Framework7 = this;
|
4707 | var window = getWindow();
|
4708 | var document = getDocument();
|
4709 | return new Promise(function (resolve, reject) {
|
4710 | var app = Framework7.instance;
|
4711 | var modulePath;
|
4712 | var moduleObj;
|
4713 | var moduleFunc;
|
4714 |
|
4715 | if (!moduleToLoad) {
|
4716 | reject(new Error('Framework7: Lazy module must be specified'));
|
4717 | return;
|
4718 | }
|
4719 |
|
4720 | function install(module) {
|
4721 | Framework7.use(module);
|
4722 |
|
4723 | if (app) {
|
4724 | app.useModuleParams(module, app.params);
|
4725 | app.useModule(module);
|
4726 | }
|
4727 | }
|
4728 |
|
4729 | if (typeof moduleToLoad === 'string') {
|
4730 | var matchNamePattern = moduleToLoad.match(/([a-z0-9-]*)/i);
|
4731 |
|
4732 | if (moduleToLoad.indexOf('.') < 0 && matchNamePattern && matchNamePattern[0].length === moduleToLoad.length) {
|
4733 | if (!app || app && !app.params.lazyModulesPath) {
|
4734 | reject(new Error('Framework7: "lazyModulesPath" app parameter must be specified to fetch module by name'));
|
4735 | return;
|
4736 | }
|
4737 |
|
4738 | modulePath = app.params.lazyModulesPath + "/" + moduleToLoad + "/" + moduleToLoad + ".js";
|
4739 | } else {
|
4740 | modulePath = moduleToLoad;
|
4741 | }
|
4742 | } else if (typeof moduleToLoad === 'function') {
|
4743 | moduleFunc = moduleToLoad;
|
4744 | } else {
|
4745 |
|
4746 | moduleObj = moduleToLoad;
|
4747 | }
|
4748 |
|
4749 | if (moduleFunc) {
|
4750 | var module = moduleFunc(Framework7, false);
|
4751 |
|
4752 | if (!module) {
|
4753 | reject(new Error("Framework7: Can't find Framework7 component in specified component function"));
|
4754 | return;
|
4755 | }
|
4756 |
|
4757 |
|
4758 | if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {
|
4759 | resolve();
|
4760 | return;
|
4761 | }
|
4762 |
|
4763 |
|
4764 | install(module);
|
4765 | resolve();
|
4766 | }
|
4767 |
|
4768 | if (moduleObj) {
|
4769 | var _module = moduleObj;
|
4770 |
|
4771 | if (!_module) {
|
4772 | reject(new Error("Framework7: Can't find Framework7 component in specified component"));
|
4773 | return;
|
4774 | }
|
4775 |
|
4776 |
|
4777 | if (Framework7.prototype.modules && Framework7.prototype.modules[_module.name]) {
|
4778 | resolve();
|
4779 | return;
|
4780 | }
|
4781 |
|
4782 |
|
4783 | install(_module);
|
4784 | resolve();
|
4785 | }
|
4786 |
|
4787 | if (modulePath) {
|
4788 | if (fetchedModules.indexOf(modulePath) >= 0) {
|
4789 | resolve();
|
4790 | return;
|
4791 | }
|
4792 |
|
4793 | fetchedModules.push(modulePath);
|
4794 | var scriptLoad = new Promise(function (resolveScript, rejectScript) {
|
4795 | Framework7.request.get(modulePath, function (scriptContent) {
|
4796 | var callbackId = id();
|
4797 | var callbackLoadName = "f7_component_loader_callback_" + callbackId;
|
4798 | var scriptEl = document.createElement('script');
|
4799 | scriptEl.innerHTML = "window." + callbackLoadName + " = function (Framework7, Framework7AutoInstallComponent) {return " + scriptContent.trim() + "}";
|
4800 | $('head').append(scriptEl);
|
4801 | var componentLoader = window[callbackLoadName];
|
4802 | delete window[callbackLoadName];
|
4803 | $(scriptEl).remove();
|
4804 | var module = componentLoader(Framework7, false);
|
4805 |
|
4806 | if (!module) {
|
4807 | rejectScript(new Error("Framework7: Can't find Framework7 component in " + modulePath + " file"));
|
4808 | return;
|
4809 | }
|
4810 |
|
4811 |
|
4812 | if (Framework7.prototype.modules && Framework7.prototype.modules[module.name]) {
|
4813 | resolveScript();
|
4814 | return;
|
4815 | }
|
4816 |
|
4817 |
|
4818 | install(module);
|
4819 | resolveScript();
|
4820 | }, function (xhr, status) {
|
4821 | rejectScript(xhr, status);
|
4822 | });
|
4823 | });
|
4824 | var styleLoad = new Promise(function (resolveStyle) {
|
4825 | Framework7.request.get(modulePath.replace('.js', app.rtl ? '.rtl.css' : '.css'), function (styleContent) {
|
4826 | var styleEl = document.createElement('style');
|
4827 | styleEl.innerHTML = styleContent;
|
4828 | $('head').append(styleEl);
|
4829 | resolveStyle();
|
4830 | }, function () {
|
4831 | resolveStyle();
|
4832 | });
|
4833 | });
|
4834 | Promise.all([scriptLoad, styleLoad]).then(function () {
|
4835 | resolve();
|
4836 | }).catch(function (err) {
|
4837 | reject(err);
|
4838 | });
|
4839 | }
|
4840 | });
|
4841 | }
|
4842 |
|
4843 | var Framework7 = function (_Framework7Class) {
|
4844 | _inheritsLoose(Framework7, _Framework7Class);
|
4845 |
|
4846 | function Framework7(params) {
|
4847 | var _this;
|
4848 |
|
4849 | if (params === void 0) {
|
4850 | params = {};
|
4851 | }
|
4852 |
|
4853 | _this = _Framework7Class.call(this, params) || this;
|
4854 |
|
4855 | if (Framework7.instance && typeof window !== 'undefined') {
|
4856 | throw new Error("Framework7 is already initialized and can't be initialized more than once");
|
4857 | }
|
4858 |
|
4859 | var device = getDevice$1({
|
4860 | userAgent: params.userAgent || undefined
|
4861 | });
|
4862 | var support = getSupport$1();
|
4863 | var passedParams = extend$1({}, params);
|
4864 |
|
4865 | var app = _assertThisInitialized(_this);
|
4866 |
|
4867 | app.device = device;
|
4868 | app.support = support;
|
4869 | var w = getWindow();
|
4870 | var d = getDocument();
|
4871 | Framework7.instance = app;
|
4872 |
|
4873 | var defaults = {
|
4874 | version: '1.0.0',
|
4875 | id: 'io.framework7.myapp',
|
4876 | el: 'body',
|
4877 | theme: 'auto',
|
4878 | language: w.navigator.language,
|
4879 | routes: [],
|
4880 | name: 'Framework7',
|
4881 | lazyModulesPath: null,
|
4882 | initOnDeviceReady: true,
|
4883 | init: true,
|
4884 | autoDarkTheme: false,
|
4885 | iosTranslucentBars: true,
|
4886 | iosTranslucentModals: true,
|
4887 | component: undefined,
|
4888 | componentUrl: undefined,
|
4889 | userAgent: null,
|
4890 | url: null
|
4891 | };
|
4892 |
|
4893 | app.useModulesParams(defaults);
|
4894 |
|
4895 | app.params = extend$1(defaults, params);
|
4896 | extend$1(app, {
|
4897 |
|
4898 | id: app.params.id,
|
4899 |
|
4900 | name: app.params.name,
|
4901 |
|
4902 | version: app.params.version,
|
4903 |
|
4904 | routes: app.params.routes,
|
4905 |
|
4906 | language: app.params.language,
|
4907 |
|
4908 | theme: function getTheme() {
|
4909 | if (app.params.theme === 'auto') {
|
4910 | if (device.ios) return 'ios';
|
4911 | if (device.desktop && device.electron) return 'aurora';
|
4912 | return 'md';
|
4913 | }
|
4914 |
|
4915 | return app.params.theme;
|
4916 | }(),
|
4917 |
|
4918 | passedParams: passedParams,
|
4919 | online: w.navigator.onLine
|
4920 | });
|
4921 | if (params.store) app.params.store = params.store;
|
4922 |
|
4923 | if (app.$el && app.$el[0]) {
|
4924 | app.$el[0].f7 = app;
|
4925 | }
|
4926 |
|
4927 |
|
4928 | app.useModules();
|
4929 |
|
4930 | app.initStore();
|
4931 |
|
4932 | if (app.params.init) {
|
4933 | if (device.cordova && app.params.initOnDeviceReady) {
|
4934 | $(d).on('deviceready', function () {
|
4935 | app.init();
|
4936 | });
|
4937 | } else {
|
4938 | app.init();
|
4939 | }
|
4940 | }
|
4941 |
|
4942 |
|
4943 | return app || _assertThisInitialized(_this);
|
4944 | }
|
4945 |
|
4946 | var _proto = Framework7.prototype;
|
4947 |
|
4948 | _proto.mount = function mount(rootEl) {
|
4949 | var app = this;
|
4950 | var window = getWindow();
|
4951 | var document = getDocument();
|
4952 | var $rootEl = $(rootEl || app.params.el).eq(0);
|
4953 | app.$el = $rootEl;
|
4954 |
|
4955 | if (app.$el && app.$el[0]) {
|
4956 | app.el = app.$el[0];
|
4957 | app.el.f7 = app;
|
4958 | app.rtl = $rootEl.css('direction') === 'rtl';
|
4959 | }
|
4960 |
|
4961 |
|
4962 | var DARK = '(prefers-color-scheme: dark)';
|
4963 | var LIGHT = '(prefers-color-scheme: light)';
|
4964 | app.mq = {};
|
4965 |
|
4966 | if (window.matchMedia) {
|
4967 | app.mq.dark = window.matchMedia(DARK);
|
4968 | app.mq.light = window.matchMedia(LIGHT);
|
4969 | }
|
4970 |
|
4971 | app.colorSchemeListener = function colorSchemeListener(_ref) {
|
4972 | var matches = _ref.matches,
|
4973 | media = _ref.media;
|
4974 |
|
4975 | if (!matches) {
|
4976 | return;
|
4977 | }
|
4978 |
|
4979 | var html = document.querySelector('html');
|
4980 |
|
4981 | if (media === DARK) {
|
4982 | html.classList.add('theme-dark');
|
4983 | app.darkTheme = true;
|
4984 | app.emit('darkThemeChange', true);
|
4985 | } else if (media === LIGHT) {
|
4986 | html.classList.remove('theme-dark');
|
4987 | app.darkTheme = false;
|
4988 | app.emit('darkThemeChange', false);
|
4989 | }
|
4990 | };
|
4991 |
|
4992 | app.emit('mount');
|
4993 | };
|
4994 |
|
4995 | _proto.initStore = function initStore() {
|
4996 | var app = this;
|
4997 |
|
4998 | if (typeof app.params.store !== 'undefined' && app.params.store.__store) {
|
4999 | app.store = app.params.store;
|
5000 | } else {
|
5001 | app.store = app.createStore(app.params.store);
|
5002 | }
|
5003 | };
|
5004 |
|
5005 | _proto.enableAutoDarkTheme = function enableAutoDarkTheme() {
|
5006 | var window = getWindow();
|
5007 | var document = getDocument();
|
5008 | if (!window.matchMedia) return;
|
5009 | var app = this;
|
5010 | var html = document.querySelector('html');
|
5011 |
|
5012 | if (app.mq.dark && app.mq.light) {
|
5013 | app.mq.dark.addListener(app.colorSchemeListener);
|
5014 | app.mq.light.addListener(app.colorSchemeListener);
|
5015 | }
|
5016 |
|
5017 | if (app.mq.dark && app.mq.dark.matches) {
|
5018 | html.classList.add('theme-dark');
|
5019 | app.darkTheme = true;
|
5020 | app.emit('darkThemeChange', true);
|
5021 | } else if (app.mq.light && app.mq.light.matches) {
|
5022 | html.classList.remove('theme-dark');
|
5023 | app.darkTheme = false;
|
5024 | app.emit('darkThemeChange', false);
|
5025 | }
|
5026 | };
|
5027 |
|
5028 | _proto.disableAutoDarkTheme = function disableAutoDarkTheme() {
|
5029 | var window = getWindow();
|
5030 | if (!window.matchMedia) return;
|
5031 | var app = this;
|
5032 | if (app.mq.dark) app.mq.dark.removeListener(app.colorSchemeListener);
|
5033 | if (app.mq.light) app.mq.light.removeListener(app.colorSchemeListener);
|
5034 | };
|
5035 |
|
5036 | _proto.initAppComponent = function initAppComponent(callback) {
|
5037 | var app = this;
|
5038 | app.router.componentLoader(app.params.component, app.params.componentUrl, {
|
5039 | componentOptions: {
|
5040 | el: app.$el[0]
|
5041 | }
|
5042 | }, function (el) {
|
5043 | app.$el = $(el);
|
5044 | app.$el[0].f7 = app;
|
5045 | app.$elComponent = el.f7Component;
|
5046 | app.el = app.$el[0];
|
5047 | if (callback) callback();
|
5048 | }, function () {});
|
5049 | };
|
5050 |
|
5051 | _proto.init = function init(rootEl) {
|
5052 | var app = this;
|
5053 | app.mount(rootEl);
|
5054 |
|
5055 | var init = function init() {
|
5056 | if (app.initialized) return;
|
5057 | app.$el.addClass('framework7-initializing');
|
5058 |
|
5059 | if (app.rtl) {
|
5060 | $('html').attr('dir', 'rtl');
|
5061 | }
|
5062 |
|
5063 |
|
5064 | if (app.params.autoDarkTheme) {
|
5065 | app.enableAutoDarkTheme();
|
5066 | }
|
5067 |
|
5068 |
|
5069 | var window = getWindow();
|
5070 | window.addEventListener('offline', function () {
|
5071 | app.online = false;
|
5072 | app.emit('offline');
|
5073 | app.emit('connection', false);
|
5074 | });
|
5075 | window.addEventListener('online', function () {
|
5076 | app.online = true;
|
5077 | app.emit('online');
|
5078 | app.emit('connection', true);
|
5079 | });
|
5080 |
|
5081 | app.$el.addClass('framework7-root');
|
5082 |
|
5083 | $('html').removeClass('ios md aurora').addClass(app.theme);
|
5084 |
|
5085 | var device = app.device;
|
5086 |
|
5087 | if (app.params.iosTranslucentBars && app.theme === 'ios' && device.ios) {
|
5088 | $('html').addClass('ios-translucent-bars');
|
5089 | }
|
5090 |
|
5091 | if (app.params.iosTranslucentModals && app.theme === 'ios' && device.ios) {
|
5092 | $('html').addClass('ios-translucent-modals');
|
5093 | }
|
5094 |
|
5095 |
|
5096 | nextFrame$1(function () {
|
5097 | app.$el.removeClass('framework7-initializing');
|
5098 | });
|
5099 |
|
5100 | app.initialized = true;
|
5101 | app.emit('init');
|
5102 | };
|
5103 |
|
5104 | if (app.params.component || app.params.componentUrl) {
|
5105 | app.initAppComponent(function () {
|
5106 | init();
|
5107 | });
|
5108 | } else {
|
5109 | init();
|
5110 | }
|
5111 |
|
5112 | return app;
|
5113 | }
|
5114 | ;
|
5115 |
|
5116 | _proto.loadModule = function loadModule() {
|
5117 | return Framework7.loadModule.apply(Framework7, arguments);
|
5118 | }
|
5119 | ;
|
5120 |
|
5121 | _proto.loadModules = function loadModules() {
|
5122 | return Framework7.loadModules.apply(Framework7, arguments);
|
5123 | };
|
5124 |
|
5125 | _proto.getVnodeHooks = function getVnodeHooks(hook, id) {
|
5126 | var app = this;
|
5127 | if (!app.vnodeHooks || !app.vnodeHooks[hook]) return [];
|
5128 | return app.vnodeHooks[hook][id] || [];
|
5129 | }
|
5130 | ;
|
5131 |
|
5132 | _createClass$1(Framework7, [{
|
5133 | key: "$",
|
5134 | get: function get() {
|
5135 | return $;
|
5136 | }
|
5137 | }], [{
|
5138 | key: "Dom7",
|
5139 | get: function get() {
|
5140 | return $;
|
5141 | }
|
5142 | }, {
|
5143 | key: "$",
|
5144 | get: function get() {
|
5145 | return $;
|
5146 | }
|
5147 | }, {
|
5148 | key: "device",
|
5149 | get: function get() {
|
5150 | return getDevice$1();
|
5151 | }
|
5152 | }, {
|
5153 | key: "support",
|
5154 | get: function get() {
|
5155 | return getSupport$1();
|
5156 | }
|
5157 | }, {
|
5158 | key: "Class",
|
5159 | get: function get() {
|
5160 | return Framework7Class;
|
5161 | }
|
5162 | }, {
|
5163 | key: "Events",
|
5164 | get: function get() {
|
5165 | return EventsClass;
|
5166 | }
|
5167 | }]);
|
5168 |
|
5169 | return Framework7;
|
5170 | }(Framework7Class);
|
5171 |
|
5172 | Framework7.ModalMethods = ModalMethods;
|
5173 | Framework7.ConstructorMethods = ConstructorMethods;
|
5174 | Framework7.loadModule = loadModule;
|
5175 |
|
5176 | Framework7.loadModules = function loadModules(modules) {
|
5177 | return Promise.all(modules.map(function (module) {
|
5178 | return Framework7.loadModule(module);
|
5179 | }));
|
5180 | };
|
5181 |
|
5182 | var DeviceModule = {
|
5183 | name: 'device',
|
5184 | static: {
|
5185 | getDevice: getDevice$1
|
5186 | },
|
5187 | on: {
|
5188 | init: function init() {
|
5189 | var document = getDocument();
|
5190 | var device = getDevice$1();
|
5191 | var classNames = [];
|
5192 | var html = document.querySelector('html');
|
5193 | var metaStatusbar = document.querySelector('meta[name="apple-mobile-web-app-status-bar-style"]');
|
5194 | if (!html) return;
|
5195 |
|
5196 | if (device.standalone && device.ios && metaStatusbar && metaStatusbar.content === 'black-translucent') {
|
5197 | classNames.push('device-full-viewport');
|
5198 | }
|
5199 |
|
5200 |
|
5201 | classNames.push("device-pixel-ratio-" + Math.floor(device.pixelRatio));
|
5202 |
|
5203 | if (device.os && !device.desktop) {
|
5204 | classNames.push("device-" + device.os);
|
5205 | } else if (device.desktop) {
|
5206 | classNames.push('device-desktop');
|
5207 |
|
5208 | if (device.os) {
|
5209 | classNames.push("device-" + device.os);
|
5210 | }
|
5211 | }
|
5212 |
|
5213 | if (device.cordova || device.phonegap) {
|
5214 | classNames.push('device-cordova');
|
5215 | }
|
5216 |
|
5217 | if (device.capacitor) {
|
5218 | classNames.push('device-capacitor');
|
5219 | }
|
5220 |
|
5221 |
|
5222 | classNames.forEach(function (className) {
|
5223 | html.classList.add(className);
|
5224 | });
|
5225 | }
|
5226 | }
|
5227 | };
|
5228 |
|
5229 | var SupportModule = {
|
5230 | name: 'support',
|
5231 | static: {
|
5232 | getSupport: getSupport$1
|
5233 | }
|
5234 | };
|
5235 |
|
5236 | var UtilsModule = {
|
5237 | name: 'utils',
|
5238 | proto: {
|
5239 | utils: utils
|
5240 | },
|
5241 | static: {
|
5242 | utils: utils
|
5243 | }
|
5244 | };
|
5245 |
|
5246 | var ResizeModule = {
|
5247 | name: 'resize',
|
5248 | create: function create() {
|
5249 | var app = this;
|
5250 |
|
5251 | app.getSize = function () {
|
5252 | if (!app.el) return {
|
5253 | width: 0,
|
5254 | height: 0,
|
5255 | left: 0,
|
5256 | top: 0
|
5257 | };
|
5258 | var offset = app.$el.offset();
|
5259 | var _ref = [app.el.offsetWidth, app.el.offsetHeight, offset.left, offset.top],
|
5260 | width = _ref[0],
|
5261 | height = _ref[1],
|
5262 | left = _ref[2],
|
5263 | top = _ref[3];
|
5264 | app.width = width;
|
5265 | app.height = height;
|
5266 | app.left = left;
|
5267 | app.top = top;
|
5268 | return {
|
5269 | width: width,
|
5270 | height: height,
|
5271 | left: left,
|
5272 | top: top
|
5273 | };
|
5274 | };
|
5275 | },
|
5276 | on: {
|
5277 | init: function init() {
|
5278 | var app = this;
|
5279 | var window = getWindow();
|
5280 |
|
5281 | app.getSize();
|
5282 |
|
5283 | window.addEventListener('resize', function () {
|
5284 | app.emit('resize');
|
5285 | }, false);
|
5286 |
|
5287 | window.addEventListener('orientationchange', function () {
|
5288 | app.emit('orientationchange');
|
5289 | });
|
5290 | },
|
5291 | orientationchange: function orientationchange() {
|
5292 | var document = getDocument();
|
5293 | var device = getDevice$1();
|
5294 |
|
5295 | if (device.ipad) {
|
5296 | document.body.scrollLeft = 0;
|
5297 | setTimeout(function () {
|
5298 | document.body.scrollLeft = 0;
|
5299 | }, 0);
|
5300 | }
|
5301 | },
|
5302 | resize: function resize() {
|
5303 | var app = this;
|
5304 | app.getSize();
|
5305 | }
|
5306 | }
|
5307 | };
|
5308 |
|
5309 | var globals = {};
|
5310 | var jsonpRequests = 0;
|
5311 |
|
5312 | var RequestResponse = function RequestResponse(obj) {
|
5313 | Object.assign(this, obj);
|
5314 | };
|
5315 |
|
5316 | var RequestError = function (_Error) {
|
5317 | _inheritsLoose(RequestError, _Error);
|
5318 |
|
5319 | function RequestError(obj) {
|
5320 | var _this;
|
5321 |
|
5322 | _this = _Error.call(this) || this;
|
5323 | Object.assign(_assertThisInitialized(_this), obj);
|
5324 | return _this;
|
5325 | }
|
5326 |
|
5327 | return RequestError;
|
5328 | }( _wrapNativeSuper(Error));
|
5329 |
|
5330 | var request = function request(requestOptions) {
|
5331 | return new Promise(function (resolve, reject) {
|
5332 | var window = getWindow();
|
5333 | var document = getDocument();
|
5334 | var globalsNoCallbacks = extend$1({}, globals);
|
5335 | 'beforeCreate beforeOpen beforeSend error complete success statusCode'.split(' ').forEach(function (callbackName) {
|
5336 | delete globalsNoCallbacks[callbackName];
|
5337 | });
|
5338 | var defaults = extend$1({
|
5339 | url: window.location.toString(),
|
5340 | method: 'GET',
|
5341 | data: false,
|
5342 | async: true,
|
5343 | cache: true,
|
5344 | user: '',
|
5345 | password: '',
|
5346 | headers: {},
|
5347 | xhrFields: {},
|
5348 | statusCode: {},
|
5349 | processData: true,
|
5350 | dataType: 'text',
|
5351 | contentType: 'application/x-www-form-urlencoded',
|
5352 | timeout: 0
|
5353 | }, globalsNoCallbacks);
|
5354 | var proceedRequest;
|
5355 | var options = extend$1({}, defaults, requestOptions);
|
5356 |
|
5357 | if (requestOptions.abortController) {
|
5358 | options.abortController = requestOptions.abortController;
|
5359 | }
|
5360 |
|
5361 | if (options.abortController && options.abortController.canceled) {
|
5362 | reject(new RequestError({
|
5363 | options: options,
|
5364 | status: 'canceled',
|
5365 | message: 'canceled'
|
5366 | }));
|
5367 | return;
|
5368 | }
|
5369 |
|
5370 |
|
5371 | function fireCallback(callbackName) {
|
5372 | |
5373 |
|
5374 |
|
5375 |
|
5376 |
|
5377 |
|
5378 |
|
5379 |
|
5380 |
|
5381 |
|
5382 | var globalCallbackValue;
|
5383 | var optionCallbackValue;
|
5384 |
|
5385 | for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
5386 | data[_key - 1] = arguments[_key];
|
5387 | }
|
5388 |
|
5389 | if (globals[callbackName]) {
|
5390 | globalCallbackValue = globals[callbackName].apply(globals, data);
|
5391 | }
|
5392 |
|
5393 | if (options[callbackName]) {
|
5394 | optionCallbackValue = options[callbackName].apply(options, data);
|
5395 | }
|
5396 |
|
5397 | if (typeof globalCallbackValue !== 'boolean') globalCallbackValue = true;
|
5398 | if (typeof optionCallbackValue !== 'boolean') optionCallbackValue = true;
|
5399 |
|
5400 | if (options.abortController && options.abortController.canceled && (callbackName === 'beforeCreate' || callbackName === 'beforeOpen' || callbackName === 'beforeSend')) {
|
5401 | return false;
|
5402 | }
|
5403 |
|
5404 | return globalCallbackValue && optionCallbackValue;
|
5405 | }
|
5406 |
|
5407 |
|
5408 | proceedRequest = fireCallback('beforeCreate', options);
|
5409 |
|
5410 | if (proceedRequest === false) {
|
5411 | reject(new RequestError({
|
5412 | options: options,
|
5413 | status: 'canceled',
|
5414 | message: 'canceled'
|
5415 | }));
|
5416 | return;
|
5417 | }
|
5418 |
|
5419 |
|
5420 | if (options.type) options.method = options.type;
|
5421 |
|
5422 | var paramsPrefix = options.url.indexOf('?') >= 0 ? '&' : '?';
|
5423 |
|
5424 | var method = options.method.toUpperCase();
|
5425 |
|
5426 | if ((method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') && options.data) {
|
5427 | var stringData;
|
5428 |
|
5429 | if (typeof options.data === 'string') {
|
5430 |
|
5431 | if (options.data.indexOf('?') >= 0) stringData = options.data.split('?')[1];else stringData = options.data;
|
5432 | } else {
|
5433 |
|
5434 | stringData = serializeObject(options.data);
|
5435 | }
|
5436 |
|
5437 | if (stringData.length) {
|
5438 | options.url += paramsPrefix + stringData;
|
5439 | if (paramsPrefix === '?') paramsPrefix = '&';
|
5440 | }
|
5441 | }
|
5442 |
|
5443 |
|
5444 | if (options.dataType === 'json' && options.url.indexOf('callback=') >= 0) {
|
5445 | var callbackName = "f7jsonp_" + (Date.now() + (jsonpRequests += 1));
|
5446 | var abortTimeout;
|
5447 | var callbackSplit = options.url.split('callback=');
|
5448 | var requestUrl = callbackSplit[0] + "callback=" + callbackName;
|
5449 |
|
5450 | if (callbackSplit[1].indexOf('&') >= 0) {
|
5451 | var addVars = callbackSplit[1].split('&').filter(function (el) {
|
5452 | return el.indexOf('=') > 0;
|
5453 | }).join('&');
|
5454 | if (addVars.length > 0) requestUrl += "&" + addVars;
|
5455 | }
|
5456 |
|
5457 |
|
5458 | var script = document.createElement('script');
|
5459 | script.type = 'text/javascript';
|
5460 |
|
5461 | script.onerror = function onerror() {
|
5462 | clearTimeout(abortTimeout);
|
5463 | fireCallback('error', null, 'scripterror', 'scripterror');
|
5464 | reject(new RequestError({
|
5465 | options: options,
|
5466 | status: 'scripterror',
|
5467 | message: 'scripterror'
|
5468 | }));
|
5469 | fireCallback('complete', null, 'scripterror');
|
5470 | };
|
5471 |
|
5472 | script.src = requestUrl;
|
5473 |
|
5474 | window[callbackName] = function jsonpCallback(data) {
|
5475 | clearTimeout(abortTimeout);
|
5476 | fireCallback('success', data);
|
5477 | script.parentNode.removeChild(script);
|
5478 | script = null;
|
5479 | delete window[callbackName];
|
5480 | resolve(new RequestResponse({
|
5481 | options: options,
|
5482 | data: data
|
5483 | }));
|
5484 | };
|
5485 |
|
5486 | document.querySelector('head').appendChild(script);
|
5487 |
|
5488 | if (options.timeout > 0) {
|
5489 | abortTimeout = setTimeout(function () {
|
5490 | script.parentNode.removeChild(script);
|
5491 | script = null;
|
5492 | fireCallback('error', null, 'timeout', 'timeout');
|
5493 | reject(new RequestError({
|
5494 | options: options,
|
5495 | status: 'timeout',
|
5496 | message: 'timeout'
|
5497 | }));
|
5498 | }, options.timeout);
|
5499 | }
|
5500 |
|
5501 | return;
|
5502 | }
|
5503 |
|
5504 |
|
5505 | if (method === 'GET' || method === 'HEAD' || method === 'OPTIONS' || method === 'DELETE') {
|
5506 | if (options.cache === false) {
|
5507 | options.url += paramsPrefix + "_nocache" + Date.now();
|
5508 | }
|
5509 | }
|
5510 |
|
5511 |
|
5512 | var xhr = new XMLHttpRequest();
|
5513 |
|
5514 | if (options.abortController) {
|
5515 | var aborted = false;
|
5516 |
|
5517 | options.abortController.onAbort = function () {
|
5518 | if (aborted) return;
|
5519 | aborted = true;
|
5520 | xhr.abort();
|
5521 | reject(new RequestError({
|
5522 | options: options,
|
5523 | xhr: xhr,
|
5524 | status: 'canceled',
|
5525 | message: 'canceled'
|
5526 | }));
|
5527 | };
|
5528 | }
|
5529 |
|
5530 |
|
5531 | xhr.requestUrl = options.url;
|
5532 | xhr.requestParameters = options;
|
5533 |
|
5534 | proceedRequest = fireCallback('beforeOpen', xhr, options);
|
5535 |
|
5536 | if (proceedRequest === false) {
|
5537 | reject(new RequestError({
|
5538 | options: options,
|
5539 | xhr: xhr,
|
5540 | status: 'canceled',
|
5541 | message: 'canceled'
|
5542 | }));
|
5543 | return;
|
5544 | }
|
5545 |
|
5546 |
|
5547 | xhr.open(method, options.url, options.async, options.user, options.password);
|
5548 |
|
5549 | var postData = null;
|
5550 |
|
5551 | if ((method === 'POST' || method === 'PUT' || method === 'PATCH') && options.data) {
|
5552 | if (options.processData) {
|
5553 | var postDataInstances = [ArrayBuffer, Blob, Document, FormData];
|
5554 |
|
5555 | if (postDataInstances.indexOf(options.data.constructor) >= 0) {
|
5556 | postData = options.data;
|
5557 | } else {
|
5558 |
|
5559 | var boundary = "---------------------------" + Date.now().toString(16);
|
5560 |
|
5561 | if (options.contentType === 'multipart/form-data') {
|
5562 | xhr.setRequestHeader('Content-Type', "multipart/form-data; boundary=" + boundary);
|
5563 | } else {
|
5564 | xhr.setRequestHeader('Content-Type', options.contentType);
|
5565 | }
|
5566 |
|
5567 | postData = '';
|
5568 | var data = serializeObject(options.data);
|
5569 |
|
5570 | if (options.contentType === 'multipart/form-data') {
|
5571 | data = data.split('&');
|
5572 | var newData = [];
|
5573 |
|
5574 | for (var i = 0; i < data.length; i += 1) {
|
5575 | newData.push("Content-Disposition: form-data; name=\"" + data[i].split('=')[0] + "\"\r\n\r\n" + data[i].split('=')[1] + "\r\n");
|
5576 | }
|
5577 |
|
5578 | postData = "--" + boundary + "\r\n" + newData.join("--" + boundary + "\r\n") + "--" + boundary + "--\r\n";
|
5579 | } else if (options.contentType === 'application/json') {
|
5580 | postData = JSON.stringify(options.data);
|
5581 | } else {
|
5582 | postData = data;
|
5583 | }
|
5584 | }
|
5585 | } else {
|
5586 | postData = options.data;
|
5587 | xhr.setRequestHeader('Content-Type', options.contentType);
|
5588 | }
|
5589 | }
|
5590 |
|
5591 | if (options.dataType === 'json' && (!options.headers || !options.headers.Accept)) {
|
5592 | xhr.setRequestHeader('Accept', 'application/json');
|
5593 | }
|
5594 |
|
5595 |
|
5596 | if (options.headers) {
|
5597 | Object.keys(options.headers).forEach(function (headerName) {
|
5598 | if (typeof options.headers[headerName] === 'undefined') return;
|
5599 | xhr.setRequestHeader(headerName, options.headers[headerName]);
|
5600 | });
|
5601 | }
|
5602 |
|
5603 |
|
5604 | if (typeof options.crossDomain === 'undefined') {
|
5605 | options.crossDomain =
|
5606 | /^([\w-]+:)?\/\/([^\/]+)/.test(options.url) && RegExp.$2 !== window.location.host;
|
5607 | }
|
5608 |
|
5609 | if (!options.crossDomain) {
|
5610 | xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
5611 | }
|
5612 |
|
5613 | if (options.xhrFields) {
|
5614 | extend$1(xhr, options.xhrFields);
|
5615 | }
|
5616 |
|
5617 |
|
5618 | xhr.onload = function onload() {
|
5619 | if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 0) {
|
5620 | var responseData;
|
5621 |
|
5622 | if (options.dataType === 'json') {
|
5623 | var parseError;
|
5624 |
|
5625 | try {
|
5626 | responseData = JSON.parse(xhr.responseText);
|
5627 | } catch (err) {
|
5628 | parseError = true;
|
5629 | }
|
5630 |
|
5631 | if (!parseError) {
|
5632 | fireCallback('success', responseData, xhr.status, xhr);
|
5633 | resolve(new RequestResponse({
|
5634 | options: options,
|
5635 | data: responseData,
|
5636 | status: xhr.status,
|
5637 | xhr: xhr
|
5638 | }));
|
5639 | } else {
|
5640 | fireCallback('error', xhr, 'parseerror', 'parseerror');
|
5641 | reject(new RequestError({
|
5642 | options: options,
|
5643 | xhr: xhr,
|
5644 | status: 'parseerror',
|
5645 | message: 'parseerror'
|
5646 | }));
|
5647 | }
|
5648 | } else {
|
5649 | responseData = xhr.responseType === 'text' || xhr.responseType === '' ? xhr.responseText : xhr.response;
|
5650 | fireCallback('success', responseData, xhr.status, xhr);
|
5651 | resolve(new RequestResponse({
|
5652 | options: options,
|
5653 | data: responseData,
|
5654 | status: xhr.status,
|
5655 | xhr: xhr
|
5656 | }));
|
5657 | }
|
5658 | } else {
|
5659 | fireCallback('error', xhr, xhr.status, xhr.statusText);
|
5660 | reject(new RequestError({
|
5661 | options: options,
|
5662 | xhr: xhr,
|
5663 | status: xhr.status,
|
5664 | message: xhr.statusText
|
5665 | }));
|
5666 | }
|
5667 |
|
5668 | if (options.statusCode) {
|
5669 | if (globals.statusCode && globals.statusCode[xhr.status]) globals.statusCode[xhr.status](xhr);
|
5670 | if (options.statusCode[xhr.status]) options.statusCode[xhr.status](xhr);
|
5671 | }
|
5672 |
|
5673 | fireCallback('complete', xhr, xhr.status);
|
5674 | };
|
5675 |
|
5676 | xhr.onerror = function onerror() {
|
5677 | fireCallback('error', xhr, xhr.status, xhr.status);
|
5678 | reject(new RequestError({
|
5679 | options: options,
|
5680 | xhr: xhr,
|
5681 | status: xhr.status,
|
5682 | message: xhr.statusText
|
5683 | }));
|
5684 | fireCallback('complete', xhr, 'error');
|
5685 | };
|
5686 |
|
5687 |
|
5688 | if (options.timeout > 0) {
|
5689 | xhr.timeout = options.timeout;
|
5690 |
|
5691 | xhr.ontimeout = function () {
|
5692 | fireCallback('error', xhr, 'timeout', 'timeout');
|
5693 | reject(new RequestError({
|
5694 | options: options,
|
5695 | xhr: xhr,
|
5696 | status: 'timeout',
|
5697 | message: 'timeout'
|
5698 | }));
|
5699 | fireCallback('complete', xhr, 'timeout');
|
5700 | };
|
5701 | }
|
5702 |
|
5703 |
|
5704 | proceedRequest = fireCallback('beforeSend', xhr, options);
|
5705 |
|
5706 | if (proceedRequest === false) {
|
5707 | reject(new RequestError({
|
5708 | options: options,
|
5709 | xhr: xhr,
|
5710 | status: 'canceled',
|
5711 | message: 'canceled'
|
5712 | }));
|
5713 | return;
|
5714 | }
|
5715 |
|
5716 |
|
5717 | xhr.send(postData);
|
5718 | });
|
5719 | };
|
5720 |
|
5721 | function requestShortcut(method) {
|
5722 | var _ref = [],
|
5723 | url = _ref[0],
|
5724 | data = _ref[1],
|
5725 | success = _ref[2],
|
5726 | error = _ref[3],
|
5727 | dataType = _ref[4];
|
5728 |
|
5729 | for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
5730 | args[_key2 - 1] = arguments[_key2];
|
5731 | }
|
5732 |
|
5733 | if (typeof args[1] === 'function') {
|
5734 | url = args[0];
|
5735 | success = args[1];
|
5736 | error = args[2];
|
5737 | dataType = args[3];
|
5738 | } else {
|
5739 | url = args[0];
|
5740 | data = args[1];
|
5741 | success = args[2];
|
5742 | error = args[3];
|
5743 | dataType = args[4];
|
5744 | }
|
5745 |
|
5746 | [success, error].forEach(function (callback) {
|
5747 | if (typeof callback === 'string') {
|
5748 | dataType = callback;
|
5749 | if (callback === success) success = undefined;else error = undefined;
|
5750 | }
|
5751 | });
|
5752 | dataType = dataType || (method === 'json' || method === 'postJSON' ? 'json' : undefined);
|
5753 | var requestOptions = {
|
5754 | url: url,
|
5755 | method: method === 'post' || method === 'postJSON' ? 'POST' : 'GET',
|
5756 | data: data,
|
5757 | success: success,
|
5758 | error: error,
|
5759 | dataType: dataType
|
5760 | };
|
5761 |
|
5762 | if (method === 'postJSON') {
|
5763 | extend$1(requestOptions, {
|
5764 | contentType: 'application/json',
|
5765 | processData: false,
|
5766 | crossDomain: true,
|
5767 | data: typeof data === 'string' ? data : JSON.stringify(data)
|
5768 | });
|
5769 | }
|
5770 |
|
5771 | return request(requestOptions);
|
5772 | }
|
5773 |
|
5774 | Object.assign(request, {
|
5775 | get: function get() {
|
5776 | for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
5777 | args[_key3] = arguments[_key3];
|
5778 | }
|
5779 |
|
5780 | return requestShortcut.apply(void 0, ['get'].concat(args));
|
5781 | },
|
5782 | post: function post() {
|
5783 | for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
5784 | args[_key4] = arguments[_key4];
|
5785 | }
|
5786 |
|
5787 | return requestShortcut.apply(void 0, ['post'].concat(args));
|
5788 | },
|
5789 | json: function json() {
|
5790 | for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
5791 | args[_key5] = arguments[_key5];
|
5792 | }
|
5793 |
|
5794 | return requestShortcut.apply(void 0, ['json'].concat(args));
|
5795 | },
|
5796 | getJSON: function getJSON() {
|
5797 | for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
5798 | args[_key6] = arguments[_key6];
|
5799 | }
|
5800 |
|
5801 | return requestShortcut.apply(void 0, ['json'].concat(args));
|
5802 | },
|
5803 | postJSON: function postJSON() {
|
5804 | for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
5805 | args[_key7] = arguments[_key7];
|
5806 | }
|
5807 |
|
5808 | return requestShortcut.apply(void 0, ['postJSON'].concat(args));
|
5809 | }
|
5810 | });
|
5811 |
|
5812 | request.abortController = function () {
|
5813 | var contoller = {
|
5814 | canceled: false,
|
5815 | onAbort: null,
|
5816 | abort: function abort() {
|
5817 | contoller.canceled = true;
|
5818 | if (contoller.onAbort) contoller.onAbort();
|
5819 | }
|
5820 | };
|
5821 | return contoller;
|
5822 | };
|
5823 |
|
5824 | request.setup = function setup(options) {
|
5825 | if (options.type && !options.method) {
|
5826 | extend$1(options, {
|
5827 | method: options.type
|
5828 | });
|
5829 | }
|
5830 |
|
5831 | extend$1(globals, options);
|
5832 | };
|
5833 |
|
5834 |
|
5835 | var RequestModule = {
|
5836 | name: 'request',
|
5837 | proto: {
|
5838 | request: request
|
5839 | },
|
5840 | static: {
|
5841 | request: request
|
5842 | }
|
5843 | };
|
5844 |
|
5845 |
|
5846 |
|
5847 | function initTouch() {
|
5848 | var app = this;
|
5849 | var device = getDevice$1();
|
5850 | var support = getSupport$1();
|
5851 | var window = getWindow();
|
5852 | var document = getDocument();
|
5853 | var params = app.params.touch;
|
5854 | var useRipple = params[app.theme + "TouchRipple"];
|
5855 |
|
5856 | if (device.ios && device.webView) {
|
5857 |
|
5858 | window.addEventListener('touchstart', function () {});
|
5859 | }
|
5860 |
|
5861 | var touchStartX;
|
5862 | var touchStartY;
|
5863 | var targetElement;
|
5864 | var isMoved;
|
5865 | var tapHoldFired;
|
5866 | var tapHoldTimeout;
|
5867 | var preventClick;
|
5868 | var activableElement;
|
5869 | var activeTimeout;
|
5870 | var rippleWave;
|
5871 | var rippleTarget;
|
5872 | var rippleTimeout;
|
5873 |
|
5874 | function findActivableElement(el) {
|
5875 | var target = $(el);
|
5876 | var parents = target.parents(params.activeStateElements);
|
5877 |
|
5878 | if (target.closest('.no-active-state').length) {
|
5879 | return null;
|
5880 | }
|
5881 |
|
5882 | var activable;
|
5883 |
|
5884 | if (target.is(params.activeStateElements)) {
|
5885 | activable = target;
|
5886 | }
|
5887 |
|
5888 | if (parents.length > 0) {
|
5889 | activable = activable ? activable.add(parents) : parents;
|
5890 | }
|
5891 |
|
5892 | if (activable && activable.length > 1) {
|
5893 | var newActivable = [];
|
5894 | var preventPropagation;
|
5895 |
|
5896 | for (var i = 0; i < activable.length; i += 1) {
|
5897 | if (!preventPropagation) {
|
5898 | newActivable.push(activable[i]);
|
5899 |
|
5900 | if (activable.eq(i).hasClass('prevent-active-state-propagation') || activable.eq(i).hasClass('no-active-state-propagation')) {
|
5901 | preventPropagation = true;
|
5902 | }
|
5903 | }
|
5904 | }
|
5905 |
|
5906 | activable = $(newActivable);
|
5907 | }
|
5908 |
|
5909 | return activable || target;
|
5910 | }
|
5911 |
|
5912 | function isInsideScrollableView(el) {
|
5913 | var pageContent = el.parents('.page-content');
|
5914 | return pageContent.length > 0;
|
5915 | }
|
5916 |
|
5917 | function addActive() {
|
5918 | if (!activableElement) return;
|
5919 | activableElement.addClass('active-state');
|
5920 | }
|
5921 |
|
5922 | function removeActive() {
|
5923 | if (!activableElement) return;
|
5924 | activableElement.removeClass('active-state');
|
5925 | activableElement = null;
|
5926 | }
|
5927 |
|
5928 |
|
5929 | function findRippleElement(el) {
|
5930 | var rippleElements = params.touchRippleElements;
|
5931 | var $el = $(el);
|
5932 |
|
5933 | if ($el.is(rippleElements)) {
|
5934 | if ($el.hasClass('no-ripple')) {
|
5935 | return false;
|
5936 | }
|
5937 |
|
5938 | return $el;
|
5939 | }
|
5940 |
|
5941 | if ($el.parents(rippleElements).length > 0) {
|
5942 | var rippleParent = $el.parents(rippleElements).eq(0);
|
5943 |
|
5944 | if (rippleParent.hasClass('no-ripple')) {
|
5945 | return false;
|
5946 | }
|
5947 |
|
5948 | return rippleParent;
|
5949 | }
|
5950 |
|
5951 | return false;
|
5952 | }
|
5953 |
|
5954 | function createRipple($el, x, y) {
|
5955 | if (!$el) return;
|
5956 | rippleWave = app.touchRipple.create(app, $el, x, y);
|
5957 | }
|
5958 |
|
5959 | function removeRipple() {
|
5960 | if (!rippleWave) return;
|
5961 | rippleWave.remove();
|
5962 | rippleWave = undefined;
|
5963 | rippleTarget = undefined;
|
5964 | }
|
5965 |
|
5966 | function rippleTouchStart(el) {
|
5967 | rippleTarget = findRippleElement(el);
|
5968 |
|
5969 | if (!rippleTarget || rippleTarget.length === 0) {
|
5970 | rippleTarget = undefined;
|
5971 | return;
|
5972 | }
|
5973 |
|
5974 | var inScrollable = isInsideScrollableView(rippleTarget);
|
5975 |
|
5976 | if (!inScrollable) {
|
5977 | removeRipple();
|
5978 | createRipple(rippleTarget, touchStartX, touchStartY);
|
5979 | } else {
|
5980 | clearTimeout(rippleTimeout);
|
5981 | rippleTimeout = setTimeout(function () {
|
5982 | removeRipple();
|
5983 | createRipple(rippleTarget, touchStartX, touchStartY);
|
5984 | }, 80);
|
5985 | }
|
5986 | }
|
5987 |
|
5988 | function rippleTouchMove() {
|
5989 | clearTimeout(rippleTimeout);
|
5990 | removeRipple();
|
5991 | }
|
5992 |
|
5993 | function rippleTouchEnd() {
|
5994 | if (!rippleWave && rippleTarget && !isMoved) {
|
5995 | clearTimeout(rippleTimeout);
|
5996 | createRipple(rippleTarget, touchStartX, touchStartY);
|
5997 | setTimeout(removeRipple, 0);
|
5998 | } else {
|
5999 | removeRipple();
|
6000 | }
|
6001 | }
|
6002 |
|
6003 |
|
6004 | function handleMouseDown(e) {
|
6005 | var $activableEl = findActivableElement(e.target);
|
6006 |
|
6007 | if ($activableEl) {
|
6008 | $activableEl.addClass('active-state');
|
6009 |
|
6010 | if ('which' in e && e.which === 3) {
|
6011 | setTimeout(function () {
|
6012 | $('.active-state').removeClass('active-state');
|
6013 | }, 0);
|
6014 | }
|
6015 | }
|
6016 |
|
6017 | if (useRipple) {
|
6018 | touchStartX = e.pageX;
|
6019 | touchStartY = e.pageY;
|
6020 | rippleTouchStart(e.target, e.pageX, e.pageY);
|
6021 | }
|
6022 | }
|
6023 |
|
6024 | function handleMouseMove() {
|
6025 | if (!params.activeStateOnMouseMove) {
|
6026 | $('.active-state').removeClass('active-state');
|
6027 | }
|
6028 |
|
6029 | if (useRipple) {
|
6030 | rippleTouchMove();
|
6031 | }
|
6032 | }
|
6033 |
|
6034 | function handleMouseUp() {
|
6035 | $('.active-state').removeClass('active-state');
|
6036 |
|
6037 | if (useRipple) {
|
6038 | rippleTouchEnd();
|
6039 | }
|
6040 | }
|
6041 |
|
6042 | function handleTouchCancel() {
|
6043 | targetElement = null;
|
6044 |
|
6045 | clearTimeout(activeTimeout);
|
6046 | clearTimeout(tapHoldTimeout);
|
6047 |
|
6048 | if (params.activeState) {
|
6049 | removeActive();
|
6050 | }
|
6051 |
|
6052 |
|
6053 | if (useRipple) {
|
6054 | rippleTouchEnd();
|
6055 | }
|
6056 | }
|
6057 |
|
6058 | function handleTouchStart(e) {
|
6059 | isMoved = false;
|
6060 | tapHoldFired = false;
|
6061 | preventClick = false;
|
6062 |
|
6063 | if (e.targetTouches.length > 1) {
|
6064 | if (activableElement) removeActive();
|
6065 | return true;
|
6066 | }
|
6067 |
|
6068 | if (e.touches.length > 1 && activableElement) {
|
6069 | removeActive();
|
6070 | }
|
6071 |
|
6072 | if (params.tapHold) {
|
6073 | if (tapHoldTimeout) clearTimeout(tapHoldTimeout);
|
6074 | tapHoldTimeout = setTimeout(function () {
|
6075 | if (e && e.touches && e.touches.length > 1) return;
|
6076 | tapHoldFired = true;
|
6077 | e.preventDefault();
|
6078 | preventClick = true;
|
6079 | $(e.target).trigger('taphold', e);
|
6080 | app.emit('taphold', e);
|
6081 | }, params.tapHoldDelay);
|
6082 | }
|
6083 |
|
6084 | targetElement = e.target;
|
6085 | touchStartX = e.targetTouches[0].pageX;
|
6086 | touchStartY = e.targetTouches[0].pageY;
|
6087 |
|
6088 | if (params.activeState) {
|
6089 | activableElement = findActivableElement(targetElement);
|
6090 |
|
6091 | if (activableElement && !isInsideScrollableView(activableElement)) {
|
6092 | addActive();
|
6093 | } else if (activableElement) {
|
6094 | activeTimeout = setTimeout(addActive, 80);
|
6095 | }
|
6096 | }
|
6097 |
|
6098 | if (useRipple) {
|
6099 | rippleTouchStart(targetElement, touchStartX, touchStartY);
|
6100 | }
|
6101 |
|
6102 | return true;
|
6103 | }
|
6104 |
|
6105 | function handleTouchMove(e) {
|
6106 | var touch;
|
6107 | var distance;
|
6108 |
|
6109 | if (e.type === 'touchmove') {
|
6110 | touch = e.targetTouches[0];
|
6111 | distance = params.touchClicksDistanceThreshold;
|
6112 | }
|
6113 |
|
6114 | if (distance && touch) {
|
6115 | var pageX = touch.pageX;
|
6116 | var pageY = touch.pageY;
|
6117 |
|
6118 | if (Math.abs(pageX - touchStartX) > distance || Math.abs(pageY - touchStartY) > distance) {
|
6119 | isMoved = true;
|
6120 | }
|
6121 | } else {
|
6122 | isMoved = true;
|
6123 | }
|
6124 |
|
6125 | if (isMoved) {
|
6126 | preventClick = true;
|
6127 |
|
6128 | if (params.tapHold) {
|
6129 | clearTimeout(tapHoldTimeout);
|
6130 | }
|
6131 |
|
6132 | if (params.activeState) {
|
6133 | clearTimeout(activeTimeout);
|
6134 | removeActive();
|
6135 | }
|
6136 |
|
6137 | if (useRipple) {
|
6138 | rippleTouchMove();
|
6139 | }
|
6140 | }
|
6141 | }
|
6142 |
|
6143 | function handleTouchEnd(e) {
|
6144 | clearTimeout(activeTimeout);
|
6145 | clearTimeout(tapHoldTimeout);
|
6146 |
|
6147 | if (document.activeElement === e.target) {
|
6148 | if (params.activeState) removeActive();
|
6149 |
|
6150 | if (useRipple) {
|
6151 | rippleTouchEnd();
|
6152 | }
|
6153 |
|
6154 | return true;
|
6155 | }
|
6156 |
|
6157 | if (params.activeState) {
|
6158 | addActive();
|
6159 | setTimeout(removeActive, 0);
|
6160 | }
|
6161 |
|
6162 | if (useRipple) {
|
6163 | rippleTouchEnd();
|
6164 | }
|
6165 |
|
6166 | if (params.tapHoldPreventClicks && tapHoldFired || preventClick) {
|
6167 | if (e.cancelable) e.preventDefault();
|
6168 | preventClick = true;
|
6169 | return false;
|
6170 | }
|
6171 |
|
6172 | return true;
|
6173 | }
|
6174 |
|
6175 | function handleClick(e) {
|
6176 | var isOverswipe = e && e.detail && e.detail === 'f7Overswipe';
|
6177 | var localPreventClick = preventClick;
|
6178 |
|
6179 | if (targetElement && e.target !== targetElement) {
|
6180 | if (isOverswipe) {
|
6181 | localPreventClick = false;
|
6182 | } else {
|
6183 | localPreventClick = true;
|
6184 | }
|
6185 | }
|
6186 |
|
6187 | if (params.tapHold && params.tapHoldPreventClicks && tapHoldFired) {
|
6188 | localPreventClick = true;
|
6189 | }
|
6190 |
|
6191 | if (localPreventClick) {
|
6192 | e.stopImmediatePropagation();
|
6193 | e.stopPropagation();
|
6194 | e.preventDefault();
|
6195 | }
|
6196 |
|
6197 | if (params.tapHold) {
|
6198 | tapHoldTimeout = setTimeout(function () {
|
6199 | tapHoldFired = false;
|
6200 | }, device.ios || device.androidChrome ? 100 : 400);
|
6201 | }
|
6202 |
|
6203 | preventClick = false;
|
6204 | targetElement = null;
|
6205 | return !localPreventClick;
|
6206 | }
|
6207 |
|
6208 | function emitAppTouchEvent(name, e) {
|
6209 | app.emit({
|
6210 | events: name,
|
6211 | data: [e]
|
6212 | });
|
6213 | }
|
6214 |
|
6215 | function appClick(e) {
|
6216 | emitAppTouchEvent('click', e);
|
6217 | }
|
6218 |
|
6219 | function appTouchStartActive(e) {
|
6220 | emitAppTouchEvent('touchstart touchstart:active', e);
|
6221 | }
|
6222 |
|
6223 | function appTouchMoveActive(e) {
|
6224 | emitAppTouchEvent('touchmove touchmove:active', e);
|
6225 | }
|
6226 |
|
6227 | function appTouchEndActive(e) {
|
6228 | emitAppTouchEvent('touchend touchend:active', e);
|
6229 | }
|
6230 |
|
6231 | function appTouchStartPassive(e) {
|
6232 | emitAppTouchEvent('touchstart:passive', e);
|
6233 | }
|
6234 |
|
6235 | function appTouchMovePassive(e) {
|
6236 | emitAppTouchEvent('touchmove:passive', e);
|
6237 | }
|
6238 |
|
6239 | function appTouchEndPassive(e) {
|
6240 | emitAppTouchEvent('touchend:passive', e);
|
6241 | }
|
6242 |
|
6243 | var passiveListener = support.passiveListener ? {
|
6244 | passive: true
|
6245 | } : false;
|
6246 | var passiveListenerCapture = support.passiveListener ? {
|
6247 | passive: true,
|
6248 | capture: true
|
6249 | } : true;
|
6250 | var activeListener = support.passiveListener ? {
|
6251 | passive: false
|
6252 | } : false;
|
6253 | var activeListenerCapture = support.passiveListener ? {
|
6254 | passive: false,
|
6255 | capture: true
|
6256 | } : true;
|
6257 | document.addEventListener('click', appClick, true);
|
6258 |
|
6259 | if (support.passiveListener) {
|
6260 | document.addEventListener(app.touchEvents.start, appTouchStartActive, activeListenerCapture);
|
6261 | document.addEventListener(app.touchEvents.move, appTouchMoveActive, activeListener);
|
6262 | document.addEventListener(app.touchEvents.end, appTouchEndActive, activeListener);
|
6263 | document.addEventListener(app.touchEvents.start, appTouchStartPassive, passiveListenerCapture);
|
6264 | document.addEventListener(app.touchEvents.move, appTouchMovePassive, passiveListener);
|
6265 | document.addEventListener(app.touchEvents.end, appTouchEndPassive, passiveListener);
|
6266 | } else {
|
6267 | document.addEventListener(app.touchEvents.start, function (e) {
|
6268 | appTouchStartActive(e);
|
6269 | appTouchStartPassive(e);
|
6270 | }, true);
|
6271 | document.addEventListener(app.touchEvents.move, function (e) {
|
6272 | appTouchMoveActive(e);
|
6273 | appTouchMovePassive(e);
|
6274 | }, false);
|
6275 | document.addEventListener(app.touchEvents.end, function (e) {
|
6276 | appTouchEndActive(e);
|
6277 | appTouchEndPassive(e);
|
6278 | }, false);
|
6279 | }
|
6280 |
|
6281 | if (support.touch) {
|
6282 | app.on('click', handleClick);
|
6283 | app.on('touchstart', handleTouchStart);
|
6284 | app.on('touchmove', handleTouchMove);
|
6285 | app.on('touchend', handleTouchEnd);
|
6286 | document.addEventListener('touchcancel', handleTouchCancel, {
|
6287 | passive: true
|
6288 | });
|
6289 | } else if (params.activeState) {
|
6290 | app.on('touchstart', handleMouseDown);
|
6291 | app.on('touchmove', handleMouseMove);
|
6292 | app.on('touchend', handleMouseUp);
|
6293 | document.addEventListener('pointercancel', handleMouseUp, {
|
6294 | passive: true
|
6295 | });
|
6296 | }
|
6297 |
|
6298 | document.addEventListener('contextmenu', function (e) {
|
6299 | if (params.disableContextMenu && (device.ios || device.android || device.cordova || window.Capacitor && window.Capacitor.isNative)) {
|
6300 | e.preventDefault();
|
6301 | }
|
6302 |
|
6303 | if (useRipple) {
|
6304 | if (activableElement) removeActive();
|
6305 | rippleTouchEnd();
|
6306 | }
|
6307 | });
|
6308 | }
|
6309 |
|
6310 | var TouchModule = {
|
6311 | name: 'touch',
|
6312 | params: {
|
6313 | touch: {
|
6314 |
|
6315 | touchClicksDistanceThreshold: 5,
|
6316 |
|
6317 | disableContextMenu: false,
|
6318 |
|
6319 | tapHold: false,
|
6320 | tapHoldDelay: 750,
|
6321 | tapHoldPreventClicks: true,
|
6322 |
|
6323 | activeState: true,
|
6324 | activeStateElements: 'a, button, label, span, .actions-button, .stepper-button, .stepper-button-plus, .stepper-button-minus, .card-expandable, .menu-item, .link, .item-link, .accordion-item-toggle',
|
6325 | activeStateOnMouseMove: false,
|
6326 | mdTouchRipple: true,
|
6327 | iosTouchRipple: false,
|
6328 | auroraTouchRipple: false,
|
6329 | touchRippleElements: '.ripple, .link, .item-link, .list-button, .links-list a, .button, button, .input-clear-button, .dialog-button, .tab-link, .item-radio, .item-checkbox, .actions-button, .searchbar-disable-button, .fab a, .checkbox, .radio, .data-table .sortable-cell:not(.input-cell), .notification-close-button, .stepper-button, .stepper-button-minus, .stepper-button-plus, .menu-item-content, .list.accordion-list .accordion-item-toggle',
|
6330 | touchRippleInsetElements: '.ripple-inset, .icon-only, .searchbar-disable-button, .input-clear-button, .notification-close-button, .md .navbar .link.back'
|
6331 | }
|
6332 | },
|
6333 | create: function create() {
|
6334 | var app = this;
|
6335 | var support = getSupport$1();
|
6336 | extend$1(app, {
|
6337 | touchEvents: {
|
6338 | start: support.touch ? 'touchstart' : support.pointerEvents ? 'pointerdown' : 'mousedown',
|
6339 | move: support.touch ? 'touchmove' : support.pointerEvents ? 'pointermove' : 'mousemove',
|
6340 | end: support.touch ? 'touchend' : support.pointerEvents ? 'pointerup' : 'mouseup'
|
6341 | }
|
6342 | });
|
6343 | },
|
6344 | on: {
|
6345 | init: initTouch
|
6346 | }
|
6347 | };
|
6348 |
|
6349 | |
6350 |
|
6351 |
|
6352 | function lexer(str) {
|
6353 | var tokens = [];
|
6354 | var i = 0;
|
6355 |
|
6356 | while (i < str.length) {
|
6357 | var char = str[i];
|
6358 |
|
6359 | if (char === "*" || char === "+" || char === "?") {
|
6360 | tokens.push({
|
6361 | type: "MODIFIER",
|
6362 | index: i,
|
6363 | value: str[i++]
|
6364 | });
|
6365 | continue;
|
6366 | }
|
6367 |
|
6368 | if (char === "\\") {
|
6369 | tokens.push({
|
6370 | type: "ESCAPED_CHAR",
|
6371 | index: i++,
|
6372 | value: str[i++]
|
6373 | });
|
6374 | continue;
|
6375 | }
|
6376 |
|
6377 | if (char === "{") {
|
6378 | tokens.push({
|
6379 | type: "OPEN",
|
6380 | index: i,
|
6381 | value: str[i++]
|
6382 | });
|
6383 | continue;
|
6384 | }
|
6385 |
|
6386 | if (char === "}") {
|
6387 | tokens.push({
|
6388 | type: "CLOSE",
|
6389 | index: i,
|
6390 | value: str[i++]
|
6391 | });
|
6392 | continue;
|
6393 | }
|
6394 |
|
6395 | if (char === ":") {
|
6396 | var name = "";
|
6397 | var j = i + 1;
|
6398 |
|
6399 | while (j < str.length) {
|
6400 | var code = str.charCodeAt(j);
|
6401 |
|
6402 | if (
|
6403 | code >= 48 && code <= 57 ||
|
6404 | code >= 65 && code <= 90 ||
|
6405 | code >= 97 && code <= 122 ||
|
6406 | code === 95) {
|
6407 | name += str[j++];
|
6408 | continue;
|
6409 | }
|
6410 |
|
6411 | break;
|
6412 | }
|
6413 |
|
6414 | if (!name) throw new TypeError("Missing parameter name at " + i);
|
6415 | tokens.push({
|
6416 | type: "NAME",
|
6417 | index: i,
|
6418 | value: name
|
6419 | });
|
6420 | i = j;
|
6421 | continue;
|
6422 | }
|
6423 |
|
6424 | if (char === "(") {
|
6425 | var count = 1;
|
6426 | var pattern = "";
|
6427 | var j = i + 1;
|
6428 |
|
6429 | if (str[j] === "?") {
|
6430 | throw new TypeError("Pattern cannot start with \"?\" at " + j);
|
6431 | }
|
6432 |
|
6433 | while (j < str.length) {
|
6434 | if (str[j] === "\\") {
|
6435 | pattern += str[j++] + str[j++];
|
6436 | continue;
|
6437 | }
|
6438 |
|
6439 | if (str[j] === ")") {
|
6440 | count--;
|
6441 |
|
6442 | if (count === 0) {
|
6443 | j++;
|
6444 | break;
|
6445 | }
|
6446 | } else if (str[j] === "(") {
|
6447 | count++;
|
6448 |
|
6449 | if (str[j + 1] !== "?") {
|
6450 | throw new TypeError("Capturing groups are not allowed at " + j);
|
6451 | }
|
6452 | }
|
6453 |
|
6454 | pattern += str[j++];
|
6455 | }
|
6456 |
|
6457 | if (count) throw new TypeError("Unbalanced pattern at " + i);
|
6458 | if (!pattern) throw new TypeError("Missing pattern at " + i);
|
6459 | tokens.push({
|
6460 | type: "PATTERN",
|
6461 | index: i,
|
6462 | value: pattern
|
6463 | });
|
6464 | i = j;
|
6465 | continue;
|
6466 | }
|
6467 |
|
6468 | tokens.push({
|
6469 | type: "CHAR",
|
6470 | index: i,
|
6471 | value: str[i++]
|
6472 | });
|
6473 | }
|
6474 |
|
6475 | tokens.push({
|
6476 | type: "END",
|
6477 | index: i,
|
6478 | value: ""
|
6479 | });
|
6480 | return tokens;
|
6481 | }
|
6482 | |
6483 |
|
6484 |
|
6485 |
|
6486 |
|
6487 | function parse(str, options) {
|
6488 | if (options === void 0) {
|
6489 | options = {};
|
6490 | }
|
6491 |
|
6492 | var tokens = lexer(str);
|
6493 | var _a = options.prefixes,
|
6494 | prefixes = _a === void 0 ? "./" : _a;
|
6495 | var defaultPattern = "[^" + escapeString(options.delimiter || "/#?") + "]+?";
|
6496 | var result = [];
|
6497 | var key = 0;
|
6498 | var i = 0;
|
6499 | var path = "";
|
6500 |
|
6501 | var tryConsume = function tryConsume(type) {
|
6502 | if (i < tokens.length && tokens[i].type === type) return tokens[i++].value;
|
6503 | };
|
6504 |
|
6505 | var mustConsume = function mustConsume(type) {
|
6506 | var value = tryConsume(type);
|
6507 | if (value !== undefined) return value;
|
6508 | var _a = tokens[i],
|
6509 | nextType = _a.type,
|
6510 | index = _a.index;
|
6511 | throw new TypeError("Unexpected " + nextType + " at " + index + ", expected " + type);
|
6512 | };
|
6513 |
|
6514 | var consumeText = function consumeText() {
|
6515 | var result = "";
|
6516 | var value;
|
6517 |
|
6518 | while (value = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR")) {
|
6519 | result += value;
|
6520 | }
|
6521 |
|
6522 | return result;
|
6523 | };
|
6524 |
|
6525 | while (i < tokens.length) {
|
6526 | var char = tryConsume("CHAR");
|
6527 | var name = tryConsume("NAME");
|
6528 | var pattern = tryConsume("PATTERN");
|
6529 |
|
6530 | if (name || pattern) {
|
6531 | var prefix = char || "";
|
6532 |
|
6533 | if (prefixes.indexOf(prefix) === -1) {
|
6534 | path += prefix;
|
6535 | prefix = "";
|
6536 | }
|
6537 |
|
6538 | if (path) {
|
6539 | result.push(path);
|
6540 | path = "";
|
6541 | }
|
6542 |
|
6543 | result.push({
|
6544 | name: name || key++,
|
6545 | prefix: prefix,
|
6546 | suffix: "",
|
6547 | pattern: pattern || defaultPattern,
|
6548 | modifier: tryConsume("MODIFIER") || ""
|
6549 | });
|
6550 | continue;
|
6551 | }
|
6552 |
|
6553 | var value = char || tryConsume("ESCAPED_CHAR");
|
6554 |
|
6555 | if (value) {
|
6556 | path += value;
|
6557 | continue;
|
6558 | }
|
6559 |
|
6560 | if (path) {
|
6561 | result.push(path);
|
6562 | path = "";
|
6563 | }
|
6564 |
|
6565 | var open = tryConsume("OPEN");
|
6566 |
|
6567 | if (open) {
|
6568 | var prefix = consumeText();
|
6569 | var name_1 = tryConsume("NAME") || "";
|
6570 | var pattern_1 = tryConsume("PATTERN") || "";
|
6571 | var suffix = consumeText();
|
6572 | mustConsume("CLOSE");
|
6573 | result.push({
|
6574 | name: name_1 || (pattern_1 ? key++ : ""),
|
6575 | pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,
|
6576 | prefix: prefix,
|
6577 | suffix: suffix,
|
6578 | modifier: tryConsume("MODIFIER") || ""
|
6579 | });
|
6580 | continue;
|
6581 | }
|
6582 |
|
6583 | mustConsume("END");
|
6584 | }
|
6585 |
|
6586 | return result;
|
6587 | }
|
6588 | |
6589 |
|
6590 |
|
6591 |
|
6592 | function compile(str, options) {
|
6593 | return tokensToFunction(parse(str, options), options);
|
6594 | }
|
6595 | |
6596 |
|
6597 |
|
6598 |
|
6599 | function tokensToFunction(tokens, options) {
|
6600 | if (options === void 0) {
|
6601 | options = {};
|
6602 | }
|
6603 |
|
6604 | var reFlags = flags(options);
|
6605 | var _a = options.encode,
|
6606 | encode = _a === void 0 ? function (x) {
|
6607 | return x;
|
6608 | } : _a,
|
6609 | _b = options.validate,
|
6610 | validate = _b === void 0 ? true : _b;
|
6611 |
|
6612 | var matches = tokens.map(function (token) {
|
6613 | if (typeof token === "object") {
|
6614 | return new RegExp("^(?:" + token.pattern + ")$", reFlags);
|
6615 | }
|
6616 | });
|
6617 | return function (data) {
|
6618 | var path = "";
|
6619 |
|
6620 | for (var i = 0; i < tokens.length; i++) {
|
6621 | var token = tokens[i];
|
6622 |
|
6623 | if (typeof token === "string") {
|
6624 | path += token;
|
6625 | continue;
|
6626 | }
|
6627 |
|
6628 | var value = data ? data[token.name] : undefined;
|
6629 | var optional = token.modifier === "?" || token.modifier === "*";
|
6630 | var repeat = token.modifier === "*" || token.modifier === "+";
|
6631 |
|
6632 | if (Array.isArray(value)) {
|
6633 | if (!repeat) {
|
6634 | throw new TypeError("Expected \"" + token.name + "\" to not repeat, but got an array");
|
6635 | }
|
6636 |
|
6637 | if (value.length === 0) {
|
6638 | if (optional) continue;
|
6639 | throw new TypeError("Expected \"" + token.name + "\" to not be empty");
|
6640 | }
|
6641 |
|
6642 | for (var j = 0; j < value.length; j++) {
|
6643 | var segment = encode(value[j], token);
|
6644 |
|
6645 | if (validate && !matches[i].test(segment)) {
|
6646 | throw new TypeError("Expected all \"" + token.name + "\" to match \"" + token.pattern + "\", but got \"" + segment + "\"");
|
6647 | }
|
6648 |
|
6649 | path += token.prefix + segment + token.suffix;
|
6650 | }
|
6651 |
|
6652 | continue;
|
6653 | }
|
6654 |
|
6655 | if (typeof value === "string" || typeof value === "number") {
|
6656 | var segment = encode(String(value), token);
|
6657 |
|
6658 | if (validate && !matches[i].test(segment)) {
|
6659 | throw new TypeError("Expected \"" + token.name + "\" to match \"" + token.pattern + "\", but got \"" + segment + "\"");
|
6660 | }
|
6661 |
|
6662 | path += token.prefix + segment + token.suffix;
|
6663 | continue;
|
6664 | }
|
6665 |
|
6666 | if (optional) continue;
|
6667 | var typeOfMessage = repeat ? "an array" : "a string";
|
6668 | throw new TypeError("Expected \"" + token.name + "\" to be " + typeOfMessage);
|
6669 | }
|
6670 |
|
6671 | return path;
|
6672 | };
|
6673 | }
|
6674 | |
6675 |
|
6676 |
|
6677 |
|
6678 | function match(str, options) {
|
6679 | var keys = [];
|
6680 | var re = pathToRegexp(str, keys, options);
|
6681 | return regexpToFunction(re, keys, options);
|
6682 | }
|
6683 | |
6684 |
|
6685 |
|
6686 |
|
6687 | function regexpToFunction(re, keys, options) {
|
6688 | if (options === void 0) {
|
6689 | options = {};
|
6690 | }
|
6691 |
|
6692 | var _a = options.decode,
|
6693 | decode = _a === void 0 ? function (x) {
|
6694 | return x;
|
6695 | } : _a;
|
6696 | return function (pathname) {
|
6697 | var m = re.exec(pathname);
|
6698 | if (!m) return false;
|
6699 | var path = m[0],
|
6700 | index = m.index;
|
6701 | var params = Object.create(null);
|
6702 |
|
6703 | var _loop_1 = function _loop_1(i) {
|
6704 |
|
6705 | if (m[i] === undefined) return "continue";
|
6706 | var key = keys[i - 1];
|
6707 |
|
6708 | if (key.modifier === "*" || key.modifier === "+") {
|
6709 | params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {
|
6710 | return decode(value, key);
|
6711 | });
|
6712 | } else {
|
6713 | params[key.name] = decode(m[i], key);
|
6714 | }
|
6715 | };
|
6716 |
|
6717 | for (var i = 1; i < m.length; i++) {
|
6718 | _loop_1(i);
|
6719 | }
|
6720 |
|
6721 | return {
|
6722 | path: path,
|
6723 | index: index,
|
6724 | params: params
|
6725 | };
|
6726 | };
|
6727 | }
|
6728 | |
6729 |
|
6730 |
|
6731 |
|
6732 | function escapeString(str) {
|
6733 | return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1");
|
6734 | }
|
6735 | |
6736 |
|
6737 |
|
6738 |
|
6739 |
|
6740 | function flags(options) {
|
6741 | return options && options.sensitive ? "" : "i";
|
6742 | }
|
6743 | |
6744 |
|
6745 |
|
6746 |
|
6747 |
|
6748 | function regexpToRegexp(path, keys) {
|
6749 | if (!keys) return path;
|
6750 | var groupsRegex = /\((?:\?<(.*?)>)?(?!\?)/g;
|
6751 | var index = 0;
|
6752 | var execResult = groupsRegex.exec(path.source);
|
6753 |
|
6754 | while (execResult) {
|
6755 | keys.push({
|
6756 |
|
6757 | name: execResult[1] || index++,
|
6758 | prefix: "",
|
6759 | suffix: "",
|
6760 | modifier: "",
|
6761 | pattern: ""
|
6762 | });
|
6763 | execResult = groupsRegex.exec(path.source);
|
6764 | }
|
6765 |
|
6766 | return path;
|
6767 | }
|
6768 | |
6769 |
|
6770 |
|
6771 |
|
6772 |
|
6773 | function arrayToRegexp(paths, keys, options) {
|
6774 | var parts = paths.map(function (path) {
|
6775 | return pathToRegexp(path, keys, options).source;
|
6776 | });
|
6777 | return new RegExp("(?:" + parts.join("|") + ")", flags(options));
|
6778 | }
|
6779 | |
6780 |
|
6781 |
|
6782 |
|
6783 |
|
6784 | function stringToRegexp(path, keys, options) {
|
6785 | return tokensToRegexp(parse(path, options), keys, options);
|
6786 | }
|
6787 | |
6788 |
|
6789 |
|
6790 |
|
6791 |
|
6792 | function tokensToRegexp(tokens, keys, options) {
|
6793 | if (options === void 0) {
|
6794 | options = {};
|
6795 | }
|
6796 |
|
6797 | var _a = options.strict,
|
6798 | strict = _a === void 0 ? false : _a,
|
6799 | _b = options.start,
|
6800 | start = _b === void 0 ? true : _b,
|
6801 | _c = options.end,
|
6802 | end = _c === void 0 ? true : _c,
|
6803 | _d = options.encode,
|
6804 | encode = _d === void 0 ? function (x) {
|
6805 | return x;
|
6806 | } : _d;
|
6807 | var endsWith = "[" + escapeString(options.endsWith || "") + "]|$";
|
6808 | var delimiter = "[" + escapeString(options.delimiter || "/#?") + "]";
|
6809 | var route = start ? "^" : "";
|
6810 |
|
6811 | for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {
|
6812 | var token = tokens_1[_i];
|
6813 |
|
6814 | if (typeof token === "string") {
|
6815 | route += escapeString(encode(token));
|
6816 | } else {
|
6817 | var prefix = escapeString(encode(token.prefix));
|
6818 | var suffix = escapeString(encode(token.suffix));
|
6819 |
|
6820 | if (token.pattern) {
|
6821 | if (keys) keys.push(token);
|
6822 |
|
6823 | if (prefix || suffix) {
|
6824 | if (token.modifier === "+" || token.modifier === "*") {
|
6825 | var mod = token.modifier === "*" ? "?" : "";
|
6826 | route += "(?:" + prefix + "((?:" + token.pattern + ")(?:" + suffix + prefix + "(?:" + token.pattern + "))*)" + suffix + ")" + mod;
|
6827 | } else {
|
6828 | route += "(?:" + prefix + "(" + token.pattern + ")" + suffix + ")" + token.modifier;
|
6829 | }
|
6830 | } else {
|
6831 | route += "(" + token.pattern + ")" + token.modifier;
|
6832 | }
|
6833 | } else {
|
6834 | route += "(?:" + prefix + suffix + ")" + token.modifier;
|
6835 | }
|
6836 | }
|
6837 | }
|
6838 |
|
6839 | if (end) {
|
6840 | if (!strict) route += delimiter + "?";
|
6841 | route += !options.endsWith ? "$" : "(?=" + endsWith + ")";
|
6842 | } else {
|
6843 | var endToken = tokens[tokens.length - 1];
|
6844 | var isEndDelimited = typeof endToken === "string" ? delimiter.indexOf(endToken[endToken.length - 1]) > -1 :
|
6845 | endToken === undefined;
|
6846 |
|
6847 | if (!strict) {
|
6848 | route += "(?:" + delimiter + "(?=" + endsWith + "))?";
|
6849 | }
|
6850 |
|
6851 | if (!isEndDelimited) {
|
6852 | route += "(?=" + delimiter + "|" + endsWith + ")";
|
6853 | }
|
6854 | }
|
6855 |
|
6856 | return new RegExp(route, flags(options));
|
6857 | }
|
6858 | |
6859 |
|
6860 |
|
6861 |
|
6862 |
|
6863 |
|
6864 |
|
6865 |
|
6866 | function pathToRegexp(path, keys, options) {
|
6867 | if (path instanceof RegExp) return regexpToRegexp(path, keys);
|
6868 | if (Array.isArray(path)) return arrayToRegexp(path, keys, options);
|
6869 | return stringToRegexp(path, keys, options);
|
6870 | }
|
6871 |
|
6872 | var History$2 = {
|
6873 | queue: [],
|
6874 | clearQueue: function clearQueue() {
|
6875 | if (History$2.queue.length === 0) return;
|
6876 | var currentQueue = History$2.queue.shift();
|
6877 | currentQueue();
|
6878 | },
|
6879 | routerQueue: [],
|
6880 | clearRouterQueue: function clearRouterQueue() {
|
6881 | if (History$2.routerQueue.length === 0) return;
|
6882 | var currentQueue = History$2.routerQueue.pop();
|
6883 | var router = currentQueue.router,
|
6884 | stateUrl = currentQueue.stateUrl,
|
6885 | action = currentQueue.action;
|
6886 | var animate = router.params.animate;
|
6887 | if (router.params.browserHistoryAnimate === false) animate = false;
|
6888 |
|
6889 | if (action === 'back') {
|
6890 | router.back({
|
6891 | animate: animate,
|
6892 | browserHistory: false
|
6893 | });
|
6894 | }
|
6895 |
|
6896 | if (action === 'load') {
|
6897 | router.navigate(stateUrl, {
|
6898 | animate: animate,
|
6899 | browserHistory: false
|
6900 | });
|
6901 | }
|
6902 | },
|
6903 | handle: function handle(e) {
|
6904 | if (History$2.blockPopstate) return;
|
6905 | var app = this;
|
6906 |
|
6907 | var state = e.state;
|
6908 | History$2.previousState = History$2.state;
|
6909 | History$2.state = state;
|
6910 | History$2.allowChange = true;
|
6911 | History$2.clearQueue();
|
6912 | state = History$2.state;
|
6913 | if (!state) state = {};
|
6914 | app.views.forEach(function (view) {
|
6915 | var router = view.router;
|
6916 | var viewState = state[view.id];
|
6917 |
|
6918 | if (!viewState && view.params.browserHistory) {
|
6919 | viewState = {
|
6920 | url: view.router.history[0]
|
6921 | };
|
6922 | }
|
6923 |
|
6924 | if (!viewState) return;
|
6925 | var stateUrl = viewState.url || undefined;
|
6926 | var animate = router.params.animate;
|
6927 | if (router.params.browserHistoryAnimate === false) animate = false;
|
6928 |
|
6929 | if (stateUrl !== router.url) {
|
6930 | if (router.history.indexOf(stateUrl) >= 0) {
|
6931 |
|
6932 | if (router.allowPageChange) {
|
6933 | router.back({
|
6934 | animate: animate,
|
6935 | browserHistory: false
|
6936 | });
|
6937 | } else {
|
6938 | History$2.routerQueue.push({
|
6939 | action: 'back',
|
6940 | router: router
|
6941 | });
|
6942 | }
|
6943 | } else if (router.allowPageChange) {
|
6944 |
|
6945 | router.navigate(stateUrl, {
|
6946 | animate: animate,
|
6947 | browserHistory: false
|
6948 | });
|
6949 | } else {
|
6950 | History$2.routerQueue.unshift({
|
6951 | action: 'load',
|
6952 | stateUrl: stateUrl,
|
6953 | router: router
|
6954 | });
|
6955 | }
|
6956 | }
|
6957 | });
|
6958 | },
|
6959 | initViewState: function initViewState(viewId, viewState) {
|
6960 | var _extend;
|
6961 |
|
6962 | var window = getWindow();
|
6963 | var newState = extend$1({}, History$2.state || {}, (_extend = {}, _extend[viewId] = viewState, _extend));
|
6964 | History$2.state = newState;
|
6965 | window.history.replaceState(newState, '');
|
6966 | },
|
6967 | push: function push(viewId, viewState, url) {
|
6968 | var _extend2;
|
6969 |
|
6970 | var window = getWindow();
|
6971 |
|
6972 | if (url.substr(-3) === '#!/') {
|
6973 |
|
6974 | url = url.replace('#!/', '');
|
6975 | }
|
6976 |
|
6977 | if (!History$2.allowChange) {
|
6978 | History$2.queue.push(function () {
|
6979 | History$2.push(viewId, viewState, url);
|
6980 | });
|
6981 | return;
|
6982 | }
|
6983 |
|
6984 | History$2.previousState = History$2.state;
|
6985 | var newState = extend$1({}, History$2.previousState || {}, (_extend2 = {}, _extend2[viewId] = viewState, _extend2));
|
6986 | History$2.state = newState;
|
6987 | window.history.pushState(newState, '', url);
|
6988 | },
|
6989 | replace: function replace(viewId, viewState, url) {
|
6990 | var _extend3;
|
6991 |
|
6992 | var window = getWindow();
|
6993 |
|
6994 | if (url.substr(-3) === '#!/') {
|
6995 |
|
6996 | url = url.replace('#!/', '');
|
6997 | }
|
6998 |
|
6999 | if (!History$2.allowChange) {
|
7000 | History$2.queue.push(function () {
|
7001 | History$2.replace(viewId, viewState, url);
|
7002 | });
|
7003 | return;
|
7004 | }
|
7005 |
|
7006 | History$2.previousState = History$2.state;
|
7007 | var newState = extend$1({}, History$2.previousState || {}, (_extend3 = {}, _extend3[viewId] = viewState, _extend3));
|
7008 | History$2.state = newState;
|
7009 | window.history.replaceState(newState, '', url);
|
7010 | },
|
7011 | go: function go(index) {
|
7012 | var window = getWindow();
|
7013 | History$2.allowChange = false;
|
7014 | window.history.go(index);
|
7015 | },
|
7016 | back: function back() {
|
7017 | var window = getWindow();
|
7018 | History$2.allowChange = false;
|
7019 | window.history.back();
|
7020 | },
|
7021 | allowChange: true,
|
7022 | previousState: {},
|
7023 | state: {},
|
7024 | blockPopstate: true,
|
7025 | init: function init(app) {
|
7026 | var window = getWindow();
|
7027 | var document = getDocument();
|
7028 | History$2.state = window.history.state;
|
7029 | $(window).on('load', function () {
|
7030 | setTimeout(function () {
|
7031 | History$2.blockPopstate = false;
|
7032 | }, 0);
|
7033 | });
|
7034 |
|
7035 | if (document.readyState && document.readyState === 'complete') {
|
7036 | History$2.blockPopstate = false;
|
7037 | }
|
7038 |
|
7039 | $(window).on('popstate', History$2.handle.bind(app));
|
7040 | }
|
7041 | };
|
7042 |
|
7043 | function SwipeBack(r) {
|
7044 | var router = r;
|
7045 | var $el = router.$el,
|
7046 | $navbarsEl = router.$navbarsEl,
|
7047 | app = router.app,
|
7048 | params = router.params;
|
7049 | var support = getSupport$1();
|
7050 | var device = getDevice$1();
|
7051 | var isTouched = false;
|
7052 | var isMoved = false;
|
7053 | var touchesStart = {};
|
7054 | var isScrolling;
|
7055 | var $currentPageEl = [];
|
7056 | var $previousPageEl = [];
|
7057 | var viewContainerWidth;
|
7058 | var touchesDiff;
|
7059 | var allowViewTouchMove = true;
|
7060 | var touchStartTime;
|
7061 | var $currentNavbarEl = [];
|
7062 | var $previousNavbarEl = [];
|
7063 | var dynamicNavbar;
|
7064 | var $pageShadowEl;
|
7065 | var $pageOpacityEl;
|
7066 | var animatableNavEls;
|
7067 | var paramsSwipeBackAnimateShadow = params[app.theme + "SwipeBackAnimateShadow"];
|
7068 | var paramsSwipeBackAnimateOpacity = params[app.theme + "SwipeBackAnimateOpacity"];
|
7069 | var paramsSwipeBackActiveArea = params[app.theme + "SwipeBackActiveArea"];
|
7070 | var paramsSwipeBackThreshold = params[app.theme + "SwipeBackThreshold"];
|
7071 | var transformOrigin = app.rtl ? 'right center' : 'left center';
|
7072 | var transformOriginTitleLarge = app.rtl ? 'calc(100% - var(--f7-navbar-large-title-padding-left) - var(--f7-safe-area-left)) center' : 'calc(var(--f7-navbar-large-title-padding-left) + var(--f7-safe-area-left)) center';
|
7073 |
|
7074 | function animatableNavElements() {
|
7075 | var els = [];
|
7076 | var inverter = app.rtl ? -1 : 1;
|
7077 | var currentNavIsTransparent = $currentNavbarEl.hasClass('navbar-transparent') && !$currentNavbarEl.hasClass('navbar-large') && !$currentNavbarEl.hasClass('navbar-transparent-visible');
|
7078 | var currentNavIsLarge = $currentNavbarEl.hasClass('navbar-large');
|
7079 | var currentNavIsCollapsed = $currentNavbarEl.hasClass('navbar-large-collapsed');
|
7080 | var currentNavIsLargeTransparent = $currentNavbarEl.hasClass('navbar-large-transparent') || $currentNavbarEl.hasClass('navbar-large') && $currentNavbarEl.hasClass('navbar-transparent');
|
7081 | var previousNavIsTransparent = $previousNavbarEl.hasClass('navbar-transparent') && !$previousNavbarEl.hasClass('navbar-large') && !$previousNavbarEl.hasClass('navbar-transparent-visible');
|
7082 | var previousNavIsLarge = $previousNavbarEl.hasClass('navbar-large');
|
7083 | var previousNavIsCollapsed = $previousNavbarEl.hasClass('navbar-large-collapsed');
|
7084 | var previousNavIsLargeTransparent = $previousNavbarEl.hasClass('navbar-large-transparent') || $previousNavbarEl.hasClass('navbar-large') && $previousNavbarEl.hasClass('navbar-transparent');
|
7085 | var fromLarge = currentNavIsLarge && !currentNavIsCollapsed;
|
7086 | var toLarge = previousNavIsLarge && !previousNavIsCollapsed;
|
7087 | var $currentNavElements = $currentNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');
|
7088 | var $previousNavElements = $previousNavbarEl.find('.left, .title, .right, .subnavbar, .fading, .title-large, .navbar-bg');
|
7089 | var activeNavBackIconText;
|
7090 | var previousNavBackIconText;
|
7091 |
|
7092 | if (params.iosAnimateNavbarBackIcon) {
|
7093 | if ($currentNavbarEl.hasClass('sliding') || $currentNavbarEl.find('.navbar-inner.sliding').length) {
|
7094 | activeNavBackIconText = $currentNavbarEl.find('.left').find('.back .icon + span').eq(0);
|
7095 | } else {
|
7096 | activeNavBackIconText = $currentNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);
|
7097 | }
|
7098 |
|
7099 | if ($previousNavbarEl.hasClass('sliding') || $previousNavbarEl.find('.navbar-inner.sliding').length) {
|
7100 | previousNavBackIconText = $previousNavbarEl.find('.left').find('.back .icon + span').eq(0);
|
7101 | } else {
|
7102 | previousNavBackIconText = $previousNavbarEl.find('.left.sliding').find('.back .icon + span').eq(0);
|
7103 | }
|
7104 |
|
7105 | if (activeNavBackIconText.length) {
|
7106 | $previousNavElements.each(function (el) {
|
7107 | if (!$(el).hasClass('title')) return;
|
7108 | el.f7NavbarLeftOffset += activeNavBackIconText.prev('.icon')[0].offsetWidth;
|
7109 | });
|
7110 | }
|
7111 | }
|
7112 |
|
7113 | $currentNavElements.each(function (navEl) {
|
7114 | var $navEl = $(navEl);
|
7115 | var isSubnavbar = $navEl.hasClass('subnavbar');
|
7116 | var isLeft = $navEl.hasClass('left');
|
7117 | var isTitle = $navEl.hasClass('title');
|
7118 | var isBg = $navEl.hasClass('navbar-bg');
|
7119 | if ((isTitle || isBg) && currentNavIsTransparent) return;
|
7120 | if (!fromLarge && $navEl.hasClass('.title-large')) return;
|
7121 | var el = {
|
7122 | el: navEl
|
7123 | };
|
7124 |
|
7125 | if (fromLarge) {
|
7126 | if (isTitle) return;
|
7127 |
|
7128 | if ($navEl.hasClass('title-large')) {
|
7129 | if (els.indexOf(el) < 0) els.push(el);
|
7130 | el.overflow = 'visible';
|
7131 | $navEl.find('.title-large-text').each(function (subNavEl) {
|
7132 | els.push({
|
7133 | el: subNavEl,
|
7134 | transform: function transform(progress) {
|
7135 | return "translateX(" + progress * 100 * inverter + "%)";
|
7136 | }
|
7137 | });
|
7138 | });
|
7139 | return;
|
7140 | }
|
7141 | }
|
7142 |
|
7143 | if (toLarge) {
|
7144 | if (!fromLarge) {
|
7145 | if ($navEl.hasClass('title-large')) {
|
7146 | if (els.indexOf(el) < 0) els.push(el);
|
7147 | el.opacity = 0;
|
7148 | }
|
7149 | }
|
7150 |
|
7151 | if (isLeft) {
|
7152 | if (els.indexOf(el) < 0) els.push(el);
|
7153 |
|
7154 | el.opacity = function (progress) {
|
7155 | return 1 - Math.pow(progress, 0.33);
|
7156 | };
|
7157 |
|
7158 | $navEl.find('.back span').each(function (subNavEl) {
|
7159 | els.push({
|
7160 | el: subNavEl,
|
7161 | 'transform-origin': transformOrigin,
|
7162 | transform: function transform(progress) {
|
7163 | return "translateX(calc(" + progress + " * (var(--f7-navbarTitleLargeOffset) - var(--f7-navbarLeftTextOffset)))) translateY(calc(" + progress + " * (var(--f7-navbar-large-title-height) - var(--f7-navbar-large-title-padding-vertical) / 2))) scale(" + (1 + 1 * progress) + ")";
|
7164 | }
|
7165 | });
|
7166 | });
|
7167 | return;
|
7168 | }
|
7169 | }
|
7170 |
|
7171 | if (isBg) {
|
7172 | if (els.indexOf(el) < 0) els.push(el);
|
7173 |
|
7174 | if (!fromLarge && !toLarge) {
|
7175 | if (currentNavIsCollapsed) {
|
7176 | if (currentNavIsLargeTransparent) {
|
7177 | el.className = 'ios-swipeback-navbar-bg-large';
|
7178 | }
|
7179 |
|
7180 | el.transform = function (progress) {
|
7181 | return "translateX(" + 100 * progress * inverter + "%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))";
|
7182 | };
|
7183 | } else {
|
7184 | el.transform = function (progress) {
|
7185 | return "translateX(" + 100 * progress * inverter + "%)";
|
7186 | };
|
7187 | }
|
7188 | }
|
7189 |
|
7190 | if (!fromLarge && toLarge) {
|
7191 | el.className = 'ios-swipeback-navbar-bg-large';
|
7192 |
|
7193 | el.transform = function (progress) {
|
7194 | return "translateX(" + 100 * progress * inverter + "%) translateY(calc(-1 * " + (1 - progress) + " * var(--f7-navbar-large-title-height)))";
|
7195 | };
|
7196 | }
|
7197 |
|
7198 | if (fromLarge && toLarge) {
|
7199 | el.transform = function (progress) {
|
7200 | return "translateX(" + 100 * progress * inverter + "%)";
|
7201 | };
|
7202 | }
|
7203 |
|
7204 | if (fromLarge && !toLarge) {
|
7205 | el.transform = function (progress) {
|
7206 | return "translateX(" + 100 * progress * inverter + "%) translateY(calc(-" + progress + " * var(--f7-navbar-large-title-height)))";
|
7207 | };
|
7208 | }
|
7209 |
|
7210 | return;
|
7211 | }
|
7212 |
|
7213 | if ($navEl.hasClass('title-large')) return;
|
7214 | var isSliding = $navEl.hasClass('sliding') || $navEl.parents('.navbar-inner.sliding').length;
|
7215 | if (els.indexOf(el) < 0) els.push(el);
|
7216 |
|
7217 | if (!isSubnavbar || isSubnavbar && !isSliding) {
|
7218 | el.opacity = function (progress) {
|
7219 | return 1 - Math.pow(progress, 0.33);
|
7220 | };
|
7221 | }
|
7222 |
|
7223 | if (isSliding) {
|
7224 | var transformTarget = el;
|
7225 |
|
7226 | if (isLeft && activeNavBackIconText.length && params.iosAnimateNavbarBackIcon) {
|
7227 | var textEl = {
|
7228 | el: activeNavBackIconText[0]
|
7229 | };
|
7230 | transformTarget = textEl;
|
7231 | els.push(textEl);
|
7232 | }
|
7233 |
|
7234 | transformTarget.transform = function (progress) {
|
7235 | var activeNavTranslate = progress * transformTarget.el.f7NavbarRightOffset;
|
7236 | if (device.pixelRatio === 1) activeNavTranslate = Math.round(activeNavTranslate);
|
7237 |
|
7238 | if (isSubnavbar && currentNavIsLarge) {
|
7239 | return "translate3d(" + activeNavTranslate + "px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)";
|
7240 | }
|
7241 |
|
7242 | return "translate3d(" + activeNavTranslate + "px,0,0)";
|
7243 | };
|
7244 | }
|
7245 | });
|
7246 | $previousNavElements.each(function (navEl) {
|
7247 | var $navEl = $(navEl);
|
7248 | var isSubnavbar = $navEl.hasClass('subnavbar');
|
7249 | var isLeft = $navEl.hasClass('left');
|
7250 | var isTitle = $navEl.hasClass('title');
|
7251 | var isBg = $navEl.hasClass('navbar-bg');
|
7252 | if ((isTitle || isBg) && previousNavIsTransparent) return;
|
7253 | var el = {
|
7254 | el: navEl
|
7255 | };
|
7256 |
|
7257 | if (toLarge) {
|
7258 | if (isTitle) return;
|
7259 | if (els.indexOf(el) < 0) els.push(el);
|
7260 |
|
7261 | if ($navEl.hasClass('title-large')) {
|
7262 | el.opacity = 1;
|
7263 | el.overflow = 'visible';
|
7264 | $navEl.find('.title-large-text').each(function (subNavEl) {
|
7265 | els.push({
|
7266 | el: subNavEl,
|
7267 | 'transform-origin': transformOriginTitleLarge,
|
7268 | opacity: function opacity(progress) {
|
7269 | return Math.pow(progress, 3);
|
7270 | },
|
7271 | transform: function transform(progress) {
|
7272 | return "translateX(calc(" + (1 - progress) + " * (var(--f7-navbarLeftTextOffset) - var(--f7-navbarTitleLargeOffset)))) translateY(calc(" + (progress - 1) + " * var(--f7-navbar-large-title-height) + " + (1 - progress) + " * var(--f7-navbar-large-title-padding-vertical))) scale(" + (0.5 + progress * 0.5) + ")";
|
7273 | }
|
7274 | });
|
7275 | });
|
7276 | return;
|
7277 | }
|
7278 | }
|
7279 |
|
7280 | if (isBg) {
|
7281 | if (els.indexOf(el) < 0) els.push(el);
|
7282 |
|
7283 | if (!fromLarge && !toLarge) {
|
7284 | if (previousNavIsCollapsed) {
|
7285 | if (previousNavIsLargeTransparent) {
|
7286 | el.className = 'ios-swipeback-navbar-bg-large';
|
7287 | }
|
7288 |
|
7289 | el.transform = function (progress) {
|
7290 | return "translateX(" + (-100 + 100 * progress) * inverter + "%) translateY(calc(-1 * var(--f7-navbar-large-title-height)))";
|
7291 | };
|
7292 | } else {
|
7293 | el.transform = function (progress) {
|
7294 | return "translateX(" + (-100 + 100 * progress) * inverter + "%)";
|
7295 | };
|
7296 | }
|
7297 | }
|
7298 |
|
7299 | if (!fromLarge && toLarge) {
|
7300 | el.transform = function (progress) {
|
7301 | return "translateX(" + (-100 + 100 * progress) * inverter + "%) translateY(calc(-1 * " + (1 - progress) + " * var(--f7-navbar-large-title-height)))";
|
7302 | };
|
7303 | }
|
7304 |
|
7305 | if (fromLarge && !toLarge) {
|
7306 | el.className = 'ios-swipeback-navbar-bg-large';
|
7307 |
|
7308 | el.transform = function (progress) {
|
7309 | return "translateX(" + (-100 + 100 * progress) * inverter + "%) translateY(calc(-" + progress + " * var(--f7-navbar-large-title-height)))";
|
7310 | };
|
7311 | }
|
7312 |
|
7313 | if (fromLarge && toLarge) {
|
7314 | el.transform = function (progress) {
|
7315 | return "translateX(" + (-100 + 100 * progress) * inverter + "%)";
|
7316 | };
|
7317 | }
|
7318 |
|
7319 | return;
|
7320 | }
|
7321 |
|
7322 | if ($navEl.hasClass('title-large')) return;
|
7323 | var isSliding = $navEl.hasClass('sliding') || $previousNavbarEl.children('.navbar-inner.sliding').length;
|
7324 | if (els.indexOf(el) < 0) els.push(el);
|
7325 |
|
7326 | if (!isSubnavbar || isSubnavbar && !isSliding) {
|
7327 | el.opacity = function (progress) {
|
7328 | return Math.pow(progress, 3);
|
7329 | };
|
7330 | }
|
7331 |
|
7332 | if (isSliding) {
|
7333 | var transformTarget = el;
|
7334 |
|
7335 | if (isLeft && previousNavBackIconText.length && params.iosAnimateNavbarBackIcon) {
|
7336 | var textEl = {
|
7337 | el: previousNavBackIconText[0]
|
7338 | };
|
7339 | transformTarget = textEl;
|
7340 | els.push(textEl);
|
7341 | }
|
7342 |
|
7343 | transformTarget.transform = function (progress) {
|
7344 | var previousNavTranslate = transformTarget.el.f7NavbarLeftOffset * (1 - progress);
|
7345 | if (device.pixelRatio === 1) previousNavTranslate = Math.round(previousNavTranslate);
|
7346 |
|
7347 | if (isSubnavbar && previousNavIsLarge) {
|
7348 | return "translate3d(" + previousNavTranslate + "px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)";
|
7349 | }
|
7350 |
|
7351 | return "translate3d(" + previousNavTranslate + "px,0,0)";
|
7352 | };
|
7353 | }
|
7354 | });
|
7355 | return els;
|
7356 | }
|
7357 |
|
7358 | function setAnimatableNavElements(_temp) {
|
7359 | var _ref = _temp === void 0 ? {} : _temp,
|
7360 | progress = _ref.progress,
|
7361 | reset = _ref.reset,
|
7362 | transition = _ref.transition,
|
7363 | reflow = _ref.reflow;
|
7364 |
|
7365 | var styles = ['overflow', 'transform', 'transform-origin', 'opacity'];
|
7366 |
|
7367 | if (transition === true || transition === false) {
|
7368 | for (var i = 0; i < animatableNavEls.length; i += 1) {
|
7369 | var el = animatableNavEls[i];
|
7370 |
|
7371 | if (el && el.el) {
|
7372 | if (transition === true) el.el.classList.add('navbar-page-transitioning');
|
7373 | if (transition === false) el.el.classList.remove('navbar-page-transitioning');
|
7374 | }
|
7375 | }
|
7376 | }
|
7377 |
|
7378 | if (reflow && animatableNavEls.length && animatableNavEls[0] && animatableNavEls[0].el) {
|
7379 |
|
7380 | animatableNavEls[0].el._clientLeft = animatableNavEls[0].el.clientLeft;
|
7381 | }
|
7382 |
|
7383 | for (var _i = 0; _i < animatableNavEls.length; _i += 1) {
|
7384 | var _el = animatableNavEls[_i];
|
7385 |
|
7386 | if (_el && _el.el) {
|
7387 | if (_el.className && !_el.classNameSet && !reset) {
|
7388 | _el.el.classList.add(_el.className);
|
7389 |
|
7390 | _el.classNameSet = true;
|
7391 | }
|
7392 |
|
7393 | if (_el.className && reset) {
|
7394 | _el.el.classList.remove(_el.className);
|
7395 | }
|
7396 |
|
7397 | for (var j = 0; j < styles.length; j += 1) {
|
7398 | var styleProp = styles[j];
|
7399 |
|
7400 | if (_el[styleProp]) {
|
7401 | if (reset) {
|
7402 | _el.el.style[styleProp] = '';
|
7403 | } else if (typeof _el[styleProp] === 'function') {
|
7404 | _el.el.style[styleProp] = _el[styleProp](progress);
|
7405 | } else {
|
7406 | _el.el.style[styleProp] = _el[styleProp];
|
7407 | }
|
7408 | }
|
7409 | }
|
7410 | }
|
7411 | }
|
7412 | }
|
7413 |
|
7414 | function handleTouchStart(e) {
|
7415 | var swipeBackEnabled = params[app.theme + "SwipeBack"];
|
7416 | if (!allowViewTouchMove || !swipeBackEnabled || isTouched || app.swipeout && app.swipeout.el || !router.allowPageChange) return;
|
7417 | if ($(e.target).closest('.range-slider, .calendar-months').length > 0) return;
|
7418 | if ($(e.target).closest('.page-master, .page-master-detail').length > 0 && params.masterDetailBreakpoint > 0 && app.width >= params.masterDetailBreakpoint) return;
|
7419 | isMoved = false;
|
7420 | isTouched = true;
|
7421 | isScrolling = undefined;
|
7422 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
7423 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
7424 | touchStartTime = now$1();
|
7425 | dynamicNavbar = router.dynamicNavbar;
|
7426 | }
|
7427 |
|
7428 | function handleTouchMove(e) {
|
7429 | if (!isTouched) return;
|
7430 | var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
7431 | var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
7432 |
|
7433 | if (typeof isScrolling === 'undefined') {
|
7434 | isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x)) || pageX < touchesStart.x && !app.rtl || pageX > touchesStart.x && app.rtl;
|
7435 | }
|
7436 |
|
7437 | if (isScrolling || e.f7PreventSwipeBack || app.preventSwipeBack) {
|
7438 | isTouched = false;
|
7439 | return;
|
7440 | }
|
7441 |
|
7442 | if (!isMoved) {
|
7443 |
|
7444 | var cancel = false;
|
7445 | var target = $(e.target);
|
7446 | var swipeout = target.closest('.swipeout');
|
7447 |
|
7448 | if (swipeout.length > 0) {
|
7449 | if (!app.rtl && swipeout.find('.swipeout-actions-left').length > 0) cancel = true;
|
7450 | if (app.rtl && swipeout.find('.swipeout-actions-right').length > 0) cancel = true;
|
7451 | }
|
7452 |
|
7453 | $currentPageEl = target.closest('.page');
|
7454 | if ($currentPageEl.hasClass('no-swipeback') || target.closest('.no-swipeback, .card-opened').length > 0) cancel = true;
|
7455 | $previousPageEl = $el.find('.page-previous:not(.stacked)');
|
7456 |
|
7457 | if ($previousPageEl.length > 1) {
|
7458 | $previousPageEl = $previousPageEl.eq($previousPageEl.length - 1);
|
7459 | }
|
7460 |
|
7461 | var notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;
|
7462 | viewContainerWidth = $el.width();
|
7463 |
|
7464 | if (app.rtl) {
|
7465 | notFromBorder = touchesStart.x < $el.offset().left - $el[0].scrollLeft + (viewContainerWidth - paramsSwipeBackActiveArea);
|
7466 | } else {
|
7467 | notFromBorder = touchesStart.x - $el.offset().left > paramsSwipeBackActiveArea;
|
7468 | }
|
7469 |
|
7470 | if (notFromBorder) cancel = true;
|
7471 | if ($previousPageEl.length === 0 || $currentPageEl.length === 0) cancel = true;
|
7472 |
|
7473 | if (cancel) {
|
7474 | isTouched = false;
|
7475 | return;
|
7476 | }
|
7477 |
|
7478 | if (paramsSwipeBackAnimateShadow) {
|
7479 | $pageShadowEl = $currentPageEl.find('.page-shadow-effect');
|
7480 |
|
7481 | if ($pageShadowEl.length === 0) {
|
7482 | $pageShadowEl = $('<div class="page-shadow-effect"></div>');
|
7483 | $currentPageEl.append($pageShadowEl);
|
7484 | }
|
7485 | }
|
7486 |
|
7487 | if (paramsSwipeBackAnimateOpacity) {
|
7488 | $pageOpacityEl = $previousPageEl.find('.page-opacity-effect');
|
7489 |
|
7490 | if ($pageOpacityEl.length === 0) {
|
7491 | $pageOpacityEl = $('<div class="page-opacity-effect"></div>');
|
7492 | $previousPageEl.append($pageOpacityEl);
|
7493 | }
|
7494 | }
|
7495 |
|
7496 | if (dynamicNavbar) {
|
7497 | $currentNavbarEl = $navbarsEl.find('.navbar-current:not(.stacked)');
|
7498 | $previousNavbarEl = $navbarsEl.find('.navbar-previous:not(.stacked)');
|
7499 |
|
7500 | if ($previousNavbarEl.length > 1) {
|
7501 | $previousNavbarEl = $previousNavbarEl.eq($previousNavbarEl.length - 1);
|
7502 | }
|
7503 |
|
7504 | animatableNavEls = animatableNavElements($previousNavbarEl, $currentNavbarEl);
|
7505 | }
|
7506 |
|
7507 |
|
7508 | if ($('.sheet.modal-in').length > 0 && app.sheet) {
|
7509 | app.sheet.close($('.sheet.modal-in'));
|
7510 | }
|
7511 | }
|
7512 |
|
7513 | e.f7PreventSwipePanel = true;
|
7514 | isMoved = true;
|
7515 | app.preventSwipePanelBySwipeBack = true;
|
7516 | e.preventDefault();
|
7517 |
|
7518 | var inverter = app.rtl ? -1 : 1;
|
7519 |
|
7520 | touchesDiff = (pageX - touchesStart.x - paramsSwipeBackThreshold) * inverter;
|
7521 | if (touchesDiff < 0) touchesDiff = 0;
|
7522 | var percentage = Math.min(Math.max(touchesDiff / viewContainerWidth, 0), 1);
|
7523 |
|
7524 | var callbackData = {
|
7525 | percentage: percentage,
|
7526 | progress: percentage,
|
7527 | currentPageEl: $currentPageEl[0],
|
7528 | previousPageEl: $previousPageEl[0],
|
7529 | currentNavbarEl: $currentNavbarEl[0],
|
7530 | previousNavbarEl: $previousNavbarEl[0]
|
7531 | };
|
7532 | $el.trigger('swipeback:move', callbackData);
|
7533 | router.emit('swipebackMove', callbackData);
|
7534 |
|
7535 | var currentPageTranslate = touchesDiff * inverter;
|
7536 | var previousPageTranslate = (touchesDiff / 5 - viewContainerWidth / 5) * inverter;
|
7537 |
|
7538 | if (!app.rtl) {
|
7539 | currentPageTranslate = Math.min(currentPageTranslate, viewContainerWidth);
|
7540 | previousPageTranslate = Math.min(previousPageTranslate, 0);
|
7541 | } else {
|
7542 | currentPageTranslate = Math.max(currentPageTranslate, -viewContainerWidth);
|
7543 | previousPageTranslate = Math.max(previousPageTranslate, 0);
|
7544 | }
|
7545 |
|
7546 | if (device.pixelRatio === 1) {
|
7547 | currentPageTranslate = Math.round(currentPageTranslate);
|
7548 | previousPageTranslate = Math.round(previousPageTranslate);
|
7549 | }
|
7550 |
|
7551 | router.swipeBackActive = true;
|
7552 | $([$currentPageEl[0], $previousPageEl[0]]).addClass('page-swipeback-active');
|
7553 | $currentPageEl.transform("translate3d(" + currentPageTranslate + "px,0,0)");
|
7554 | if (paramsSwipeBackAnimateShadow) $pageShadowEl[0].style.opacity = 1 - 1 * percentage;
|
7555 |
|
7556 | if (app.theme === 'ios') {
|
7557 | $previousPageEl.transform("translate3d(" + previousPageTranslate + "px,0,0)");
|
7558 | }
|
7559 |
|
7560 | if (paramsSwipeBackAnimateOpacity) $pageOpacityEl[0].style.opacity = 1 - 1 * percentage;
|
7561 |
|
7562 | if (!dynamicNavbar) return;
|
7563 | setAnimatableNavElements({
|
7564 | progress: percentage
|
7565 | });
|
7566 | }
|
7567 |
|
7568 | function handleTouchEnd() {
|
7569 | app.preventSwipePanelBySwipeBack = false;
|
7570 |
|
7571 | if (!isTouched || !isMoved) {
|
7572 | isTouched = false;
|
7573 | isMoved = false;
|
7574 | return;
|
7575 | }
|
7576 |
|
7577 | isTouched = false;
|
7578 | isMoved = false;
|
7579 | router.swipeBackActive = false;
|
7580 | var $pages = $([$currentPageEl[0], $previousPageEl[0]]);
|
7581 | $pages.removeClass('page-swipeback-active');
|
7582 |
|
7583 | if (touchesDiff === 0) {
|
7584 | $pages.transform('');
|
7585 | if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();
|
7586 | if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();
|
7587 |
|
7588 | if (dynamicNavbar) {
|
7589 | setAnimatableNavElements({
|
7590 | reset: true
|
7591 | });
|
7592 | }
|
7593 |
|
7594 | return;
|
7595 | }
|
7596 |
|
7597 | var timeDiff = now$1() - touchStartTime;
|
7598 | var pageChanged = false;
|
7599 |
|
7600 | if (timeDiff < 300 && touchesDiff > 10 || timeDiff >= 300 && touchesDiff > viewContainerWidth / 2) {
|
7601 | $currentPageEl.removeClass('page-current').addClass("page-next" + (app.theme !== 'ios' ? ' page-next-on-right' : ''));
|
7602 | $previousPageEl.removeClass('page-previous').addClass('page-current').removeAttr('aria-hidden');
|
7603 | if ($pageShadowEl) $pageShadowEl[0].style.opacity = '';
|
7604 | if ($pageOpacityEl) $pageOpacityEl[0].style.opacity = '';
|
7605 |
|
7606 | if (dynamicNavbar) {
|
7607 | router.setNavbarPosition($currentNavbarEl, 'next');
|
7608 | router.setNavbarPosition($previousNavbarEl, 'current', false);
|
7609 | }
|
7610 |
|
7611 | pageChanged = true;
|
7612 | }
|
7613 |
|
7614 |
|
7615 |
|
7616 | $pages.addClass('page-transitioning page-transitioning-swipeback');
|
7617 |
|
7618 | if (device.ios) {
|
7619 |
|
7620 | $currentPageEl[0]._clientLeft = $currentPageEl[0].clientLeft;
|
7621 | }
|
7622 |
|
7623 | $pages.transform('');
|
7624 |
|
7625 | if (dynamicNavbar) {
|
7626 | setAnimatableNavElements({
|
7627 | progress: pageChanged ? 1 : 0,
|
7628 | transition: true,
|
7629 | reflow: !!device.ios
|
7630 | });
|
7631 | }
|
7632 |
|
7633 | allowViewTouchMove = false;
|
7634 | router.allowPageChange = false;
|
7635 |
|
7636 | var callbackData = {
|
7637 | currentPageEl: $currentPageEl[0],
|
7638 | previousPageEl: $previousPageEl[0],
|
7639 | currentNavbarEl: $currentNavbarEl[0],
|
7640 | previousNavbarEl: $previousNavbarEl[0]
|
7641 | };
|
7642 |
|
7643 | if (pageChanged) {
|
7644 |
|
7645 | router.currentRoute = $previousPageEl[0].f7Page.route;
|
7646 | router.currentPage = $previousPageEl[0];
|
7647 |
|
7648 | router.pageCallback('beforeOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {
|
7649 | route: $currentPageEl[0].f7Page.route,
|
7650 | swipeBack: true
|
7651 | });
|
7652 | router.pageCallback('beforeIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {
|
7653 | route: $previousPageEl[0].f7Page.route,
|
7654 | swipeBack: true
|
7655 | }, $currentPageEl[0]);
|
7656 | $el.trigger('swipeback:beforechange', callbackData);
|
7657 | router.emit('swipebackBeforeChange', callbackData);
|
7658 | } else {
|
7659 | $el.trigger('swipeback:beforereset', callbackData);
|
7660 | router.emit('swipebackBeforeReset', callbackData);
|
7661 | }
|
7662 |
|
7663 | $currentPageEl.transitionEnd(function () {
|
7664 | $pages.removeClass('page-transitioning page-transitioning-swipeback');
|
7665 |
|
7666 | if (dynamicNavbar) {
|
7667 | setAnimatableNavElements({
|
7668 | reset: true,
|
7669 | transition: false
|
7670 | });
|
7671 | }
|
7672 |
|
7673 | allowViewTouchMove = true;
|
7674 | router.allowPageChange = true;
|
7675 |
|
7676 | if (pageChanged) {
|
7677 |
|
7678 | if (router.history.length === 1) {
|
7679 | router.history.unshift(router.url);
|
7680 | }
|
7681 |
|
7682 | router.history.pop();
|
7683 | router.saveHistory();
|
7684 |
|
7685 | if (params.browserHistory) {
|
7686 | History$2.back();
|
7687 | }
|
7688 |
|
7689 |
|
7690 | router.pageCallback('afterOut', $currentPageEl, $currentNavbarEl, 'current', 'next', {
|
7691 | route: $currentPageEl[0].f7Page.route,
|
7692 | swipeBack: true
|
7693 | });
|
7694 | router.pageCallback('afterIn', $previousPageEl, $previousNavbarEl, 'previous', 'current', {
|
7695 | route: $previousPageEl[0].f7Page.route,
|
7696 | swipeBack: true
|
7697 | });
|
7698 |
|
7699 | if (params.stackPages && router.initialPages.indexOf($currentPageEl[0]) >= 0) {
|
7700 | $currentPageEl.addClass('stacked');
|
7701 |
|
7702 | if (dynamicNavbar) {
|
7703 | $currentNavbarEl.addClass('stacked');
|
7704 | }
|
7705 | } else {
|
7706 | router.pageCallback('beforeRemove', $currentPageEl, $currentNavbarEl, 'next', {
|
7707 | swipeBack: true
|
7708 | });
|
7709 | router.removePage($currentPageEl);
|
7710 |
|
7711 | if (dynamicNavbar) {
|
7712 | router.removeNavbar($currentNavbarEl);
|
7713 | }
|
7714 | }
|
7715 |
|
7716 | $el.trigger('swipeback:afterchange', callbackData);
|
7717 | router.emit('swipebackAfterChange', callbackData);
|
7718 | router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
|
7719 |
|
7720 | if (params.preloadPreviousPage) {
|
7721 | router.back(router.history[router.history.length - 2], {
|
7722 | preload: true
|
7723 | });
|
7724 | }
|
7725 | } else {
|
7726 | $el.trigger('swipeback:afterreset', callbackData);
|
7727 | router.emit('swipebackAfterReset', callbackData);
|
7728 | }
|
7729 |
|
7730 | if ($pageShadowEl && $pageShadowEl.length > 0) $pageShadowEl.remove();
|
7731 | if ($pageOpacityEl && $pageOpacityEl.length > 0) $pageOpacityEl.remove();
|
7732 | });
|
7733 | }
|
7734 |
|
7735 | function attachEvents() {
|
7736 | var passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {
|
7737 | passive: true,
|
7738 | capture: false
|
7739 | } : false;
|
7740 | $el.on(app.touchEvents.start, handleTouchStart, passiveListener);
|
7741 | app.on('touchmove:active', handleTouchMove);
|
7742 | app.on('touchend:passive', handleTouchEnd);
|
7743 | }
|
7744 |
|
7745 | function detachEvents() {
|
7746 | var passiveListener = app.touchEvents.start === 'touchstart' && support.passiveListener ? {
|
7747 | passive: true,
|
7748 | capture: false
|
7749 | } : false;
|
7750 | $el.off(app.touchEvents.start, handleTouchStart, passiveListener);
|
7751 | app.off('touchmove:active', handleTouchMove);
|
7752 | app.off('touchend:passive', handleTouchEnd);
|
7753 | }
|
7754 |
|
7755 | attachEvents();
|
7756 | router.on('routerDestroy', detachEvents);
|
7757 | }
|
7758 |
|
7759 | function redirect(direction, route, options) {
|
7760 | var router = this;
|
7761 | var r = route.route.redirect;
|
7762 | var method = direction === 'forward' ? 'navigate' : 'back';
|
7763 |
|
7764 | if (options.initial && router.params.browserHistory) {
|
7765 | options.replaceState = true;
|
7766 |
|
7767 | options.history = true;
|
7768 | }
|
7769 |
|
7770 | function redirectResolve(redirectUrl, redirectOptions) {
|
7771 | if (redirectOptions === void 0) {
|
7772 | redirectOptions = {};
|
7773 | }
|
7774 |
|
7775 | router.allowPageChange = true;
|
7776 | router[method](redirectUrl, extend$1({}, options, redirectOptions));
|
7777 | }
|
7778 |
|
7779 | function redirectReject() {
|
7780 | router.allowPageChange = true;
|
7781 | }
|
7782 |
|
7783 | if (typeof r === 'function') {
|
7784 | router.allowPageChange = false;
|
7785 | var redirectUrl = r.call(router, {
|
7786 | router: router,
|
7787 | to: route,
|
7788 | resolve: redirectResolve,
|
7789 | reject: redirectReject,
|
7790 | direction: direction,
|
7791 | app: router.app
|
7792 | });
|
7793 |
|
7794 | if (redirectUrl && typeof redirectUrl === 'string') {
|
7795 | router.allowPageChange = true;
|
7796 | return router[method](redirectUrl, options);
|
7797 | }
|
7798 |
|
7799 | return router;
|
7800 | }
|
7801 |
|
7802 | return router[method](r, options);
|
7803 | }
|
7804 |
|
7805 | function processQueue(router, routerQueue, routeQueue, to, from, resolve, _reject, direction) {
|
7806 | var queue = [];
|
7807 |
|
7808 | if (Array.isArray(routeQueue)) {
|
7809 | queue.push.apply(queue, routeQueue);
|
7810 | } else if (routeQueue && typeof routeQueue === 'function') {
|
7811 | queue.push(routeQueue);
|
7812 | }
|
7813 |
|
7814 | if (routerQueue) {
|
7815 | if (Array.isArray(routerQueue)) {
|
7816 | queue.push.apply(queue, routerQueue);
|
7817 | } else {
|
7818 | queue.push(routerQueue);
|
7819 | }
|
7820 | }
|
7821 |
|
7822 | function next() {
|
7823 | if (queue.length === 0) {
|
7824 | resolve();
|
7825 | return;
|
7826 | }
|
7827 |
|
7828 | var queueItem = queue.shift();
|
7829 | queueItem.call(router, {
|
7830 | router: router,
|
7831 | to: to,
|
7832 | from: from,
|
7833 | resolve: function resolve() {
|
7834 | next();
|
7835 | },
|
7836 | reject: function reject() {
|
7837 | _reject();
|
7838 | },
|
7839 | direction: direction,
|
7840 | app: router.app
|
7841 | });
|
7842 | }
|
7843 |
|
7844 | next();
|
7845 | }
|
7846 |
|
7847 | function processRouteQueue(to, from, resolve, reject, direction) {
|
7848 | var router = this;
|
7849 |
|
7850 | function enterNextRoute() {
|
7851 | if (to && to.route && (router.params.routesBeforeEnter || to.route.beforeEnter)) {
|
7852 | router.allowPageChange = false;
|
7853 | processQueue(router, router.params.routesBeforeEnter, to.route.beforeEnter, to, from, function () {
|
7854 | router.allowPageChange = true;
|
7855 | resolve();
|
7856 | }, function () {
|
7857 | reject();
|
7858 | }, direction);
|
7859 | } else {
|
7860 | resolve();
|
7861 | }
|
7862 | }
|
7863 |
|
7864 | function leaveCurrentRoute() {
|
7865 | if (from && from.route && (router.params.routesBeforeLeave || from.route.beforeLeave)) {
|
7866 | router.allowPageChange = false;
|
7867 | processQueue(router, router.params.routesBeforeLeave, from.route.beforeLeave, to, from, function () {
|
7868 | router.allowPageChange = true;
|
7869 | enterNextRoute();
|
7870 | }, function () {
|
7871 | reject();
|
7872 | }, direction);
|
7873 | } else {
|
7874 | enterNextRoute();
|
7875 | }
|
7876 | }
|
7877 |
|
7878 | leaveCurrentRoute();
|
7879 | }
|
7880 |
|
7881 | function appRouterCheck(router, method) {
|
7882 | if (!router.view) {
|
7883 | throw new Error("Framework7: it is not allowed to use router methods on global app router. Use router methods only on related View, e.g. app.views.main.router." + method + "(...)");
|
7884 | }
|
7885 | }
|
7886 |
|
7887 | function asyncComponent(router, component, resolve, reject) {
|
7888 | function resolvePromise(componentPromise) {
|
7889 | componentPromise.then(function (c) {
|
7890 |
|
7891 | resolve({
|
7892 | component: c.default || c._default || c
|
7893 | });
|
7894 | }).catch(function (err) {
|
7895 | reject();
|
7896 | throw new Error(err);
|
7897 | });
|
7898 | }
|
7899 |
|
7900 | if (component instanceof Promise) {
|
7901 | resolvePromise(component);
|
7902 | return;
|
7903 | }
|
7904 |
|
7905 | var asyncComponentResult = component.call(router);
|
7906 |
|
7907 | if (asyncComponentResult instanceof Promise) {
|
7908 | resolvePromise(asyncComponentResult);
|
7909 | } else {
|
7910 | resolve({
|
7911 | component: asyncComponentResult
|
7912 | });
|
7913 | }
|
7914 | }
|
7915 |
|
7916 | function refreshPage() {
|
7917 | var router = this;
|
7918 | appRouterCheck(router, 'refreshPage');
|
7919 | return router.navigate(router.currentRoute.url, {
|
7920 | ignoreCache: true,
|
7921 | reloadCurrent: true
|
7922 | });
|
7923 | }
|
7924 |
|
7925 | function forward(router, el, forwardOptions) {
|
7926 | if (forwardOptions === void 0) {
|
7927 | forwardOptions = {};
|
7928 | }
|
7929 |
|
7930 | var document = getDocument();
|
7931 | var $el = $(el);
|
7932 | var app = router.app;
|
7933 | var view = router.view;
|
7934 | var options = extend$1(false, {
|
7935 | animate: router.params.animate,
|
7936 | browserHistory: true,
|
7937 | replaceState: false,
|
7938 | history: true,
|
7939 | reloadCurrent: router.params.reloadPages,
|
7940 | reloadPrevious: false,
|
7941 | reloadAll: false,
|
7942 | clearPreviousHistory: false,
|
7943 | reloadDetail: router.params.reloadDetail,
|
7944 | on: {}
|
7945 | }, forwardOptions);
|
7946 | var masterDetailEnabled = router.params.masterDetailBreakpoint > 0;
|
7947 | var isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));
|
7948 | var masterPageEl;
|
7949 | var otherDetailPageEl;
|
7950 | var detailsInBetweenRemoved = 0;
|
7951 | var currentRouteIsModal = router.currentRoute.modal;
|
7952 | var modalType;
|
7953 |
|
7954 | if (!currentRouteIsModal) {
|
7955 | 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(function (modalLoadProp) {
|
7956 | if (router.currentRoute && router.currentRoute.route && router.currentRoute.route[modalLoadProp]) {
|
7957 | currentRouteIsModal = true;
|
7958 | modalType = modalLoadProp;
|
7959 | }
|
7960 | });
|
7961 | }
|
7962 |
|
7963 | if (currentRouteIsModal) {
|
7964 | var modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();
|
7965 | var previousUrl = router.history[router.history.length - 2];
|
7966 | var previousRoute = router.findMatchingRoute(previousUrl);
|
7967 |
|
7968 | if (!previousRoute && previousUrl) {
|
7969 | previousRoute = {
|
7970 | url: previousUrl,
|
7971 | path: previousUrl.split('?')[0],
|
7972 | query: parseUrlQuery(previousUrl),
|
7973 | route: {
|
7974 | path: previousUrl.split('?')[0],
|
7975 | url: previousUrl
|
7976 | }
|
7977 | };
|
7978 | }
|
7979 |
|
7980 | router.modalRemove(modalToClose);
|
7981 | }
|
7982 |
|
7983 | var dynamicNavbar = router.dynamicNavbar;
|
7984 | var $viewEl = router.$el;
|
7985 | var $newPage = $el;
|
7986 | var reload = options.reloadPrevious || options.reloadCurrent || options.reloadAll;
|
7987 | var $oldPage;
|
7988 | var $navbarsEl;
|
7989 | var $newNavbarEl;
|
7990 | var $oldNavbarEl;
|
7991 | router.allowPageChange = false;
|
7992 |
|
7993 | if ($newPage.length === 0) {
|
7994 | router.allowPageChange = true;
|
7995 | return router;
|
7996 | }
|
7997 |
|
7998 | if ($newPage.length) {
|
7999 |
|
8000 | router.removeThemeElements($newPage);
|
8001 | }
|
8002 |
|
8003 | if (dynamicNavbar) {
|
8004 | $newNavbarEl = $newPage.children('.navbar');
|
8005 | $navbarsEl = router.$navbarsEl;
|
8006 |
|
8007 | if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {
|
8008 |
|
8009 | $newNavbarEl = $newPage[0].f7Page.$navbarEl;
|
8010 | }
|
8011 | }
|
8012 |
|
8013 |
|
8014 | if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {
|
8015 | options.route.route.keepAliveData = {
|
8016 | pageEl: $el[0]
|
8017 | };
|
8018 | }
|
8019 |
|
8020 |
|
8021 | var $pagesInView = $viewEl.children('.page:not(.stacked)').filter(function (pageInView) {
|
8022 | return pageInView !== $newPage[0];
|
8023 | });
|
8024 |
|
8025 | var $navbarsInView;
|
8026 |
|
8027 | if (dynamicNavbar) {
|
8028 | $navbarsInView = $navbarsEl.children('.navbar:not(.stacked)').filter(function (navbarInView) {
|
8029 | return navbarInView !== $newNavbarEl[0];
|
8030 | });
|
8031 | }
|
8032 |
|
8033 |
|
8034 | if (options.reloadPrevious && $pagesInView.length < 2) {
|
8035 | router.allowPageChange = true;
|
8036 | return router;
|
8037 | }
|
8038 |
|
8039 |
|
8040 | var isDetail;
|
8041 | var reloadDetail;
|
8042 | var isDetailRoot;
|
8043 |
|
8044 | if (masterDetailEnabled && !options.reloadAll) {
|
8045 | for (var i = 0; i < $pagesInView.length; i += 1) {
|
8046 | if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {
|
8047 | masterPageEl = $pagesInView[i];
|
8048 | continue;
|
8049 | }
|
8050 | }
|
8051 |
|
8052 | isDetail = !isMaster && masterPageEl;
|
8053 |
|
8054 | if (isDetail) {
|
8055 |
|
8056 | if (masterPageEl) {
|
8057 | for (var _i = 0; _i < $pagesInView.length; _i += 1) {
|
8058 | if ($pagesInView[_i].classList.contains('page-master-detail')) {
|
8059 | otherDetailPageEl = $pagesInView[_i];
|
8060 | continue;
|
8061 | }
|
8062 | }
|
8063 | }
|
8064 | }
|
8065 |
|
8066 | reloadDetail = isDetail && options.reloadDetail && app.width >= router.params.masterDetailBreakpoint && masterPageEl;
|
8067 | }
|
8068 |
|
8069 | if (isDetail) {
|
8070 | isDetailRoot = !otherDetailPageEl || reloadDetail || options.reloadAll || options.reloadCurrent;
|
8071 | }
|
8072 |
|
8073 |
|
8074 | var newPagePosition = 'next';
|
8075 |
|
8076 | if (options.reloadCurrent || options.reloadAll || reloadDetail) {
|
8077 | newPagePosition = 'current';
|
8078 | } else if (options.reloadPrevious) {
|
8079 | newPagePosition = 'previous';
|
8080 | }
|
8081 |
|
8082 | $newPage.removeClass('page-previous page-current page-next').addClass("page-" + newPagePosition + (isMaster ? ' page-master' : '') + (isDetail ? ' page-master-detail' : '') + (isDetailRoot ? ' page-master-detail-root' : '')).removeClass('stacked').trigger('page:unstack').trigger('page:position', {
|
8083 | position: newPagePosition
|
8084 | });
|
8085 | router.emit('pageUnstack', $newPage[0]);
|
8086 | router.emit('pagePosition', $newPage[0], newPagePosition);
|
8087 |
|
8088 | if (isMaster || isDetail) {
|
8089 | $newPage.trigger('page:role', {
|
8090 | role: isMaster ? 'master' : 'detail',
|
8091 | root: !!isDetailRoot
|
8092 | });
|
8093 | router.emit('pageRole', $newPage[0], {
|
8094 | role: isMaster ? 'master' : 'detail',
|
8095 | detailRoot: !!isDetailRoot
|
8096 | });
|
8097 | }
|
8098 |
|
8099 | if (dynamicNavbar && $newNavbarEl.length) {
|
8100 | $newNavbarEl.removeClass('navbar-previous navbar-current navbar-next').addClass("navbar-" + newPagePosition + (isMaster ? ' navbar-master' : '') + (isDetail ? ' navbar-master-detail' : '') + (isDetailRoot ? ' navbar-master-detail-root' : '')).removeClass('stacked');
|
8101 | $newNavbarEl.trigger('navbar:position', {
|
8102 | position: newPagePosition
|
8103 | });
|
8104 | router.emit('navbarPosition', $newNavbarEl[0], newPagePosition);
|
8105 |
|
8106 | if (isMaster || isDetail) {
|
8107 | router.emit('navbarRole', $newNavbarEl[0], {
|
8108 | role: isMaster ? 'master' : 'detail',
|
8109 | detailRoot: !!isDetailRoot
|
8110 | });
|
8111 | }
|
8112 | }
|
8113 |
|
8114 |
|
8115 | if (options.reloadCurrent || reloadDetail) {
|
8116 | if (reloadDetail) {
|
8117 | $oldPage = $pagesInView.filter(function (pageEl) {
|
8118 | return !pageEl.classList.contains('page-master');
|
8119 | });
|
8120 |
|
8121 | if (dynamicNavbar) {
|
8122 | $oldNavbarEl = $($oldPage.map(function (pageEl) {
|
8123 | return app.navbar.getElByPage(pageEl);
|
8124 | }));
|
8125 | }
|
8126 |
|
8127 | if ($oldPage.length > 1 && masterPageEl) {
|
8128 | detailsInBetweenRemoved = $oldPage.length - 1;
|
8129 | $(masterPageEl).removeClass('page-master-stacked').trigger('page:masterunstack');
|
8130 | router.emit('pageMasterUnstack', masterPageEl);
|
8131 |
|
8132 | if (dynamicNavbar) {
|
8133 | $(app.navbar.getElByPage(masterPageEl)).removeClass('navbar-master-stacked');
|
8134 | router.emit('navbarMasterUnstack', app.navbar.getElByPage(masterPageEl));
|
8135 | }
|
8136 | }
|
8137 | } else {
|
8138 | $oldPage = $pagesInView.eq($pagesInView.length - 1);
|
8139 |
|
8140 | if (dynamicNavbar) {
|
8141 | $oldNavbarEl = $(app.navbar.getElByPage($oldPage));
|
8142 | }
|
8143 | }
|
8144 | } else if (options.reloadPrevious) {
|
8145 | $oldPage = $pagesInView.eq($pagesInView.length - 2);
|
8146 |
|
8147 | if (dynamicNavbar) {
|
8148 |
|
8149 | $oldNavbarEl = $(app.navbar.getElByPage($oldPage));
|
8150 | }
|
8151 | } else if (options.reloadAll) {
|
8152 | $oldPage = $pagesInView.filter(function (pageEl) {
|
8153 | return pageEl !== $newPage[0];
|
8154 | });
|
8155 |
|
8156 | if (dynamicNavbar) {
|
8157 | $oldNavbarEl = $navbarsInView.filter(function (navbarEl) {
|
8158 | return navbarEl !== $newNavbarEl[0];
|
8159 | });
|
8160 | }
|
8161 | } else {
|
8162 | var removedPageEls = [];
|
8163 | var removedNavbarEls = [];
|
8164 |
|
8165 | if ($pagesInView.length > 1) {
|
8166 | var _i2 = 0;
|
8167 |
|
8168 | for (_i2 = 0; _i2 < $pagesInView.length - 1; _i2 += 1) {
|
8169 | if (masterPageEl && $pagesInView[_i2] === masterPageEl) {
|
8170 | $pagesInView.eq(_i2).addClass('page-master-stacked');
|
8171 | $pagesInView.eq(_i2).trigger('page:masterstack');
|
8172 | router.emit('pageMasterStack', $pagesInView[_i2]);
|
8173 |
|
8174 | if (dynamicNavbar) {
|
8175 | $(app.navbar.getElByPage(masterPageEl)).addClass('navbar-master-stacked');
|
8176 | router.emit('navbarMasterStack', app.navbar.getElByPage(masterPageEl));
|
8177 | }
|
8178 |
|
8179 | continue;
|
8180 | }
|
8181 |
|
8182 | var oldNavbarEl = app.navbar.getElByPage($pagesInView.eq(_i2));
|
8183 |
|
8184 | if (router.params.stackPages) {
|
8185 | $pagesInView.eq(_i2).addClass('stacked');
|
8186 | $pagesInView.eq(_i2).trigger('page:stack');
|
8187 | router.emit('pageStack', $pagesInView[_i2]);
|
8188 |
|
8189 | if (dynamicNavbar) {
|
8190 | $(oldNavbarEl).addClass('stacked');
|
8191 | }
|
8192 | } else {
|
8193 |
|
8194 | removedPageEls.push($pagesInView[_i2]);
|
8195 | router.pageCallback('beforeRemove', $pagesInView[_i2], $navbarsInView && $navbarsInView[_i2], 'previous', undefined, options);
|
8196 | router.removePage($pagesInView[_i2]);
|
8197 |
|
8198 | if (dynamicNavbar && oldNavbarEl) {
|
8199 | removedNavbarEls.push(oldNavbarEl);
|
8200 | router.removeNavbar(oldNavbarEl);
|
8201 | }
|
8202 | }
|
8203 | }
|
8204 | }
|
8205 |
|
8206 | $oldPage = $viewEl.children('.page:not(.stacked)').filter(function (pageEl) {
|
8207 | return pageEl !== $newPage[0] && removedPageEls.indexOf(pageEl) < 0;
|
8208 | });
|
8209 |
|
8210 | if (dynamicNavbar) {
|
8211 | $oldNavbarEl = $navbarsEl.children('.navbar:not(.stacked)').filter(function (navbarEl) {
|
8212 | return navbarEl !== $newNavbarEl[0] && removedNavbarEls.indexOf(removedNavbarEls) < 0;
|
8213 | });
|
8214 | }
|
8215 |
|
8216 | removedPageEls = [];
|
8217 | removedNavbarEls = [];
|
8218 | }
|
8219 |
|
8220 | if (isDetail && !options.reloadAll) {
|
8221 | if ($oldPage.length > 1 || reloadDetail) {
|
8222 | $oldPage = $oldPage.filter(function (pageEl) {
|
8223 | return !pageEl.classList.contains('page-master');
|
8224 | });
|
8225 | }
|
8226 |
|
8227 | if ($oldNavbarEl && ($oldNavbarEl.length > 1 || reloadDetail)) {
|
8228 | $oldNavbarEl = $oldNavbarEl.filter(function (navbarEl) {
|
8229 | return !navbarEl.classList.contains('navbar-master');
|
8230 | });
|
8231 | }
|
8232 | }
|
8233 |
|
8234 |
|
8235 | if (router.params.browserHistory && (options.browserHistory || options.replaceState) && !options.reloadPrevious) {
|
8236 | var browserHistoryRoot = router.params.browserHistoryRoot || '';
|
8237 | History$2[options.reloadCurrent || reloadDetail && otherDetailPageEl || options.reloadAll || options.replaceState ? 'replace' : 'push'](view.id, {
|
8238 | url: options.route.url
|
8239 | }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);
|
8240 | }
|
8241 |
|
8242 | if (!options.reloadPrevious) {
|
8243 |
|
8244 | router.currentPageEl = $newPage[0];
|
8245 |
|
8246 | if (dynamicNavbar && $newNavbarEl.length) {
|
8247 | router.currentNavbarEl = $newNavbarEl[0];
|
8248 | } else {
|
8249 | delete router.currentNavbarEl;
|
8250 | }
|
8251 |
|
8252 |
|
8253 | router.currentRoute = options.route;
|
8254 | }
|
8255 |
|
8256 |
|
8257 | var url = options.route.url;
|
8258 |
|
8259 | if (options.history) {
|
8260 | if (((options.reloadCurrent || reloadDetail && otherDetailPageEl) && router.history.length) > 0 || options.replaceState) {
|
8261 | if (reloadDetail && detailsInBetweenRemoved > 0) {
|
8262 | router.history = router.history.slice(0, router.history.length - detailsInBetweenRemoved);
|
8263 | }
|
8264 |
|
8265 | router.history[router.history.length - (options.reloadPrevious ? 2 : 1)] = url;
|
8266 | } else if (options.reloadPrevious) {
|
8267 | router.history[router.history.length - 2] = url;
|
8268 | } else if (options.reloadAll) {
|
8269 | router.history = [url];
|
8270 | } else {
|
8271 | router.history.push(url);
|
8272 | }
|
8273 | }
|
8274 |
|
8275 | router.saveHistory();
|
8276 |
|
8277 | var newPageInDom = $newPage.parents(document).length > 0;
|
8278 | var f7Component = $newPage[0].f7Component;
|
8279 |
|
8280 | if (options.reloadPrevious) {
|
8281 | if (f7Component && !newPageInDom) {
|
8282 | f7Component.mount(function (componentEl) {
|
8283 | $(componentEl).insertBefore($oldPage);
|
8284 | });
|
8285 | } else {
|
8286 | $newPage.insertBefore($oldPage);
|
8287 | }
|
8288 |
|
8289 | if (dynamicNavbar && $newNavbarEl.length) {
|
8290 | if ($newNavbarEl.find('.title-large').length) {
|
8291 | $newNavbarEl.addClass('navbar-large');
|
8292 | }
|
8293 |
|
8294 | if ($oldNavbarEl.length) {
|
8295 | $newNavbarEl.insertBefore($oldNavbarEl);
|
8296 | } else {
|
8297 | if (!router.$navbarsEl.parents(document).length) {
|
8298 | router.$el.prepend(router.$navbarsEl);
|
8299 | }
|
8300 |
|
8301 | $navbarsEl.append($newNavbarEl);
|
8302 | }
|
8303 | }
|
8304 | } else {
|
8305 | if ($oldPage.next('.page')[0] !== $newPage[0]) {
|
8306 | if (f7Component && !newPageInDom) {
|
8307 | f7Component.mount(function (componentEl) {
|
8308 | $viewEl.append(componentEl);
|
8309 | });
|
8310 | } else {
|
8311 | $viewEl.append($newPage[0]);
|
8312 | }
|
8313 | }
|
8314 |
|
8315 | if (dynamicNavbar && $newNavbarEl.length) {
|
8316 | if ($newNavbarEl.find('.title-large').length) {
|
8317 | $newNavbarEl.addClass('navbar-large');
|
8318 | }
|
8319 |
|
8320 | if (!router.$navbarsEl.parents(document).length) {
|
8321 | router.$el.prepend(router.$navbarsEl);
|
8322 | }
|
8323 |
|
8324 | $navbarsEl.append($newNavbarEl[0]);
|
8325 | }
|
8326 | }
|
8327 |
|
8328 | if (!newPageInDom) {
|
8329 | router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);
|
8330 | } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {
|
8331 | $newPage[0].f7PageMounted = true;
|
8332 | router.pageCallback('mounted', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);
|
8333 | }
|
8334 |
|
8335 |
|
8336 | if ((options.reloadCurrent || reloadDetail) && $oldPage.length > 0) {
|
8337 | if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {
|
8338 | $oldPage.addClass('stacked');
|
8339 | $oldPage.trigger('page:stack');
|
8340 | router.emit('pageStack', $oldPage[0]);
|
8341 |
|
8342 | if (dynamicNavbar) {
|
8343 | $oldNavbarEl.addClass('stacked');
|
8344 | }
|
8345 | } else {
|
8346 |
|
8347 | router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);
|
8348 | router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);
|
8349 | router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'current', undefined, options);
|
8350 | router.removePage($oldPage);
|
8351 |
|
8352 | if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {
|
8353 | router.removeNavbar($oldNavbarEl);
|
8354 | }
|
8355 | }
|
8356 | } else if (options.reloadAll) {
|
8357 | $oldPage.each(function (pageEl, index) {
|
8358 | var $oldPageEl = $(pageEl);
|
8359 | var $oldNavbarElEl = $(app.navbar.getElByPage($oldPageEl));
|
8360 |
|
8361 | if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {
|
8362 | $oldPageEl.addClass('stacked');
|
8363 | $oldPageEl.trigger('page:stack');
|
8364 | router.emit('pageStack', $oldPageEl[0]);
|
8365 |
|
8366 | if (dynamicNavbar) {
|
8367 | $oldNavbarElEl.addClass('stacked');
|
8368 | }
|
8369 | } else {
|
8370 |
|
8371 | if ($oldPageEl.hasClass('page-current')) {
|
8372 | router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', undefined, options);
|
8373 | router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', undefined, options);
|
8374 | }
|
8375 |
|
8376 | router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl && $oldNavbarEl.eq(index), 'previous', undefined, options);
|
8377 | router.removePage($oldPageEl);
|
8378 |
|
8379 | if (dynamicNavbar && $oldNavbarElEl.length) {
|
8380 | router.removeNavbar($oldNavbarElEl);
|
8381 | }
|
8382 | }
|
8383 | });
|
8384 | } else if (options.reloadPrevious) {
|
8385 | if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {
|
8386 | $oldPage.addClass('stacked');
|
8387 | $oldPage.trigger('page:stack');
|
8388 | router.emit('pageStack', $oldPage[0]);
|
8389 |
|
8390 | if (dynamicNavbar) {
|
8391 | $oldNavbarEl.addClass('stacked');
|
8392 | }
|
8393 | } else {
|
8394 |
|
8395 | router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);
|
8396 | router.removePage($oldPage);
|
8397 |
|
8398 | if (dynamicNavbar && $oldNavbarEl && $oldNavbarEl.length) {
|
8399 | router.removeNavbar($oldNavbarEl);
|
8400 | }
|
8401 | }
|
8402 | }
|
8403 |
|
8404 |
|
8405 | if (options.route.route.tab) {
|
8406 | router.tabLoad(options.route.route.tab, extend$1({}, options, {
|
8407 | history: false,
|
8408 | browserHistory: false
|
8409 | }));
|
8410 | }
|
8411 |
|
8412 |
|
8413 | if (masterDetailEnabled) {
|
8414 | view.checkMasterDetailBreakpoint();
|
8415 | }
|
8416 |
|
8417 |
|
8418 | router.pageCallback('init', $newPage, $newNavbarEl, newPagePosition, reload ? newPagePosition : 'current', options, $oldPage);
|
8419 |
|
8420 | if (options.reloadCurrent || options.reloadAll || reloadDetail) {
|
8421 | router.allowPageChange = true;
|
8422 | router.pageCallback('beforeIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);
|
8423 | $newPage.removeAttr('aria-hidden');
|
8424 |
|
8425 | if (dynamicNavbar && $newNavbarEl) {
|
8426 | $newNavbarEl.removeAttr('aria-hidden');
|
8427 | }
|
8428 |
|
8429 | router.pageCallback('afterIn', $newPage, $newNavbarEl, newPagePosition, 'current', options);
|
8430 | if (options.reloadCurrent && options.clearPreviousHistory) router.clearPreviousHistory();
|
8431 |
|
8432 | if (reloadDetail) {
|
8433 | router.setPagePosition($(masterPageEl), 'previous');
|
8434 |
|
8435 | if (masterPageEl.f7Page && masterPageEl.f7Page.navbarEl) {
|
8436 | router.setNavbarPosition($(masterPageEl.f7Page.navbarEl), 'previous');
|
8437 | }
|
8438 | }
|
8439 |
|
8440 | return router;
|
8441 | }
|
8442 |
|
8443 | if (options.reloadPrevious) {
|
8444 | router.allowPageChange = true;
|
8445 | return router;
|
8446 | }
|
8447 |
|
8448 |
|
8449 | router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);
|
8450 | router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'next', 'current', options);
|
8451 |
|
8452 | function afterAnimation() {
|
8453 | router.setPagePosition($newPage, 'current', false);
|
8454 | router.setPagePosition($oldPage, 'previous', !$oldPage.hasClass('page-master'));
|
8455 |
|
8456 | if (dynamicNavbar) {
|
8457 | router.setNavbarPosition($newNavbarEl, 'current', false);
|
8458 | router.setNavbarPosition($oldNavbarEl, 'previous', !$oldNavbarEl.hasClass('navbar-master'));
|
8459 | }
|
8460 |
|
8461 |
|
8462 | router.allowPageChange = true;
|
8463 | router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'previous', options);
|
8464 | router.pageCallback('afterIn', $newPage, $newNavbarEl, 'next', 'current', options);
|
8465 | var keepOldPage = (router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"]) && !isMaster;
|
8466 |
|
8467 | if (!keepOldPage) {
|
8468 | if ($newPage.hasClass('smart-select-page') || $newPage.hasClass('photo-browser-page') || $newPage.hasClass('autocomplete-page') || $newPage.hasClass('color-picker-page')) {
|
8469 | keepOldPage = true;
|
8470 | }
|
8471 | }
|
8472 |
|
8473 | if (!keepOldPage) {
|
8474 | if (router.params.stackPages) {
|
8475 | $oldPage.addClass('stacked');
|
8476 | $oldPage.trigger('page:stack');
|
8477 | router.emit('pageStack', $oldPage[0]);
|
8478 |
|
8479 | if (dynamicNavbar) {
|
8480 | $oldNavbarEl.addClass('stacked');
|
8481 | }
|
8482 | } else if (!($newPage.attr('data-name') && $newPage.attr('data-name') === 'smart-select-page')) {
|
8483 |
|
8484 | router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'previous', undefined, options);
|
8485 | router.removePage($oldPage);
|
8486 |
|
8487 | if (dynamicNavbar && $oldNavbarEl.length) {
|
8488 | router.removeNavbar($oldNavbarEl);
|
8489 | }
|
8490 | }
|
8491 | }
|
8492 |
|
8493 | if (options.clearPreviousHistory) router.clearPreviousHistory();
|
8494 | router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
|
8495 |
|
8496 | if (router.params.browserHistory) {
|
8497 | History$2.clearRouterQueue();
|
8498 | }
|
8499 | }
|
8500 |
|
8501 | function setPositionClasses() {
|
8502 | router.setPagePosition($oldPage, 'current', false);
|
8503 | router.setPagePosition($newPage, 'next', false);
|
8504 |
|
8505 | if (dynamicNavbar) {
|
8506 | router.setNavbarPosition($oldNavbarEl, 'current', false);
|
8507 | router.setNavbarPosition($newNavbarEl, 'next', false);
|
8508 | }
|
8509 | }
|
8510 |
|
8511 | if (options.animate && !(isMaster && app.width >= router.params.masterDetailBreakpoint)) {
|
8512 | var delay = router.params[router.app.theme + "PageLoadDelay"];
|
8513 | var transition = router.params.transition;
|
8514 | if (options.transition) transition = options.transition;
|
8515 |
|
8516 | if (!transition && router.currentRoute && router.currentRoute.route) {
|
8517 | transition = router.currentRoute.route.transition;
|
8518 | }
|
8519 |
|
8520 | if (!transition && router.currentRoute && router.currentRoute.route.options) {
|
8521 | transition = router.currentRoute.route.options.transition;
|
8522 | }
|
8523 |
|
8524 | if (transition) {
|
8525 | $newPage[0].f7PageTransition = transition;
|
8526 | }
|
8527 |
|
8528 | if (delay) {
|
8529 | setTimeout(function () {
|
8530 | setPositionClasses();
|
8531 | router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, function () {
|
8532 | afterAnimation();
|
8533 | });
|
8534 | }, delay);
|
8535 | } else {
|
8536 | setPositionClasses();
|
8537 | router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'forward', transition, function () {
|
8538 | afterAnimation();
|
8539 | });
|
8540 | }
|
8541 | } else {
|
8542 | afterAnimation();
|
8543 | }
|
8544 |
|
8545 | return router;
|
8546 | }
|
8547 |
|
8548 | function load(router, loadParams, loadOptions, ignorePageChange) {
|
8549 | if (loadParams === void 0) {
|
8550 | loadParams = {};
|
8551 | }
|
8552 |
|
8553 | if (loadOptions === void 0) {
|
8554 | loadOptions = {};
|
8555 | }
|
8556 |
|
8557 | if (!router.allowPageChange && !ignorePageChange) return router;
|
8558 | var params = loadParams;
|
8559 | var options = loadOptions;
|
8560 | var url = params.url,
|
8561 | content = params.content,
|
8562 | el = params.el,
|
8563 | pageName = params.pageName,
|
8564 | component = params.component,
|
8565 | componentUrl = params.componentUrl;
|
8566 |
|
8567 | if (!options.reloadCurrent && options.route && options.route.route && options.route.route.parentPath && router.currentRoute.route && router.currentRoute.route.parentPath === options.route.route.parentPath) {
|
8568 |
|
8569 | if (options.route.url === router.url) {
|
8570 | router.allowPageChange = true;
|
8571 | return false;
|
8572 | }
|
8573 |
|
8574 |
|
8575 | var sameParams = Object.keys(options.route.params).length === Object.keys(router.currentRoute.params).length;
|
8576 |
|
8577 | if (sameParams) {
|
8578 |
|
8579 | Object.keys(options.route.params).forEach(function (paramName) {
|
8580 | if (!(paramName in router.currentRoute.params) || router.currentRoute.params[paramName] !== options.route.params[paramName]) {
|
8581 | sameParams = false;
|
8582 | }
|
8583 | });
|
8584 | }
|
8585 |
|
8586 | if (sameParams) {
|
8587 | if (options.route.route.tab) {
|
8588 | return router.tabLoad(options.route.route.tab, options);
|
8589 | }
|
8590 |
|
8591 | return false;
|
8592 | }
|
8593 |
|
8594 | if (!sameParams && options.route.route.tab && router.currentRoute.route.tab && router.currentRoute.parentPath === options.route.parentPath) {
|
8595 | return router.tabLoad(options.route.route.tab, options);
|
8596 | }
|
8597 | }
|
8598 |
|
8599 | if (options.route && options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {
|
8600 | router.allowPageChange = true;
|
8601 | return false;
|
8602 | }
|
8603 |
|
8604 | if (!options.route && url) {
|
8605 | options.route = router.parseRouteUrl(url);
|
8606 | extend$1(options.route, {
|
8607 | route: {
|
8608 | url: url,
|
8609 | path: url
|
8610 | }
|
8611 | });
|
8612 | }
|
8613 |
|
8614 |
|
8615 | function resolve(pageEl, newOptions) {
|
8616 | return forward(router, pageEl, extend$1(options, newOptions));
|
8617 | }
|
8618 |
|
8619 | function reject() {
|
8620 | router.allowPageChange = true;
|
8621 | return router;
|
8622 | }
|
8623 |
|
8624 | if (url || componentUrl || component) {
|
8625 | router.allowPageChange = false;
|
8626 | }
|
8627 |
|
8628 |
|
8629 | if (content) {
|
8630 | forward(router, router.getPageEl(content), options);
|
8631 | } else if (el) {
|
8632 |
|
8633 | forward(router, router.getPageEl(el), options);
|
8634 | } else if (pageName) {
|
8635 |
|
8636 | forward(router, router.$el.children(".page[data-name=\"" + pageName + "\"]").eq(0), options);
|
8637 | } else if (component || componentUrl) {
|
8638 |
|
8639 | try {
|
8640 | router.pageComponentLoader({
|
8641 | routerEl: router.el,
|
8642 | component: component,
|
8643 | componentUrl: componentUrl,
|
8644 | options: options,
|
8645 | resolve: resolve,
|
8646 | reject: reject
|
8647 | });
|
8648 | } catch (err) {
|
8649 | router.allowPageChange = true;
|
8650 | throw err;
|
8651 | }
|
8652 | } else if (url) {
|
8653 |
|
8654 | if (router.xhrAbortController) {
|
8655 | router.xhrAbortController.abort();
|
8656 | router.xhrAbortController = false;
|
8657 | }
|
8658 |
|
8659 | router.xhrRequest(url, options).then(function (pageContent) {
|
8660 | forward(router, router.getPageEl(pageContent), options);
|
8661 | }).catch(function () {
|
8662 | router.allowPageChange = true;
|
8663 | });
|
8664 | }
|
8665 |
|
8666 | return router;
|
8667 | }
|
8668 |
|
8669 | function openIn(router, url, options) {
|
8670 | var navigateOptions = {
|
8671 | url: url,
|
8672 | route: {
|
8673 | path: url,
|
8674 | options: _extends$j({}, options, {
|
8675 | openIn: undefined
|
8676 | })
|
8677 | }
|
8678 | };
|
8679 |
|
8680 | var params = _extends$j({}, options);
|
8681 |
|
8682 | if (options.openIn === 'popup') {
|
8683 | params.content = "<div class=\"popup popup-router-open-in\" data-url=\"" + url + "\"><div class=\"view view-init\" data-links-view=\"" + router.view.selector + "\" data-url=\"" + url + "\" data-ignore-open-in=\"true\"></div></div>";
|
8684 | navigateOptions.route.popup = params;
|
8685 | }
|
8686 |
|
8687 | if (options.openIn === 'loginScreen') {
|
8688 | params.content = "<div class=\"login-screen login-screen-router-open-in\" data-url=\"" + url + "\"><div class=\"view view-init\" data-links-view=\"" + router.view.selector + "\" data-url=\"" + url + "\" data-ignore-open-in=\"true\"></div></div>";
|
8689 | navigateOptions.route.loginScreen = params;
|
8690 | }
|
8691 |
|
8692 | if (options.openIn === 'sheet') {
|
8693 | params.content = "<div class=\"sheet-modal sheet-modal-router-open-in\" data-url=\"" + url + "\"><div class=\"sheet-modal-inner\"><div class=\"view view-init\" data-links-view=\"" + router.view.selector + "\" data-url=\"" + url + "\" data-ignore-open-in=\"true\"></div></div></div>";
|
8694 | navigateOptions.route.sheet = params;
|
8695 | }
|
8696 |
|
8697 | if (options.openIn === 'popover') {
|
8698 | params.targetEl = options.clickedEl || options.targetEl;
|
8699 | params.content = "<div class=\"popover popover-router-open-in\" data-url=\"" + url + "\"><div class=\"popover-inner\"><div class=\"view view-init\" data-links-view=\"" + router.view.selector + "\" data-url=\"" + url + "\" data-ignore-open-in=\"true\"></div></div></div>";
|
8700 | navigateOptions.route.popover = params;
|
8701 | }
|
8702 |
|
8703 | if (options.openIn.indexOf('panel') >= 0) {
|
8704 | var parts = options.openIn.split(':');
|
8705 | var side = parts[1] || 'left';
|
8706 | var effect = parts[2] || 'cover';
|
8707 | params.targetEl = options.clickedEl || options.targetEl;
|
8708 | params.content = "<div class=\"panel panel-router-open-in panel-" + side + " panel-" + effect + "\" data-url=\"" + url + "\"><div class=\"view view-init\" data-links-view=\"" + router.view.selector + "\" data-url=\"" + url + "\" data-ignore-open-in=\"true\"></div></div>";
|
8709 | navigateOptions.route.panel = params;
|
8710 | }
|
8711 |
|
8712 | return router.navigate(navigateOptions);
|
8713 | }
|
8714 |
|
8715 | function navigate(navigateParams, navigateOptions) {
|
8716 | if (navigateOptions === void 0) {
|
8717 | navigateOptions = {};
|
8718 | }
|
8719 |
|
8720 | var router = this;
|
8721 | if (router.swipeBackActive) return router;
|
8722 | var url;
|
8723 | var createRoute;
|
8724 | var name;
|
8725 | var path;
|
8726 | var query;
|
8727 | var params;
|
8728 | var route;
|
8729 |
|
8730 | if (typeof navigateParams === 'string') {
|
8731 | url = navigateParams;
|
8732 | } else {
|
8733 | url = navigateParams.url;
|
8734 | createRoute = navigateParams.route;
|
8735 | name = navigateParams.name;
|
8736 | path = navigateParams.path;
|
8737 | query = navigateParams.query;
|
8738 | params = navigateParams.params;
|
8739 | }
|
8740 |
|
8741 | if (name || path) {
|
8742 | url = router.generateUrl({
|
8743 | path: path,
|
8744 | name: name,
|
8745 | params: params,
|
8746 | query: query
|
8747 | });
|
8748 |
|
8749 | if (url) {
|
8750 | return router.navigate(url, navigateOptions);
|
8751 | }
|
8752 |
|
8753 | return router;
|
8754 | }
|
8755 |
|
8756 | var app = router.app;
|
8757 | appRouterCheck(router, 'navigate');
|
8758 |
|
8759 | if (url === '#' || url === '') {
|
8760 | return router;
|
8761 | }
|
8762 |
|
8763 | var navigateUrl = url.replace('./', '');
|
8764 |
|
8765 | if (navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {
|
8766 | var currentPath = router.currentRoute.parentPath || router.currentRoute.path;
|
8767 | navigateUrl = ((currentPath ? currentPath + "/" : '/') + navigateUrl).replace('///', '/').replace('//', '/');
|
8768 | }
|
8769 |
|
8770 | if (createRoute) {
|
8771 | route = extend$1(router.parseRouteUrl(navigateUrl), {
|
8772 | route: extend$1({}, createRoute)
|
8773 | });
|
8774 | } else {
|
8775 | route = router.findMatchingRoute(navigateUrl);
|
8776 | }
|
8777 |
|
8778 | if (!route) {
|
8779 | return router;
|
8780 | }
|
8781 |
|
8782 | if (route.route && route.route.viewName) {
|
8783 | var anotherViewName = route.route.viewName;
|
8784 | var anotherView = app.views[anotherViewName];
|
8785 |
|
8786 | if (!anotherView) {
|
8787 | throw new Error("Framework7: There is no View with \"" + anotherViewName + "\" name that was specified in this route");
|
8788 | }
|
8789 |
|
8790 | if (anotherView !== router.view) {
|
8791 | return anotherView.router.navigate(navigateParams, navigateOptions);
|
8792 | }
|
8793 | }
|
8794 |
|
8795 | if (route.route.redirect) {
|
8796 | return redirect.call(router, 'forward', route, navigateOptions);
|
8797 | }
|
8798 |
|
8799 | var options = {};
|
8800 |
|
8801 | if (route.route.options) {
|
8802 | extend$1(options, route.route.options, navigateOptions);
|
8803 | } else {
|
8804 | extend$1(options, navigateOptions);
|
8805 | }
|
8806 |
|
8807 | if (options.openIn && (!router.params.ignoreOpenIn || router.params.ignoreOpenIn && router.history.length > 0)) {
|
8808 | return openIn(router, navigateUrl, options);
|
8809 | }
|
8810 |
|
8811 | options.route = route;
|
8812 |
|
8813 | function resolve() {
|
8814 | var routerLoaded = false;
|
8815 | 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(function (modalLoadProp) {
|
8816 | if (route.route[modalLoadProp] && !routerLoaded) {
|
8817 | routerLoaded = true;
|
8818 | router.modalLoad(modalLoadProp, route, options, 'forward');
|
8819 | }
|
8820 | });
|
8821 |
|
8822 | if (route.route.keepAlive && route.route.keepAliveData) {
|
8823 | load(router, {
|
8824 | el: route.route.keepAliveData.pageEl
|
8825 | }, options, false);
|
8826 | routerLoaded = true;
|
8827 | }
|
8828 |
|
8829 | 'url content component pageName el componentUrl'.split(' ').forEach(function (pageLoadProp) {
|
8830 | if (route.route[pageLoadProp] && !routerLoaded) {
|
8831 | var _load;
|
8832 |
|
8833 | routerLoaded = true;
|
8834 | load(router, (_load = {}, _load[pageLoadProp] = route.route[pageLoadProp], _load), options, false);
|
8835 | }
|
8836 | });
|
8837 | if (routerLoaded) return;
|
8838 |
|
8839 | function asyncResolve(resolveParams, resolveOptions) {
|
8840 | router.allowPageChange = false;
|
8841 | var resolvedAsModal = false;
|
8842 | 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(function (modalLoadProp) {
|
8843 | if (resolveParams[modalLoadProp]) {
|
8844 | resolvedAsModal = true;
|
8845 | var modalRoute = extend$1({}, route, {
|
8846 | route: resolveParams
|
8847 | });
|
8848 | router.allowPageChange = true;
|
8849 | router.modalLoad(modalLoadProp, modalRoute, extend$1(options, resolveOptions), 'forward');
|
8850 | }
|
8851 | });
|
8852 | if (resolvedAsModal) return;
|
8853 | load(router, resolveParams, extend$1(options, resolveOptions), true);
|
8854 | }
|
8855 |
|
8856 | function asyncReject() {
|
8857 | router.allowPageChange = true;
|
8858 | }
|
8859 |
|
8860 | if (route.route.async) {
|
8861 | router.allowPageChange = false;
|
8862 | route.route.async.call(router, {
|
8863 | router: router,
|
8864 | to: options.route,
|
8865 | from: router.currentRoute,
|
8866 | resolve: asyncResolve,
|
8867 | reject: asyncReject,
|
8868 | direction: 'forward',
|
8869 | app: app
|
8870 | });
|
8871 | }
|
8872 |
|
8873 | if (route.route.asyncComponent) {
|
8874 | asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);
|
8875 | }
|
8876 | }
|
8877 |
|
8878 | function reject() {
|
8879 | router.allowPageChange = true;
|
8880 | }
|
8881 |
|
8882 | if (router.params.masterDetailBreakpoint > 0 && route.route.masterRoute) {
|
8883 |
|
8884 | var preloadMaster = true;
|
8885 | var masterLoaded = false;
|
8886 |
|
8887 | if (router.currentRoute && router.currentRoute.route) {
|
8888 | if ((router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && (router.currentRoute.route === route.route.masterRoute || router.currentRoute.route.path === route.route.masterRoute.path)) {
|
8889 | preloadMaster = false;
|
8890 | }
|
8891 |
|
8892 | if (router.currentRoute.route.masterRoute && (router.currentRoute.route.masterRoute === route.route.masterRoute || router.currentRoute.route.masterRoute.path === route.route.masterRoute.path)) {
|
8893 | preloadMaster = false;
|
8894 | masterLoaded = true;
|
8895 | }
|
8896 | }
|
8897 |
|
8898 | if (preloadMaster || masterLoaded && navigateOptions.reloadAll) {
|
8899 | router.navigate({
|
8900 | path: route.route.masterRoute.path,
|
8901 | params: route.params || {}
|
8902 | }, {
|
8903 | animate: false,
|
8904 | reloadAll: navigateOptions.reloadAll,
|
8905 | reloadCurrent: navigateOptions.reloadCurrent,
|
8906 | reloadPrevious: navigateOptions.reloadPrevious,
|
8907 | browserHistory: !navigateOptions.initial,
|
8908 | history: !navigateOptions.initial,
|
8909 | once: {
|
8910 | pageAfterIn: function pageAfterIn() {
|
8911 | router.navigate(navigateParams, extend$1({}, navigateOptions, {
|
8912 | animate: false,
|
8913 | reloadAll: false,
|
8914 | reloadCurrent: false,
|
8915 | reloadPrevious: false,
|
8916 | history: !navigateOptions.initial,
|
8917 | browserHistory: !navigateOptions.initial
|
8918 | }));
|
8919 | }
|
8920 | }
|
8921 | });
|
8922 | return router;
|
8923 | }
|
8924 | }
|
8925 |
|
8926 | processRouteQueue.call(router, route, router.currentRoute, function () {
|
8927 | if (route.route.modules) {
|
8928 | app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(function () {
|
8929 | resolve();
|
8930 | }).catch(function () {
|
8931 | reject();
|
8932 | });
|
8933 | } else {
|
8934 | resolve();
|
8935 | }
|
8936 | }, function () {
|
8937 | reject();
|
8938 | }, 'forward');
|
8939 |
|
8940 | return router;
|
8941 | }
|
8942 |
|
8943 | function tabLoad(tabRoute, loadOptions) {
|
8944 | if (loadOptions === void 0) {
|
8945 | loadOptions = {};
|
8946 | }
|
8947 |
|
8948 | var router = this;
|
8949 | var options = extend$1({
|
8950 | animate: router.params.animate,
|
8951 | browserHistory: true,
|
8952 | history: true,
|
8953 | parentPageEl: null,
|
8954 | preload: false,
|
8955 | on: {}
|
8956 | }, loadOptions);
|
8957 | var currentRoute;
|
8958 | var previousRoute;
|
8959 |
|
8960 | if (options.route) {
|
8961 |
|
8962 | if (!options.preload && options.route !== router.currentRoute) {
|
8963 | previousRoute = router.previousRoute;
|
8964 | router.currentRoute = options.route;
|
8965 | }
|
8966 |
|
8967 | if (options.preload) {
|
8968 | currentRoute = options.route;
|
8969 | previousRoute = router.currentRoute;
|
8970 | } else {
|
8971 | currentRoute = router.currentRoute;
|
8972 | if (!previousRoute) previousRoute = router.previousRoute;
|
8973 | }
|
8974 |
|
8975 |
|
8976 | if (router.params.browserHistory && options.browserHistory && !options.reloadPrevious) {
|
8977 | History$2.replace(router.view.id, {
|
8978 | url: options.route.url
|
8979 | }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);
|
8980 | }
|
8981 |
|
8982 |
|
8983 | if (options.history) {
|
8984 | router.history[Math.max(router.history.length - 1, 0)] = options.route.url;
|
8985 | router.saveHistory();
|
8986 | }
|
8987 | }
|
8988 |
|
8989 |
|
8990 | var $parentPageEl = $(options.parentPageEl || router.currentPageEl);
|
8991 | var tabEl;
|
8992 |
|
8993 | if ($parentPageEl.length && $parentPageEl.find("#" + tabRoute.id).length) {
|
8994 | tabEl = $parentPageEl.find("#" + tabRoute.id).eq(0);
|
8995 | } else if (router.view.selector) {
|
8996 | tabEl = router.view.selector + " #" + tabRoute.id;
|
8997 | } else {
|
8998 | tabEl = "#" + tabRoute.id;
|
8999 | }
|
9000 |
|
9001 | var tabShowResult = router.app.tab.show({
|
9002 | tabEl: tabEl,
|
9003 | animate: options.animate,
|
9004 | tabRoute: options.route
|
9005 | });
|
9006 | var $newTabEl = tabShowResult.$newTabEl,
|
9007 | $oldTabEl = tabShowResult.$oldTabEl,
|
9008 | animated = tabShowResult.animated,
|
9009 | onTabsChanged = tabShowResult.onTabsChanged;
|
9010 |
|
9011 | if ($newTabEl && $newTabEl.parents('.page').length > 0 && options.route) {
|
9012 | var tabParentPageData = $newTabEl.parents('.page')[0].f7Page;
|
9013 |
|
9014 | if (tabParentPageData && options.route) {
|
9015 | tabParentPageData.route = options.route;
|
9016 | }
|
9017 | }
|
9018 |
|
9019 |
|
9020 | function onTabLoaded(contentEl) {
|
9021 |
|
9022 | router.removeThemeElements($newTabEl);
|
9023 | var tabEventTarget = $newTabEl;
|
9024 | if (typeof contentEl !== 'string') tabEventTarget = $(contentEl);
|
9025 | tabEventTarget.trigger('tab:init tab:mounted', tabRoute);
|
9026 | router.emit('tabInit tabMounted', $newTabEl[0], tabRoute);
|
9027 |
|
9028 | if ($oldTabEl && $oldTabEl.length) {
|
9029 | if (animated) {
|
9030 | onTabsChanged(function () {
|
9031 | router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
|
9032 |
|
9033 | if (router.params.unloadTabContent) {
|
9034 | router.tabRemove($oldTabEl, $newTabEl, tabRoute);
|
9035 | }
|
9036 | });
|
9037 | } else {
|
9038 | router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
|
9039 |
|
9040 | if (router.params.unloadTabContent) {
|
9041 | router.tabRemove($oldTabEl, $newTabEl, tabRoute);
|
9042 | }
|
9043 | }
|
9044 | }
|
9045 | }
|
9046 |
|
9047 | if ($newTabEl[0].f7RouterTabLoaded) {
|
9048 | if (!$oldTabEl || !$oldTabEl.length) return router;
|
9049 |
|
9050 | if (animated) {
|
9051 | onTabsChanged(function () {
|
9052 | router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
|
9053 | });
|
9054 | } else {
|
9055 | router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
|
9056 | }
|
9057 |
|
9058 | return router;
|
9059 | }
|
9060 |
|
9061 |
|
9062 | function loadTab(loadTabParams, loadTabOptions) {
|
9063 |
|
9064 | var url = loadTabParams.url,
|
9065 | content = loadTabParams.content,
|
9066 | el = loadTabParams.el,
|
9067 | component = loadTabParams.component,
|
9068 | componentUrl = loadTabParams.componentUrl;
|
9069 |
|
9070 | function resolve(contentEl) {
|
9071 | router.allowPageChange = true;
|
9072 | if (!contentEl) return;
|
9073 |
|
9074 | if (typeof contentEl === 'string') {
|
9075 | $newTabEl.html(contentEl);
|
9076 | } else {
|
9077 | $newTabEl.html('');
|
9078 |
|
9079 | if (contentEl.f7Component) {
|
9080 | contentEl.f7Component.mount(function (componentEl) {
|
9081 | $newTabEl.append(componentEl);
|
9082 | });
|
9083 | } else {
|
9084 | $newTabEl.append(contentEl);
|
9085 | }
|
9086 | }
|
9087 |
|
9088 | $newTabEl[0].f7RouterTabLoaded = true;
|
9089 | onTabLoaded(contentEl);
|
9090 | }
|
9091 |
|
9092 | function reject() {
|
9093 | router.allowPageChange = true;
|
9094 | return router;
|
9095 | }
|
9096 |
|
9097 | if (content) {
|
9098 | resolve(content);
|
9099 | } else if (el) {
|
9100 | resolve(el);
|
9101 | } else if (component || componentUrl) {
|
9102 |
|
9103 | try {
|
9104 | router.tabComponentLoader({
|
9105 | tabEl: $newTabEl[0],
|
9106 | component: component,
|
9107 | componentUrl: componentUrl,
|
9108 | options: loadTabOptions,
|
9109 | resolve: resolve,
|
9110 | reject: reject
|
9111 | });
|
9112 | } catch (err) {
|
9113 | router.allowPageChange = true;
|
9114 | throw err;
|
9115 | }
|
9116 | } else if (url) {
|
9117 |
|
9118 | if (router.xhrAbortController) {
|
9119 | router.xhrAbortController.abort();
|
9120 | router.xhrAbortController = false;
|
9121 | }
|
9122 |
|
9123 | router.xhrRequest(url, loadTabOptions).then(function (tabContent) {
|
9124 | resolve(tabContent);
|
9125 | }).catch(function () {
|
9126 | router.allowPageChange = true;
|
9127 | });
|
9128 | }
|
9129 | }
|
9130 |
|
9131 | var hasContentLoadProp;
|
9132 | 'url content component el componentUrl'.split(' ').forEach(function (tabLoadProp) {
|
9133 | if (tabRoute[tabLoadProp]) {
|
9134 | var _loadTab;
|
9135 |
|
9136 | hasContentLoadProp = true;
|
9137 | loadTab((_loadTab = {}, _loadTab[tabLoadProp] = tabRoute[tabLoadProp], _loadTab), options);
|
9138 | }
|
9139 | });
|
9140 |
|
9141 | function asyncResolve(resolveParams, resolveOptions) {
|
9142 | loadTab(resolveParams, extend$1(options, resolveOptions));
|
9143 | }
|
9144 |
|
9145 | function asyncReject() {
|
9146 | router.allowPageChange = true;
|
9147 | }
|
9148 |
|
9149 | if (tabRoute.async) {
|
9150 | tabRoute.async.call(router, {
|
9151 | router: router,
|
9152 | to: currentRoute,
|
9153 | from: previousRoute,
|
9154 | resolve: asyncResolve,
|
9155 | reject: asyncReject,
|
9156 | app: router.app
|
9157 | });
|
9158 | } else if (tabRoute.asyncComponent) {
|
9159 | asyncComponent(router, tabRoute.asyncComponent, asyncResolve, asyncReject);
|
9160 | } else if (!hasContentLoadProp) {
|
9161 | router.allowPageChange = true;
|
9162 | }
|
9163 |
|
9164 | return router;
|
9165 | }
|
9166 |
|
9167 | function tabRemove($oldTabEl, $newTabEl, tabRoute) {
|
9168 | var router = this;
|
9169 | var hasTabComponentChild;
|
9170 |
|
9171 | if ($oldTabEl[0]) {
|
9172 | $oldTabEl[0].f7RouterTabLoaded = false;
|
9173 | delete $oldTabEl[0].f7RouterTabLoaded;
|
9174 | }
|
9175 |
|
9176 | $oldTabEl.children().each(function (tabChild) {
|
9177 | if (tabChild.f7Component) {
|
9178 | hasTabComponentChild = true;
|
9179 | $(tabChild).trigger('tab:beforeremove', tabRoute);
|
9180 | tabChild.f7Component.destroy();
|
9181 | }
|
9182 | });
|
9183 |
|
9184 | if (!hasTabComponentChild) {
|
9185 | $oldTabEl.trigger('tab:beforeremove', tabRoute);
|
9186 | }
|
9187 |
|
9188 | router.emit('tabBeforeRemove', $oldTabEl[0], $newTabEl[0], tabRoute);
|
9189 | router.removeTabContent($oldTabEl[0], tabRoute);
|
9190 | }
|
9191 |
|
9192 | function modalLoad(modalType, route, loadOptions, direction) {
|
9193 | if (loadOptions === void 0) {
|
9194 | loadOptions = {};
|
9195 | }
|
9196 |
|
9197 | var router = this;
|
9198 | var app = router.app;
|
9199 | var isPanel = modalType === 'panel';
|
9200 | var modalOrPanel = isPanel ? 'panel' : 'modal';
|
9201 | var options = extend$1({
|
9202 | animate: router.params.animate,
|
9203 | browserHistory: true,
|
9204 | history: true,
|
9205 | on: {},
|
9206 | once: {}
|
9207 | }, loadOptions);
|
9208 | var modalParams = extend$1({}, route.route[modalType]);
|
9209 | var modalRoute = route.route;
|
9210 |
|
9211 | var routeCallback = function routeCallback(modal, name) {
|
9212 | var on = options.on,
|
9213 | once = options.once;
|
9214 | var callback;
|
9215 |
|
9216 | if (name === 'open') {
|
9217 | callback = on.modalOpen || once.modalOpen || on.panelOpen || once.panelOpen;
|
9218 | }
|
9219 |
|
9220 | if (name === 'close') {
|
9221 | callback = on.modalClose || once.modalClose || on.panelClose || once.panelClose;
|
9222 | }
|
9223 |
|
9224 | if (name === 'closed') {
|
9225 | callback = on.modalClosed || once.modalClosed || on.panelClosed || once.panelClosed;
|
9226 | }
|
9227 |
|
9228 | if (callback) callback(modal);
|
9229 | };
|
9230 |
|
9231 | function onModalLoaded() {
|
9232 |
|
9233 | var modal = app[modalType].create(modalParams);
|
9234 | modalRoute.modalInstance = modal;
|
9235 | var hasEl = modal.el;
|
9236 |
|
9237 | function closeOnSwipeBack() {
|
9238 | modal.close();
|
9239 | }
|
9240 |
|
9241 | modal.on(modalOrPanel + "Open", function () {
|
9242 | if (!hasEl) {
|
9243 |
|
9244 | router.removeThemeElements(modal.el);
|
9245 |
|
9246 | modal.$el.trigger(modalType.toLowerCase() + ":init " + modalType.toLowerCase() + ":mounted", route, modal);
|
9247 | router.emit((!isPanel ? 'modalInit' : '') + " " + modalType + "Init " + modalType + "Mounted", modal.el, route, modal);
|
9248 | }
|
9249 |
|
9250 | router.once('swipeBackMove', closeOnSwipeBack);
|
9251 | routeCallback(modal, 'open');
|
9252 | });
|
9253 | modal.on(modalOrPanel + "Close", function () {
|
9254 | router.off('swipeBackMove', closeOnSwipeBack);
|
9255 |
|
9256 | if (!modal.closeByRouter) {
|
9257 | router.back();
|
9258 | }
|
9259 |
|
9260 | routeCallback(modal, 'close');
|
9261 | });
|
9262 | modal.on(modalOrPanel + "Closed", function () {
|
9263 | modal.$el.trigger(modalType.toLowerCase() + ":beforeremove", route, modal);
|
9264 | modal.emit("" + (!isPanel ? 'modalBeforeRemove ' : '') + modalType + "BeforeRemove", modal.el, route, modal);
|
9265 | var modalComponent = modal.el.f7Component;
|
9266 | routeCallback(modal, 'closed');
|
9267 |
|
9268 | if (modalComponent) {
|
9269 | modalComponent.destroy();
|
9270 | }
|
9271 |
|
9272 | nextTick$1(function () {
|
9273 | if (modalComponent || modalParams.component) {
|
9274 | router.removeModal(modal.el);
|
9275 | }
|
9276 |
|
9277 | modal.destroy();
|
9278 | delete modal.route;
|
9279 | delete modalRoute.modalInstance;
|
9280 | });
|
9281 | });
|
9282 |
|
9283 | if (options.route) {
|
9284 |
|
9285 | if (router.params.browserHistory && options.browserHistory) {
|
9286 | History$2.push(router.view.id, {
|
9287 | url: options.route.url,
|
9288 | modal: modalType
|
9289 | }, (router.params.browserHistoryRoot || '') + router.params.browserHistorySeparator + options.route.url);
|
9290 | }
|
9291 |
|
9292 |
|
9293 | if (options.route !== router.currentRoute) {
|
9294 | modal.route = extend$1(options.route, {
|
9295 | modal: modal
|
9296 | });
|
9297 | router.currentRoute = modal.route;
|
9298 | }
|
9299 |
|
9300 |
|
9301 | if (options.history && !options.reloadCurrent) {
|
9302 | router.history.push(options.route.url);
|
9303 | router.saveHistory();
|
9304 | }
|
9305 | }
|
9306 |
|
9307 | if (hasEl) {
|
9308 |
|
9309 | router.removeThemeElements(modal.el);
|
9310 |
|
9311 | modal.$el.trigger(modalType.toLowerCase() + ":init " + modalType.toLowerCase() + ":mounted", route, modal);
|
9312 | router.emit(modalOrPanel + "Init " + modalType + "Init " + modalType + "Mounted", modal.el, route, modal);
|
9313 | }
|
9314 |
|
9315 |
|
9316 | modal.open(options.animate === false || options.animate === true ? options.animate : undefined);
|
9317 | }
|
9318 |
|
9319 |
|
9320 | function loadModal(loadModalParams, loadModalOptions) {
|
9321 |
|
9322 | var url = loadModalParams.url,
|
9323 | content = loadModalParams.content,
|
9324 | component = loadModalParams.component,
|
9325 | componentUrl = loadModalParams.componentUrl;
|
9326 |
|
9327 | function resolve(contentEl) {
|
9328 | if (contentEl) {
|
9329 | if (typeof contentEl === 'string') {
|
9330 | modalParams.content = contentEl;
|
9331 | } else if (contentEl.f7Component) {
|
9332 | contentEl.f7Component.mount(function (componentEl) {
|
9333 | modalParams.el = componentEl;
|
9334 | app.$el.append(componentEl);
|
9335 | });
|
9336 | } else {
|
9337 | modalParams.el = contentEl;
|
9338 | }
|
9339 |
|
9340 | onModalLoaded();
|
9341 | }
|
9342 | }
|
9343 |
|
9344 | function reject() {
|
9345 | router.allowPageChange = true;
|
9346 | return router;
|
9347 | }
|
9348 |
|
9349 | if (content) {
|
9350 | resolve(content);
|
9351 | } else if (component || componentUrl) {
|
9352 |
|
9353 | try {
|
9354 | router.modalComponentLoader({
|
9355 | rootEl: app.el,
|
9356 | component: component,
|
9357 | componentUrl: componentUrl,
|
9358 | options: loadModalOptions,
|
9359 | resolve: resolve,
|
9360 | reject: reject
|
9361 | });
|
9362 | } catch (err) {
|
9363 | router.allowPageChange = true;
|
9364 | throw err;
|
9365 | }
|
9366 | } else if (url) {
|
9367 |
|
9368 | if (router.xhrAbortController) {
|
9369 | router.xhrAbortController.abort();
|
9370 | router.xhrAbortController = false;
|
9371 | }
|
9372 |
|
9373 | router.xhrRequest(url, loadModalOptions).then(function (modalContent) {
|
9374 | modalParams.content = modalContent;
|
9375 | onModalLoaded();
|
9376 | }).catch(function () {
|
9377 | router.allowPageChange = true;
|
9378 | });
|
9379 | } else {
|
9380 | onModalLoaded();
|
9381 | }
|
9382 | }
|
9383 |
|
9384 | var foundLoadProp;
|
9385 | 'url content component el componentUrl template'.split(' ').forEach(function (modalLoadProp) {
|
9386 | if (modalParams[modalLoadProp] && !foundLoadProp) {
|
9387 | var _loadModal;
|
9388 |
|
9389 | foundLoadProp = true;
|
9390 | loadModal((_loadModal = {}, _loadModal[modalLoadProp] = modalParams[modalLoadProp], _loadModal), options);
|
9391 | }
|
9392 | });
|
9393 |
|
9394 | if (!foundLoadProp && modalType === 'actions') {
|
9395 | onModalLoaded();
|
9396 | }
|
9397 |
|
9398 |
|
9399 | function asyncResolve(resolveParams, resolveOptions) {
|
9400 | loadModal(resolveParams, extend$1(options, resolveOptions));
|
9401 | }
|
9402 |
|
9403 | function asyncReject() {
|
9404 | router.allowPageChange = true;
|
9405 | }
|
9406 |
|
9407 | if (modalParams.async) {
|
9408 | modalParams.async.call(router, {
|
9409 | router: router,
|
9410 | to: options.route,
|
9411 | from: router.currentRoute,
|
9412 | resolve: asyncResolve,
|
9413 | reject: asyncReject,
|
9414 | direction: direction,
|
9415 | app: app
|
9416 | });
|
9417 | }
|
9418 |
|
9419 | if (modalParams.asyncComponent) {
|
9420 | asyncComponent(router, modalParams.asyncComponent, asyncResolve, asyncReject);
|
9421 | }
|
9422 |
|
9423 | return router;
|
9424 | }
|
9425 |
|
9426 | function modalRemove(modal) {
|
9427 | extend$1(modal, {
|
9428 | closeByRouter: true
|
9429 | });
|
9430 | modal.close();
|
9431 | }
|
9432 |
|
9433 | function backward(router, el, backwardOptions) {
|
9434 | var device = getDevice$1();
|
9435 | var document = getDocument();
|
9436 | var $el = $(el);
|
9437 | var app = router.app;
|
9438 | var view = router.view;
|
9439 | var options = extend$1({
|
9440 | animate: router.params.animate,
|
9441 | browserHistory: true,
|
9442 | replaceState: false
|
9443 | }, backwardOptions);
|
9444 | var masterDetailEnabled = router.params.masterDetailBreakpoint > 0;
|
9445 | var isMaster = masterDetailEnabled && options.route && options.route.route && (options.route.route.master === true || typeof options.route.route.master === 'function' && options.route.route.master(app, router));
|
9446 | var masterPageEl;
|
9447 | var masterPageRemoved;
|
9448 | var dynamicNavbar = router.dynamicNavbar;
|
9449 | var $newPage = $el;
|
9450 | var $oldPage = router.$el.children('.page-current');
|
9451 | var initialPreload = $oldPage.length === 0 && options.preload;
|
9452 | var currentIsMaster = masterDetailEnabled && $oldPage.hasClass('page-master');
|
9453 |
|
9454 | if ($newPage.length) {
|
9455 |
|
9456 | router.removeThemeElements($newPage);
|
9457 | }
|
9458 |
|
9459 | var $navbarsEl;
|
9460 | var $newNavbarEl;
|
9461 | var $oldNavbarEl;
|
9462 |
|
9463 | if (dynamicNavbar) {
|
9464 | $newNavbarEl = $newPage.children('.navbar');
|
9465 | $navbarsEl = router.$navbarsEl;
|
9466 |
|
9467 | if ($newNavbarEl.length === 0 && $newPage[0] && $newPage[0].f7Page) {
|
9468 |
|
9469 | $newNavbarEl = $newPage[0].f7Page.$navbarEl;
|
9470 | }
|
9471 |
|
9472 | $oldNavbarEl = $navbarsEl.find('.navbar-current');
|
9473 | }
|
9474 |
|
9475 | router.allowPageChange = false;
|
9476 |
|
9477 | if ($newPage.length === 0 || $oldPage.length === 0 && !options.preload) {
|
9478 | router.allowPageChange = true;
|
9479 | return router;
|
9480 | }
|
9481 |
|
9482 |
|
9483 | router.removeThemeElements($newPage);
|
9484 |
|
9485 | if (options.route && options.route.route && options.route.route.keepAlive && !options.route.route.keepAliveData) {
|
9486 | options.route.route.keepAliveData = {
|
9487 | pageEl: $el[0]
|
9488 | };
|
9489 | }
|
9490 |
|
9491 |
|
9492 | var isDetail;
|
9493 | var isDetailRoot;
|
9494 |
|
9495 | if (masterDetailEnabled) {
|
9496 | var $pagesInView = router.$el.children('.page:not(.stacked)').filter(function (pageInView) {
|
9497 | return pageInView !== $newPage[0];
|
9498 | });
|
9499 |
|
9500 | for (var i = 0; i < $pagesInView.length; i += 1) {
|
9501 | if (!masterPageEl && $pagesInView[i].classList.contains('page-master')) {
|
9502 | masterPageEl = $pagesInView[i];
|
9503 | continue;
|
9504 | }
|
9505 | }
|
9506 |
|
9507 | isDetail = !isMaster && masterPageEl && router.history.indexOf(options.route.url) > router.history.indexOf(masterPageEl.f7Page.route.url);
|
9508 |
|
9509 | if (!isDetail && !isMaster && masterPageEl && masterPageEl.f7Page && options.route.route.masterRoute) {
|
9510 | isDetail = options.route.route.masterRoute.path === masterPageEl.f7Page.route.route.path;
|
9511 | }
|
9512 | }
|
9513 |
|
9514 | if (isDetail && masterPageEl && masterPageEl.f7Page) {
|
9515 | isDetailRoot = router.history.indexOf(options.route.url) - router.history.indexOf(masterPageEl.f7Page.route.url) === 1;
|
9516 | }
|
9517 |
|
9518 |
|
9519 | $newPage.addClass("page-" + (initialPreload ? 'current' : 'previous') + (isMaster ? ' page-master' : '') + (isDetail ? ' page-master-detail' : '') + (isDetailRoot ? ' page-master-detail-root' : '')).removeClass('stacked').removeAttr('aria-hidden').trigger('page:unstack').trigger('page:position', {
|
9520 | position: initialPreload ? 'current' : 'previous'
|
9521 | });
|
9522 | router.emit('pageUnstack', $newPage[0]);
|
9523 | router.emit('pagePosition', $newPage[0], initialPreload ? 'current' : 'previous');
|
9524 |
|
9525 | if (isMaster || isDetail) {
|
9526 | $newPage.trigger('page:role', {
|
9527 | role: isMaster ? 'master' : 'detail',
|
9528 | root: !!isDetailRoot
|
9529 | });
|
9530 | router.emit('pageRole', $newPage[0], {
|
9531 | role: isMaster ? 'master' : 'detail',
|
9532 | detailRoot: !!isDetailRoot
|
9533 | });
|
9534 | }
|
9535 |
|
9536 | if (dynamicNavbar && $newNavbarEl.length > 0) {
|
9537 | $newNavbarEl.addClass("navbar-" + (initialPreload ? 'current' : 'previous') + (isMaster ? ' navbar-master' : '') + (isDetail ? ' navbar-master-detail' : '') + (isDetailRoot ? ' navbar-master-detail-root' : '')).removeClass('stacked').removeAttr('aria-hidden');
|
9538 | $newNavbarEl.trigger('navbar:position', {
|
9539 | position: initialPreload ? 'current' : 'previous'
|
9540 | });
|
9541 | router.emit('navbarPosition', $newNavbarEl[0], initialPreload ? 'current' : 'previous');
|
9542 |
|
9543 | if (isMaster || isDetailRoot) {
|
9544 | router.emit('navbarRole', $newNavbarEl[0], {
|
9545 | role: isMaster ? 'master' : 'detail',
|
9546 | detailRoot: !!isDetailRoot
|
9547 | });
|
9548 | }
|
9549 | }
|
9550 |
|
9551 |
|
9552 | var backIndex;
|
9553 |
|
9554 | if (options.force) {
|
9555 | if ($oldPage.prev('.page-previous:not(.stacked)').length > 0 || $oldPage.prev('.page-previous').length === 0) {
|
9556 | if (router.history.indexOf(options.route.url) >= 0) {
|
9557 | backIndex = router.history.length - router.history.indexOf(options.route.url) - 1;
|
9558 | router.history = router.history.slice(0, router.history.indexOf(options.route.url) + 2);
|
9559 | view.history = router.history;
|
9560 | } else if (router.history[[router.history.length - 2]]) {
|
9561 | router.history[router.history.length - 2] = options.route.url;
|
9562 | } else {
|
9563 | router.history.unshift(router.url);
|
9564 | }
|
9565 |
|
9566 | if (backIndex && router.params.stackPages) {
|
9567 | $oldPage.prevAll('.page-previous').each(function (pageToRemove) {
|
9568 | var $pageToRemove = $(pageToRemove);
|
9569 | var $navbarToRemove;
|
9570 |
|
9571 | if (dynamicNavbar) {
|
9572 |
|
9573 | $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));
|
9574 | }
|
9575 |
|
9576 | if ($pageToRemove[0] !== $newPage[0] && $pageToRemove.index() > $newPage.index()) {
|
9577 | if (router.initialPages.indexOf($pageToRemove[0]) >= 0) {
|
9578 | $pageToRemove.addClass('stacked');
|
9579 | $pageToRemove.trigger('page:stack');
|
9580 | router.emit('pageStack', $pageToRemove[0]);
|
9581 |
|
9582 | if (dynamicNavbar) {
|
9583 | $navbarToRemove.addClass('stacked');
|
9584 | }
|
9585 | } else {
|
9586 | router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);
|
9587 |
|
9588 | if ($pageToRemove[0] === masterPageEl) {
|
9589 | masterPageRemoved = true;
|
9590 | }
|
9591 |
|
9592 | router.removePage($pageToRemove);
|
9593 |
|
9594 | if (dynamicNavbar && $navbarToRemove.length > 0) {
|
9595 | router.removeNavbar($navbarToRemove);
|
9596 | }
|
9597 | }
|
9598 | }
|
9599 | });
|
9600 | } else {
|
9601 | var $pageToRemove = $oldPage.prev('.page-previous:not(.stacked)');
|
9602 | var $navbarToRemove;
|
9603 |
|
9604 | if (dynamicNavbar) {
|
9605 |
|
9606 | $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));
|
9607 | }
|
9608 |
|
9609 | if (router.params.stackPages && router.initialPages.indexOf($pageToRemove[0]) >= 0) {
|
9610 | $pageToRemove.addClass('stacked');
|
9611 | $pageToRemove.trigger('page:stack');
|
9612 | router.emit('pageStack', $pageToRemove[0]);
|
9613 | $navbarToRemove.addClass('stacked');
|
9614 | } else if ($pageToRemove.length > 0) {
|
9615 | router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined, options);
|
9616 |
|
9617 | if ($pageToRemove[0] === masterPageEl) {
|
9618 | masterPageRemoved = true;
|
9619 | }
|
9620 |
|
9621 | router.removePage($pageToRemove);
|
9622 |
|
9623 | if (dynamicNavbar && $navbarToRemove.length) {
|
9624 | router.removeNavbar($navbarToRemove);
|
9625 | }
|
9626 | }
|
9627 | }
|
9628 | }
|
9629 | }
|
9630 |
|
9631 |
|
9632 | var newPageInDom = $newPage.parents(document).length > 0;
|
9633 | var f7Component = $newPage[0].f7Component;
|
9634 |
|
9635 | function insertPage() {
|
9636 | if (initialPreload) {
|
9637 | if (!newPageInDom && f7Component) {
|
9638 | f7Component.mount(function (componentEl) {
|
9639 | router.$el.append(componentEl);
|
9640 | });
|
9641 | } else {
|
9642 | router.$el.append($newPage);
|
9643 | }
|
9644 | }
|
9645 |
|
9646 | if ($newPage.next($oldPage).length === 0) {
|
9647 | if (!newPageInDom && f7Component) {
|
9648 | f7Component.mount(function (componentEl) {
|
9649 | $(componentEl).insertBefore($oldPage);
|
9650 | });
|
9651 | } else {
|
9652 | $newPage.insertBefore($oldPage);
|
9653 | }
|
9654 | }
|
9655 |
|
9656 | if (dynamicNavbar && $newNavbarEl.length) {
|
9657 | if ($newNavbarEl.find('.title-large').length) {
|
9658 | $newNavbarEl.addClass('navbar-large');
|
9659 | }
|
9660 |
|
9661 | $newNavbarEl.insertBefore($oldNavbarEl);
|
9662 |
|
9663 | if ($oldNavbarEl.length > 0) {
|
9664 | $newNavbarEl.insertBefore($oldNavbarEl);
|
9665 | } else {
|
9666 | if (!router.$navbarsEl.parents(document).length) {
|
9667 | router.$el.prepend(router.$navbarsEl);
|
9668 | }
|
9669 |
|
9670 | $navbarsEl.append($newNavbarEl);
|
9671 | }
|
9672 | }
|
9673 |
|
9674 | if (!newPageInDom) {
|
9675 | router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);
|
9676 | } else if (options.route && options.route.route && options.route.route.keepAlive && !$newPage[0].f7PageMounted) {
|
9677 | $newPage[0].f7PageMounted = true;
|
9678 | router.pageCallback('mounted', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);
|
9679 | }
|
9680 | }
|
9681 |
|
9682 | if (options.preload) {
|
9683 |
|
9684 | insertPage();
|
9685 |
|
9686 | if (options.route.route.tab) {
|
9687 | router.tabLoad(options.route.route.tab, extend$1({}, options, {
|
9688 | history: false,
|
9689 | browserHistory: false,
|
9690 | preload: true
|
9691 | }));
|
9692 | }
|
9693 |
|
9694 | if (isMaster) {
|
9695 | $newPage.removeClass('page-master-stacked').trigger('page:masterunstack');
|
9696 | router.emit('pageMasterUnstack', $newPage[0]);
|
9697 |
|
9698 | if (dynamicNavbar) {
|
9699 | $(app.navbar.getElByPage($newPage)).removeClass('navbar-master-stacked');
|
9700 | router.emit('navbarMasterUnstack', app.navbar.getElByPage($newPage));
|
9701 | }
|
9702 | }
|
9703 |
|
9704 |
|
9705 | router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);
|
9706 |
|
9707 | if (initialPreload) {
|
9708 | router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'current', undefined, options);
|
9709 | router.pageCallback('afterIn', $newPage, $newNavbarEl, 'current', undefined, options);
|
9710 | }
|
9711 |
|
9712 | var $previousPages = $newPage.prevAll('.page-previous:not(.stacked):not(.page-master)');
|
9713 |
|
9714 | if ($previousPages.length > 0) {
|
9715 | $previousPages.each(function (pageToRemove) {
|
9716 | var $pageToRemove = $(pageToRemove);
|
9717 | var $navbarToRemove;
|
9718 |
|
9719 | if (dynamicNavbar) {
|
9720 |
|
9721 | $navbarToRemove = $(app.navbar.getElByPage($pageToRemove));
|
9722 | }
|
9723 |
|
9724 | if (router.params.stackPages && router.initialPages.indexOf(pageToRemove) >= 0) {
|
9725 | $pageToRemove.addClass('stacked');
|
9726 | $pageToRemove.trigger('page:stack');
|
9727 | router.emit('pageStack', $pageToRemove[0]);
|
9728 |
|
9729 | if (dynamicNavbar) {
|
9730 | $navbarToRemove.addClass('stacked');
|
9731 | }
|
9732 | } else {
|
9733 | router.pageCallback('beforeRemove', $pageToRemove, $navbarToRemove, 'previous', undefined);
|
9734 | router.removePage($pageToRemove);
|
9735 |
|
9736 | if (dynamicNavbar && $navbarToRemove.length) {
|
9737 | router.removeNavbar($navbarToRemove);
|
9738 | }
|
9739 | }
|
9740 | });
|
9741 | }
|
9742 |
|
9743 | router.allowPageChange = true;
|
9744 | return router;
|
9745 | }
|
9746 |
|
9747 |
|
9748 | if (!(device.ie || device.edge || device.firefox && !device.ios)) {
|
9749 | if (router.params.browserHistory && options.browserHistory) {
|
9750 | if (options.replaceState) {
|
9751 | var browserHistoryRoot = router.params.browserHistoryRoot || '';
|
9752 | History$2.replace(view.id, {
|
9753 | url: options.route.url
|
9754 | }, browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);
|
9755 | } else if (backIndex) {
|
9756 | History$2.go(-backIndex);
|
9757 | } else {
|
9758 | History$2.back();
|
9759 | }
|
9760 | }
|
9761 | }
|
9762 |
|
9763 |
|
9764 | if (options.replaceState) {
|
9765 | router.history[router.history.length - 1] = options.route.url;
|
9766 | } else {
|
9767 | if (router.history.length === 1) {
|
9768 | router.history.unshift(router.url);
|
9769 | }
|
9770 |
|
9771 | router.history.pop();
|
9772 | }
|
9773 |
|
9774 | router.saveHistory();
|
9775 |
|
9776 | router.currentPageEl = $newPage[0];
|
9777 |
|
9778 | if (dynamicNavbar && $newNavbarEl.length) {
|
9779 | router.currentNavbarEl = $newNavbarEl[0];
|
9780 | } else {
|
9781 | delete router.currentNavbarEl;
|
9782 | }
|
9783 |
|
9784 |
|
9785 | router.currentRoute = options.route;
|
9786 |
|
9787 | if (device.ie || device.edge || device.firefox && !device.ios) {
|
9788 | if (router.params.browserHistory && options.browserHistory) {
|
9789 | if (options.replaceState) {
|
9790 | var _browserHistoryRoot = router.params.browserHistoryRoot || '';
|
9791 |
|
9792 | History$2.replace(view.id, {
|
9793 | url: options.route.url
|
9794 | }, _browserHistoryRoot + router.params.browserHistorySeparator + options.route.url);
|
9795 | } else if (backIndex) {
|
9796 | History$2.go(-backIndex);
|
9797 | } else {
|
9798 | History$2.back();
|
9799 | }
|
9800 | }
|
9801 | }
|
9802 |
|
9803 |
|
9804 | insertPage();
|
9805 |
|
9806 | if (options.route.route.tab) {
|
9807 | router.tabLoad(options.route.route.tab, extend$1({}, options, {
|
9808 | history: false,
|
9809 | browserHistory: false
|
9810 | }));
|
9811 | }
|
9812 |
|
9813 |
|
9814 | if (masterDetailEnabled && (currentIsMaster || masterPageRemoved)) {
|
9815 | view.checkMasterDetailBreakpoint(false);
|
9816 | }
|
9817 |
|
9818 |
|
9819 | router.pageCallback('init', $newPage, $newNavbarEl, 'previous', 'current', options, $oldPage);
|
9820 |
|
9821 | router.pageCallback('beforeOut', $oldPage, $oldNavbarEl, 'current', 'next', options);
|
9822 | router.pageCallback('beforeIn', $newPage, $newNavbarEl, 'previous', 'current', options);
|
9823 |
|
9824 | function afterAnimation() {
|
9825 |
|
9826 | router.setPagePosition($newPage, 'current', false);
|
9827 | router.setPagePosition($oldPage, 'next', true);
|
9828 |
|
9829 | if (dynamicNavbar) {
|
9830 | router.setNavbarPosition($newNavbarEl, 'current', false);
|
9831 | router.setNavbarPosition($oldNavbarEl, 'next', true);
|
9832 | }
|
9833 |
|
9834 |
|
9835 | router.pageCallback('afterOut', $oldPage, $oldNavbarEl, 'current', 'next', options);
|
9836 | router.pageCallback('afterIn', $newPage, $newNavbarEl, 'previous', 'current', options);
|
9837 |
|
9838 | if (router.params.stackPages && router.initialPages.indexOf($oldPage[0]) >= 0) {
|
9839 | $oldPage.addClass('stacked');
|
9840 | $oldPage.trigger('page:stack');
|
9841 | router.emit('pageStack', $oldPage[0]);
|
9842 |
|
9843 | if (dynamicNavbar) {
|
9844 | $oldNavbarEl.addClass('stacked');
|
9845 | }
|
9846 | } else {
|
9847 | router.pageCallback('beforeRemove', $oldPage, $oldNavbarEl, 'next', undefined, options);
|
9848 | router.removePage($oldPage);
|
9849 |
|
9850 | if (dynamicNavbar && $oldNavbarEl.length) {
|
9851 | router.removeNavbar($oldNavbarEl);
|
9852 | }
|
9853 | }
|
9854 |
|
9855 | router.allowPageChange = true;
|
9856 | router.emit('routeChanged', router.currentRoute, router.previousRoute, router);
|
9857 |
|
9858 | var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
|
9859 |
|
9860 | if (preloadPreviousPage && router.history[router.history.length - 2] && !isMaster) {
|
9861 | router.back(router.history[router.history.length - 2], {
|
9862 | preload: true
|
9863 | });
|
9864 | }
|
9865 |
|
9866 | if (router.params.browserHistory) {
|
9867 | History$2.clearRouterQueue();
|
9868 | }
|
9869 | }
|
9870 |
|
9871 | function setPositionClasses() {
|
9872 | router.setPagePosition($oldPage, 'current');
|
9873 | router.setPagePosition($newPage, 'previous', false);
|
9874 |
|
9875 | if (dynamicNavbar) {
|
9876 | router.setNavbarPosition($oldNavbarEl, 'current');
|
9877 | router.setNavbarPosition($newNavbarEl, 'previous', false);
|
9878 | }
|
9879 | }
|
9880 |
|
9881 | if (options.animate && !(currentIsMaster && app.width >= router.params.masterDetailBreakpoint)) {
|
9882 | var transition = router.params.transition;
|
9883 |
|
9884 | if ($oldPage[0] && $oldPage[0].f7PageTransition) {
|
9885 | transition = $oldPage[0].f7PageTransition;
|
9886 | delete $oldPage[0].f7PageTransition;
|
9887 | }
|
9888 |
|
9889 | if (options.transition) transition = options.transition;
|
9890 |
|
9891 | if (!transition && router.previousRoute && router.previousRoute.route) {
|
9892 | transition = router.previousRoute.route.transition;
|
9893 | }
|
9894 |
|
9895 | if (!transition && router.previousRoute && router.previousRoute.route && router.previousRoute.route.options) {
|
9896 | transition = router.previousRoute.route.options.transition;
|
9897 | }
|
9898 |
|
9899 | setPositionClasses();
|
9900 | router.animate($oldPage, $newPage, $oldNavbarEl, $newNavbarEl, 'backward', transition, function () {
|
9901 | afterAnimation();
|
9902 | });
|
9903 | } else {
|
9904 | afterAnimation();
|
9905 | }
|
9906 |
|
9907 | return router;
|
9908 | }
|
9909 |
|
9910 | function loadBack(router, backParams, backOptions, ignorePageChange) {
|
9911 | if (!router.allowPageChange && !ignorePageChange) return router;
|
9912 | var params = backParams;
|
9913 | var options = backOptions;
|
9914 | var url = params.url,
|
9915 | content = params.content,
|
9916 | el = params.el,
|
9917 | pageName = params.pageName,
|
9918 | component = params.component,
|
9919 | componentUrl = params.componentUrl;
|
9920 |
|
9921 | if (options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {
|
9922 | return false;
|
9923 | }
|
9924 |
|
9925 | if (!options.route && url) {
|
9926 | options.route = router.parseRouteUrl(url);
|
9927 | }
|
9928 |
|
9929 |
|
9930 | function resolve(pageEl, newOptions) {
|
9931 | return backward(router, pageEl, extend$1(options, newOptions));
|
9932 | }
|
9933 |
|
9934 | function reject() {
|
9935 | router.allowPageChange = true;
|
9936 | return router;
|
9937 | }
|
9938 |
|
9939 | if (url || componentUrl || component) {
|
9940 | router.allowPageChange = false;
|
9941 | }
|
9942 |
|
9943 |
|
9944 | if (content) {
|
9945 | backward(router, router.getPageEl(content), options);
|
9946 | } else if (el) {
|
9947 |
|
9948 | backward(router, router.getPageEl(el), options);
|
9949 | } else if (pageName) {
|
9950 |
|
9951 | backward(router, router.$el.children(".page[data-name=\"" + pageName + "\"]").eq(0), options);
|
9952 | } else if (component || componentUrl) {
|
9953 |
|
9954 | try {
|
9955 | router.pageComponentLoader({
|
9956 | routerEl: router.el,
|
9957 | component: component,
|
9958 | componentUrl: componentUrl,
|
9959 | options: options,
|
9960 | resolve: resolve,
|
9961 | reject: reject
|
9962 | });
|
9963 | } catch (err) {
|
9964 | router.allowPageChange = true;
|
9965 | throw err;
|
9966 | }
|
9967 | } else if (url) {
|
9968 |
|
9969 | if (router.xhrAbortController) {
|
9970 | router.xhrAbortController.abort();
|
9971 | router.xhrAbortController = false;
|
9972 | }
|
9973 |
|
9974 | router.xhrRequest(url, options).then(function (pageContent) {
|
9975 | backward(router, router.getPageEl(pageContent), options);
|
9976 | }).catch(function () {
|
9977 | router.allowPageChange = true;
|
9978 | });
|
9979 | }
|
9980 |
|
9981 | return router;
|
9982 | }
|
9983 |
|
9984 | function back() {
|
9985 | var router = this;
|
9986 | var device = getDevice$1();
|
9987 | if (router.swipeBackActive) return router;
|
9988 | var navigateUrl;
|
9989 | var navigateOptions;
|
9990 | var route;
|
9991 |
|
9992 | if (typeof (arguments.length <= 0 ? undefined : arguments[0]) === 'object') {
|
9993 | navigateOptions = (arguments.length <= 0 ? undefined : arguments[0]) || {};
|
9994 | } else {
|
9995 | navigateUrl = arguments.length <= 0 ? undefined : arguments[0];
|
9996 | navigateOptions = (arguments.length <= 1 ? undefined : arguments[1]) || {};
|
9997 | }
|
9998 |
|
9999 | var _navigateOptions = navigateOptions,
|
10000 | name = _navigateOptions.name,
|
10001 | params = _navigateOptions.params,
|
10002 | query = _navigateOptions.query;
|
10003 |
|
10004 | if (name) {
|
10005 | navigateUrl = router.generateUrl({
|
10006 | name: name,
|
10007 | params: params,
|
10008 | query: query
|
10009 | });
|
10010 |
|
10011 | if (navigateUrl) {
|
10012 | return router.back(navigateUrl, extend$1({}, navigateOptions, {
|
10013 | name: null,
|
10014 | params: null,
|
10015 | query: null
|
10016 | }));
|
10017 | }
|
10018 |
|
10019 | return router;
|
10020 | }
|
10021 |
|
10022 | var app = router.app;
|
10023 | appRouterCheck(router, 'back');
|
10024 | var currentRouteIsModal = router.currentRoute.modal;
|
10025 | var modalType;
|
10026 |
|
10027 | if (!currentRouteIsModal) {
|
10028 | 'popup popover sheet loginScreen actions customModal panel'.split(' ').forEach(function (modalLoadProp) {
|
10029 | if (router.currentRoute.route[modalLoadProp]) {
|
10030 | currentRouteIsModal = true;
|
10031 | modalType = modalLoadProp;
|
10032 | }
|
10033 | });
|
10034 | }
|
10035 |
|
10036 | if (currentRouteIsModal && !navigateOptions.preload) {
|
10037 | var modalToClose = router.currentRoute.modal || router.currentRoute.route.modalInstance || app[modalType].get();
|
10038 | var previousUrl = router.history[router.history.length - 2];
|
10039 | var previousRoute;
|
10040 |
|
10041 | if (modalToClose && modalToClose.$el) {
|
10042 | var prevOpenedModals = modalToClose.$el.prevAll('.modal-in');
|
10043 |
|
10044 | if (prevOpenedModals.length && prevOpenedModals[0].f7Modal) {
|
10045 | var modalEl = prevOpenedModals[0];
|
10046 |
|
10047 | if (!router.$el.parents(modalEl).length) {
|
10048 | previousRoute = modalEl.f7Modal.route;
|
10049 | }
|
10050 | }
|
10051 | }
|
10052 |
|
10053 | if (!previousRoute) {
|
10054 | previousRoute = router.findMatchingRoute(previousUrl);
|
10055 | }
|
10056 |
|
10057 | if (!previousRoute && previousUrl) {
|
10058 | previousRoute = {
|
10059 | url: previousUrl,
|
10060 | path: previousUrl.split('?')[0],
|
10061 | query: parseUrlQuery(previousUrl),
|
10062 | route: {
|
10063 | path: previousUrl.split('?')[0],
|
10064 | url: previousUrl
|
10065 | }
|
10066 | };
|
10067 | }
|
10068 |
|
10069 | if (!navigateUrl || navigateUrl.replace(/[# ]/g, '').trim().length === 0) {
|
10070 | if (!previousRoute || !modalToClose) {
|
10071 | return router;
|
10072 | }
|
10073 | }
|
10074 |
|
10075 | var forceOtherUrl = navigateOptions.force && previousRoute && navigateUrl;
|
10076 |
|
10077 | if (previousRoute && modalToClose) {
|
10078 | var isBrokenBrowserHistory = device.ie || device.edge || device.firefox && !device.ios;
|
10079 | var needHistoryBack = router.params.browserHistory && navigateOptions.browserHistory !== false;
|
10080 | var currentRouteWithoutBrowserHistory = router.currentRoute && router.currentRoute.route && router.currentRoute.route.options && router.currentRoute.route.options.browserHistory === false;
|
10081 |
|
10082 | if (needHistoryBack && !isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {
|
10083 | History$2.back();
|
10084 | }
|
10085 |
|
10086 | router.currentRoute = previousRoute;
|
10087 | router.history.pop();
|
10088 | router.saveHistory();
|
10089 |
|
10090 | if (needHistoryBack && isBrokenBrowserHistory && !currentRouteWithoutBrowserHistory) {
|
10091 | History$2.back();
|
10092 | }
|
10093 |
|
10094 | router.modalRemove(modalToClose);
|
10095 |
|
10096 | if (forceOtherUrl) {
|
10097 | router.navigate(navigateUrl, {
|
10098 | reloadCurrent: true
|
10099 | });
|
10100 | }
|
10101 | } else if (modalToClose) {
|
10102 | router.modalRemove(modalToClose);
|
10103 |
|
10104 | if (navigateUrl) {
|
10105 | router.navigate(navigateUrl, {
|
10106 | reloadCurrent: true
|
10107 | });
|
10108 | }
|
10109 | }
|
10110 |
|
10111 | return router;
|
10112 | }
|
10113 |
|
10114 | var $previousPage = router.$el.children('.page-current').prevAll('.page-previous:not(.page-master)').eq(0);
|
10115 | var skipMaster;
|
10116 |
|
10117 | if (router.params.masterDetailBreakpoint > 0) {
|
10118 | var classes = [];
|
10119 | router.$el.children('.page').each(function (pageEl) {
|
10120 | classes.push(pageEl.className);
|
10121 | });
|
10122 | var $previousMaster = router.$el.children('.page-current').prevAll('.page-master').eq(0);
|
10123 |
|
10124 | if ($previousMaster.length) {
|
10125 | var expectedPreviousPageUrl = router.history[router.history.length - 2];
|
10126 | var expectedPreviousPageRoute = router.findMatchingRoute(expectedPreviousPageUrl);
|
10127 |
|
10128 | if (expectedPreviousPageRoute && $previousMaster[0].f7Page && expectedPreviousPageRoute.route === $previousMaster[0].f7Page.route.route) {
|
10129 | $previousPage = $previousMaster;
|
10130 |
|
10131 | if (!navigateOptions.preload) {
|
10132 | skipMaster = app.width >= router.params.masterDetailBreakpoint;
|
10133 | }
|
10134 | }
|
10135 | }
|
10136 | }
|
10137 |
|
10138 | if (!navigateOptions.force && $previousPage.length && !skipMaster) {
|
10139 | if (router.params.browserHistory && $previousPage[0].f7Page && router.history[router.history.length - 2] !== $previousPage[0].f7Page.route.url) {
|
10140 | router.back(router.history[router.history.length - 2], extend$1(navigateOptions, {
|
10141 | force: true
|
10142 | }));
|
10143 | return router;
|
10144 | }
|
10145 |
|
10146 | var previousPageRoute = $previousPage[0].f7Page.route;
|
10147 | processRouteQueue.call(router, previousPageRoute, router.currentRoute, function () {
|
10148 | loadBack(router, {
|
10149 | el: $previousPage
|
10150 | }, extend$1(navigateOptions, {
|
10151 | route: previousPageRoute
|
10152 | }));
|
10153 | }, function () {}, 'backward');
|
10154 | return router;
|
10155 | }
|
10156 |
|
10157 |
|
10158 | if (navigateUrl === '#') {
|
10159 | navigateUrl = undefined;
|
10160 | }
|
10161 |
|
10162 | if (navigateUrl && navigateUrl[0] !== '/' && navigateUrl.indexOf('#') !== 0) {
|
10163 | navigateUrl = ((router.path || '/') + navigateUrl).replace('//', '/');
|
10164 | }
|
10165 |
|
10166 | if (!navigateUrl && router.history.length > 1) {
|
10167 | navigateUrl = router.history[router.history.length - 2];
|
10168 | }
|
10169 |
|
10170 | if (skipMaster && !navigateOptions.force && router.history[router.history.length - 3]) {
|
10171 | return router.back(router.history[router.history.length - 3], extend$1({}, navigateOptions || {}, {
|
10172 | force: true,
|
10173 | animate: false
|
10174 | }));
|
10175 | }
|
10176 |
|
10177 | if (skipMaster && !navigateOptions.force) {
|
10178 | return router;
|
10179 | }
|
10180 |
|
10181 |
|
10182 | route = router.findMatchingRoute(navigateUrl);
|
10183 |
|
10184 | if (!route) {
|
10185 | if (navigateUrl) {
|
10186 | route = {
|
10187 | url: navigateUrl,
|
10188 | path: navigateUrl.split('?')[0],
|
10189 | query: parseUrlQuery(navigateUrl),
|
10190 | route: {
|
10191 | path: navigateUrl.split('?')[0],
|
10192 | url: navigateUrl
|
10193 | }
|
10194 | };
|
10195 | }
|
10196 | }
|
10197 |
|
10198 | if (!route) {
|
10199 | return router;
|
10200 | }
|
10201 |
|
10202 | if (route.route.redirect) {
|
10203 | return redirect.call(router, 'backward', route, navigateOptions);
|
10204 | }
|
10205 |
|
10206 | var options = {};
|
10207 |
|
10208 | if (route.route.options) {
|
10209 | extend$1(options, route.route.options, navigateOptions);
|
10210 | } else {
|
10211 | extend$1(options, navigateOptions);
|
10212 | }
|
10213 |
|
10214 | options.route = route;
|
10215 | var backForceLoaded;
|
10216 |
|
10217 | if (options.force && router.params.stackPages) {
|
10218 | router.$el.children('.page-previous.stacked').each(function (pageEl) {
|
10219 | if (pageEl.f7Page && pageEl.f7Page.route && pageEl.f7Page.route.url === route.url) {
|
10220 | backForceLoaded = true;
|
10221 | loadBack(router, {
|
10222 | el: pageEl
|
10223 | }, options);
|
10224 | }
|
10225 | });
|
10226 |
|
10227 | if (backForceLoaded) {
|
10228 | return router;
|
10229 | }
|
10230 | }
|
10231 |
|
10232 | function resolve() {
|
10233 | var routerLoaded = false;
|
10234 |
|
10235 | if (route.route.keepAlive && route.route.keepAliveData) {
|
10236 | loadBack(router, {
|
10237 | el: route.route.keepAliveData.pageEl
|
10238 | }, options);
|
10239 | routerLoaded = true;
|
10240 | }
|
10241 |
|
10242 | 'url content component pageName el componentUrl'.split(' ').forEach(function (pageLoadProp) {
|
10243 | if (route.route[pageLoadProp] && !routerLoaded) {
|
10244 | var _loadBack;
|
10245 |
|
10246 | routerLoaded = true;
|
10247 | loadBack(router, (_loadBack = {}, _loadBack[pageLoadProp] = route.route[pageLoadProp], _loadBack), options);
|
10248 | }
|
10249 | });
|
10250 | if (routerLoaded) return;
|
10251 |
|
10252 | function asyncResolve(resolveParams, resolveOptions) {
|
10253 | router.allowPageChange = false;
|
10254 | loadBack(router, resolveParams, extend$1(options, resolveOptions), true);
|
10255 | }
|
10256 |
|
10257 | function asyncReject() {
|
10258 | router.allowPageChange = true;
|
10259 | }
|
10260 |
|
10261 | if (route.route.async) {
|
10262 | router.allowPageChange = false;
|
10263 | route.route.async.call(router, {
|
10264 | router: router,
|
10265 | to: route,
|
10266 | from: router.currentRoute,
|
10267 | resolve: asyncResolve,
|
10268 | reject: asyncReject,
|
10269 | direction: 'backward',
|
10270 | app: app
|
10271 | });
|
10272 | }
|
10273 |
|
10274 | if (route.route.asyncComponent) {
|
10275 | asyncComponent(router, route.route.asyncComponent, asyncResolve, asyncReject);
|
10276 | }
|
10277 | }
|
10278 |
|
10279 | function reject() {
|
10280 | router.allowPageChange = true;
|
10281 | }
|
10282 |
|
10283 | if (options.preload) {
|
10284 | resolve();
|
10285 | } else {
|
10286 | processRouteQueue.call(router, route, router.currentRoute, function () {
|
10287 | if (route.route.modules) {
|
10288 | app.loadModules(Array.isArray(route.route.modules) ? route.route.modules : [route.route.modules]).then(function () {
|
10289 | resolve();
|
10290 | }).catch(function () {
|
10291 | reject();
|
10292 | });
|
10293 | } else {
|
10294 | resolve();
|
10295 | }
|
10296 | }, function () {
|
10297 | reject();
|
10298 | }, 'backward');
|
10299 | }
|
10300 |
|
10301 |
|
10302 | return router;
|
10303 | }
|
10304 |
|
10305 | function clearPreviousPages(router) {
|
10306 | appRouterCheck(router, 'clearPreviousPages');
|
10307 | var app = router.app;
|
10308 | var dynamicNavbar = router.dynamicNavbar;
|
10309 | var $pagesToRemove = router.$el.children('.page').filter(function (pageInView) {
|
10310 | if (router.currentRoute && (router.currentRoute.modal || router.currentRoute.panel)) return true;
|
10311 | return pageInView !== router.currentPageEl;
|
10312 | });
|
10313 | $pagesToRemove.each(function (pageEl) {
|
10314 | var $oldPageEl = $(pageEl);
|
10315 | var $oldNavbarEl = $(app.navbar.getElByPage($oldPageEl));
|
10316 |
|
10317 | if (router.params.stackPages && router.initialPages.indexOf($oldPageEl[0]) >= 0) {
|
10318 | $oldPageEl.addClass('stacked');
|
10319 |
|
10320 | if (dynamicNavbar) {
|
10321 | $oldNavbarEl.addClass('stacked');
|
10322 | }
|
10323 | } else {
|
10324 |
|
10325 | router.pageCallback('beforeRemove', $oldPageEl, $oldNavbarEl, 'previous', undefined, {});
|
10326 | router.removePage($oldPageEl);
|
10327 |
|
10328 | if (dynamicNavbar && $oldNavbarEl.length) {
|
10329 | router.removeNavbar($oldNavbarEl);
|
10330 | }
|
10331 | }
|
10332 | });
|
10333 | }
|
10334 |
|
10335 | function clearPreviousHistory() {
|
10336 | var router = this;
|
10337 | appRouterCheck(router, 'clearPreviousHistory');
|
10338 | var url = router.history[router.history.length - 1];
|
10339 | clearPreviousPages(router);
|
10340 | router.history = [url];
|
10341 | router.view.history = [url];
|
10342 | router.saveHistory();
|
10343 | }
|
10344 |
|
10345 |
|
10346 | var Router = function (_Framework7Class) {
|
10347 | _inheritsLoose(Router, _Framework7Class);
|
10348 |
|
10349 | function Router(app, view) {
|
10350 | var _this;
|
10351 |
|
10352 | _this = _Framework7Class.call(this, {}, [typeof view === 'undefined' ? app : view]) || this;
|
10353 |
|
10354 | var router = _assertThisInitialized(_this);
|
10355 |
|
10356 |
|
10357 | router.isAppRouter = typeof view === 'undefined';
|
10358 |
|
10359 | if (router.isAppRouter) {
|
10360 |
|
10361 | extend$1(false, router, {
|
10362 | app: app,
|
10363 | params: app.params.view,
|
10364 | routes: app.routes || [],
|
10365 | cache: app.cache
|
10366 | });
|
10367 | } else {
|
10368 |
|
10369 | extend$1(false, router, {
|
10370 | app: app,
|
10371 | view: view,
|
10372 | viewId: view.id,
|
10373 | id: view.params.routerId,
|
10374 | params: view.params,
|
10375 | routes: view.routes,
|
10376 | history: view.history,
|
10377 | scrollHistory: view.scrollHistory,
|
10378 | cache: app.cache,
|
10379 | dynamicNavbar: app.theme === 'ios' && view.params.iosDynamicNavbar,
|
10380 | initialPages: [],
|
10381 | initialNavbars: []
|
10382 | });
|
10383 | }
|
10384 |
|
10385 |
|
10386 | router.useModules();
|
10387 |
|
10388 | router.allowPageChange = true;
|
10389 |
|
10390 | var currentRoute = {};
|
10391 | var previousRoute = {};
|
10392 | Object.defineProperty(router, 'currentRoute', {
|
10393 | enumerable: true,
|
10394 | configurable: true,
|
10395 | set: function set(newRoute) {
|
10396 | if (newRoute === void 0) {
|
10397 | newRoute = {};
|
10398 | }
|
10399 |
|
10400 | previousRoute = extend$1({}, currentRoute);
|
10401 | currentRoute = newRoute;
|
10402 | if (!currentRoute) return;
|
10403 | router.url = currentRoute.url;
|
10404 | router.emit('routeChange', newRoute, previousRoute, router);
|
10405 | },
|
10406 | get: function get() {
|
10407 | return currentRoute;
|
10408 | }
|
10409 | });
|
10410 | Object.defineProperty(router, 'previousRoute', {
|
10411 | enumerable: true,
|
10412 | configurable: true,
|
10413 | get: function get() {
|
10414 | return previousRoute;
|
10415 | },
|
10416 | set: function set(newRoute) {
|
10417 | previousRoute = newRoute;
|
10418 | }
|
10419 | });
|
10420 | return router || _assertThisInitialized(_this);
|
10421 | }
|
10422 |
|
10423 | var _proto = Router.prototype;
|
10424 |
|
10425 | _proto.mount = function mount() {
|
10426 | var router = this;
|
10427 | var view = router.view;
|
10428 | var document = getDocument();
|
10429 | extend$1(false, router, {
|
10430 | tempDom: document.createElement('div'),
|
10431 | $el: view.$el,
|
10432 | el: view.el,
|
10433 | $navbarsEl: view.$navbarsEl,
|
10434 | navbarsEl: view.navbarsEl
|
10435 | });
|
10436 | router.emit('local::mount routerMount', router);
|
10437 | };
|
10438 |
|
10439 | _proto.animatableNavElements = function animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction) {
|
10440 | var router = this;
|
10441 | var dynamicNavbar = router.dynamicNavbar;
|
10442 | var animateIcon = router.params.iosAnimateNavbarBackIcon;
|
10443 | var newNavEls;
|
10444 | var oldNavEls;
|
10445 |
|
10446 | function animatableNavEl($el, $navbarInner) {
|
10447 | var isSliding = $el.hasClass('sliding') || $navbarInner.hasClass('sliding');
|
10448 | var isSubnavbar = $el.hasClass('subnavbar');
|
10449 | var needsOpacityTransition = isSliding ? !isSubnavbar : true;
|
10450 | var $iconEl = $el.find('.back .icon');
|
10451 | var isIconLabel;
|
10452 |
|
10453 | if (isSliding && animateIcon && $el.hasClass('left') && $iconEl.length > 0 && $iconEl.next('span').length) {
|
10454 | $el = $iconEl.next('span');
|
10455 |
|
10456 | isIconLabel = true;
|
10457 | }
|
10458 |
|
10459 | return {
|
10460 | $el: $el,
|
10461 | isIconLabel: isIconLabel,
|
10462 | leftOffset: $el[0].f7NavbarLeftOffset,
|
10463 | rightOffset: $el[0].f7NavbarRightOffset,
|
10464 | isSliding: isSliding,
|
10465 | isSubnavbar: isSubnavbar,
|
10466 | needsOpacityTransition: needsOpacityTransition
|
10467 | };
|
10468 | }
|
10469 |
|
10470 | if (dynamicNavbar) {
|
10471 | newNavEls = [];
|
10472 | oldNavEls = [];
|
10473 | $newNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(function (navEl) {
|
10474 | var $navEl = $(navEl);
|
10475 | if ($navEl.hasClass('left') && fromLarge && direction === 'forward') return;
|
10476 | if ($navEl.hasClass('title') && toLarge) return;
|
10477 | newNavEls.push(animatableNavEl($navEl, $newNavbarEl.children('.navbar-inner')));
|
10478 | });
|
10479 |
|
10480 | if (!($oldNavbarEl.hasClass('navbar-master') && router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint)) {
|
10481 | $oldNavbarEl.children('.navbar-inner').children('.left, .right, .title, .subnavbar').each(function (navEl) {
|
10482 | var $navEl = $(navEl);
|
10483 | if ($navEl.hasClass('left') && toLarge && !fromLarge && direction === 'forward') return;
|
10484 | if ($navEl.hasClass('left') && toLarge && direction === 'backward') return;
|
10485 |
|
10486 | if ($navEl.hasClass('title') && fromLarge) {
|
10487 | return;
|
10488 | }
|
10489 |
|
10490 | oldNavEls.push(animatableNavEl($navEl, $oldNavbarEl.children('.navbar-inner')));
|
10491 | });
|
10492 | }
|
10493 |
|
10494 | [oldNavEls, newNavEls].forEach(function (navEls) {
|
10495 | navEls.forEach(function (navEl) {
|
10496 | var n = navEl;
|
10497 | var isSliding = navEl.isSliding,
|
10498 | $el = navEl.$el;
|
10499 | var otherEls = navEls === oldNavEls ? newNavEls : oldNavEls;
|
10500 | if (!(isSliding && $el.hasClass('title') && otherEls)) return;
|
10501 | otherEls.forEach(function (otherNavEl) {
|
10502 | if (otherNavEl.isIconLabel) {
|
10503 | var iconTextEl = otherNavEl.$el[0];
|
10504 | n.leftOffset += iconTextEl ? iconTextEl.offsetLeft || 0 : 0;
|
10505 | }
|
10506 | });
|
10507 | });
|
10508 | });
|
10509 | }
|
10510 |
|
10511 | return {
|
10512 | newNavEls: newNavEls,
|
10513 | oldNavEls: oldNavEls
|
10514 | };
|
10515 | };
|
10516 |
|
10517 | _proto.animate = function animate($oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, transition, callback) {
|
10518 | var router = this;
|
10519 |
|
10520 | if (router.params.animateCustom) {
|
10521 | router.params.animateCustom.apply(router, [$oldPageEl, $newPageEl, $oldNavbarEl, $newNavbarEl, direction, callback]);
|
10522 | return;
|
10523 | }
|
10524 |
|
10525 | var dynamicNavbar = router.dynamicNavbar;
|
10526 | var ios = router.app.theme === 'ios';
|
10527 |
|
10528 | if (transition) {
|
10529 | var routerCustomTransitionClass = "router-transition-custom router-transition-" + transition + "-" + direction;
|
10530 |
|
10531 | var onCustomTransitionDone = function onCustomTransitionDone() {
|
10532 | router.$el.removeClass(routerCustomTransitionClass);
|
10533 |
|
10534 | if (dynamicNavbar && router.$navbarsEl.length) {
|
10535 | if ($newNavbarEl) {
|
10536 | router.$navbarsEl.prepend($newNavbarEl);
|
10537 | }
|
10538 |
|
10539 | if ($oldNavbarEl) {
|
10540 | router.$navbarsEl.prepend($oldNavbarEl);
|
10541 | }
|
10542 | }
|
10543 |
|
10544 | if (callback) callback();
|
10545 | };
|
10546 |
|
10547 | (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(onCustomTransitionDone);
|
10548 |
|
10549 | if (dynamicNavbar) {
|
10550 | if ($newNavbarEl && $newPageEl) {
|
10551 | router.setNavbarPosition($newNavbarEl, '');
|
10552 | $newNavbarEl.removeClass('navbar-next navbar-previous navbar-current');
|
10553 | $newPageEl.prepend($newNavbarEl);
|
10554 | }
|
10555 |
|
10556 | if ($oldNavbarEl && $oldPageEl) {
|
10557 | router.setNavbarPosition($oldNavbarEl, '');
|
10558 | $oldNavbarEl.removeClass('navbar-next navbar-previous navbar-current');
|
10559 | $oldPageEl.prepend($oldNavbarEl);
|
10560 | }
|
10561 | }
|
10562 |
|
10563 | router.$el.addClass(routerCustomTransitionClass);
|
10564 | return;
|
10565 | }
|
10566 |
|
10567 |
|
10568 | var routerTransitionClass = "router-transition-" + direction + " router-transition";
|
10569 | var newNavEls;
|
10570 | var oldNavEls;
|
10571 | var fromLarge;
|
10572 | var toLarge;
|
10573 | var toDifferent;
|
10574 | var oldIsLarge;
|
10575 | var newIsLarge;
|
10576 |
|
10577 | if (ios && dynamicNavbar) {
|
10578 | var betweenMasterAndDetail = router.params.masterDetailBreakpoint > 0 && router.app.width >= router.params.masterDetailBreakpoint && ($oldNavbarEl.hasClass('navbar-master') && $newNavbarEl.hasClass('navbar-master-detail') || $oldNavbarEl.hasClass('navbar-master-detail') && $newNavbarEl.hasClass('navbar-master'));
|
10579 |
|
10580 | if (!betweenMasterAndDetail) {
|
10581 | oldIsLarge = $oldNavbarEl && $oldNavbarEl.hasClass('navbar-large');
|
10582 | newIsLarge = $newNavbarEl && $newNavbarEl.hasClass('navbar-large');
|
10583 | fromLarge = oldIsLarge && !$oldNavbarEl.hasClass('navbar-large-collapsed');
|
10584 | toLarge = newIsLarge && !$newNavbarEl.hasClass('navbar-large-collapsed');
|
10585 | toDifferent = fromLarge && !toLarge || toLarge && !fromLarge;
|
10586 | }
|
10587 |
|
10588 | var navEls = router.animatableNavElements($newNavbarEl, $oldNavbarEl, toLarge, fromLarge, direction);
|
10589 | newNavEls = navEls.newNavEls;
|
10590 | oldNavEls = navEls.oldNavEls;
|
10591 | }
|
10592 |
|
10593 | function animateNavbars(progress) {
|
10594 | if (!(ios && dynamicNavbar)) return;
|
10595 |
|
10596 | if (progress === 1) {
|
10597 | if (toLarge) {
|
10598 | $newNavbarEl.addClass('router-navbar-transition-to-large');
|
10599 | $oldNavbarEl.addClass('router-navbar-transition-to-large');
|
10600 | }
|
10601 |
|
10602 | if (fromLarge) {
|
10603 | $newNavbarEl.addClass('router-navbar-transition-from-large');
|
10604 | $oldNavbarEl.addClass('router-navbar-transition-from-large');
|
10605 | }
|
10606 | }
|
10607 |
|
10608 | newNavEls.forEach(function (navEl) {
|
10609 | var $el = navEl.$el;
|
10610 | var offset = direction === 'forward' ? navEl.rightOffset : navEl.leftOffset;
|
10611 |
|
10612 | if (navEl.isSliding) {
|
10613 | if (navEl.isSubnavbar && newIsLarge) {
|
10614 |
|
10615 | $el[0].style.setProperty('transform', "translate3d(" + offset * (1 - progress) + "px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)", 'important');
|
10616 | } else {
|
10617 | $el.transform("translate3d(" + offset * (1 - progress) + "px,0,0)");
|
10618 | }
|
10619 | }
|
10620 | });
|
10621 | oldNavEls.forEach(function (navEl) {
|
10622 | var $el = navEl.$el;
|
10623 | var offset = direction === 'forward' ? navEl.leftOffset : navEl.rightOffset;
|
10624 |
|
10625 | if (navEl.isSliding) {
|
10626 | if (navEl.isSubnavbar && oldIsLarge) {
|
10627 | $el.transform("translate3d(" + offset * progress + "px, calc(-1 * var(--f7-navbar-large-collapse-progress) * var(--f7-navbar-large-title-height)), 0)");
|
10628 | } else {
|
10629 | $el.transform("translate3d(" + offset * progress + "px,0,0)");
|
10630 | }
|
10631 | }
|
10632 | });
|
10633 | }
|
10634 |
|
10635 |
|
10636 | function onDone() {
|
10637 | if (router.dynamicNavbar) {
|
10638 | if ($newNavbarEl) {
|
10639 | $newNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');
|
10640 | $newNavbarEl.addClass('navbar-no-title-large-transition');
|
10641 | nextFrame$1(function () {
|
10642 | $newNavbarEl.removeClass('navbar-no-title-large-transition');
|
10643 | });
|
10644 | }
|
10645 |
|
10646 | if ($oldNavbarEl) {
|
10647 | $oldNavbarEl.removeClass('router-navbar-transition-to-large router-navbar-transition-from-large');
|
10648 | }
|
10649 |
|
10650 | if ($newNavbarEl.hasClass('sliding') || $newNavbarEl.children('.navbar-inner.sliding').length) {
|
10651 | $newNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');
|
10652 | } else {
|
10653 | $newNavbarEl.find('.sliding').transform('');
|
10654 | }
|
10655 |
|
10656 | if ($oldNavbarEl.hasClass('sliding') || $oldNavbarEl.children('.navbar-inner.sliding').length) {
|
10657 | $oldNavbarEl.find('.title, .left, .right, .left .icon, .subnavbar').transform('');
|
10658 | } else {
|
10659 | $oldNavbarEl.find('.sliding').transform('');
|
10660 | }
|
10661 | }
|
10662 |
|
10663 | router.$el.removeClass(routerTransitionClass);
|
10664 | if (callback) callback();
|
10665 | }
|
10666 |
|
10667 | (direction === 'forward' ? $newPageEl : $oldPageEl).animationEnd(function () {
|
10668 | onDone();
|
10669 | });
|
10670 |
|
10671 | if (dynamicNavbar) {
|
10672 |
|
10673 | animateNavbars(0);
|
10674 | nextFrame$1(function () {
|
10675 |
|
10676 | router.$el.addClass(routerTransitionClass);
|
10677 |
|
10678 | if (toDifferent) {
|
10679 |
|
10680 | router.el._clientLeft = router.el.clientLeft;
|
10681 | }
|
10682 |
|
10683 | animateNavbars(1);
|
10684 | });
|
10685 | } else {
|
10686 |
|
10687 | router.$el.addClass(routerTransitionClass);
|
10688 | }
|
10689 | };
|
10690 |
|
10691 | _proto.removeModal = function removeModal(modalEl) {
|
10692 | var router = this;
|
10693 | router.removeEl(modalEl);
|
10694 | }
|
10695 | ;
|
10696 |
|
10697 | _proto.removeTabContent = function removeTabContent(tabEl) {
|
10698 | var $tabEl = $(tabEl);
|
10699 | $tabEl.html('');
|
10700 | };
|
10701 |
|
10702 | _proto.removeNavbar = function removeNavbar(el) {
|
10703 | var router = this;
|
10704 | router.removeEl(el);
|
10705 | };
|
10706 |
|
10707 | _proto.removePage = function removePage(el) {
|
10708 | var $el = $(el);
|
10709 | var f7Page = $el && $el[0] && $el[0].f7Page;
|
10710 | var router = this;
|
10711 |
|
10712 | if (f7Page && f7Page.route && f7Page.route.route && f7Page.route.route.keepAlive) {
|
10713 | $el.remove();
|
10714 | return;
|
10715 | }
|
10716 |
|
10717 | router.removeEl(el);
|
10718 | };
|
10719 |
|
10720 | _proto.removeEl = function removeEl(el) {
|
10721 | if (!el) return;
|
10722 | var router = this;
|
10723 | var $el = $(el);
|
10724 | if ($el.length === 0) return;
|
10725 | $el.find('.tab').each(function (tabEl) {
|
10726 | $(tabEl).children().each(function (tabChild) {
|
10727 | if (tabChild.f7Component) {
|
10728 | $(tabChild).trigger('tab:beforeremove');
|
10729 | tabChild.f7Component.destroy();
|
10730 | }
|
10731 | });
|
10732 | });
|
10733 |
|
10734 | if ($el[0].f7Component && $el[0].f7Component.destroy) {
|
10735 | $el[0].f7Component.destroy();
|
10736 | }
|
10737 |
|
10738 | if (!router.params.removeElements) {
|
10739 | return;
|
10740 | }
|
10741 |
|
10742 | if (router.params.removeElementsWithTimeout) {
|
10743 | setTimeout(function () {
|
10744 | $el.remove();
|
10745 | }, router.params.removeElementsTimeout);
|
10746 | } else {
|
10747 | $el.remove();
|
10748 | }
|
10749 | };
|
10750 |
|
10751 | _proto.getPageEl = function getPageEl(content) {
|
10752 | var router = this;
|
10753 |
|
10754 | if (typeof content === 'string') {
|
10755 | router.tempDom.innerHTML = content;
|
10756 | } else {
|
10757 | if ($(content).hasClass('page')) {
|
10758 | return content;
|
10759 | }
|
10760 |
|
10761 | router.tempDom.innerHTML = '';
|
10762 | $(router.tempDom).append(content);
|
10763 | }
|
10764 |
|
10765 | return router.findElement('.page', router.tempDom);
|
10766 | };
|
10767 |
|
10768 | _proto.findElement = function findElement(stringSelector, container, notStacked) {
|
10769 | var router = this;
|
10770 | var view = router.view;
|
10771 | var app = router.app;
|
10772 |
|
10773 | var modalsSelector = '.popup, .dialog, .popover, .actions-modal, .sheet-modal, .login-screen, .page';
|
10774 | var $container = $(container);
|
10775 | var selector = stringSelector;
|
10776 | if (notStacked) selector += ':not(.stacked)';
|
10777 | var found = $container.find(selector).filter(function (el) {
|
10778 | return $(el).parents(modalsSelector).length === 0;
|
10779 | });
|
10780 |
|
10781 | if (found.length > 1) {
|
10782 | if (typeof view.selector === 'string') {
|
10783 |
|
10784 | found = $container.find(view.selector + " " + selector);
|
10785 | }
|
10786 |
|
10787 | if (found.length > 1) {
|
10788 |
|
10789 | found = $container.find("." + app.params.viewMainClass + " " + selector);
|
10790 | }
|
10791 | }
|
10792 |
|
10793 | if (found.length === 1) return found;
|
10794 |
|
10795 | if (!notStacked) found = router.findElement(selector, $container, true);
|
10796 | if (found && found.length === 1) return found;
|
10797 | if (found && found.length > 1) return $(found[0]);
|
10798 | return undefined;
|
10799 | };
|
10800 |
|
10801 | _proto.flattenRoutes = function flattenRoutes(routes) {
|
10802 | if (routes === void 0) {
|
10803 | routes = this.routes;
|
10804 | }
|
10805 |
|
10806 | var router = this;
|
10807 | var flattenedRoutes = [];
|
10808 | routes.forEach(function (route) {
|
10809 | var hasTabRoutes = false;
|
10810 |
|
10811 | if ('tabs' in route && route.tabs) {
|
10812 | var mergedPathsRoutes = route.tabs.map(function (tabRoute) {
|
10813 | var tRoute = extend$1({}, route, {
|
10814 | path: (route.path + "/" + tabRoute.path).replace('///', '/').replace('//', '/'),
|
10815 | parentPath: route.path,
|
10816 | tab: tabRoute
|
10817 | });
|
10818 | delete tRoute.tabs;
|
10819 | delete tRoute.routes;
|
10820 | return tRoute;
|
10821 | });
|
10822 | hasTabRoutes = true;
|
10823 | flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(mergedPathsRoutes));
|
10824 | }
|
10825 |
|
10826 | if ('detailRoutes' in route) {
|
10827 | var _mergedPathsRoutes = route.detailRoutes.map(function (detailRoute) {
|
10828 | var dRoute = extend$1({}, detailRoute);
|
10829 | dRoute.masterRoute = route;
|
10830 | dRoute.masterRoutePath = route.path;
|
10831 | return dRoute;
|
10832 | });
|
10833 |
|
10834 | flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(_mergedPathsRoutes));
|
10835 | }
|
10836 |
|
10837 | if ('routes' in route) {
|
10838 | var _mergedPathsRoutes2 = route.routes.map(function (childRoute) {
|
10839 | var cRoute = extend$1({}, childRoute);
|
10840 | cRoute.path = (route.path + "/" + cRoute.path).replace('///', '/').replace('//', '/');
|
10841 | return cRoute;
|
10842 | });
|
10843 |
|
10844 | if (hasTabRoutes) {
|
10845 | flattenedRoutes = flattenedRoutes.concat(router.flattenRoutes(_mergedPathsRoutes2));
|
10846 | } else {
|
10847 | flattenedRoutes = flattenedRoutes.concat(route, router.flattenRoutes(_mergedPathsRoutes2));
|
10848 | }
|
10849 | }
|
10850 |
|
10851 | if (!('routes' in route) && !('tabs' in route && route.tabs) && !('detailRoutes' in route)) {
|
10852 | flattenedRoutes.push(route);
|
10853 | }
|
10854 | });
|
10855 | return flattenedRoutes;
|
10856 | }
|
10857 | ;
|
10858 |
|
10859 | _proto.parseRouteUrl = function parseRouteUrl(url) {
|
10860 | if (!url) return {};
|
10861 | var query = parseUrlQuery(url);
|
10862 | var hash = url.split('#')[1];
|
10863 | var params = {};
|
10864 | var path = url.split('#')[0].split('?')[0];
|
10865 | return {
|
10866 | query: query,
|
10867 | hash: hash,
|
10868 | params: params,
|
10869 | url: url,
|
10870 | path: path
|
10871 | };
|
10872 | };
|
10873 |
|
10874 | _proto.generateUrl = function generateUrl(parameters) {
|
10875 | if (parameters === void 0) {
|
10876 | parameters = {};
|
10877 | }
|
10878 |
|
10879 | if (typeof parameters === 'string') {
|
10880 | return parameters;
|
10881 | }
|
10882 |
|
10883 | var _parameters = parameters,
|
10884 | name = _parameters.name,
|
10885 | path = _parameters.path,
|
10886 | params = _parameters.params,
|
10887 | query = _parameters.query;
|
10888 |
|
10889 | if (!name && !path) {
|
10890 | throw new Error('Framework7: "name" or "path" parameter is required');
|
10891 | }
|
10892 |
|
10893 | var router = this;
|
10894 | var route = name ? router.findRouteByKey('name', name) : router.findRouteByKey('path', path);
|
10895 |
|
10896 | if (!route) {
|
10897 | if (name) {
|
10898 | throw new Error("Framework7: route with name \"" + name + "\" not found");
|
10899 | } else {
|
10900 | throw new Error("Framework7: route with path \"" + path + "\" not found");
|
10901 | }
|
10902 | }
|
10903 |
|
10904 | var url = router.constructRouteUrl(route, {
|
10905 | params: params,
|
10906 | query: query
|
10907 | });
|
10908 |
|
10909 | if (!url) {
|
10910 | throw new Error("Framework7: can't construct URL for route with name \"" + name + "\"");
|
10911 | }
|
10912 |
|
10913 | return url;
|
10914 | }
|
10915 | ;
|
10916 |
|
10917 | _proto.constructRouteUrl = function constructRouteUrl(route, _temp) {
|
10918 | var _ref = _temp === void 0 ? {} : _temp,
|
10919 | params = _ref.params,
|
10920 | query = _ref.query;
|
10921 |
|
10922 | var path = route.path;
|
10923 | var toUrl = compile(path);
|
10924 | var url;
|
10925 |
|
10926 | try {
|
10927 | url = toUrl(params || {});
|
10928 | } catch (error) {
|
10929 | throw new Error("Framework7: error constructing route URL from passed params:\nRoute: " + path + "\n" + error.toString());
|
10930 | }
|
10931 |
|
10932 | if (query) {
|
10933 | if (typeof query === 'string') url += "?" + query;else if (Object.keys(query).length) url += "?" + serializeObject(query);
|
10934 | }
|
10935 |
|
10936 | return url;
|
10937 | };
|
10938 |
|
10939 | _proto.findTabRouteUrl = function findTabRouteUrl(tabEl) {
|
10940 | var router = this;
|
10941 | var $tabEl = $(tabEl);
|
10942 | var parentPath = router.currentRoute.route.parentPath;
|
10943 | var tabId = $tabEl.attr('id');
|
10944 | var flattenedRoutes = router.flattenRoutes(router.routes);
|
10945 | var foundTabRouteUrl;
|
10946 | flattenedRoutes.forEach(function (route) {
|
10947 | if (route.parentPath === parentPath && route.tab && route.tab.id === tabId) {
|
10948 | if (router.currentRoute.params && Object.keys(router.currentRoute.params).length > 0) {
|
10949 | foundTabRouteUrl = router.constructRouteUrl(route, {
|
10950 | params: router.currentRoute.params,
|
10951 | query: router.currentRoute.query
|
10952 | });
|
10953 | } else {
|
10954 | foundTabRouteUrl = route.path;
|
10955 | }
|
10956 | }
|
10957 | });
|
10958 | return foundTabRouteUrl;
|
10959 | };
|
10960 |
|
10961 | _proto.findRouteByKey = function findRouteByKey(key, value) {
|
10962 | var router = this;
|
10963 | var routes = router.routes;
|
10964 | var flattenedRoutes = router.flattenRoutes(routes);
|
10965 | var matchingRoute;
|
10966 | flattenedRoutes.forEach(function (route) {
|
10967 | if (matchingRoute) return;
|
10968 |
|
10969 | if (route[key] === value) {
|
10970 | matchingRoute = route;
|
10971 | }
|
10972 | });
|
10973 | return matchingRoute;
|
10974 | };
|
10975 |
|
10976 | _proto.findMatchingRoute = function findMatchingRoute(url) {
|
10977 | if (!url) return undefined;
|
10978 | var router = this;
|
10979 | var routes = router.routes;
|
10980 | var flattenedRoutes = router.flattenRoutes(routes);
|
10981 |
|
10982 | var _router$parseRouteUrl = router.parseRouteUrl(url),
|
10983 | path = _router$parseRouteUrl.path,
|
10984 | query = _router$parseRouteUrl.query,
|
10985 | hash = _router$parseRouteUrl.hash,
|
10986 | params = _router$parseRouteUrl.params;
|
10987 |
|
10988 | var matchingRoute;
|
10989 | flattenedRoutes.forEach(function (route) {
|
10990 | if (matchingRoute) return;
|
10991 | var keys = [];
|
10992 | var pathsToMatch = [route.path];
|
10993 |
|
10994 | if (route.alias) {
|
10995 | if (typeof route.alias === 'string') pathsToMatch.push(route.alias);else if (Array.isArray(route.alias)) {
|
10996 | route.alias.forEach(function (aliasPath) {
|
10997 | pathsToMatch.push(aliasPath);
|
10998 | });
|
10999 | }
|
11000 | }
|
11001 |
|
11002 | var matched;
|
11003 | pathsToMatch.forEach(function (pathToMatch) {
|
11004 | if (matched) return;
|
11005 | matched = pathToRegexp(pathToMatch, keys).exec(path);
|
11006 | });
|
11007 |
|
11008 | if (matched) {
|
11009 | keys.forEach(function (keyObj, index) {
|
11010 | if (typeof keyObj.name === 'number') return;
|
11011 | var paramValue = matched[index + 1];
|
11012 |
|
11013 | if (typeof paramValue === 'undefined' || paramValue === null) {
|
11014 | params[keyObj.name] = paramValue;
|
11015 | } else {
|
11016 | params[keyObj.name] = decodeURIComponent(paramValue);
|
11017 | }
|
11018 | });
|
11019 | var parentPath;
|
11020 |
|
11021 | if (route.parentPath) {
|
11022 | parentPath = path.split('/').slice(0, route.parentPath.split('/').length - 1).join('/');
|
11023 | }
|
11024 |
|
11025 | matchingRoute = {
|
11026 | query: query,
|
11027 | hash: hash,
|
11028 | params: params,
|
11029 | url: url,
|
11030 | path: path,
|
11031 | parentPath: parentPath,
|
11032 | route: route,
|
11033 | name: route.name
|
11034 | };
|
11035 | }
|
11036 | });
|
11037 | return matchingRoute;
|
11038 | }
|
11039 | ;
|
11040 |
|
11041 | _proto.replaceRequestUrlParams = function replaceRequestUrlParams(url, options) {
|
11042 | if (url === void 0) {
|
11043 | url = '';
|
11044 | }
|
11045 |
|
11046 | if (options === void 0) {
|
11047 | options = {};
|
11048 | }
|
11049 |
|
11050 | var compiledUrl = url;
|
11051 |
|
11052 | if (typeof compiledUrl === 'string' && compiledUrl.indexOf('{{') >= 0 && options && options.route && options.route.params && Object.keys(options.route.params).length) {
|
11053 | Object.keys(options.route.params).forEach(function (paramName) {
|
11054 | var regExp = new RegExp("{{" + paramName + "}}", 'g');
|
11055 | compiledUrl = compiledUrl.replace(regExp, options.route.params[paramName] || '');
|
11056 | });
|
11057 | }
|
11058 |
|
11059 | return compiledUrl;
|
11060 | };
|
11061 |
|
11062 | _proto.removeFromXhrCache = function removeFromXhrCache(url) {
|
11063 | var router = this;
|
11064 | var xhrCache = router.cache.xhr;
|
11065 | var index = false;
|
11066 |
|
11067 | for (var i = 0; i < xhrCache.length; i += 1) {
|
11068 | if (xhrCache[i].url === url) index = i;
|
11069 | }
|
11070 |
|
11071 | if (index !== false) xhrCache.splice(index, 1);
|
11072 | };
|
11073 |
|
11074 | _proto.xhrRequest = function xhrRequest(requestUrl, options) {
|
11075 | var router = this;
|
11076 | var params = router.params;
|
11077 | var ignoreCache = options.ignoreCache;
|
11078 | var url = requestUrl;
|
11079 | var hasQuery = url.indexOf('?') >= 0;
|
11080 |
|
11081 | if (params.passRouteQueryToRequest && options && options.route && options.route.query && Object.keys(options.route.query).length) {
|
11082 | url += "" + (hasQuery ? '&' : '?') + serializeObject(options.route.query);
|
11083 | hasQuery = true;
|
11084 | }
|
11085 |
|
11086 | if (params.passRouteParamsToRequest && options && options.route && options.route.params && Object.keys(options.route.params).length) {
|
11087 | url += "" + (hasQuery ? '&' : '?') + serializeObject(options.route.params);
|
11088 | hasQuery = true;
|
11089 | }
|
11090 |
|
11091 | if (url.indexOf('{{') >= 0) {
|
11092 | url = router.replaceRequestUrlParams(url, options);
|
11093 | }
|
11094 |
|
11095 |
|
11096 | if (params.xhrCacheIgnoreGetParameters && url.indexOf('?') >= 0) {
|
11097 | url = url.split('?')[0];
|
11098 | }
|
11099 |
|
11100 | return new Promise(function (resolve, reject) {
|
11101 | if (params.xhrCache && !ignoreCache && url.indexOf('nocache') < 0 && params.xhrCacheIgnore.indexOf(url) < 0) {
|
11102 | for (var i = 0; i < router.cache.xhr.length; i += 1) {
|
11103 | var cachedUrl = router.cache.xhr[i];
|
11104 |
|
11105 | if (cachedUrl.url === url) {
|
11106 |
|
11107 | if (now$1() - cachedUrl.time < params.xhrCacheDuration) {
|
11108 |
|
11109 | resolve(cachedUrl.content);
|
11110 | return;
|
11111 | }
|
11112 | }
|
11113 | }
|
11114 | }
|
11115 |
|
11116 | router.xhrAbortController = router.app.request.abortController();
|
11117 | router.app.request({
|
11118 | abortController: router.xhrAbortController,
|
11119 | url: url,
|
11120 | method: 'GET',
|
11121 | beforeSend: function beforeSend(xhr) {
|
11122 | router.emit('routerAjaxStart', xhr, options);
|
11123 | },
|
11124 | complete: function complete(xhr, status) {
|
11125 | router.emit('routerAjaxComplete', xhr);
|
11126 |
|
11127 | if (status !== 'error' && status !== 'timeout' && xhr.status >= 200 && xhr.status < 300 || xhr.status === 0) {
|
11128 | if (params.xhrCache && xhr.responseText !== '') {
|
11129 | router.removeFromXhrCache(url);
|
11130 | router.cache.xhr.push({
|
11131 | url: url,
|
11132 | time: now$1(),
|
11133 | content: xhr.responseText
|
11134 | });
|
11135 | }
|
11136 |
|
11137 | router.emit('routerAjaxSuccess', xhr, options);
|
11138 | resolve(xhr.responseText);
|
11139 | } else {
|
11140 | router.emit('routerAjaxError', xhr, options);
|
11141 | reject(xhr);
|
11142 | }
|
11143 | },
|
11144 | error: function error(xhr) {
|
11145 | router.emit('routerAjaxError', xhr, options);
|
11146 | reject(xhr);
|
11147 | }
|
11148 | });
|
11149 | });
|
11150 | };
|
11151 |
|
11152 | _proto.setNavbarPosition = function setNavbarPosition($el, position, ariaHidden) {
|
11153 | var router = this;
|
11154 | $el.removeClass('navbar-previous navbar-current navbar-next');
|
11155 |
|
11156 | if (position) {
|
11157 | $el.addClass("navbar-" + position);
|
11158 | }
|
11159 |
|
11160 | if (ariaHidden === false) {
|
11161 | $el.removeAttr('aria-hidden');
|
11162 | } else if (ariaHidden === true) {
|
11163 | $el.attr('aria-hidden', 'true');
|
11164 | }
|
11165 |
|
11166 | $el.trigger('navbar:position', {
|
11167 | position: position
|
11168 | });
|
11169 | router.emit('navbarPosition', $el[0], position);
|
11170 | };
|
11171 |
|
11172 | _proto.setPagePosition = function setPagePosition($el, position, ariaHidden) {
|
11173 | var router = this;
|
11174 | $el.removeClass('page-previous page-current page-next');
|
11175 | $el.addClass("page-" + position);
|
11176 |
|
11177 | if (ariaHidden === false) {
|
11178 | $el.removeAttr('aria-hidden');
|
11179 | } else if (ariaHidden === true) {
|
11180 | $el.attr('aria-hidden', 'true');
|
11181 | }
|
11182 |
|
11183 | $el.trigger('page:position', {
|
11184 | position: position
|
11185 | });
|
11186 | router.emit('pagePosition', $el[0], position);
|
11187 | }
|
11188 | ;
|
11189 |
|
11190 | _proto.removeThemeElements = function removeThemeElements(el) {
|
11191 | var router = this;
|
11192 | var theme = router.app.theme;
|
11193 | var toRemove;
|
11194 |
|
11195 | if (theme === 'ios') {
|
11196 | toRemove = '.md-only, .aurora-only, .if-md, .if-aurora, .if-not-ios, .not-ios';
|
11197 | } else if (theme === 'md') {
|
11198 | toRemove = '.ios-only, .aurora-only, .if-ios, .if-aurora, .if-not-md, .not-md';
|
11199 | } else if (theme === 'aurora') {
|
11200 | toRemove = '.ios-only, .md-only, .if-ios, .if-md, .if-not-aurora, .not-aurora';
|
11201 | }
|
11202 |
|
11203 | $(el).find(toRemove).remove();
|
11204 | };
|
11205 |
|
11206 | _proto.getPageData = function getPageData(pageEl, navbarEl, from, to, route, pageFromEl) {
|
11207 | if (route === void 0) {
|
11208 | route = {};
|
11209 | }
|
11210 |
|
11211 | var router = this;
|
11212 | var $pageEl = $(pageEl).eq(0);
|
11213 | var $navbarEl = $(navbarEl).eq(0);
|
11214 | var currentPage = $pageEl[0].f7Page || {};
|
11215 | var direction;
|
11216 | var pageFrom;
|
11217 | if (from === 'next' && to === 'current' || from === 'current' && to === 'previous') direction = 'forward';
|
11218 | if (from === 'current' && to === 'next' || from === 'previous' && to === 'current') direction = 'backward';
|
11219 |
|
11220 | if (currentPage && !currentPage.fromPage) {
|
11221 | var $pageFromEl = $(pageFromEl);
|
11222 |
|
11223 | if ($pageFromEl.length) {
|
11224 | pageFrom = $pageFromEl[0].f7Page;
|
11225 | }
|
11226 | }
|
11227 |
|
11228 | pageFrom = currentPage.pageFrom || pageFrom;
|
11229 |
|
11230 | if (pageFrom && pageFrom.pageFrom) {
|
11231 | pageFrom.pageFrom = null;
|
11232 | }
|
11233 |
|
11234 | var page = {
|
11235 | app: router.app,
|
11236 | view: router.view,
|
11237 | router: router,
|
11238 | $el: $pageEl,
|
11239 | el: $pageEl[0],
|
11240 | $pageEl: $pageEl,
|
11241 | pageEl: $pageEl[0],
|
11242 | $navbarEl: $navbarEl,
|
11243 | navbarEl: $navbarEl[0],
|
11244 | name: $pageEl.attr('data-name'),
|
11245 | position: from,
|
11246 | from: from,
|
11247 | to: to,
|
11248 | direction: direction,
|
11249 | route: currentPage.route ? currentPage.route : route,
|
11250 | pageFrom: pageFrom
|
11251 | };
|
11252 | $pageEl[0].f7Page = page;
|
11253 | return page;
|
11254 | }
|
11255 | ;
|
11256 |
|
11257 | _proto.pageCallback = function pageCallback(callback, pageEl, navbarEl, from, to, options, pageFromEl) {
|
11258 | if (options === void 0) {
|
11259 | options = {};
|
11260 | }
|
11261 |
|
11262 | if (!pageEl) return;
|
11263 | var router = this;
|
11264 | var $pageEl = $(pageEl);
|
11265 | if (!$pageEl.length) return;
|
11266 | var $navbarEl = $(navbarEl);
|
11267 | var _options = options,
|
11268 | route = _options.route;
|
11269 | var restoreScrollTopOnBack = router.params.restoreScrollTopOnBack && !(router.params.masterDetailBreakpoint > 0 && $pageEl.hasClass('page-master') && router.app.width >= router.params.masterDetailBreakpoint);
|
11270 | var keepAlive = $pageEl[0].f7Page && $pageEl[0].f7Page.route && $pageEl[0].f7Page.route.route && $pageEl[0].f7Page.route.route.keepAlive;
|
11271 |
|
11272 | if (callback === 'beforeRemove' && keepAlive) {
|
11273 | callback = 'beforeUnmount';
|
11274 | }
|
11275 |
|
11276 | var camelName = "page" + (callback[0].toUpperCase() + callback.slice(1, callback.length));
|
11277 | var colonName = "page:" + callback.toLowerCase();
|
11278 | var page = {};
|
11279 |
|
11280 | if (callback === 'beforeRemove' && $pageEl[0].f7Page) {
|
11281 | page = extend$1($pageEl[0].f7Page, {
|
11282 | from: from,
|
11283 | to: to,
|
11284 | position: from
|
11285 | });
|
11286 | } else {
|
11287 | page = router.getPageData($pageEl[0], $navbarEl[0], from, to, route, pageFromEl);
|
11288 | }
|
11289 |
|
11290 | page.swipeBack = !!options.swipeBack;
|
11291 |
|
11292 | var _ref2 = options.route ? options.route.route : {},
|
11293 | _ref2$on = _ref2.on,
|
11294 | on = _ref2$on === void 0 ? {} : _ref2$on,
|
11295 | _ref2$once = _ref2.once,
|
11296 | once = _ref2$once === void 0 ? {} : _ref2$once;
|
11297 |
|
11298 | if (options.on) {
|
11299 | extend$1(on, options.on);
|
11300 | }
|
11301 |
|
11302 | if (options.once) {
|
11303 | extend$1(once, options.once);
|
11304 | }
|
11305 |
|
11306 | function attachEvents() {
|
11307 | if ($pageEl[0].f7RouteEventsAttached) return;
|
11308 | $pageEl[0].f7RouteEventsAttached = true;
|
11309 |
|
11310 | if (on && Object.keys(on).length > 0) {
|
11311 | $pageEl[0].f7RouteEventsOn = on;
|
11312 | Object.keys(on).forEach(function (eventName) {
|
11313 | on[eventName] = on[eventName].bind(router);
|
11314 | $pageEl.on(eventNameToColonCase(eventName), on[eventName]);
|
11315 | });
|
11316 | }
|
11317 |
|
11318 | if (once && Object.keys(once).length > 0) {
|
11319 | $pageEl[0].f7RouteEventsOnce = once;
|
11320 | Object.keys(once).forEach(function (eventName) {
|
11321 | once[eventName] = once[eventName].bind(router);
|
11322 | $pageEl.once(eventNameToColonCase(eventName), once[eventName]);
|
11323 | });
|
11324 | }
|
11325 | }
|
11326 |
|
11327 | function detachEvents() {
|
11328 | if (!$pageEl[0].f7RouteEventsAttached) return;
|
11329 |
|
11330 | if ($pageEl[0].f7RouteEventsOn) {
|
11331 | Object.keys($pageEl[0].f7RouteEventsOn).forEach(function (eventName) {
|
11332 | $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOn[eventName]);
|
11333 | });
|
11334 | }
|
11335 |
|
11336 | if ($pageEl[0].f7RouteEventsOnce) {
|
11337 | Object.keys($pageEl[0].f7RouteEventsOnce).forEach(function (eventName) {
|
11338 | $pageEl.off(eventNameToColonCase(eventName), $pageEl[0].f7RouteEventsOnce[eventName]);
|
11339 | });
|
11340 | }
|
11341 |
|
11342 | $pageEl[0].f7RouteEventsAttached = null;
|
11343 | $pageEl[0].f7RouteEventsOn = null;
|
11344 | $pageEl[0].f7RouteEventsOnce = null;
|
11345 | delete $pageEl[0].f7RouteEventsAttached;
|
11346 | delete $pageEl[0].f7RouteEventsOn;
|
11347 | delete $pageEl[0].f7RouteEventsOnce;
|
11348 | }
|
11349 |
|
11350 | if (callback === 'mounted') {
|
11351 | attachEvents();
|
11352 | }
|
11353 |
|
11354 | if (callback === 'init') {
|
11355 | if (restoreScrollTopOnBack && (from === 'previous' || !from) && to === 'current' && router.scrollHistory[page.route.url] && !$pageEl.hasClass('no-restore-scroll')) {
|
11356 | var $pageContent = $pageEl.find('.page-content');
|
11357 |
|
11358 | if ($pageContent.length > 0) {
|
11359 |
|
11360 | $pageContent = $pageContent.filter(function (pageContentEl) {
|
11361 | return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');
|
11362 | });
|
11363 | }
|
11364 |
|
11365 | $pageContent.scrollTop(router.scrollHistory[page.route.url]);
|
11366 | }
|
11367 |
|
11368 | attachEvents();
|
11369 |
|
11370 | if ($pageEl[0].f7PageInitialized) {
|
11371 | $pageEl.trigger('page:reinit', page);
|
11372 | router.emit('pageReinit', page);
|
11373 | return;
|
11374 | }
|
11375 |
|
11376 | $pageEl[0].f7PageInitialized = true;
|
11377 | }
|
11378 |
|
11379 | if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'previous') {
|
11380 |
|
11381 | var _$pageContent = $pageEl.find('.page-content');
|
11382 |
|
11383 | if (_$pageContent.length > 0) {
|
11384 |
|
11385 | _$pageContent = _$pageContent.filter(function (pageContentEl) {
|
11386 | return $(pageContentEl).parents('.tab:not(.tab-active)').length === 0 && !$(pageContentEl).is('.tab:not(.tab-active)');
|
11387 | });
|
11388 | }
|
11389 |
|
11390 | router.scrollHistory[page.route.url] = _$pageContent.scrollTop();
|
11391 | }
|
11392 |
|
11393 | if (restoreScrollTopOnBack && callback === 'beforeOut' && from === 'current' && to === 'next') {
|
11394 |
|
11395 | delete router.scrollHistory[page.route.url];
|
11396 | }
|
11397 |
|
11398 | $pageEl.trigger(colonName, page);
|
11399 | router.emit(camelName, page);
|
11400 |
|
11401 | if (callback === 'beforeRemove' || callback === 'beforeUnmount') {
|
11402 | detachEvents();
|
11403 |
|
11404 | if (!keepAlive) {
|
11405 | if ($pageEl[0].f7Page && $pageEl[0].f7Page.navbarEl) {
|
11406 | delete $pageEl[0].f7Page.navbarEl.f7Page;
|
11407 | }
|
11408 |
|
11409 | $pageEl[0].f7Page = null;
|
11410 | }
|
11411 | }
|
11412 | };
|
11413 |
|
11414 | _proto.saveHistory = function saveHistory() {
|
11415 | var router = this;
|
11416 | var window = getWindow();
|
11417 | router.view.history = router.history;
|
11418 |
|
11419 | if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage) {
|
11420 | window.localStorage["f7router-" + router.view.id + "-history"] = JSON.stringify(router.history);
|
11421 | }
|
11422 | };
|
11423 |
|
11424 | _proto.restoreHistory = function restoreHistory() {
|
11425 | var router = this;
|
11426 | var window = getWindow();
|
11427 |
|
11428 | if (router.params.browserHistory && router.params.browserHistoryStoreHistory && window.localStorage && window.localStorage["f7router-" + router.view.id + "-history"]) {
|
11429 | router.history = JSON.parse(window.localStorage["f7router-" + router.view.id + "-history"]);
|
11430 | router.view.history = router.history;
|
11431 | }
|
11432 | };
|
11433 |
|
11434 | _proto.clearHistory = function clearHistory() {
|
11435 | var router = this;
|
11436 | router.history = [];
|
11437 | if (router.view) router.view.history = [];
|
11438 | router.saveHistory();
|
11439 | };
|
11440 |
|
11441 | _proto.updateCurrentUrl = function updateCurrentUrl(newUrl) {
|
11442 | var router = this;
|
11443 | appRouterCheck(router, 'updateCurrentUrl');
|
11444 |
|
11445 | if (router.history.length) {
|
11446 | router.history[router.history.length - 1] = newUrl;
|
11447 | } else {
|
11448 | router.history.push(newUrl);
|
11449 | }
|
11450 |
|
11451 |
|
11452 | var _router$parseRouteUrl2 = router.parseRouteUrl(newUrl),
|
11453 | query = _router$parseRouteUrl2.query,
|
11454 | hash = _router$parseRouteUrl2.hash,
|
11455 | params = _router$parseRouteUrl2.params,
|
11456 | url = _router$parseRouteUrl2.url,
|
11457 | path = _router$parseRouteUrl2.path;
|
11458 |
|
11459 | if (router.currentRoute) {
|
11460 | extend$1(router.currentRoute, {
|
11461 | query: query,
|
11462 | hash: hash,
|
11463 | params: params,
|
11464 | url: url,
|
11465 | path: path
|
11466 | });
|
11467 | }
|
11468 |
|
11469 | if (router.params.browserHistory) {
|
11470 | var browserHistoryRoot = router.params.browserHistoryRoot || '';
|
11471 | History$2.replace(router.view.id, {
|
11472 | url: newUrl
|
11473 | }, browserHistoryRoot + router.params.browserHistorySeparator + newUrl);
|
11474 | }
|
11475 |
|
11476 |
|
11477 | router.saveHistory();
|
11478 | router.emit('routeUrlUpdate', router.currentRoute, router);
|
11479 | };
|
11480 |
|
11481 | _proto.getInitialUrl = function getInitialUrl() {
|
11482 | var router = this;
|
11483 |
|
11484 | if (router.initialUrl) {
|
11485 | return {
|
11486 | initialUrl: router.initialUrl,
|
11487 | historyRestored: router.historyRestored
|
11488 | };
|
11489 | }
|
11490 |
|
11491 | var app = router.app,
|
11492 | view = router.view;
|
11493 | var document = getDocument();
|
11494 | var window = getWindow();
|
11495 | var location = app.params.url && typeof app.params.url === 'string' && typeof URL !== 'undefined' ? new URL(app.params.url) : document.location;
|
11496 | var initialUrl = router.params.url;
|
11497 | var documentUrl = location.href.split(location.origin)[1];
|
11498 | var historyRestored;
|
11499 | var _router$params = router.params,
|
11500 | browserHistory = _router$params.browserHistory,
|
11501 | browserHistoryOnLoad = _router$params.browserHistoryOnLoad,
|
11502 | browserHistorySeparator = _router$params.browserHistorySeparator;
|
11503 | var browserHistoryRoot = router.params.browserHistoryRoot;
|
11504 |
|
11505 | if ((window.cordova || window.Capacitor && window.Capacitor.isNative) && browserHistory && !browserHistorySeparator && !browserHistoryRoot && location.pathname.indexOf('index.html')) {
|
11506 |
|
11507 | console.warn('Framework7: wrong or not complete browserHistory configuration, trying to guess browserHistoryRoot');
|
11508 | browserHistoryRoot = location.pathname.split('index.html')[0];
|
11509 | }
|
11510 |
|
11511 | if (!browserHistory || !browserHistoryOnLoad) {
|
11512 | if (!initialUrl) {
|
11513 | initialUrl = documentUrl;
|
11514 | }
|
11515 |
|
11516 | if (location.search && initialUrl.indexOf('?') < 0) {
|
11517 | initialUrl += location.search;
|
11518 | }
|
11519 |
|
11520 | if (location.hash && initialUrl.indexOf('#') < 0) {
|
11521 | initialUrl += location.hash;
|
11522 | }
|
11523 | } else {
|
11524 | if (browserHistoryRoot && documentUrl.indexOf(browserHistoryRoot) >= 0) {
|
11525 | documentUrl = documentUrl.split(browserHistoryRoot)[1];
|
11526 | if (documentUrl === '') documentUrl = '/';
|
11527 | }
|
11528 |
|
11529 | if (browserHistorySeparator.length > 0 && documentUrl.indexOf(browserHistorySeparator) >= 0) {
|
11530 | initialUrl = documentUrl.split(browserHistorySeparator)[1];
|
11531 | } else {
|
11532 | initialUrl = documentUrl;
|
11533 | }
|
11534 |
|
11535 | router.restoreHistory();
|
11536 |
|
11537 | if (router.history.indexOf(initialUrl) >= 0) {
|
11538 | router.history = router.history.slice(0, router.history.indexOf(initialUrl) + 1);
|
11539 | } else if (router.params.url === initialUrl) {
|
11540 | router.history = [initialUrl];
|
11541 | } else if (History$2.state && History$2.state[view.id] && History$2.state[view.id].url === router.history[router.history.length - 1]) {
|
11542 | initialUrl = router.history[router.history.length - 1];
|
11543 | } else {
|
11544 | router.history = [documentUrl.split(browserHistorySeparator)[0] || '/', initialUrl];
|
11545 | }
|
11546 |
|
11547 | if (router.history.length > 1) {
|
11548 | historyRestored = true;
|
11549 | } else {
|
11550 | router.history = [];
|
11551 | }
|
11552 |
|
11553 | router.saveHistory();
|
11554 | }
|
11555 |
|
11556 | router.initialUrl = initialUrl;
|
11557 | router.historyRestored = historyRestored;
|
11558 | return {
|
11559 | initialUrl: initialUrl,
|
11560 | historyRestored: historyRestored
|
11561 | };
|
11562 | };
|
11563 |
|
11564 | _proto.init = function init() {
|
11565 | var router = this;
|
11566 | var app = router.app,
|
11567 | view = router.view;
|
11568 | var document = getDocument();
|
11569 | router.mount();
|
11570 |
|
11571 | var _router$getInitialUrl = router.getInitialUrl(),
|
11572 | initialUrl = _router$getInitialUrl.initialUrl,
|
11573 | historyRestored = _router$getInitialUrl.historyRestored;
|
11574 |
|
11575 |
|
11576 | if (view && router.params.iosSwipeBack && app.theme === 'ios' || view && router.params.mdSwipeBack && app.theme === 'md' || view && router.params.auroraSwipeBack && app.theme === 'aurora') {
|
11577 | SwipeBack(router);
|
11578 | }
|
11579 |
|
11580 | var _router$params2 = router.params,
|
11581 | browserHistory = _router$params2.browserHistory,
|
11582 | browserHistoryOnLoad = _router$params2.browserHistoryOnLoad,
|
11583 | browserHistoryAnimateOnLoad = _router$params2.browserHistoryAnimateOnLoad,
|
11584 | browserHistoryInitialMatch = _router$params2.browserHistoryInitialMatch;
|
11585 | var currentRoute;
|
11586 |
|
11587 | if (router.history.length > 1) {
|
11588 |
|
11589 | var initUrl = browserHistoryInitialMatch ? initialUrl : router.history[0];
|
11590 | currentRoute = router.findMatchingRoute(initUrl);
|
11591 |
|
11592 | if (!currentRoute) {
|
11593 | currentRoute = extend$1(router.parseRouteUrl(initUrl), {
|
11594 | route: {
|
11595 | url: initUrl,
|
11596 | path: initUrl.split('?')[0]
|
11597 | }
|
11598 | });
|
11599 | }
|
11600 | } else {
|
11601 |
|
11602 | currentRoute = router.findMatchingRoute(initialUrl);
|
11603 |
|
11604 | if (!currentRoute) {
|
11605 | currentRoute = extend$1(router.parseRouteUrl(initialUrl), {
|
11606 | route: {
|
11607 | url: initialUrl,
|
11608 | path: initialUrl.split('?')[0]
|
11609 | }
|
11610 | });
|
11611 | }
|
11612 | }
|
11613 |
|
11614 | if (router.params.stackPages) {
|
11615 | router.$el.children('.page').each(function (pageEl) {
|
11616 | var $pageEl = $(pageEl);
|
11617 | router.initialPages.push($pageEl[0]);
|
11618 |
|
11619 | if (router.dynamicNavbar && $pageEl.children('.navbar').length > 0) {
|
11620 | router.initialNavbars.push($pageEl.children('.navbar')[0]);
|
11621 | }
|
11622 | });
|
11623 | }
|
11624 |
|
11625 | if (router.$el.children('.page:not(.stacked)').length === 0 && initialUrl && router.params.loadInitialPage) {
|
11626 |
|
11627 | router.navigate(initialUrl, {
|
11628 | initial: true,
|
11629 | reloadCurrent: true,
|
11630 | browserHistory: false,
|
11631 | animate: false,
|
11632 | once: {
|
11633 | modalOpen: function modalOpen() {
|
11634 | if (!historyRestored) return;
|
11635 | var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
|
11636 |
|
11637 | if (preloadPreviousPage && router.history.length > 1) {
|
11638 | router.back({
|
11639 | preload: true
|
11640 | });
|
11641 | }
|
11642 | },
|
11643 | pageAfterIn: function pageAfterIn() {
|
11644 | if (!historyRestored) return;
|
11645 | var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
|
11646 |
|
11647 | if (preloadPreviousPage && router.history.length > 1) {
|
11648 | router.back({
|
11649 | preload: true
|
11650 | });
|
11651 | }
|
11652 | }
|
11653 | }
|
11654 | });
|
11655 | } else if (router.$el.children('.page:not(.stacked)').length) {
|
11656 |
|
11657 | var hasTabRoute;
|
11658 | router.currentRoute = currentRoute;
|
11659 | router.$el.children('.page:not(.stacked)').each(function (pageEl) {
|
11660 | var $pageEl = $(pageEl);
|
11661 | var $navbarEl;
|
11662 | router.setPagePosition($pageEl, 'current');
|
11663 |
|
11664 | if (router.dynamicNavbar) {
|
11665 | $navbarEl = $pageEl.children('.navbar');
|
11666 |
|
11667 | if ($navbarEl.length > 0) {
|
11668 | if (!router.$navbarsEl.parents(document).length) {
|
11669 | router.$el.prepend(router.$navbarsEl);
|
11670 | }
|
11671 |
|
11672 | router.setNavbarPosition($navbarEl, 'current');
|
11673 | router.$navbarsEl.append($navbarEl);
|
11674 |
|
11675 | if ($navbarEl.children('.title-large').length) {
|
11676 | $navbarEl.addClass('navbar-large');
|
11677 | }
|
11678 |
|
11679 | $pageEl.children('.navbar').remove();
|
11680 | } else {
|
11681 | router.$navbarsEl.addClass('navbar-hidden');
|
11682 |
|
11683 | if ($navbarEl.children('.title-large').length) {
|
11684 | router.$navbarsEl.addClass('navbar-hidden navbar-large-hidden');
|
11685 | }
|
11686 | }
|
11687 | }
|
11688 |
|
11689 | if (router.currentRoute && router.currentRoute.route && (router.currentRoute.route.master === true || typeof router.currentRoute.route.master === 'function' && router.currentRoute.route.master(app, router)) && router.params.masterDetailBreakpoint > 0) {
|
11690 | $pageEl.addClass('page-master');
|
11691 | $pageEl.trigger('page:role', {
|
11692 | role: 'master'
|
11693 | });
|
11694 |
|
11695 | if ($navbarEl && $navbarEl.length) {
|
11696 | $navbarEl.addClass('navbar-master');
|
11697 | }
|
11698 |
|
11699 | view.checkMasterDetailBreakpoint();
|
11700 | }
|
11701 |
|
11702 | var initOptions = {
|
11703 | route: router.currentRoute
|
11704 | };
|
11705 |
|
11706 | if (router.currentRoute && router.currentRoute.route && router.currentRoute.route.options) {
|
11707 | extend$1(initOptions, router.currentRoute.route.options);
|
11708 | }
|
11709 |
|
11710 | router.currentPageEl = $pageEl[0];
|
11711 |
|
11712 | if (router.dynamicNavbar && $navbarEl.length) {
|
11713 | router.currentNavbarEl = $navbarEl[0];
|
11714 | }
|
11715 |
|
11716 | router.removeThemeElements($pageEl);
|
11717 |
|
11718 | if (router.dynamicNavbar && $navbarEl.length) {
|
11719 | router.removeThemeElements($navbarEl);
|
11720 | }
|
11721 |
|
11722 | if (initOptions.route.route.tab) {
|
11723 | hasTabRoute = true;
|
11724 | router.tabLoad(initOptions.route.route.tab, extend$1({}, initOptions));
|
11725 | }
|
11726 |
|
11727 | router.pageCallback('init', $pageEl, $navbarEl, 'current', undefined, initOptions);
|
11728 | router.pageCallback('beforeIn', $pageEl, $navbarEl, 'current', undefined, initOptions);
|
11729 | router.pageCallback('afterIn', $pageEl, $navbarEl, 'current', undefined, initOptions);
|
11730 | });
|
11731 |
|
11732 | if (historyRestored) {
|
11733 | if (browserHistoryInitialMatch) {
|
11734 | var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
|
11735 |
|
11736 | if (preloadPreviousPage && router.history.length > 1) {
|
11737 | router.back({
|
11738 | preload: true
|
11739 | });
|
11740 | }
|
11741 | } else {
|
11742 | router.navigate(initialUrl, {
|
11743 | initial: true,
|
11744 | browserHistory: false,
|
11745 | history: false,
|
11746 | animate: browserHistoryAnimateOnLoad,
|
11747 | once: {
|
11748 | pageAfterIn: function pageAfterIn() {
|
11749 | var preloadPreviousPage = router.params.preloadPreviousPage || router.params[app.theme + "SwipeBack"];
|
11750 |
|
11751 | if (preloadPreviousPage && router.history.length > 2) {
|
11752 | router.back({
|
11753 | preload: true
|
11754 | });
|
11755 | }
|
11756 | }
|
11757 | }
|
11758 | });
|
11759 | }
|
11760 | }
|
11761 |
|
11762 | if (!historyRestored && !hasTabRoute) {
|
11763 | router.history.push(initialUrl);
|
11764 | router.saveHistory();
|
11765 | }
|
11766 | }
|
11767 |
|
11768 | if (initialUrl && browserHistory && browserHistoryOnLoad && (!History$2.state || !History$2.state[view.id])) {
|
11769 | History$2.initViewState(view.id, {
|
11770 | url: initialUrl
|
11771 | });
|
11772 | }
|
11773 |
|
11774 | router.emit('local::init routerInit', router);
|
11775 | };
|
11776 |
|
11777 | _proto.destroy = function destroy() {
|
11778 | var router = this;
|
11779 | router.emit('local::destroy routerDestroy', router);
|
11780 |
|
11781 | Object.keys(router).forEach(function (routerProp) {
|
11782 | router[routerProp] = null;
|
11783 | delete router[routerProp];
|
11784 | });
|
11785 | router = null;
|
11786 | };
|
11787 |
|
11788 | return Router;
|
11789 | }(Framework7Class);
|
11790 |
|
11791 |
|
11792 | Router.prototype.navigate = navigate;
|
11793 | Router.prototype.refreshPage = refreshPage;
|
11794 |
|
11795 | Router.prototype.tabLoad = tabLoad;
|
11796 | Router.prototype.tabRemove = tabRemove;
|
11797 |
|
11798 | Router.prototype.modalLoad = modalLoad;
|
11799 | Router.prototype.modalRemove = modalRemove;
|
11800 |
|
11801 | Router.prototype.back = back;
|
11802 |
|
11803 | Router.prototype.clearPreviousHistory = clearPreviousHistory;
|
11804 |
|
11805 | var RouterModule = {
|
11806 | name: 'router',
|
11807 | static: {
|
11808 | Router: Router
|
11809 | },
|
11810 | instance: {
|
11811 | cache: {
|
11812 | xhr: [],
|
11813 | templates: [],
|
11814 | components: []
|
11815 | }
|
11816 | },
|
11817 | create: function create() {
|
11818 | var instance = this;
|
11819 |
|
11820 | if (instance.app) {
|
11821 |
|
11822 | if (instance.params.router) {
|
11823 | instance.router = new Router(instance.app, instance);
|
11824 | }
|
11825 | } else {
|
11826 |
|
11827 | instance.router = new Router(instance);
|
11828 | }
|
11829 | }
|
11830 | };
|
11831 |
|
11832 | function resizableView(view) {
|
11833 | var app = view.app;
|
11834 | var support = getSupport$1();
|
11835 | if (view.resizableInitialized) return;
|
11836 | extend$1(view, {
|
11837 | resizable: true,
|
11838 | resizableWidth: null,
|
11839 | resizableInitialized: true
|
11840 | });
|
11841 | var $htmlEl = $('html');
|
11842 | var $el = view.$el;
|
11843 | if (!$el) return;
|
11844 | var $resizeHandlerEl;
|
11845 | var isTouched;
|
11846 | var isMoved;
|
11847 | var touchesStart = {};
|
11848 | var touchesDiff;
|
11849 | var width;
|
11850 | var minWidth;
|
11851 | var maxWidth;
|
11852 |
|
11853 | function transformCSSWidth(v) {
|
11854 | if (!v) return null;
|
11855 |
|
11856 | if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {
|
11857 | return parseInt(v, 10) / 100 * app.width;
|
11858 | }
|
11859 |
|
11860 | var newV = parseInt(v, 10);
|
11861 | if (Number.isNaN(newV)) return null;
|
11862 | return newV;
|
11863 | }
|
11864 |
|
11865 | function isResizable() {
|
11866 | return view.resizable && $el.hasClass('view-resizable') && $el.hasClass('view-master-detail');
|
11867 | }
|
11868 |
|
11869 | function handleTouchStart(e) {
|
11870 | if (!isResizable()) return;
|
11871 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
11872 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
11873 | isMoved = false;
|
11874 | isTouched = true;
|
11875 | var $pageMasterEl = $el.children('.page-master');
|
11876 | minWidth = transformCSSWidth($pageMasterEl.css('min-width'));
|
11877 | maxWidth = transformCSSWidth($pageMasterEl.css('max-width'));
|
11878 | }
|
11879 |
|
11880 | function handleTouchMove(e) {
|
11881 | if (!isTouched) return;
|
11882 | e.f7PreventSwipePanel = true;
|
11883 | var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
11884 |
|
11885 | if (!isMoved) {
|
11886 | width = $resizeHandlerEl[0].offsetLeft + $resizeHandlerEl[0].offsetWidth;
|
11887 | $el.addClass('view-resizing');
|
11888 | $htmlEl.css('cursor', 'col-resize');
|
11889 | }
|
11890 |
|
11891 | isMoved = true;
|
11892 | e.preventDefault();
|
11893 | touchesDiff = pageX - touchesStart.x;
|
11894 | var newWidth = width + touchesDiff;
|
11895 |
|
11896 | if (minWidth && !Number.isNaN(minWidth)) {
|
11897 | newWidth = Math.max(newWidth, minWidth);
|
11898 | }
|
11899 |
|
11900 | if (maxWidth && !Number.isNaN(maxWidth)) {
|
11901 | newWidth = Math.min(newWidth, maxWidth);
|
11902 | }
|
11903 |
|
11904 | newWidth = Math.min(Math.max(newWidth, 0), app.width);
|
11905 | view.resizableWidth = newWidth;
|
11906 | $htmlEl[0].style.setProperty('--f7-page-master-width', newWidth + "px");
|
11907 | $el.trigger('view:resize', newWidth);
|
11908 | view.emit('local::resize viewResize', view, newWidth);
|
11909 | }
|
11910 |
|
11911 | function handleTouchEnd() {
|
11912 | $('html').css('cursor', '');
|
11913 |
|
11914 | if (!isTouched || !isMoved) {
|
11915 | isTouched = false;
|
11916 | isMoved = false;
|
11917 | return;
|
11918 | }
|
11919 |
|
11920 | isTouched = false;
|
11921 | isMoved = false;
|
11922 | $htmlEl[0].style.setProperty('--f7-page-master-width', view.resizableWidth + "px");
|
11923 | $el.removeClass('view-resizing');
|
11924 | }
|
11925 |
|
11926 | function handleResize() {
|
11927 | if (!view.resizableWidth) return;
|
11928 | minWidth = transformCSSWidth($resizeHandlerEl.css('min-width'));
|
11929 | maxWidth = transformCSSWidth($resizeHandlerEl.css('max-width'));
|
11930 |
|
11931 | if (minWidth && !Number.isNaN(minWidth) && view.resizableWidth < minWidth) {
|
11932 | view.resizableWidth = Math.max(view.resizableWidth, minWidth);
|
11933 | }
|
11934 |
|
11935 | if (maxWidth && !Number.isNaN(maxWidth) && view.resizableWidth > maxWidth) {
|
11936 | view.resizableWidth = Math.min(view.resizableWidth, maxWidth);
|
11937 | }
|
11938 |
|
11939 | view.resizableWidth = Math.min(Math.max(view.resizableWidth, 0), app.width);
|
11940 | $htmlEl[0].style.setProperty('--f7-page-master-width', view.resizableWidth + "px");
|
11941 | }
|
11942 |
|
11943 | $resizeHandlerEl = view.$el.children('.view-resize-handler');
|
11944 |
|
11945 | if (!$resizeHandlerEl.length) {
|
11946 | view.$el.append('<div class="view-resize-handler"></div>');
|
11947 | $resizeHandlerEl = view.$el.children('.view-resize-handler');
|
11948 | }
|
11949 |
|
11950 | view.$resizeHandlerEl = $resizeHandlerEl;
|
11951 | $el.addClass('view-resizable');
|
11952 |
|
11953 | var passive = support.passiveListener ? {
|
11954 | passive: true
|
11955 | } : false;
|
11956 | view.$el.on(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);
|
11957 | app.on('touchmove:active', handleTouchMove);
|
11958 | app.on('touchend:passive', handleTouchEnd);
|
11959 | app.on('resize', handleResize);
|
11960 | view.on('beforeOpen', handleResize);
|
11961 | view.once('viewDestroy', function () {
|
11962 | $el.removeClass('view-resizable');
|
11963 | view.$resizeHandlerEl.remove();
|
11964 | view.$el.off(app.touchEvents.start, '.view-resize-handler', handleTouchStart, passive);
|
11965 | app.off('touchmove:active', handleTouchMove);
|
11966 | app.off('touchend:passive', handleTouchEnd);
|
11967 | app.off('resize', handleResize);
|
11968 | view.off('beforeOpen', handleResize);
|
11969 | });
|
11970 | }
|
11971 |
|
11972 | var View$1 = function (_Framework7Class) {
|
11973 | _inheritsLoose(View, _Framework7Class);
|
11974 |
|
11975 | function View(app, el, viewParams) {
|
11976 | var _this;
|
11977 |
|
11978 | if (viewParams === void 0) {
|
11979 | viewParams = {};
|
11980 | }
|
11981 |
|
11982 | _this = _Framework7Class.call(this, viewParams, [app]) || this;
|
11983 |
|
11984 | var view = _assertThisInitialized(_this);
|
11985 |
|
11986 | var ssr = view.params.routerId;
|
11987 | var defaults = {
|
11988 | routes: [],
|
11989 | routesAdd: []
|
11990 | };
|
11991 |
|
11992 | if (!ssr) {
|
11993 | var $el = $(el);
|
11994 |
|
11995 | if (!$el.length) {
|
11996 | var message = "Framework7: can't create a View instance because ";
|
11997 | message += typeof el === 'string' ? "the selector \"" + el + "\" didn't match any element" : 'el must be an HTMLElement or Dom7 object';
|
11998 | throw new Error(message);
|
11999 | }
|
12000 | }
|
12001 |
|
12002 |
|
12003 | view.params = extend$1({
|
12004 | el: el
|
12005 | }, defaults, app.params.view, viewParams);
|
12006 |
|
12007 | if (view.params.routes.length > 0) {
|
12008 | view.routes = view.params.routes;
|
12009 | } else {
|
12010 | view.routes = [].concat(app.routes, view.params.routesAdd);
|
12011 | }
|
12012 |
|
12013 |
|
12014 | extend$1(false, view, {
|
12015 | app: app,
|
12016 | name: view.params.name,
|
12017 | main: view.params.main,
|
12018 | history: [],
|
12019 | scrollHistory: {}
|
12020 | });
|
12021 |
|
12022 | view.useModules();
|
12023 |
|
12024 | app.views.push(view);
|
12025 |
|
12026 | if (view.main) {
|
12027 | app.views.main = view;
|
12028 | }
|
12029 |
|
12030 | if (view.name) {
|
12031 | app.views[view.name] = view;
|
12032 | }
|
12033 |
|
12034 |
|
12035 | view.index = app.views.indexOf(view);
|
12036 |
|
12037 | var viewId;
|
12038 |
|
12039 | if (view.name) {
|
12040 | viewId = "view_" + view.name;
|
12041 | } else if (view.main) {
|
12042 | viewId = 'view_main';
|
12043 | } else {
|
12044 | viewId = "view_" + view.index;
|
12045 | }
|
12046 |
|
12047 | view.id = viewId;
|
12048 |
|
12049 | if (!view.params.init) {
|
12050 | return view || _assertThisInitialized(_this);
|
12051 | }
|
12052 |
|
12053 |
|
12054 | if (app.initialized) {
|
12055 | view.init();
|
12056 | } else {
|
12057 | app.on('init', function () {
|
12058 | view.init();
|
12059 | });
|
12060 | }
|
12061 |
|
12062 | return view || _assertThisInitialized(_this);
|
12063 | }
|
12064 |
|
12065 | var _proto = View.prototype;
|
12066 |
|
12067 | _proto.destroy = function destroy() {
|
12068 | var view = this;
|
12069 | var app = view.app;
|
12070 | view.$el.trigger('view:beforedestroy');
|
12071 | view.emit('local::beforeDestroy viewBeforeDestroy', view);
|
12072 | app.off('resize', view.checkMasterDetailBreakpoint);
|
12073 |
|
12074 | if (view.main) {
|
12075 | app.views.main = null;
|
12076 | delete app.views.main;
|
12077 | } else if (view.name) {
|
12078 | app.views[view.name] = null;
|
12079 | delete app.views[view.name];
|
12080 | }
|
12081 |
|
12082 | view.$el[0].f7View = null;
|
12083 | delete view.$el[0].f7View;
|
12084 | app.views.splice(app.views.indexOf(view), 1);
|
12085 |
|
12086 | if (view.params.router && view.router) {
|
12087 | view.router.destroy();
|
12088 | }
|
12089 |
|
12090 | view.emit('local::destroy viewDestroy', view);
|
12091 |
|
12092 | Object.keys(view).forEach(function (viewProp) {
|
12093 | view[viewProp] = null;
|
12094 | delete view[viewProp];
|
12095 | });
|
12096 | view = null;
|
12097 | };
|
12098 |
|
12099 | _proto.checkMasterDetailBreakpoint = function checkMasterDetailBreakpoint(force) {
|
12100 | var view = this;
|
12101 | var app = view.app;
|
12102 | var wasMasterDetail = view.$el.hasClass('view-master-detail');
|
12103 | var isMasterDetail = app.width >= view.params.masterDetailBreakpoint && view.$el.children('.page-master').length;
|
12104 |
|
12105 | if (typeof force === 'undefined' && isMasterDetail || force === true) {
|
12106 | view.$el.addClass('view-master-detail');
|
12107 |
|
12108 | if (!wasMasterDetail) {
|
12109 | view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);
|
12110 | view.$el.trigger('view:masterDetailBreakpoint');
|
12111 | }
|
12112 | } else {
|
12113 | view.$el.removeClass('view-master-detail');
|
12114 |
|
12115 | if (wasMasterDetail) {
|
12116 | view.emit('local::masterDetailBreakpoint viewMasterDetailBreakpoint', view);
|
12117 | view.$el.trigger('view:masterDetailBreakpoint');
|
12118 | }
|
12119 | }
|
12120 | };
|
12121 |
|
12122 | _proto.initMasterDetail = function initMasterDetail() {
|
12123 | var view = this;
|
12124 | var app = view.app;
|
12125 | view.checkMasterDetailBreakpoint = view.checkMasterDetailBreakpoint.bind(view);
|
12126 | view.checkMasterDetailBreakpoint();
|
12127 |
|
12128 | if (view.params.masterDetailResizable) {
|
12129 | resizableView(view);
|
12130 | }
|
12131 |
|
12132 | app.on('resize', view.checkMasterDetailBreakpoint);
|
12133 | };
|
12134 |
|
12135 | _proto.mount = function mount(viewEl) {
|
12136 | var view = this;
|
12137 | var app = view.app;
|
12138 | var el = view.params.el || viewEl;
|
12139 | var $el = $(el);
|
12140 |
|
12141 | var selector;
|
12142 | if (typeof el === 'string') selector = el;else {
|
12143 |
|
12144 | selector = ($el.attr('id') ? "#" + $el.attr('id') : '') + ($el.attr('class') ? "." + $el.attr('class').replace(/ /g, '.').replace('.active', '') : '');
|
12145 | }
|
12146 |
|
12147 | var $navbarsEl;
|
12148 |
|
12149 | if (app.theme === 'ios' && view.params.iosDynamicNavbar) {
|
12150 | $navbarsEl = $el.children('.navbars').eq(0);
|
12151 |
|
12152 | if ($navbarsEl.length === 0) {
|
12153 | $navbarsEl = $('<div class="navbars"></div>');
|
12154 | }
|
12155 | }
|
12156 |
|
12157 | extend$1(view, {
|
12158 | $el: $el,
|
12159 | el: $el[0],
|
12160 | main: view.main || $el.hasClass('view-main'),
|
12161 | $navbarsEl: $navbarsEl,
|
12162 | navbarsEl: $navbarsEl ? $navbarsEl[0] : undefined,
|
12163 | selector: selector
|
12164 | });
|
12165 |
|
12166 | if (view.main) {
|
12167 | app.views.main = view;
|
12168 | }
|
12169 |
|
12170 |
|
12171 | if ($el && $el[0]) {
|
12172 | $el[0].f7View = view;
|
12173 | }
|
12174 |
|
12175 | view.emit('local::mount viewMount', view);
|
12176 | };
|
12177 |
|
12178 | _proto.init = function init(viewEl) {
|
12179 | var view = this;
|
12180 | view.mount(viewEl);
|
12181 |
|
12182 | if (view.params.router) {
|
12183 | if (view.params.masterDetailBreakpoint > 0) {
|
12184 | view.initMasterDetail();
|
12185 | }
|
12186 |
|
12187 | view.router.init();
|
12188 | view.$el.trigger('view:init');
|
12189 | view.emit('local::init viewInit', view);
|
12190 | }
|
12191 | };
|
12192 |
|
12193 | return View;
|
12194 | }(Framework7Class);
|
12195 |
|
12196 |
|
12197 | View$1.use(RouterModule);
|
12198 |
|
12199 | function initClicks(app) {
|
12200 | function handleClicks(e) {
|
12201 | var window = getWindow();
|
12202 | var $clickedEl = $(e.target);
|
12203 | var $clickedLinkEl = $clickedEl.closest('a');
|
12204 | var isLink = $clickedLinkEl.length > 0;
|
12205 | var url = isLink && $clickedLinkEl.attr('href');
|
12206 |
|
12207 | if (isLink) {
|
12208 | if ($clickedLinkEl.is(app.params.clicks.externalLinks) ||
|
12209 | url && url.indexOf('javascript:') >= 0) {
|
12210 | var target = $clickedLinkEl.attr('target');
|
12211 |
|
12212 | if (url && window.cordova && window.cordova.InAppBrowser && (target === '_system' || target === '_blank')) {
|
12213 | e.preventDefault();
|
12214 | window.cordova.InAppBrowser.open(url, target);
|
12215 | } else if (url && window.Capacitor && window.Capacitor.Plugins && window.Capacitor.Plugins.Browser && (target === '_system' || target === '_blank')) {
|
12216 | e.preventDefault();
|
12217 | window.Capacitor.Plugins.Browser.open({
|
12218 | url: url
|
12219 | });
|
12220 | }
|
12221 |
|
12222 | return;
|
12223 | }
|
12224 | }
|
12225 |
|
12226 |
|
12227 | Object.keys(app.modules).forEach(function (moduleName) {
|
12228 | var moduleClicks = app.modules[moduleName].clicks;
|
12229 | if (!moduleClicks) return;
|
12230 | if (e.preventF7Router) return;
|
12231 | Object.keys(moduleClicks).forEach(function (clickSelector) {
|
12232 | var matchingClickedElement = $clickedEl.closest(clickSelector).eq(0);
|
12233 |
|
12234 | if (matchingClickedElement.length > 0) {
|
12235 | moduleClicks[clickSelector].call(app, matchingClickedElement, matchingClickedElement.dataset(), e);
|
12236 | }
|
12237 | });
|
12238 | });
|
12239 |
|
12240 | var clickedLinkData = {};
|
12241 |
|
12242 | if (isLink) {
|
12243 | e.preventDefault();
|
12244 | clickedLinkData = $clickedLinkEl.dataset();
|
12245 | }
|
12246 |
|
12247 | clickedLinkData.clickedEl = $clickedLinkEl[0];
|
12248 |
|
12249 | if (e.preventF7Router) return;
|
12250 | if ($clickedLinkEl.hasClass('prevent-router') || $clickedLinkEl.hasClass('router-prevent')) return;
|
12251 | var validUrl = url && url.length > 0 && url[0] !== '#';
|
12252 |
|
12253 | if (validUrl || $clickedLinkEl.hasClass('back')) {
|
12254 | var view;
|
12255 |
|
12256 | if (clickedLinkData.view && clickedLinkData.view === 'current') {
|
12257 | view = app.views.current;
|
12258 | } else if (clickedLinkData.view) {
|
12259 | view = $(clickedLinkData.view)[0].f7View;
|
12260 | } else {
|
12261 | view = $clickedEl.parents('.view')[0] && $clickedEl.parents('.view')[0].f7View;
|
12262 |
|
12263 | if (!$clickedLinkEl.hasClass('back') && view && view.params.linksView) {
|
12264 | if (typeof view.params.linksView === 'string') view = $(view.params.linksView)[0].f7View;else if (view.params.linksView instanceof View$1) view = view.params.linksView;
|
12265 | }
|
12266 | }
|
12267 |
|
12268 | if (!view) {
|
12269 | if (app.views.main) view = app.views.main;
|
12270 | }
|
12271 |
|
12272 | if (!view || !view.router) return;
|
12273 |
|
12274 | if ($clickedLinkEl[0].f7RouteProps) {
|
12275 | clickedLinkData.props = $clickedLinkEl[0].f7RouteProps;
|
12276 | }
|
12277 |
|
12278 | if ($clickedLinkEl.hasClass('back')) view.router.back(url, clickedLinkData);else view.router.navigate(url, clickedLinkData);
|
12279 | }
|
12280 | }
|
12281 |
|
12282 | app.on('click', handleClicks);
|
12283 | }
|
12284 |
|
12285 | var ClicksModule = {
|
12286 | name: 'clicks',
|
12287 | params: {
|
12288 | clicks: {
|
12289 |
|
12290 | externalLinks: '.external'
|
12291 | }
|
12292 | },
|
12293 | on: {
|
12294 | init: function init() {
|
12295 | var app = this;
|
12296 | initClicks(app);
|
12297 | }
|
12298 | }
|
12299 | };
|
12300 |
|
12301 | var RouterComponentLoaderModule = {
|
12302 | name: 'routerComponentLoader',
|
12303 | proto: {
|
12304 | componentLoader: function componentLoader(component, componentUrl, options, resolve, reject) {
|
12305 | if (options === void 0) {
|
12306 | options = {};
|
12307 | }
|
12308 |
|
12309 | var router = this;
|
12310 | var app = router.app;
|
12311 | var url = typeof component === 'string' ? component : componentUrl;
|
12312 | var compiledUrl = router.replaceRequestUrlParams(url, options);
|
12313 |
|
12314 | function compile(componentFunction) {
|
12315 | var context = options.context || {};
|
12316 | if (typeof context === 'function') context = context.call(router);else if (typeof context === 'string') {
|
12317 | try {
|
12318 | context = JSON.parse(context);
|
12319 | } catch (err) {
|
12320 | reject(err);
|
12321 | throw err;
|
12322 | }
|
12323 | }
|
12324 | var componentContext = merge({}, context, {
|
12325 | f7route: options.route,
|
12326 | f7router: router
|
12327 | });
|
12328 | var componentProps = merge(options.route ? options.route.params || {} : {}, options.props || {}, options.routeProps || {});
|
12329 | var componentEl;
|
12330 | var componentRoot;
|
12331 |
|
12332 | if (options.componentOptions && options.componentOptions.el) {
|
12333 | componentEl = options.componentOptions.el;
|
12334 | }
|
12335 |
|
12336 | if (options.componentOptions && options.componentOptions.root) {
|
12337 | componentRoot = options.componentOptions.root;
|
12338 | }
|
12339 |
|
12340 | app.component.create(componentFunction, componentProps, {
|
12341 | context: componentContext,
|
12342 | el: componentEl,
|
12343 | root: componentRoot
|
12344 | }).then(function (createdComponent) {
|
12345 | resolve(createdComponent.el);
|
12346 | }).catch(function (err) {
|
12347 | reject(err);
|
12348 | throw new Error(err);
|
12349 | });
|
12350 | }
|
12351 |
|
12352 | var cachedComponent;
|
12353 |
|
12354 | if (compiledUrl && router.params.componentCache) {
|
12355 | router.cache.components.forEach(function (cached) {
|
12356 | if (cached.url === compiledUrl) cachedComponent = cached.component;
|
12357 | });
|
12358 | }
|
12359 |
|
12360 | if (compiledUrl && cachedComponent) {
|
12361 | compile(cachedComponent);
|
12362 | } else if (compiledUrl && !cachedComponent) {
|
12363 |
|
12364 | if (router.xhrAbortController) {
|
12365 | router.xhrAbortController.abort();
|
12366 | router.xhrAbortController = false;
|
12367 | }
|
12368 |
|
12369 | router.xhrRequest(url, options).then(function (loadedComponent) {
|
12370 | var parsedComponent = app.component.parse(loadedComponent);
|
12371 |
|
12372 | if (router.params.componentCache) {
|
12373 | router.cache.components.push({
|
12374 | url: compiledUrl,
|
12375 | component: parsedComponent
|
12376 | });
|
12377 | }
|
12378 |
|
12379 | compile(parsedComponent);
|
12380 | }).catch(function (err) {
|
12381 | reject();
|
12382 | throw err;
|
12383 | });
|
12384 | } else {
|
12385 | compile(component);
|
12386 | }
|
12387 | },
|
12388 | modalComponentLoader: function modalComponentLoader(_temp) {
|
12389 | var _ref = _temp === void 0 ? {} : _temp,
|
12390 | component = _ref.component,
|
12391 | componentUrl = _ref.componentUrl,
|
12392 | options = _ref.options,
|
12393 | resolve = _ref.resolve,
|
12394 | reject = _ref.reject;
|
12395 |
|
12396 | var router = this;
|
12397 | router.componentLoader(component, componentUrl, options, function (el) {
|
12398 | resolve(el);
|
12399 | }, reject);
|
12400 | },
|
12401 | tabComponentLoader: function tabComponentLoader(_temp2) {
|
12402 | var _ref2 = _temp2 === void 0 ? {} : _temp2,
|
12403 | component = _ref2.component,
|
12404 | componentUrl = _ref2.componentUrl,
|
12405 | options = _ref2.options,
|
12406 | resolve = _ref2.resolve,
|
12407 | reject = _ref2.reject;
|
12408 |
|
12409 | var router = this;
|
12410 | router.componentLoader(component, componentUrl, options, function (el) {
|
12411 | resolve(el);
|
12412 | }, reject);
|
12413 | },
|
12414 | pageComponentLoader: function pageComponentLoader(_temp3) {
|
12415 | var _ref3 = _temp3 === void 0 ? {} : _temp3,
|
12416 | component = _ref3.component,
|
12417 | componentUrl = _ref3.componentUrl,
|
12418 | options = _ref3.options,
|
12419 | resolve = _ref3.resolve,
|
12420 | reject = _ref3.reject;
|
12421 |
|
12422 | var router = this;
|
12423 | router.componentLoader(component, componentUrl, options, function (el, newOptions) {
|
12424 | if (newOptions === void 0) {
|
12425 | newOptions = {};
|
12426 | }
|
12427 |
|
12428 | resolve(el, newOptions);
|
12429 | }, reject);
|
12430 | }
|
12431 | }
|
12432 | };
|
12433 |
|
12434 | var n = function n(t, s, r, e) {
|
12435 | var u;
|
12436 | s[0] = 0;
|
12437 |
|
12438 | for (var h = 1; h < s.length; h++) {
|
12439 | var p = s[h++],
|
12440 | a = s[h] ? (s[0] |= p ? 1 : 2, r[s[h++]]) : s[++h];
|
12441 | 3 === p ? e[0] = a : 4 === p ? e[1] = Object.assign(e[1] || {}, a) : 5 === p ? (e[1] = e[1] || {})[s[++h]] = a : 6 === p ? e[1][s[++h]] += a + "" : p ? (u = t.apply(a, n(t, a, r, ["", null])), e.push(u), a[0] ? s[0] |= 2 : (s[h - 2] = 0, s[h] = u)) : e.push(a);
|
12442 | }
|
12443 |
|
12444 | return e;
|
12445 | },
|
12446 | t = new Map();
|
12447 |
|
12448 | function htm (s) {
|
12449 | var r = t.get(this);
|
12450 | return r || (r = new Map(), t.set(this, r)), (r = n(this, r.get(s) || (r.set(s, r = function (n) {
|
12451 | for (var t, s, r = 1, e = "", u = "", h = [0], p = function p(n) {
|
12452 | 1 === r && (n || (e = e.replace(/^\s*\n\s*|\s*\n\s*$/g, ""))) ? h.push(0, n, e) : 3 === r && (n || e) ? (h.push(3, n, e), r = 2) : 2 === r && "..." === e && n ? h.push(4, n, 0) : 2 === r && e && !n ? h.push(5, 0, !0, e) : r >= 5 && ((e || !n && 5 === r) && (h.push(r, 0, e, s), r = 6), n && (h.push(r, n, 0, s), r = 6)), e = "";
|
12453 | }, a = 0; a < n.length; a++) {
|
12454 | a && (1 === r && p(), p(a));
|
12455 |
|
12456 | for (var l = 0; l < n[a].length; l++) {
|
12457 | t = n[a][l], 1 === r ? "<" === t ? (p(), h = [h], r = 3) : e += t : 4 === r ? "--" === e && ">" === t ? (r = 1, e = "") : e = t + e[0] : u ? t === u ? u = "" : e += t : '"' === t || "'" === t ? u = t : ">" === t ? (p(), r = 1) : r && ("=" === t ? (r = 5, s = e, e = "") : "/" === t && (r < 5 || ">" === n[a][l + 1]) ? (p(), 3 === r && (h = h[0]), r = h, (h = h[0]).push(2, 0, r), r = 0) : " " === t || "\t" === t || "\n" === t || "\r" === t ? (p(), r = 2) : e += t), 3 === r && "!--" === e && (r = 4, h = h[0]);
|
12458 | }
|
12459 | }
|
12460 |
|
12461 | return p(), h;
|
12462 | }(s)), r), arguments, [])).length > 1 ? r : r[0];
|
12463 | }
|
12464 |
|
12465 | var ignoreChildren$1 = [false, null, '', undefined];
|
12466 |
|
12467 | var h$1 = function h(type, props) {
|
12468 | for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
12469 | children[_key - 2] = arguments[_key];
|
12470 | }
|
12471 |
|
12472 | return {
|
12473 | type: type,
|
12474 | props: props || {},
|
12475 | children: flattenArray(children.filter(function (child) {
|
12476 | return ignoreChildren$1.indexOf(child) < 0;
|
12477 | }))
|
12478 | };
|
12479 | };
|
12480 |
|
12481 | var $h = htm.bind(h$1);
|
12482 |
|
12483 | function vnode(sel, data, children, text, elm) {
|
12484 | var key = data === undefined ? undefined : data.key;
|
12485 | return {
|
12486 | sel: sel,
|
12487 | data: data,
|
12488 | children: children,
|
12489 | text: text,
|
12490 | elm: elm,
|
12491 | key: key
|
12492 | };
|
12493 | }
|
12494 |
|
12495 | var array = Array.isArray;
|
12496 | function primitive(s) {
|
12497 | return typeof s === 'string' || typeof s === 'number';
|
12498 | }
|
12499 |
|
12500 | function addNS(data, children, sel) {
|
12501 | data.ns = 'http://www.w3.org/2000/svg';
|
12502 |
|
12503 | if (sel !== 'foreignObject' && children !== undefined) {
|
12504 | for (var i = 0; i < children.length; ++i) {
|
12505 | var childData = children[i].data;
|
12506 |
|
12507 | if (childData !== undefined) {
|
12508 | addNS(childData, children[i].children, children[i].sel);
|
12509 | }
|
12510 | }
|
12511 | }
|
12512 | }
|
12513 |
|
12514 | function h(sel, b, c) {
|
12515 | var data = {},
|
12516 | children,
|
12517 | text,
|
12518 | i;
|
12519 |
|
12520 | if (c !== undefined) {
|
12521 | data = b;
|
12522 |
|
12523 | if (array(c)) {
|
12524 | children = c;
|
12525 | } else if (primitive(c)) {
|
12526 | text = c;
|
12527 | } else if (c && c.sel) {
|
12528 | children = [c];
|
12529 | }
|
12530 | } else if (b !== undefined) {
|
12531 | if (array(b)) {
|
12532 | children = b;
|
12533 | } else if (primitive(b)) {
|
12534 | text = b;
|
12535 | } else if (b && b.sel) {
|
12536 | children = [b];
|
12537 | } else {
|
12538 | data = b;
|
12539 | }
|
12540 | }
|
12541 |
|
12542 | if (array(children)) {
|
12543 | for (i = 0; i < children.length; ++i) {
|
12544 | if (primitive(children[i])) children[i] = vnode(undefined, undefined, undefined, children[i], undefined);
|
12545 | }
|
12546 | }
|
12547 |
|
12548 | if (sel[0] === 's' && sel[1] === 'v' && sel[2] === 'g' && (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {
|
12549 | addNS(data, children, sel);
|
12550 | }
|
12551 |
|
12552 | return vnode(sel, data, children, text, undefined);
|
12553 | }
|
12554 | ;
|
12555 |
|
12556 | var customComponents = {};
|
12557 |
|
12558 | var SELF_CLOSING = 'area base br col command embed hr img input keygen link menuitem meta param source track wbr'.split(' ');
|
12559 | var PROPS_ATTRS = 'hidden checked disabled readonly selected autofocus autoplay required multiple value indeterminate routeProps innerHTML'.split(' ');
|
12560 | var BOOLEAN_PROPS = 'hidden checked disabled readonly selected autofocus autoplay required multiple readOnly indeterminate'.split(' ');
|
12561 |
|
12562 | var getTagName = function getTagName(treeNode) {
|
12563 | return typeof treeNode.type === 'function' ? treeNode.type.name || 'CustomComponent' : treeNode.type;
|
12564 | };
|
12565 |
|
12566 | var toCamelCase = function toCamelCase(name) {
|
12567 | return name.split('-').map(function (word, index) {
|
12568 | if (index === 0) return word.toLowerCase();
|
12569 | return word[0].toUpperCase() + word.substr(1);
|
12570 | }).join('');
|
12571 | };
|
12572 |
|
12573 | var propsFromAttrs = function propsFromAttrs() {
|
12574 | var context = {};
|
12575 |
|
12576 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
12577 | args[_key] = arguments[_key];
|
12578 | }
|
12579 |
|
12580 | args.forEach(function (obj) {
|
12581 | if (obj === void 0) {
|
12582 | obj = {};
|
12583 | }
|
12584 |
|
12585 | Object.keys(obj).forEach(function (key) {
|
12586 | context[toCamelCase(key)] = obj[key];
|
12587 | });
|
12588 | });
|
12589 | return context;
|
12590 | };
|
12591 |
|
12592 | var createCustomComponent = function createCustomComponent(_ref) {
|
12593 | var f7 = _ref.f7,
|
12594 | treeNode = _ref.treeNode,
|
12595 | vnode = _ref.vnode,
|
12596 | data = _ref.data;
|
12597 | var component = typeof treeNode.type === 'function' ? treeNode.type : customComponents[treeNode.type];
|
12598 | f7.component.create(component, propsFromAttrs(data.attrs || {}, data.props || {}), {
|
12599 | el: vnode.elm,
|
12600 | children: treeNode.children
|
12601 | }).then(function (c) {
|
12602 | if (vnode.data && vnode.data.on && c && c.$el) {
|
12603 | Object.keys(vnode.data.on).forEach(function (eventName) {
|
12604 | c.$el.on(eventName, vnode.data.on[eventName]);
|
12605 | });
|
12606 | }
|
12607 |
|
12608 |
|
12609 | vnode.elm.__component__ = c;
|
12610 | });
|
12611 | };
|
12612 |
|
12613 | var updateCustomComponent = function updateCustomComponent(vnode) {
|
12614 |
|
12615 | var component = vnode && vnode.elm && vnode.elm.__component__;
|
12616 | if (!component) return;
|
12617 | var newProps = propsFromAttrs(vnode.data.attrs || {}, vnode.data.props || {});
|
12618 | component.children = vnode.data.treeNode.children;
|
12619 | Object.assign(component.props, newProps);
|
12620 | component.update();
|
12621 | };
|
12622 |
|
12623 | var destroyCustomComponent = function destroyCustomComponent(vnode) {
|
12624 |
|
12625 | var component = vnode && vnode.elm && vnode.elm.__component__;
|
12626 |
|
12627 | if (component) {
|
12628 | var el = component.el,
|
12629 | $el = component.$el;
|
12630 |
|
12631 | if (vnode.data && vnode.data.on && $el) {
|
12632 | Object.keys(vnode.data.on).forEach(function (eventName) {
|
12633 | $el.off(eventName, vnode.data.on[eventName]);
|
12634 | });
|
12635 | }
|
12636 |
|
12637 | if (component.destroy) component.destroy();
|
12638 | if (el && el.parentNode) el.parentNode.removeChild(el);
|
12639 | delete vnode.elm.__component__;
|
12640 | }
|
12641 | };
|
12642 |
|
12643 | var isCustomComponent = function isCustomComponent(treeNodeType) {
|
12644 | return typeof treeNodeType === 'function' || treeNodeType && treeNodeType.indexOf('-') > 0 && customComponents[treeNodeType];
|
12645 | };
|
12646 |
|
12647 | function getHooks(treeNode, data, f7, initial, isRoot) {
|
12648 | var hooks = {};
|
12649 | var insert = [];
|
12650 | var destroy = [];
|
12651 | var update = [];
|
12652 | var postpatch = [];
|
12653 | var isFakeElement = false;
|
12654 | var tagName = getTagName(treeNode);
|
12655 |
|
12656 | if (data && data.attrs && data.attrs.component) {
|
12657 |
|
12658 | data.attrs.component, _readOnlyError("tagName");
|
12659 | delete data.attrs.component;
|
12660 | isFakeElement = true;
|
12661 | }
|
12662 |
|
12663 | var isCustom = isCustomComponent(treeNode.type);
|
12664 |
|
12665 | if (isCustom) {
|
12666 | insert.push(function (vnode) {
|
12667 | if (vnode.sel !== tagName && !isFakeElement) return;
|
12668 | createCustomComponent({
|
12669 | f7: f7,
|
12670 | treeNode: treeNode,
|
12671 | vnode: vnode,
|
12672 | data: data
|
12673 | });
|
12674 | });
|
12675 | destroy.push(function (vnode) {
|
12676 | destroyCustomComponent(vnode);
|
12677 | });
|
12678 | update.push(function (oldVnode, vnode) {
|
12679 | updateCustomComponent(vnode);
|
12680 | });
|
12681 | }
|
12682 |
|
12683 | if (!isCustom) {
|
12684 | if (!data || !data.attrs || !data.attrs.class) return hooks;
|
12685 | var classNames = data.attrs.class;
|
12686 | classNames.split(' ').forEach(function (className) {
|
12687 | if (!initial) {
|
12688 | insert.push.apply(insert, f7.getVnodeHooks('insert', className));
|
12689 | }
|
12690 |
|
12691 | destroy.push.apply(destroy, f7.getVnodeHooks('destroy', className));
|
12692 | update.push.apply(update, f7.getVnodeHooks('update', className));
|
12693 | postpatch.push.apply(postpatch, f7.getVnodeHooks('postpatch', className));
|
12694 | });
|
12695 | }
|
12696 |
|
12697 | if (isRoot && !initial) {
|
12698 | postpatch.push(function (oldVnode, vnode) {
|
12699 | var vn = vnode || oldVnode;
|
12700 | if (!vn) return;
|
12701 |
|
12702 | if (vn.data && vn.data.component) {
|
12703 | vn.data.component.hook('onUpdated');
|
12704 | }
|
12705 | });
|
12706 | }
|
12707 |
|
12708 | if (insert.length === 0 && destroy.length === 0 && update.length === 0 && postpatch.length === 0) {
|
12709 | return hooks;
|
12710 | }
|
12711 |
|
12712 | if (insert.length) {
|
12713 | hooks.insert = function (vnode) {
|
12714 | insert.forEach(function (f) {
|
12715 | return f(vnode);
|
12716 | });
|
12717 | };
|
12718 | }
|
12719 |
|
12720 | if (destroy.length) {
|
12721 | hooks.destroy = function (vnode) {
|
12722 | destroy.forEach(function (f) {
|
12723 | return f(vnode);
|
12724 | });
|
12725 | };
|
12726 | }
|
12727 |
|
12728 | if (update.length) {
|
12729 | hooks.update = function (oldVnode, vnode) {
|
12730 | update.forEach(function (f) {
|
12731 | return f(oldVnode, vnode);
|
12732 | });
|
12733 | };
|
12734 | }
|
12735 |
|
12736 | if (postpatch.length) {
|
12737 | hooks.postpatch = function (oldVnode, vnode) {
|
12738 | postpatch.forEach(function (f) {
|
12739 | return f(oldVnode, vnode);
|
12740 | });
|
12741 | };
|
12742 | }
|
12743 |
|
12744 | return hooks;
|
12745 | }
|
12746 |
|
12747 | var getEventHandler = function getEventHandler(eventHandler, _temp) {
|
12748 | var _ref2 = _temp === void 0 ? {} : _temp,
|
12749 | stop = _ref2.stop,
|
12750 | prevent = _ref2.prevent,
|
12751 | once = _ref2.once;
|
12752 |
|
12753 | var fired = false;
|
12754 |
|
12755 | function handler() {
|
12756 | var e = arguments.length <= 0 ? undefined : arguments[0];
|
12757 | if (once && fired) return;
|
12758 | if (stop) e.stopPropagation();
|
12759 | if (prevent) e.preventDefault();
|
12760 | fired = true;
|
12761 | eventHandler.apply(void 0, arguments);
|
12762 | }
|
12763 |
|
12764 | return handler;
|
12765 | };
|
12766 |
|
12767 | var getData = function getData(treeNode, component, f7, initial, isRoot) {
|
12768 | var data = {
|
12769 | component: component,
|
12770 | treeNode: treeNode
|
12771 | };
|
12772 | var tagName = getTagName(treeNode);
|
12773 | Object.keys(treeNode.props).forEach(function (attrName) {
|
12774 | var attrValue = treeNode.props[attrName];
|
12775 | if (typeof attrValue === 'undefined') return;
|
12776 |
|
12777 | if (PROPS_ATTRS.indexOf(attrName) >= 0) {
|
12778 |
|
12779 | if (!data.props) data.props = {};
|
12780 |
|
12781 | if (attrName === 'readonly') {
|
12782 |
|
12783 | attrName = 'readOnly';
|
12784 | }
|
12785 |
|
12786 | if (attrName === 'routeProps') {
|
12787 |
|
12788 | attrName = 'f7RouteProps';
|
12789 | }
|
12790 |
|
12791 | if (tagName === 'option' && attrName === 'value') {
|
12792 | if (!data.attrs) data.attrs = {};
|
12793 | data.attrs.value = attrValue;
|
12794 | }
|
12795 |
|
12796 | if (BOOLEAN_PROPS.indexOf(attrName) >= 0) {
|
12797 |
|
12798 | data.props[attrName] = attrValue === false ? false : true;
|
12799 | } else {
|
12800 | data.props[attrName] = attrValue;
|
12801 | }
|
12802 | } else if (attrName === 'key') {
|
12803 |
|
12804 | data.key = attrValue;
|
12805 | } else if (attrName.indexOf('@') === 0 || attrName.indexOf('on') === 0 && attrName.length > 2) {
|
12806 |
|
12807 | if (!data.on) data.on = {};
|
12808 | var eventName = attrName.indexOf('@') === 0 ? attrName.substr(1) : eventNameToColonCase(attrName.substr(2));
|
12809 | var stop = false;
|
12810 | var prevent = false;
|
12811 | var once = false;
|
12812 |
|
12813 | if (eventName.indexOf('.') >= 0) {
|
12814 | eventName.split('.').forEach(function (eventNamePart, eventNameIndex) {
|
12815 | if (eventNameIndex === 0) eventName = eventNamePart;else {
|
12816 | if (eventNamePart === 'stop') stop = true;
|
12817 | if (eventNamePart === 'prevent') prevent = true;
|
12818 | if (eventNamePart === 'once') once = true;
|
12819 | }
|
12820 | });
|
12821 | }
|
12822 |
|
12823 | data.on[eventName] = getEventHandler(attrValue, {
|
12824 | stop: stop,
|
12825 | prevent: prevent,
|
12826 | once: once
|
12827 | });
|
12828 | } else if (attrName === 'style') {
|
12829 |
|
12830 | if (typeof attrValue !== 'string') {
|
12831 | data.style = attrValue;
|
12832 | } else {
|
12833 | if (!data.attrs) data.attrs = {};
|
12834 | data.attrs.style = attrValue;
|
12835 | }
|
12836 | } else {
|
12837 |
|
12838 | if (!data.attrs) data.attrs = {};
|
12839 | data.attrs[attrName] = attrValue;
|
12840 |
|
12841 | if (attrName === 'id' && !data.key && !isRoot) {
|
12842 | data.key = attrValue;
|
12843 | }
|
12844 | }
|
12845 | });
|
12846 | var hooks = getHooks(treeNode, data, f7, initial, isRoot);
|
12847 |
|
12848 | hooks.prepatch = function (oldVnode, vnode) {
|
12849 | if (!oldVnode || !vnode) return;
|
12850 |
|
12851 | if (oldVnode && oldVnode.data && oldVnode.data.props) {
|
12852 | Object.keys(oldVnode.data.props).forEach(function (key) {
|
12853 | if (BOOLEAN_PROPS.indexOf(key) < 0) return;
|
12854 | if (!vnode.data) vnode.data = {};
|
12855 | if (!vnode.data.props) vnode.data.props = {};
|
12856 |
|
12857 | if (oldVnode.data.props[key] === true && !(key in vnode.data.props)) {
|
12858 | vnode.data.props[key] = false;
|
12859 | }
|
12860 | });
|
12861 | }
|
12862 | };
|
12863 |
|
12864 | data.hook = hooks;
|
12865 | return data;
|
12866 | };
|
12867 |
|
12868 | var getChildren = function getChildren(treeNode, component, f7, initial) {
|
12869 | if (treeNode && treeNode.type && SELF_CLOSING.indexOf(treeNode.type) >= 0) {
|
12870 | return [];
|
12871 | }
|
12872 |
|
12873 | var children = [];
|
12874 | var nodes = treeNode.children;
|
12875 |
|
12876 | for (var i = 0; i < nodes.length; i += 1) {
|
12877 | var childNode = nodes[i];
|
12878 | var child = treeNodeToVNode(childNode, component, f7, initial, false);
|
12879 |
|
12880 | if (Array.isArray(child)) {
|
12881 | children.push.apply(children, child);
|
12882 | } else if (child) {
|
12883 | children.push(child);
|
12884 | }
|
12885 | }
|
12886 |
|
12887 | return children;
|
12888 | };
|
12889 |
|
12890 | var getSlots = function getSlots(treeNode, component, f7, initial) {
|
12891 | var slotName = treeNode.props.name || 'default';
|
12892 | var slotNodes = (component.children || []).filter(function (childTreeNode) {
|
12893 | var childSlotName = 'default';
|
12894 |
|
12895 | if (childTreeNode.props) {
|
12896 | childSlotName = childTreeNode.props.slot || 'default';
|
12897 | }
|
12898 |
|
12899 | return childSlotName === slotName;
|
12900 | });
|
12901 |
|
12902 | if (slotNodes.length === 0) {
|
12903 | return getChildren(treeNode, component, f7, initial);
|
12904 | }
|
12905 |
|
12906 | return slotNodes.map(function (subTreeNode) {
|
12907 | return treeNodeToVNode(subTreeNode, component, f7, initial);
|
12908 | });
|
12909 | };
|
12910 |
|
12911 | var isTreeNode = function isTreeNode(treeNode) {
|
12912 | return isObject$1(treeNode) && 'props' in treeNode && 'type' in treeNode && 'children' in treeNode;
|
12913 | };
|
12914 |
|
12915 | var treeNodeToVNode = function treeNodeToVNode(treeNode, component, f7, initial, isRoot) {
|
12916 | if (!isTreeNode(treeNode)) {
|
12917 | return String(treeNode);
|
12918 | }
|
12919 |
|
12920 | if (treeNode.type === 'slot') {
|
12921 | return getSlots(treeNode, component, f7, initial);
|
12922 | }
|
12923 |
|
12924 | var data = getData(treeNode, component, f7, initial, isRoot);
|
12925 | var children = isCustomComponent(treeNode.type) ? [] : getChildren(treeNode, component, f7, initial);
|
12926 | return h(getTagName(treeNode), data, children);
|
12927 | };
|
12928 |
|
12929 | function vdom(tree, component, initial) {
|
12930 | if (tree === void 0) {
|
12931 | tree = {};
|
12932 | }
|
12933 |
|
12934 | return treeNodeToVNode(tree, component, component.f7, initial, true);
|
12935 | }
|
12936 |
|
12937 | function createElement(tagName) {
|
12938 | return document.createElement(tagName);
|
12939 | }
|
12940 |
|
12941 | function createElementNS(namespaceURI, qualifiedName) {
|
12942 | return document.createElementNS(namespaceURI, qualifiedName);
|
12943 | }
|
12944 |
|
12945 | function createTextNode(text) {
|
12946 | return document.createTextNode(text);
|
12947 | }
|
12948 |
|
12949 | function createComment(text) {
|
12950 | return document.createComment(text);
|
12951 | }
|
12952 |
|
12953 | function insertBefore(parentNode, newNode, referenceNode) {
|
12954 | if (referenceNode && referenceNode.parentNode !== parentNode) {
|
12955 | if (referenceNode.__component__) referenceNode = referenceNode.__component__.el;
|
12956 | }
|
12957 |
|
12958 | parentNode.insertBefore(newNode, referenceNode);
|
12959 | }
|
12960 |
|
12961 | function removeChild(node, child) {
|
12962 | if (!node) return;
|
12963 | node.removeChild(child);
|
12964 | }
|
12965 |
|
12966 | function appendChild(node, child) {
|
12967 | node.appendChild(child);
|
12968 | }
|
12969 |
|
12970 | function parentNode(node) {
|
12971 | return node.parentNode;
|
12972 | }
|
12973 |
|
12974 | function nextSibling(node) {
|
12975 | return node.nextSibling;
|
12976 | }
|
12977 |
|
12978 | function tagName(elm) {
|
12979 | return elm.tagName;
|
12980 | }
|
12981 |
|
12982 | function setTextContent(node, text) {
|
12983 | node.textContent = text;
|
12984 | }
|
12985 |
|
12986 | function getTextContent(node) {
|
12987 | return node.textContent;
|
12988 | }
|
12989 |
|
12990 | function isElement(node) {
|
12991 | return node.nodeType === 1;
|
12992 | }
|
12993 |
|
12994 | function isText(node) {
|
12995 | return node.nodeType === 3;
|
12996 | }
|
12997 |
|
12998 | function isComment(node) {
|
12999 | return node.nodeType === 8;
|
13000 | }
|
13001 |
|
13002 | var htmlDomApi = {
|
13003 | createElement: createElement,
|
13004 | createElementNS: createElementNS,
|
13005 | createTextNode: createTextNode,
|
13006 | createComment: createComment,
|
13007 | insertBefore: insertBefore,
|
13008 | removeChild: removeChild,
|
13009 | appendChild: appendChild,
|
13010 | parentNode: parentNode,
|
13011 | nextSibling: nextSibling,
|
13012 | tagName: tagName,
|
13013 | setTextContent: setTextContent,
|
13014 | getTextContent: getTextContent,
|
13015 | isElement: isElement,
|
13016 | isText: isText,
|
13017 | isComment: isComment
|
13018 | };
|
13019 |
|
13020 | function copyToThunk(vnode, thunk) {
|
13021 | thunk.elm = vnode.elm;
|
13022 | vnode.data.fn = thunk.data.fn;
|
13023 | vnode.data.args = thunk.data.args;
|
13024 | thunk.data = vnode.data;
|
13025 | thunk.children = vnode.children;
|
13026 | thunk.text = vnode.text;
|
13027 | thunk.elm = vnode.elm;
|
13028 | }
|
13029 |
|
13030 | function init$1(thunk) {
|
13031 | var cur = thunk.data;
|
13032 | var vnode = cur.fn.apply(undefined, cur.args);
|
13033 | copyToThunk(vnode, thunk);
|
13034 | }
|
13035 |
|
13036 | function prepatch(oldVnode, thunk) {
|
13037 | var i,
|
13038 | old = oldVnode.data,
|
13039 | cur = thunk.data;
|
13040 | var oldArgs = old.args,
|
13041 | args = cur.args;
|
13042 |
|
13043 | if (old.fn !== cur.fn || oldArgs.length !== args.length) {
|
13044 | copyToThunk(cur.fn.apply(undefined, args), thunk);
|
13045 | return;
|
13046 | }
|
13047 |
|
13048 | for (i = 0; i < args.length; ++i) {
|
13049 | if (oldArgs[i] !== args[i]) {
|
13050 | copyToThunk(cur.fn.apply(undefined, args), thunk);
|
13051 | return;
|
13052 | }
|
13053 | }
|
13054 |
|
13055 | copyToThunk(oldVnode, thunk);
|
13056 | }
|
13057 |
|
13058 | var thunk = function thunk(sel, key, fn, args) {
|
13059 | if (args === undefined) {
|
13060 | args = fn;
|
13061 | fn = key;
|
13062 | key = undefined;
|
13063 | }
|
13064 |
|
13065 | return h(sel, {
|
13066 | key: key,
|
13067 | hook: {
|
13068 | init: init$1,
|
13069 | prepatch: prepatch
|
13070 | },
|
13071 | fn: fn,
|
13072 | args: args
|
13073 | });
|
13074 | };
|
13075 |
|
13076 | function isUndef(s) {
|
13077 | return s === undefined;
|
13078 | }
|
13079 |
|
13080 | function isDef(s) {
|
13081 | return s !== undefined;
|
13082 | }
|
13083 |
|
13084 | var emptyNode = vnode('', {}, [], undefined, undefined);
|
13085 |
|
13086 | function sameVnode(vnode1, vnode2) {
|
13087 | return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;
|
13088 | }
|
13089 |
|
13090 | function isVnode(vnode) {
|
13091 | return vnode.sel !== undefined;
|
13092 | }
|
13093 |
|
13094 | function createKeyToOldIdx(children, beginIdx, endIdx) {
|
13095 | var i,
|
13096 | map = {},
|
13097 | key,
|
13098 | ch;
|
13099 |
|
13100 | for (i = beginIdx; i <= endIdx; ++i) {
|
13101 | ch = children[i];
|
13102 |
|
13103 | if (ch != null) {
|
13104 | key = ch.key;
|
13105 | if (key !== undefined) map[key] = i;
|
13106 | }
|
13107 | }
|
13108 |
|
13109 | return map;
|
13110 | }
|
13111 |
|
13112 | var hooks = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];
|
13113 | function init(modules, domApi) {
|
13114 | var i,
|
13115 | j,
|
13116 | cbs = {};
|
13117 | var api = domApi !== undefined ? domApi : htmlDomApi;
|
13118 |
|
13119 | for (i = 0; i < hooks.length; ++i) {
|
13120 | cbs[hooks[i]] = [];
|
13121 |
|
13122 | for (j = 0; j < modules.length; ++j) {
|
13123 | var hook = modules[j][hooks[i]];
|
13124 |
|
13125 | if (hook !== undefined) {
|
13126 | cbs[hooks[i]].push(hook);
|
13127 | }
|
13128 | }
|
13129 | }
|
13130 |
|
13131 | function emptyNodeAt(elm) {
|
13132 | var id = elm.id ? '#' + elm.id : '';
|
13133 | var c = elm.className ? '.' + elm.className.split(' ').join('.') : '';
|
13134 | return vnode(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);
|
13135 | }
|
13136 |
|
13137 | function createRmCb(childElm, listeners) {
|
13138 | return function rmCb() {
|
13139 | if (--listeners === 0) {
|
13140 | var parent_1 = api.parentNode(childElm);
|
13141 | api.removeChild(parent_1, childElm);
|
13142 | }
|
13143 | };
|
13144 | }
|
13145 |
|
13146 | function createElm(vnode, insertedVnodeQueue) {
|
13147 | var i,
|
13148 | data = vnode.data;
|
13149 |
|
13150 | if (data !== undefined) {
|
13151 | if (isDef(i = data.hook) && isDef(i = i.init)) {
|
13152 | i(vnode);
|
13153 | data = vnode.data;
|
13154 | }
|
13155 | }
|
13156 |
|
13157 | var children = vnode.children,
|
13158 | sel = vnode.sel;
|
13159 |
|
13160 | if (sel === '!') {
|
13161 | if (isUndef(vnode.text)) {
|
13162 | vnode.text = '';
|
13163 | }
|
13164 |
|
13165 | vnode.elm = api.createComment(vnode.text);
|
13166 | } else if (sel !== undefined) {
|
13167 |
|
13168 | var hashIdx = sel.indexOf('#');
|
13169 | var dotIdx = sel.indexOf('.', hashIdx);
|
13170 | var hash = hashIdx > 0 ? hashIdx : sel.length;
|
13171 | var dot = dotIdx > 0 ? dotIdx : sel.length;
|
13172 | var tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;
|
13173 | var elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag) : api.createElement(tag);
|
13174 | if (hash < dot) elm.setAttribute('id', sel.slice(hash + 1, dot));
|
13175 | if (dotIdx > 0) elm.setAttribute('class', sel.slice(dot + 1).replace(/\./g, ' '));
|
13176 |
|
13177 | for (i = 0; i < cbs.create.length; ++i) {
|
13178 | cbs.create[i](emptyNode, vnode);
|
13179 | }
|
13180 |
|
13181 | if (array(children)) {
|
13182 | for (i = 0; i < children.length; ++i) {
|
13183 | var ch = children[i];
|
13184 |
|
13185 | if (ch != null) {
|
13186 | api.appendChild(elm, createElm(ch, insertedVnodeQueue));
|
13187 | }
|
13188 | }
|
13189 | } else if (primitive(vnode.text)) {
|
13190 | api.appendChild(elm, api.createTextNode(vnode.text));
|
13191 | }
|
13192 |
|
13193 | i = vnode.data.hook;
|
13194 |
|
13195 | if (isDef(i)) {
|
13196 | if (i.create) i.create(emptyNode, vnode);
|
13197 | if (i.insert) insertedVnodeQueue.push(vnode);
|
13198 | }
|
13199 | } else {
|
13200 | vnode.elm = api.createTextNode(vnode.text);
|
13201 | }
|
13202 |
|
13203 | return vnode.elm;
|
13204 | }
|
13205 |
|
13206 | function addVnodes(parentElm, before, vnodes, startIdx, endIdx, insertedVnodeQueue) {
|
13207 | for (; startIdx <= endIdx; ++startIdx) {
|
13208 | var ch = vnodes[startIdx];
|
13209 |
|
13210 | if (ch != null) {
|
13211 | api.insertBefore(parentElm, createElm(ch, insertedVnodeQueue), before);
|
13212 | }
|
13213 | }
|
13214 | }
|
13215 |
|
13216 | function invokeDestroyHook(vnode) {
|
13217 | var i,
|
13218 | j,
|
13219 | data = vnode.data;
|
13220 |
|
13221 | if (data !== undefined) {
|
13222 | if (isDef(i = data.hook) && isDef(i = i.destroy)) i(vnode);
|
13223 |
|
13224 | for (i = 0; i < cbs.destroy.length; ++i) {
|
13225 | cbs.destroy[i](vnode);
|
13226 | }
|
13227 |
|
13228 | if (vnode.children !== undefined) {
|
13229 | for (j = 0; j < vnode.children.length; ++j) {
|
13230 | i = vnode.children[j];
|
13231 |
|
13232 | if (i != null && typeof i !== "string") {
|
13233 | invokeDestroyHook(i);
|
13234 | }
|
13235 | }
|
13236 | }
|
13237 | }
|
13238 | }
|
13239 |
|
13240 | function removeVnodes(parentElm, vnodes, startIdx, endIdx) {
|
13241 | for (; startIdx <= endIdx; ++startIdx) {
|
13242 | var i_1 = void 0,
|
13243 | listeners = void 0,
|
13244 | rm = void 0,
|
13245 | ch = vnodes[startIdx];
|
13246 |
|
13247 | if (ch != null) {
|
13248 | if (isDef(ch.sel)) {
|
13249 | invokeDestroyHook(ch);
|
13250 | listeners = cbs.remove.length + 1;
|
13251 | rm = createRmCb(ch.elm, listeners);
|
13252 |
|
13253 | for (i_1 = 0; i_1 < cbs.remove.length; ++i_1) {
|
13254 | cbs.remove[i_1](ch, rm);
|
13255 | }
|
13256 |
|
13257 | if (isDef(i_1 = ch.data) && isDef(i_1 = i_1.hook) && isDef(i_1 = i_1.remove)) {
|
13258 | i_1(ch, rm);
|
13259 | } else {
|
13260 | rm();
|
13261 | }
|
13262 | } else {
|
13263 | api.removeChild(parentElm, ch.elm);
|
13264 | }
|
13265 | }
|
13266 | }
|
13267 | }
|
13268 |
|
13269 | function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue) {
|
13270 | var oldStartIdx = 0,
|
13271 | newStartIdx = 0;
|
13272 | var oldEndIdx = oldCh.length - 1;
|
13273 | var oldStartVnode = oldCh[0];
|
13274 | var oldEndVnode = oldCh[oldEndIdx];
|
13275 | var newEndIdx = newCh.length - 1;
|
13276 | var newStartVnode = newCh[0];
|
13277 | var newEndVnode = newCh[newEndIdx];
|
13278 | var oldKeyToIdx;
|
13279 | var idxInOld;
|
13280 | var elmToMove;
|
13281 | var before;
|
13282 |
|
13283 | while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
|
13284 | if (oldStartVnode == null) {
|
13285 | oldStartVnode = oldCh[++oldStartIdx];
|
13286 | } else if (oldEndVnode == null) {
|
13287 | oldEndVnode = oldCh[--oldEndIdx];
|
13288 | } else if (newStartVnode == null) {
|
13289 | newStartVnode = newCh[++newStartIdx];
|
13290 | } else if (newEndVnode == null) {
|
13291 | newEndVnode = newCh[--newEndIdx];
|
13292 | } else if (sameVnode(oldStartVnode, newStartVnode)) {
|
13293 | patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);
|
13294 | oldStartVnode = oldCh[++oldStartIdx];
|
13295 | newStartVnode = newCh[++newStartIdx];
|
13296 | } else if (sameVnode(oldEndVnode, newEndVnode)) {
|
13297 | patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);
|
13298 | oldEndVnode = oldCh[--oldEndIdx];
|
13299 | newEndVnode = newCh[--newEndIdx];
|
13300 | } else if (sameVnode(oldStartVnode, newEndVnode)) {
|
13301 | patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);
|
13302 | api.insertBefore(parentElm, oldStartVnode.elm, api.nextSibling(oldEndVnode.elm));
|
13303 | oldStartVnode = oldCh[++oldStartIdx];
|
13304 | newEndVnode = newCh[--newEndIdx];
|
13305 | } else if (sameVnode(oldEndVnode, newStartVnode)) {
|
13306 | patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);
|
13307 | api.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
|
13308 | oldEndVnode = oldCh[--oldEndIdx];
|
13309 | newStartVnode = newCh[++newStartIdx];
|
13310 | } else {
|
13311 | if (oldKeyToIdx === undefined) {
|
13312 | oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);
|
13313 | }
|
13314 |
|
13315 | idxInOld = oldKeyToIdx[newStartVnode.key];
|
13316 |
|
13317 | if (isUndef(idxInOld)) {
|
13318 | api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);
|
13319 | newStartVnode = newCh[++newStartIdx];
|
13320 | } else {
|
13321 | elmToMove = oldCh[idxInOld];
|
13322 |
|
13323 | if (elmToMove.sel !== newStartVnode.sel) {
|
13324 | api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm);
|
13325 | } else {
|
13326 | patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);
|
13327 | oldCh[idxInOld] = undefined;
|
13328 | api.insertBefore(parentElm, elmToMove.elm, oldStartVnode.elm);
|
13329 | }
|
13330 |
|
13331 | newStartVnode = newCh[++newStartIdx];
|
13332 | }
|
13333 | }
|
13334 | }
|
13335 |
|
13336 | if (oldStartIdx <= oldEndIdx || newStartIdx <= newEndIdx) {
|
13337 | if (oldStartIdx > oldEndIdx) {
|
13338 | before = newCh[newEndIdx + 1] == null ? null : newCh[newEndIdx + 1].elm;
|
13339 | addVnodes(parentElm, before, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
|
13340 | } else {
|
13341 | removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
|
13342 | }
|
13343 | }
|
13344 | }
|
13345 |
|
13346 | function patchVnode(oldVnode, vnode, insertedVnodeQueue) {
|
13347 | var i, hook;
|
13348 |
|
13349 | if (isDef(i = vnode.data) && isDef(hook = i.hook) && isDef(i = hook.prepatch)) {
|
13350 | i(oldVnode, vnode);
|
13351 | }
|
13352 |
|
13353 | var elm = vnode.elm = oldVnode.elm;
|
13354 | var oldCh = oldVnode.children;
|
13355 | var ch = vnode.children;
|
13356 | if (oldVnode === vnode) return;
|
13357 |
|
13358 | if (vnode.data !== undefined) {
|
13359 | for (i = 0; i < cbs.update.length; ++i) {
|
13360 | cbs.update[i](oldVnode, vnode);
|
13361 | }
|
13362 |
|
13363 | i = vnode.data.hook;
|
13364 | if (isDef(i) && isDef(i = i.update)) i(oldVnode, vnode);
|
13365 | }
|
13366 |
|
13367 | if (isUndef(vnode.text)) {
|
13368 | if (isDef(oldCh) && isDef(ch)) {
|
13369 | if (oldCh !== ch) updateChildren(elm, oldCh, ch, insertedVnodeQueue);
|
13370 | } else if (isDef(ch)) {
|
13371 | if (isDef(oldVnode.text)) api.setTextContent(elm, '');
|
13372 | addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
|
13373 | } else if (isDef(oldCh)) {
|
13374 | removeVnodes(elm, oldCh, 0, oldCh.length - 1);
|
13375 | } else if (isDef(oldVnode.text)) {
|
13376 | api.setTextContent(elm, '');
|
13377 | }
|
13378 | } else if (oldVnode.text !== vnode.text) {
|
13379 | api.setTextContent(elm, vnode.text);
|
13380 | }
|
13381 |
|
13382 | if (isDef(hook) && isDef(i = hook.postpatch)) {
|
13383 | i(oldVnode, vnode);
|
13384 | }
|
13385 | }
|
13386 |
|
13387 | return function patch(oldVnode, vnode) {
|
13388 | var i, elm, parent;
|
13389 | var insertedVnodeQueue = [];
|
13390 |
|
13391 | for (i = 0; i < cbs.pre.length; ++i) {
|
13392 | cbs.pre[i]();
|
13393 | }
|
13394 |
|
13395 | if (!isVnode(oldVnode)) {
|
13396 | oldVnode = emptyNodeAt(oldVnode);
|
13397 | }
|
13398 |
|
13399 | if (sameVnode(oldVnode, vnode)) {
|
13400 | patchVnode(oldVnode, vnode, insertedVnodeQueue);
|
13401 | } else {
|
13402 | elm = oldVnode.elm;
|
13403 | parent = api.parentNode(elm);
|
13404 | createElm(vnode, insertedVnodeQueue);
|
13405 |
|
13406 | if (parent !== null) {
|
13407 | api.insertBefore(parent, vnode.elm, api.nextSibling(elm));
|
13408 | removeVnodes(parent, [oldVnode], 0, 0);
|
13409 | }
|
13410 | }
|
13411 |
|
13412 | for (i = 0; i < insertedVnodeQueue.length; ++i) {
|
13413 | insertedVnodeQueue[i].data.hook.insert(insertedVnodeQueue[i]);
|
13414 | }
|
13415 |
|
13416 | for (i = 0; i < cbs.post.length; ++i) {
|
13417 | cbs.post[i]();
|
13418 | }
|
13419 |
|
13420 | return vnode;
|
13421 | };
|
13422 | }
|
13423 |
|
13424 | var xlinkNS = 'http://www.w3.org/1999/xlink';
|
13425 | var xmlNS = 'http://www.w3.org/XML/1998/namespace';
|
13426 | var colonChar = 58;
|
13427 | var xChar = 120;
|
13428 |
|
13429 | function updateAttrs(oldVnode, vnode) {
|
13430 | var key,
|
13431 | elm = vnode.elm,
|
13432 | oldAttrs = oldVnode.data.attrs,
|
13433 | attrs = vnode.data.attrs;
|
13434 | if (!oldAttrs && !attrs) return;
|
13435 | if (oldAttrs === attrs) return;
|
13436 | oldAttrs = oldAttrs || {};
|
13437 | attrs = attrs || {};
|
13438 |
|
13439 | for (key in attrs) {
|
13440 | var cur = attrs[key];
|
13441 | var old = oldAttrs[key];
|
13442 |
|
13443 | if (old !== cur) {
|
13444 | if (cur === true) {
|
13445 | elm.setAttribute(key, "");
|
13446 | } else if (cur === false) {
|
13447 | elm.removeAttribute(key);
|
13448 | } else {
|
13449 | if (key.charCodeAt(0) !== xChar) {
|
13450 | elm.setAttribute(key, cur);
|
13451 | } else if (key.charCodeAt(3) === colonChar) {
|
13452 |
|
13453 | elm.setAttributeNS(xmlNS, key, cur);
|
13454 | } else if (key.charCodeAt(5) === colonChar) {
|
13455 |
|
13456 | elm.setAttributeNS(xlinkNS, key, cur);
|
13457 | } else {
|
13458 | elm.setAttribute(key, cur);
|
13459 | }
|
13460 | }
|
13461 | }
|
13462 | }
|
13463 |
|
13464 |
|
13465 |
|
13466 |
|
13467 | for (key in oldAttrs) {
|
13468 | if (!(key in attrs)) {
|
13469 | elm.removeAttribute(key);
|
13470 | }
|
13471 | }
|
13472 | }
|
13473 |
|
13474 | var attributesModule = {
|
13475 | create: updateAttrs,
|
13476 | update: updateAttrs
|
13477 | };
|
13478 |
|
13479 | function updateProps(oldVnode, vnode) {
|
13480 | var key,
|
13481 | cur,
|
13482 | old,
|
13483 | elm = vnode.elm,
|
13484 | oldProps = oldVnode.data.props,
|
13485 | props = vnode.data.props;
|
13486 | if (!oldProps && !props) return;
|
13487 | if (oldProps === props) return;
|
13488 | oldProps = oldProps || {};
|
13489 | props = props || {};
|
13490 |
|
13491 | for (key in oldProps) {
|
13492 | if (!props[key]) {
|
13493 | delete elm[key];
|
13494 | }
|
13495 | }
|
13496 |
|
13497 | for (key in props) {
|
13498 | cur = props[key];
|
13499 | old = oldProps[key];
|
13500 |
|
13501 | if (old !== cur && (key !== 'value' || elm[key] !== cur)) {
|
13502 | elm[key] = cur;
|
13503 | }
|
13504 | }
|
13505 | }
|
13506 |
|
13507 | var propsModule = {
|
13508 | create: updateProps,
|
13509 | update: updateProps
|
13510 | };
|
13511 |
|
13512 | var raf = typeof window !== 'undefined' && window.requestAnimationFrame || setTimeout;
|
13513 |
|
13514 | var nextFrame = function nextFrame(fn) {
|
13515 | raf(function () {
|
13516 | raf(fn);
|
13517 | });
|
13518 | };
|
13519 |
|
13520 | function setNextFrame(obj, prop, val) {
|
13521 | nextFrame(function () {
|
13522 | obj[prop] = val;
|
13523 | });
|
13524 | }
|
13525 |
|
13526 | function updateStyle(oldVnode, vnode) {
|
13527 | var cur,
|
13528 | name,
|
13529 | elm = vnode.elm,
|
13530 | oldStyle = oldVnode.data.style,
|
13531 | style = vnode.data.style;
|
13532 | if (!oldStyle && !style) return;
|
13533 | if (oldStyle === style) return;
|
13534 | oldStyle = oldStyle || {};
|
13535 | style = style || {};
|
13536 | var oldHasDel = ('delayed' in oldStyle);
|
13537 |
|
13538 | for (name in oldStyle) {
|
13539 | if (!style[name]) {
|
13540 | if (name[0] === '-' && name[1] === '-') {
|
13541 | elm.style.removeProperty(name);
|
13542 | } else {
|
13543 | elm.style[name] = '';
|
13544 | }
|
13545 | }
|
13546 | }
|
13547 |
|
13548 | for (name in style) {
|
13549 | cur = style[name];
|
13550 |
|
13551 | if (name === 'delayed' && style.delayed) {
|
13552 | for (var name2 in style.delayed) {
|
13553 | cur = style.delayed[name2];
|
13554 |
|
13555 | if (!oldHasDel || cur !== oldStyle.delayed[name2]) {
|
13556 | setNextFrame(elm.style, name2, cur);
|
13557 | }
|
13558 | }
|
13559 | } else if (name !== 'remove' && cur !== oldStyle[name]) {
|
13560 | if (name[0] === '-' && name[1] === '-') {
|
13561 | elm.style.setProperty(name, cur);
|
13562 | } else {
|
13563 | elm.style[name] = cur;
|
13564 | }
|
13565 | }
|
13566 | }
|
13567 | }
|
13568 |
|
13569 | function applyDestroyStyle(vnode) {
|
13570 | var style,
|
13571 | name,
|
13572 | elm = vnode.elm,
|
13573 | s = vnode.data.style;
|
13574 | if (!s || !(style = s.destroy)) return;
|
13575 |
|
13576 | for (name in style) {
|
13577 | elm.style[name] = style[name];
|
13578 | }
|
13579 | }
|
13580 |
|
13581 | function applyRemoveStyle(vnode, rm) {
|
13582 | var s = vnode.data.style;
|
13583 |
|
13584 | if (!s || !s.remove) {
|
13585 | rm();
|
13586 | return;
|
13587 | }
|
13588 |
|
13589 | var name,
|
13590 | elm = vnode.elm,
|
13591 | i = 0,
|
13592 | compStyle,
|
13593 | style = s.remove,
|
13594 | amount = 0,
|
13595 | applied = [];
|
13596 |
|
13597 | for (name in style) {
|
13598 | applied.push(name);
|
13599 | elm.style[name] = style[name];
|
13600 | }
|
13601 |
|
13602 | compStyle = getComputedStyle(elm);
|
13603 | var props = compStyle['transition-property'].split(', ');
|
13604 |
|
13605 | for (; i < props.length; ++i) {
|
13606 | if (applied.indexOf(props[i]) !== -1) amount++;
|
13607 | }
|
13608 |
|
13609 | elm.addEventListener('transitionend', function (ev) {
|
13610 | if (ev.target === elm) --amount;
|
13611 | if (amount === 0) rm();
|
13612 | });
|
13613 | }
|
13614 |
|
13615 | var styleModule = {
|
13616 | create: updateStyle,
|
13617 | update: updateStyle,
|
13618 | destroy: applyDestroyStyle,
|
13619 | remove: applyRemoveStyle
|
13620 | };
|
13621 |
|
13622 | function invokeHandler(handler, event, args) {
|
13623 | if (typeof handler === 'function') {
|
13624 |
|
13625 | handler.apply(void 0, [event].concat(args));
|
13626 | }
|
13627 | }
|
13628 |
|
13629 | function handleEvent(event, args, vnode) {
|
13630 | var name = event.type;
|
13631 | var on = vnode.data.on;
|
13632 |
|
13633 | if (on && on[name]) {
|
13634 | invokeHandler(on[name], event, args, vnode);
|
13635 | }
|
13636 | }
|
13637 |
|
13638 | function createListener() {
|
13639 | return function handler(event) {
|
13640 | for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
13641 | args[_key - 1] = arguments[_key];
|
13642 | }
|
13643 |
|
13644 | handleEvent(event, args, handler.vnode);
|
13645 | };
|
13646 | }
|
13647 |
|
13648 | function updateEvents(oldVnode, vnode) {
|
13649 | var oldOn = oldVnode.data.on;
|
13650 | var oldListener = oldVnode.listener;
|
13651 | var oldElm = oldVnode.elm;
|
13652 | var on = vnode && vnode.data.on;
|
13653 | var elm = vnode && vnode.elm;
|
13654 |
|
13655 | if (oldOn === on) {
|
13656 | return;
|
13657 | }
|
13658 |
|
13659 |
|
13660 | if (oldOn && oldListener) {
|
13661 |
|
13662 | if (!on) {
|
13663 | Object.keys(oldOn).forEach(function (name) {
|
13664 | $(oldElm).off(name, oldListener);
|
13665 | });
|
13666 | } else {
|
13667 | Object.keys(oldOn).forEach(function (name) {
|
13668 | if (!on[name]) {
|
13669 | $(oldElm).off(name, oldListener);
|
13670 | }
|
13671 | });
|
13672 | }
|
13673 | }
|
13674 |
|
13675 |
|
13676 | if (on) {
|
13677 |
|
13678 | var listener = oldVnode.listener || createListener();
|
13679 | vnode.listener = listener;
|
13680 |
|
13681 | listener.vnode = vnode;
|
13682 |
|
13683 | if (!oldOn) {
|
13684 | Object.keys(on).forEach(function (name) {
|
13685 | $(elm).on(name, listener);
|
13686 | });
|
13687 | } else {
|
13688 | Object.keys(on).forEach(function (name) {
|
13689 | if (!oldOn[name]) {
|
13690 | $(elm).on(name, listener);
|
13691 | }
|
13692 | });
|
13693 | }
|
13694 | }
|
13695 | }
|
13696 |
|
13697 | var eventListenersModule = {
|
13698 | create: updateEvents,
|
13699 | update: updateEvents,
|
13700 | destroy: updateEvents
|
13701 | };
|
13702 |
|
13703 |
|
13704 | var patch = init([attributesModule, propsModule, styleModule, eventListenersModule]);
|
13705 |
|
13706 |
|
13707 |
|
13708 | var Component = function () {
|
13709 | function Component(app, component, props, _temp) {
|
13710 | var _this = this;
|
13711 |
|
13712 | if (props === void 0) {
|
13713 | props = {};
|
13714 | }
|
13715 |
|
13716 | var _ref = _temp === void 0 ? {} : _temp,
|
13717 | el = _ref.el,
|
13718 | context = _ref.context,
|
13719 | children = _ref.children;
|
13720 |
|
13721 | var document = getDocument();
|
13722 | merge(this, {
|
13723 | f7: app,
|
13724 | props: props || {},
|
13725 | context: context || {},
|
13726 | id: component.id || id(),
|
13727 | children: children || [],
|
13728 | theme: {
|
13729 | ios: app.theme === 'ios',
|
13730 | md: app.theme === 'md',
|
13731 | aurora: app.theme === 'aurora'
|
13732 | },
|
13733 | style: component.style,
|
13734 | __updateQueue: [],
|
13735 | __eventHandlers: [],
|
13736 | __onceEventHandlers: [],
|
13737 | __onBeforeMount: [],
|
13738 | __onMounted: [],
|
13739 | __onBeforeUpdate: [],
|
13740 | __onUpdated: [],
|
13741 | __onBeforeUnmount: [],
|
13742 | __onUnmounted: []
|
13743 | });
|
13744 |
|
13745 | var createComponent = function createComponent() {
|
13746 | return component(_this.props, _this.getComponentContext(true));
|
13747 | };
|
13748 |
|
13749 | var getRenderFuncion = function getRenderFuncion(componentResult) {
|
13750 | return new Promise(function (resolve, reject) {
|
13751 | if (typeof componentResult === 'function') {
|
13752 | resolve(componentResult);
|
13753 | } else if (componentResult instanceof Promise) {
|
13754 | componentResult.then(function (render) {
|
13755 | resolve(render);
|
13756 | }).catch(function (err) {
|
13757 | reject(err);
|
13758 | });
|
13759 | } else {
|
13760 | reject(new Error('Framework7: Component render function is not a "function" type. Didn\'t you forget to "return $render"?'));
|
13761 | }
|
13762 | });
|
13763 | };
|
13764 |
|
13765 | return new Promise(function (resolve, reject) {
|
13766 | var componentResult = createComponent();
|
13767 | getRenderFuncion(componentResult).then(function (render) {
|
13768 | _this.renderFunction = render;
|
13769 |
|
13770 | var tree = _this.render();
|
13771 |
|
13772 | if (el) {
|
13773 | _this.vnode = vdom(tree, _this, true);
|
13774 |
|
13775 | if (_this.style) {
|
13776 | _this.styleEl = document.createElement('style');
|
13777 | _this.styleEl.innerHTML = _this.style;
|
13778 | }
|
13779 |
|
13780 | _this.el = el;
|
13781 | patch(_this.el, _this.vnode);
|
13782 | _this.el = _this.vnode.elm;
|
13783 | _this.$el = $(_this.el);
|
13784 |
|
13785 | _this.attachEvents();
|
13786 |
|
13787 | _this.el.f7Component = _this;
|
13788 |
|
13789 | _this.mount();
|
13790 |
|
13791 | resolve(_this);
|
13792 | return;
|
13793 | }
|
13794 |
|
13795 |
|
13796 | if (tree) {
|
13797 | _this.vnode = vdom(tree, _this, true);
|
13798 | _this.el = document.createElement(_this.vnode.sel || 'div');
|
13799 | patch(_this.el, _this.vnode);
|
13800 | _this.$el = $(_this.el);
|
13801 | }
|
13802 |
|
13803 | if (_this.style) {
|
13804 | _this.styleEl = document.createElement('style');
|
13805 | _this.styleEl.innerHTML = _this.style;
|
13806 | }
|
13807 |
|
13808 | _this.attachEvents();
|
13809 |
|
13810 | if (_this.el) {
|
13811 | _this.el.f7Component = _this;
|
13812 | }
|
13813 |
|
13814 | resolve(_this);
|
13815 | }).catch(function (err) {
|
13816 | reject(err);
|
13817 | });
|
13818 | });
|
13819 | }
|
13820 |
|
13821 | var _proto = Component.prototype;
|
13822 |
|
13823 | _proto.on = function on(eventName, handler) {
|
13824 | if (!this.__eventHandlers) return;
|
13825 |
|
13826 | this.__eventHandlers.push({
|
13827 | eventName: eventName,
|
13828 | handler: handler
|
13829 | });
|
13830 | };
|
13831 |
|
13832 | _proto.once = function once(eventName, handler) {
|
13833 | if (!this.__eventHandlers) return;
|
13834 |
|
13835 | this.__onceEventHandlers.push({
|
13836 | eventName: eventName,
|
13837 | handler: handler
|
13838 | });
|
13839 | };
|
13840 |
|
13841 | _proto.getComponentStore = function getComponentStore() {
|
13842 | var _this2 = this;
|
13843 |
|
13844 | var _this$f7$store = this.f7.store,
|
13845 | state = _this$f7$store.state,
|
13846 | _gettersPlain = _this$f7$store._gettersPlain,
|
13847 | dispatch = _this$f7$store.dispatch;
|
13848 | var $store = {
|
13849 | state: state,
|
13850 | dispatch: dispatch
|
13851 | };
|
13852 | $store.getters = new Proxy(_gettersPlain, {
|
13853 | get: function get(target, prop) {
|
13854 | var obj = target[prop];
|
13855 |
|
13856 | var callback = function callback(v) {
|
13857 | obj.value = v;
|
13858 |
|
13859 | _this2.update();
|
13860 | };
|
13861 |
|
13862 | obj.onUpdated(callback);
|
13863 | return obj;
|
13864 | }
|
13865 | });
|
13866 | return $store;
|
13867 | };
|
13868 |
|
13869 | _proto.getComponentContext = function getComponentContext(includeHooks) {
|
13870 | var _this3 = this;
|
13871 |
|
13872 | var ctx = {
|
13873 | $f7route: this.context.f7route,
|
13874 | $f7router: this.context.f7router,
|
13875 | $h: $h,
|
13876 | $: $,
|
13877 | $id: this.id,
|
13878 | $f7: this.f7,
|
13879 | $f7ready: this.f7ready.bind(this),
|
13880 | $theme: this.theme,
|
13881 | $tick: this.tick.bind(this),
|
13882 | $update: this.update.bind(this),
|
13883 | $emit: this.emit.bind(this),
|
13884 | $store: this.getComponentStore(),
|
13885 | $el: {}
|
13886 | };
|
13887 | Object.defineProperty(ctx.$el, 'value', {
|
13888 | get: function get() {
|
13889 | return _this3.$el;
|
13890 | }
|
13891 | });
|
13892 | if (includeHooks) Object.assign(ctx, {
|
13893 | $on: this.on.bind(this),
|
13894 | $once: this.once.bind(this),
|
13895 | $onBeforeMount: function $onBeforeMount(handler) {
|
13896 | return _this3.__onBeforeMount.push(handler);
|
13897 | },
|
13898 | $onMounted: function $onMounted(handler) {
|
13899 | return _this3.__onMounted.push(handler);
|
13900 | },
|
13901 | $onBeforeUpdate: function $onBeforeUpdate(handler) {
|
13902 | return _this3.__onBeforeUpdate.push(handler);
|
13903 | },
|
13904 | $onUpdated: function $onUpdated(handler) {
|
13905 | return _this3.__onUpdated.push(handler);
|
13906 | },
|
13907 | $onBeforeUnmount: function $onBeforeUnmount(handler) {
|
13908 | return _this3.__onBeforeUnmount.push(handler);
|
13909 | },
|
13910 | $onUnmounted: function $onUnmounted(handler) {
|
13911 | return _this3.__onUnmounted.push(handler);
|
13912 | }
|
13913 | });
|
13914 | return ctx;
|
13915 | };
|
13916 |
|
13917 | _proto.render = function render() {
|
13918 | return this.renderFunction(this.getComponentContext());
|
13919 | };
|
13920 |
|
13921 | _proto.emit = function emit(name, data) {
|
13922 | if (!this.el) return;
|
13923 | this.$el.trigger(name, data);
|
13924 | };
|
13925 |
|
13926 | _proto.attachEvents = function attachEvents() {
|
13927 | var $el = this.$el;
|
13928 | if (!this.__eventHandlers) return;
|
13929 |
|
13930 | this.__eventHandlers.forEach(function (_ref2) {
|
13931 | var eventName = _ref2.eventName,
|
13932 | handler = _ref2.handler;
|
13933 | $el.on(eventNameToColonCase(eventName), handler);
|
13934 | });
|
13935 |
|
13936 | this.__onceEventHandlers.forEach(function (_ref3) {
|
13937 | var eventName = _ref3.eventName,
|
13938 | handler = _ref3.handler;
|
13939 | $el.once(eventNameToColonCase(eventName), handler);
|
13940 | });
|
13941 | };
|
13942 |
|
13943 | _proto.detachEvents = function detachEvents() {
|
13944 | var $el = this.$el;
|
13945 | if (!this.__eventHandlers) return;
|
13946 |
|
13947 | this.__eventHandlers.forEach(function (_ref4) {
|
13948 | var eventName = _ref4.eventName,
|
13949 | handler = _ref4.handler;
|
13950 | $el.on(eventNameToColonCase(eventName), handler);
|
13951 | });
|
13952 |
|
13953 | this.__onceEventHandlers.forEach(function (_ref5) {
|
13954 | var eventName = _ref5.eventName,
|
13955 | handler = _ref5.handler;
|
13956 | $el.once(eventNameToColonCase(eventName), handler);
|
13957 | });
|
13958 | };
|
13959 |
|
13960 | _proto.startUpdateQueue = function startUpdateQueue() {
|
13961 | var _this4 = this;
|
13962 |
|
13963 | var window = getWindow();
|
13964 | if (this.__requestAnimationFrameId) return;
|
13965 |
|
13966 | var update = function update() {
|
13967 | _this4.hook('onBeforeUpdate');
|
13968 |
|
13969 | var tree = _this4.render();
|
13970 |
|
13971 |
|
13972 | if (tree) {
|
13973 | var newVNode = vdom(tree, _this4, false);
|
13974 | _this4.vnode = patch(_this4.vnode, newVNode);
|
13975 | }
|
13976 | };
|
13977 |
|
13978 | this.__requestAnimationFrameId = window.requestAnimationFrame(function () {
|
13979 | if (_this4.__updateIsPending) update();
|
13980 | var resolvers = [].concat(_this4.__updateQueue);
|
13981 | _this4.__updateQueue = [];
|
13982 | _this4.__updateIsPending = false;
|
13983 | window.cancelAnimationFrame(_this4.__requestAnimationFrameId);
|
13984 | delete _this4.__requestAnimationFrameId;
|
13985 | delete _this4.__updateIsPending;
|
13986 | resolvers.forEach(function (resolver) {
|
13987 | return resolver();
|
13988 | });
|
13989 | resolvers = [];
|
13990 | });
|
13991 | };
|
13992 |
|
13993 | _proto.tick = function tick(callback) {
|
13994 | var _this5 = this;
|
13995 |
|
13996 | return new Promise(function (resolve) {
|
13997 | function resolver() {
|
13998 | resolve();
|
13999 | if (callback) callback();
|
14000 | }
|
14001 |
|
14002 | _this5.__updateQueue.push(resolver);
|
14003 |
|
14004 | _this5.startUpdateQueue();
|
14005 | });
|
14006 | };
|
14007 |
|
14008 | _proto.update = function update(callback) {
|
14009 | var _this6 = this;
|
14010 |
|
14011 | if (this.__destroyed) return new Promise(function () {});
|
14012 | return new Promise(function (resolve) {
|
14013 | var resolver = function resolver() {
|
14014 | resolve();
|
14015 | if (callback) callback();
|
14016 | };
|
14017 |
|
14018 | _this6.__updateIsPending = true;
|
14019 |
|
14020 | _this6.__updateQueue.push(resolver);
|
14021 |
|
14022 | _this6.startUpdateQueue();
|
14023 | });
|
14024 | };
|
14025 |
|
14026 | _proto.setState = function setState(callback) {
|
14027 | return this.update(callback);
|
14028 | };
|
14029 |
|
14030 | _proto.f7ready = function f7ready(callback) {
|
14031 | var _this7 = this;
|
14032 |
|
14033 | if (this.f7.initialized) {
|
14034 | callback(this.f7);
|
14035 | return;
|
14036 | }
|
14037 |
|
14038 | this.f7.once('init', function () {
|
14039 | callback(_this7.f7);
|
14040 | });
|
14041 | };
|
14042 |
|
14043 | _proto.mount = function mount(mountMethod) {
|
14044 | this.hook('onBeforeMount', this.$el);
|
14045 | if (this.styleEl) $('head').append(this.styleEl);
|
14046 | if (mountMethod) mountMethod(this.el);
|
14047 | this.hook('onMounted', this.$el);
|
14048 | };
|
14049 |
|
14050 | _proto.destroy = function destroy() {
|
14051 | if (this.__destroyed) return;
|
14052 | var window = getWindow();
|
14053 | this.hook('onBeforeUnmount');
|
14054 | if (this.styleEl) $(this.styleEl).remove();
|
14055 | this.detachEvents();
|
14056 | this.hook('onUnmounted');
|
14057 |
|
14058 | if (this.el && this.el.f7Component) {
|
14059 | this.el.f7Component = null;
|
14060 | delete this.el.f7Component;
|
14061 | }
|
14062 |
|
14063 |
|
14064 | if (this.vnode) {
|
14065 | this.vnode = patch(this.vnode, {
|
14066 | sel: this.vnode.sel,
|
14067 | data: {}
|
14068 | });
|
14069 | }
|
14070 |
|
14071 |
|
14072 | window.cancelAnimationFrame(this.__requestAnimationFrameId);
|
14073 | this.__updateQueue = [];
|
14074 | this.__eventHandlers = [];
|
14075 | this.__onceEventHandlers = [];
|
14076 | this.__onBeforeMount = [];
|
14077 | this.__onMounted = [];
|
14078 | this.__onBeforeUpdate = [];
|
14079 | this.__onUpdated = [];
|
14080 | this.__onBeforeUnmount = [];
|
14081 | this.__onUnmounted = [];
|
14082 |
|
14083 | deleteProps$1(this);
|
14084 | this.__destroyed = true;
|
14085 | };
|
14086 |
|
14087 | _proto.hook = function hook(name) {
|
14088 | for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
14089 | args[_key - 1] = arguments[_key];
|
14090 | }
|
14091 |
|
14092 | if (this.__destroyed) return;
|
14093 | this["__" + name].forEach(function (handler) {
|
14094 | handler.apply(void 0, args);
|
14095 | });
|
14096 | };
|
14097 |
|
14098 | return Component;
|
14099 | }();
|
14100 |
|
14101 | function parseComponent(componentString) {
|
14102 | var window = getWindow();
|
14103 | var document = getDocument();
|
14104 | var componentId = id();
|
14105 | var callbackCreateName = "f7_component_create_callback_" + componentId;
|
14106 |
|
14107 | var template;
|
14108 | var hasTemplate = componentString.match(/<template([ ]?)([a-z0-9-]*)>/);
|
14109 |
|
14110 | if (hasTemplate) {
|
14111 | template = componentString.split(/<template[ ]?[a-z0-9-]*>/).filter(function (item, index) {
|
14112 | return index > 0;
|
14113 | }).join('<template>').split('</template>').filter(function (item, index, arr) {
|
14114 | return index < arr.length - 1;
|
14115 | }).join('</template>').replace(/{{#raw}}([ \n]*)<template/g, '{{#raw}}<template').replace(/\/template>([ \n]*){{\/raw}}/g, '/template>{{/raw}}').replace(/([ \n])<template/g, '$1{{#raw}}<template').replace(/\/template>([ \n])/g, '/template>{{/raw}}$1');
|
14116 | }
|
14117 |
|
14118 |
|
14119 | var style = null;
|
14120 |
|
14121 | if (componentString.indexOf('<style>') >= 0) {
|
14122 | style = componentString.split('<style>')[1].split('</style>')[0];
|
14123 | }
|
14124 |
|
14125 | if (componentString.indexOf('<style scoped>') >= 0) {
|
14126 | style = componentString.split('<style scoped>')[1].split('</style>')[0];
|
14127 | }
|
14128 |
|
14129 |
|
14130 | var scriptContent;
|
14131 |
|
14132 | if (componentString.indexOf('<script>') >= 0) {
|
14133 | var scripts = componentString.split('<script>');
|
14134 | scriptContent = scripts[scripts.length - 1].split('</script>')[0].trim();
|
14135 | } else {
|
14136 | scriptContent = 'return () => {return $render}';
|
14137 | }
|
14138 |
|
14139 | if (!scriptContent || !scriptContent.trim()) scriptContent = 'return () => {return $render}';
|
14140 |
|
14141 | if (template) {
|
14142 | scriptContent = scriptContent.replace('$render', "function ($$ctx) {\n var $ = $$ctx.$$;\n var $h = $$ctx.$h;\n var $root = $$ctx.$root;\n var $f7 = $$ctx.$f7;\n var $f7route = $$ctx.$f7route;\n var $f7router = $$ctx.$f7router;\n var $theme = $$ctx.$theme;\n var $update = $$ctx.$update;\n var $store = $$ctx.$store;\n\n return $h`" + template + "`\n }\n ").replace(/export default/g, 'return');
|
14143 | }
|
14144 |
|
14145 |
|
14146 | scriptContent = "window." + callbackCreateName + " = function () {" + scriptContent + "}";
|
14147 |
|
14148 | var scriptEl = document.createElement('script');
|
14149 | scriptEl.innerHTML = scriptContent;
|
14150 | $('head').append(scriptEl);
|
14151 | var component = window[callbackCreateName]();
|
14152 |
|
14153 | $(scriptEl).remove();
|
14154 | window[callbackCreateName] = null;
|
14155 | delete window[callbackCreateName];
|
14156 |
|
14157 | if (style) {
|
14158 | component.style = style;
|
14159 | }
|
14160 |
|
14161 |
|
14162 | component.id = componentId;
|
14163 | return component;
|
14164 | }
|
14165 |
|
14166 | var ignoreChildren = [false, null, '', undefined];
|
14167 |
|
14168 | var $jsx$1 = function $jsx(type, props) {
|
14169 | for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
14170 | children[_key - 2] = arguments[_key];
|
14171 | }
|
14172 |
|
14173 | return {
|
14174 | type: type,
|
14175 | props: props || {},
|
14176 | children: flattenArray((children || []).filter(function (child) {
|
14177 | return ignoreChildren.indexOf(child) < 0;
|
14178 | }))
|
14179 | };
|
14180 | };
|
14181 |
|
14182 | function registerComponent(tagName, component) {
|
14183 | customComponents[tagName] = component;
|
14184 | }
|
14185 |
|
14186 | function unregisterComponent(tagName) {
|
14187 | delete customComponents[tagName];
|
14188 | }
|
14189 | var ComponentModule = {
|
14190 | name: 'component',
|
14191 | static: {
|
14192 | Component: Component,
|
14193 | registerComponent: registerComponent,
|
14194 | unregisterComponent: unregisterComponent
|
14195 | },
|
14196 | create: function create() {
|
14197 | var app = this;
|
14198 | app.component = {
|
14199 | registerComponent: registerComponent,
|
14200 | unregisterComponent: unregisterComponent,
|
14201 | parse: function parse(componentString) {
|
14202 | return parseComponent(componentString);
|
14203 | },
|
14204 | create: function create(component, props, _ref) {
|
14205 | var root = _ref.root,
|
14206 | el = _ref.el,
|
14207 | context = _ref.context,
|
14208 | children = _ref.children;
|
14209 | return new Component(app, component, props, {
|
14210 | root: root,
|
14211 | el: el,
|
14212 | context: context,
|
14213 | children: children
|
14214 | });
|
14215 | }
|
14216 | };
|
14217 | }
|
14218 | };
|
14219 |
|
14220 | var HistoryModule = {
|
14221 | name: 'history',
|
14222 | static: {
|
14223 | history: History$2
|
14224 | },
|
14225 | on: {
|
14226 | init: function init() {
|
14227 | History$2.init(this);
|
14228 | }
|
14229 | }
|
14230 | };
|
14231 |
|
14232 | var SW = {
|
14233 | registrations: [],
|
14234 | register: function register(path, scope) {
|
14235 | var app = this;
|
14236 | var window = getWindow();
|
14237 |
|
14238 | if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {
|
14239 | return new Promise(function (resolve, reject) {
|
14240 | reject(new Error('Service worker is not supported'));
|
14241 | });
|
14242 | }
|
14243 |
|
14244 | return new Promise(function (resolve, reject) {
|
14245 | app.serviceWorker.container.register(path, scope ? {
|
14246 | scope: scope
|
14247 | } : {}).then(function (reg) {
|
14248 | SW.registrations.push(reg);
|
14249 | app.emit('serviceWorkerRegisterSuccess', reg);
|
14250 | resolve(reg);
|
14251 | }).catch(function (error) {
|
14252 | app.emit('serviceWorkerRegisterError', error);
|
14253 | reject(error);
|
14254 | });
|
14255 | });
|
14256 | },
|
14257 | unregister: function unregister(registration) {
|
14258 | var app = this;
|
14259 | var window = getWindow();
|
14260 |
|
14261 | if (!('serviceWorker' in window.navigator) || !app.serviceWorker.container) {
|
14262 | return new Promise(function (resolve, reject) {
|
14263 | reject(new Error('Service worker is not supported'));
|
14264 | });
|
14265 | }
|
14266 |
|
14267 | var registrations;
|
14268 | if (!registration) registrations = SW.registrations;else if (Array.isArray(registration)) registrations = registration;else registrations = [registration];
|
14269 | return Promise.all(registrations.map(function (reg) {
|
14270 | return new Promise(function (resolve, reject) {
|
14271 | reg.unregister().then(function () {
|
14272 | if (SW.registrations.indexOf(reg) >= 0) {
|
14273 | SW.registrations.splice(SW.registrations.indexOf(reg), 1);
|
14274 | }
|
14275 |
|
14276 | app.emit('serviceWorkerUnregisterSuccess', reg);
|
14277 | resolve();
|
14278 | }).catch(function (error) {
|
14279 | app.emit('serviceWorkerUnregisterError', reg, error);
|
14280 | reject(error);
|
14281 | });
|
14282 | });
|
14283 | }));
|
14284 | }
|
14285 | };
|
14286 | var ServiceWorkerModule = {
|
14287 | name: 'sw',
|
14288 | params: {
|
14289 | serviceWorker: {
|
14290 | path: undefined,
|
14291 | scope: undefined
|
14292 | }
|
14293 | },
|
14294 | create: function create() {
|
14295 | var app = this;
|
14296 | var window = getWindow();
|
14297 | extend$1(app, {
|
14298 | serviceWorker: {
|
14299 | container: 'serviceWorker' in window.navigator ? window.navigator.serviceWorker : undefined,
|
14300 | registrations: SW.registrations,
|
14301 | register: SW.register.bind(app),
|
14302 | unregister: SW.unregister.bind(app)
|
14303 | }
|
14304 | });
|
14305 | },
|
14306 | on: {
|
14307 | init: function init() {
|
14308 | var window = getWindow();
|
14309 | if (!('serviceWorker' in window.navigator)) return;
|
14310 | var app = this;
|
14311 | if (app.device.cordova || window.Capacitor && window.Capacitor.isNative) return;
|
14312 | if (!app.serviceWorker.container) return;
|
14313 | var paths = app.params.serviceWorker.path;
|
14314 | var scope = app.params.serviceWorker.scope;
|
14315 | if (!paths || Array.isArray(paths) && !paths.length) return;
|
14316 | var toRegister = Array.isArray(paths) ? paths : [paths];
|
14317 | toRegister.forEach(function (path) {
|
14318 | app.serviceWorker.register(path, scope);
|
14319 | });
|
14320 | }
|
14321 | }
|
14322 | };
|
14323 |
|
14324 | function createStore(storeParams) {
|
14325 | if (storeParams === void 0) {
|
14326 | storeParams = {};
|
14327 | }
|
14328 |
|
14329 | var store = {
|
14330 | __store: true
|
14331 | };
|
14332 |
|
14333 | var originalState = _extends$j({}, storeParams.state || {});
|
14334 |
|
14335 | var actions = _extends$j({}, storeParams.actions || {});
|
14336 |
|
14337 | var getters = _extends$j({}, storeParams.getters || {});
|
14338 |
|
14339 | var state = extend$1({}, originalState);
|
14340 | var propsQueue = [];
|
14341 | var gettersDependencies = {};
|
14342 | var gettersCallbacks = {};
|
14343 | Object.keys(getters).forEach(function (getterKey) {
|
14344 | gettersDependencies[getterKey] = [];
|
14345 | gettersCallbacks[getterKey] = [];
|
14346 | });
|
14347 |
|
14348 | var getGetterValue = function getGetterValue(getterKey) {
|
14349 | return getters[getterKey]({
|
14350 | state: store.state
|
14351 | });
|
14352 | };
|
14353 |
|
14354 | var addGetterDependencies = function addGetterDependencies(getterKey, deps) {
|
14355 | if (!gettersDependencies[getterKey]) gettersDependencies[getterKey] = [];
|
14356 | deps.forEach(function (dep) {
|
14357 | if (gettersDependencies[getterKey].indexOf(dep) < 0) {
|
14358 | gettersDependencies[getterKey].push(dep);
|
14359 | }
|
14360 | });
|
14361 | };
|
14362 |
|
14363 | var addGetterCallback = function addGetterCallback(getterKey, callback) {
|
14364 | if (!gettersCallbacks[getterKey]) gettersCallbacks[getterKey] = [];
|
14365 | gettersCallbacks[getterKey].push(callback);
|
14366 | };
|
14367 |
|
14368 | var runGetterCallbacks = function runGetterCallbacks(stateKey) {
|
14369 | var keys = Object.keys(gettersDependencies).filter(function (getterKey) {
|
14370 | return gettersDependencies[getterKey].indexOf(stateKey) >= 0;
|
14371 | });
|
14372 | keys.forEach(function (getterKey) {
|
14373 | if (!gettersCallbacks[getterKey] || !gettersCallbacks[getterKey].length) return;
|
14374 | gettersCallbacks[getterKey].forEach(function (callback) {
|
14375 | callback(getGetterValue(getterKey));
|
14376 | });
|
14377 | });
|
14378 | };
|
14379 |
|
14380 | var removeGetterCallback = function removeGetterCallback(callback) {
|
14381 | Object.keys(gettersCallbacks).forEach(function (stateKey) {
|
14382 | var callbacks = gettersCallbacks[stateKey];
|
14383 |
|
14384 | if (callbacks.indexOf(callback) >= 0) {
|
14385 | callbacks.splice(callbacks.indexOf(callback), 1);
|
14386 | }
|
14387 | });
|
14388 | };
|
14389 |
|
14390 |
|
14391 | store.__removeCallback = function (callback) {
|
14392 | removeGetterCallback(callback);
|
14393 | };
|
14394 |
|
14395 | var getterValue = function getterValue(getterKey, addCallback) {
|
14396 | if (addCallback === void 0) {
|
14397 | addCallback = true;
|
14398 | }
|
14399 |
|
14400 | if (getterKey === 'constructor') return undefined;
|
14401 | propsQueue = [];
|
14402 | var value = getGetterValue(getterKey);
|
14403 | addGetterDependencies(getterKey, propsQueue);
|
14404 |
|
14405 | var onUpdated = function onUpdated(callback) {
|
14406 | addGetterCallback(getterKey, callback);
|
14407 | };
|
14408 |
|
14409 | var obj = {
|
14410 | value: value,
|
14411 | onUpdated: onUpdated
|
14412 | };
|
14413 |
|
14414 | if (!addCallback) {
|
14415 | return obj;
|
14416 | }
|
14417 |
|
14418 | var callback = function callback(v) {
|
14419 | obj.value = v;
|
14420 | };
|
14421 |
|
14422 | obj.__callback = callback;
|
14423 | addGetterCallback(getterKey, callback);
|
14424 |
|
14425 | return obj;
|
14426 | };
|
14427 |
|
14428 | store.state = new Proxy(state, {
|
14429 | set: function set(target, prop, value) {
|
14430 | target[prop] = value;
|
14431 | runGetterCallbacks(prop);
|
14432 | return true;
|
14433 | },
|
14434 | get: function get(target, prop) {
|
14435 | propsQueue.push(prop);
|
14436 | return target[prop];
|
14437 | }
|
14438 | });
|
14439 | store.getters = new Proxy(getters, {
|
14440 | set: function set() {
|
14441 | return false;
|
14442 | },
|
14443 | get: function get(target, prop) {
|
14444 | if (!target[prop]) {
|
14445 | return undefined;
|
14446 | }
|
14447 |
|
14448 | return getterValue(prop, true);
|
14449 | }
|
14450 | });
|
14451 | store._gettersPlain = new Proxy(getters, {
|
14452 | set: function set() {
|
14453 | return false;
|
14454 | },
|
14455 | get: function get(target, prop) {
|
14456 | if (!target[prop]) {
|
14457 | return undefined;
|
14458 | }
|
14459 |
|
14460 | return getterValue(prop, false);
|
14461 | }
|
14462 | });
|
14463 |
|
14464 | store.dispatch = function (actionName, data) {
|
14465 | return new Promise(function (resolve, reject) {
|
14466 | if (!actions[actionName]) {
|
14467 | reject();
|
14468 | throw new Error("Framework7: Store action \"" + actionName + "\" is not found");
|
14469 | }
|
14470 |
|
14471 | var result = actions[actionName]({
|
14472 | state: store.state,
|
14473 | dispatch: store.dispatch
|
14474 | }, data);
|
14475 | resolve(result);
|
14476 | });
|
14477 | };
|
14478 |
|
14479 | return store;
|
14480 | }
|
14481 |
|
14482 | var StoreModule = {
|
14483 | name: 'store',
|
14484 | static: {
|
14485 | createStore: createStore
|
14486 | },
|
14487 | proto: {
|
14488 | createStore: createStore
|
14489 | }
|
14490 | };
|
14491 |
|
14492 | var isCapacitor = function isCapacitor() {
|
14493 | var window = getWindow();
|
14494 | return window.Capacitor && window.Capacitor.isNative && window.Capacitor.Plugins && window.Capacitor.Plugins.StatusBar;
|
14495 | };
|
14496 |
|
14497 | var Statusbar = {
|
14498 | hide: function hide() {
|
14499 | var window = getWindow();
|
14500 | var device = getDevice$1();
|
14501 |
|
14502 | if (device.cordova && window.StatusBar) {
|
14503 | window.StatusBar.hide();
|
14504 | }
|
14505 |
|
14506 | if (isCapacitor()) {
|
14507 | window.Capacitor.Plugins.StatusBar.hide();
|
14508 | }
|
14509 | },
|
14510 | show: function show() {
|
14511 | var window = getWindow();
|
14512 | var device = getDevice$1();
|
14513 |
|
14514 | if (device.cordova && window.StatusBar) {
|
14515 | window.StatusBar.show();
|
14516 | }
|
14517 |
|
14518 | if (isCapacitor()) {
|
14519 | window.Capacitor.Plugins.StatusBar.show();
|
14520 | }
|
14521 | },
|
14522 | onClick: function onClick() {
|
14523 | var app = this;
|
14524 | var pageContent;
|
14525 |
|
14526 | if ($('.popup.modal-in').length > 0) {
|
14527 |
|
14528 | pageContent = $('.popup.modal-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
|
14529 | } else if ($('.panel.panel-in').length > 0) {
|
14530 |
|
14531 | pageContent = $('.panel.panel-in').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
|
14532 | } else if ($('.views > .view.tab-active').length > 0) {
|
14533 |
|
14534 | pageContent = $('.views > .view.tab-active').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
|
14535 | } else if ($('.views').length > 0) {
|
14536 | pageContent = $('.views').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
|
14537 | } else {
|
14538 | pageContent = app.$el.children('.view').find('.page:not(.page-previous):not(.page-next):not(.cached)').find('.page-content');
|
14539 | }
|
14540 |
|
14541 | if (pageContent && pageContent.length > 0) {
|
14542 |
|
14543 | if (pageContent.hasClass('tab')) {
|
14544 | pageContent = pageContent.parent('.tabs').children('.page-content.tab-active');
|
14545 | }
|
14546 |
|
14547 | if (pageContent.length > 0) pageContent.scrollTop(0, 300);
|
14548 | }
|
14549 | },
|
14550 | setTextColor: function setTextColor(color) {
|
14551 | var window = getWindow();
|
14552 | var device = getDevice$1();
|
14553 |
|
14554 | if (device.cordova && window.StatusBar) {
|
14555 | if (color === 'white') {
|
14556 | window.StatusBar.styleLightContent();
|
14557 | } else {
|
14558 | window.StatusBar.styleDefault();
|
14559 | }
|
14560 | }
|
14561 |
|
14562 | if (isCapacitor()) {
|
14563 | if (color === 'white') {
|
14564 | window.Capacitor.Plugins.StatusBar.setStyle({
|
14565 | style: 'DARK'
|
14566 | });
|
14567 | } else {
|
14568 | window.Capacitor.Plugins.StatusBar.setStyle({
|
14569 | style: 'LIGHT'
|
14570 | });
|
14571 | }
|
14572 | }
|
14573 | },
|
14574 | setBackgroundColor: function setBackgroundColor(color) {
|
14575 | var window = getWindow();
|
14576 | var device = getDevice$1();
|
14577 |
|
14578 | if (device.cordova && window.StatusBar) {
|
14579 | window.StatusBar.backgroundColorByHexString(color);
|
14580 | }
|
14581 |
|
14582 | if (isCapacitor()) {
|
14583 | window.Capacitor.Plugins.StatusBar.setBackgroundColor({
|
14584 | color: color
|
14585 | });
|
14586 | }
|
14587 | },
|
14588 | isVisible: function isVisible() {
|
14589 | var window = getWindow();
|
14590 | var device = getDevice$1();
|
14591 | return new Promise(function (resolve) {
|
14592 | if (device.cordova && window.StatusBar) {
|
14593 | resolve(window.StatusBar.isVisible);
|
14594 | }
|
14595 |
|
14596 | if (isCapacitor()) {
|
14597 | window.Capacitor.Plugins.StatusBar.getInfo().then(function (info) {
|
14598 | resolve(info.visible);
|
14599 | });
|
14600 | }
|
14601 |
|
14602 | resolve(false);
|
14603 | });
|
14604 | },
|
14605 | overlaysWebView: function overlaysWebView(overlays) {
|
14606 | if (overlays === void 0) {
|
14607 | overlays = true;
|
14608 | }
|
14609 |
|
14610 | var window = getWindow();
|
14611 | var device = getDevice$1();
|
14612 |
|
14613 | if (device.cordova && window.StatusBar) {
|
14614 | window.StatusBar.overlaysWebView(overlays);
|
14615 | }
|
14616 |
|
14617 | if (isCapacitor()) {
|
14618 | window.Capacitor.Plugins.StatusBar.setOverlaysWebView({
|
14619 | overlay: overlays
|
14620 | });
|
14621 | }
|
14622 | },
|
14623 | init: function init() {
|
14624 | var app = this;
|
14625 | var window = getWindow();
|
14626 | var device = getDevice$1();
|
14627 | var params = app.params.statusbar;
|
14628 | if (!params.enabled) return;
|
14629 | var isCordova = device.cordova && window.StatusBar;
|
14630 | var isCap = isCapacitor();
|
14631 |
|
14632 | if (isCordova || isCap) {
|
14633 | if (params.scrollTopOnClick) {
|
14634 | $(window).on('statusTap', Statusbar.onClick.bind(app));
|
14635 | }
|
14636 |
|
14637 | if (device.ios) {
|
14638 | if (params.iosOverlaysWebView) {
|
14639 | Statusbar.overlaysWebView(true);
|
14640 | } else {
|
14641 | Statusbar.overlaysWebView(false);
|
14642 | }
|
14643 |
|
14644 | if (params.iosTextColor === 'white') {
|
14645 | Statusbar.setTextColor('white');
|
14646 | } else {
|
14647 | Statusbar.setTextColor('black');
|
14648 | }
|
14649 | }
|
14650 |
|
14651 | if (device.android) {
|
14652 | if (params.androidOverlaysWebView) {
|
14653 | Statusbar.overlaysWebView(true);
|
14654 | } else {
|
14655 | Statusbar.overlaysWebView(false);
|
14656 | }
|
14657 |
|
14658 | if (params.androidTextColor === 'white') {
|
14659 | Statusbar.setTextColor('white');
|
14660 | } else {
|
14661 | Statusbar.setTextColor('black');
|
14662 | }
|
14663 | }
|
14664 | }
|
14665 |
|
14666 | if (params.iosBackgroundColor && device.ios) {
|
14667 | Statusbar.setBackgroundColor(params.iosBackgroundColor);
|
14668 | }
|
14669 |
|
14670 | if (params.androidBackgroundColor && device.android) {
|
14671 | Statusbar.setBackgroundColor(params.androidBackgroundColor);
|
14672 | }
|
14673 | }
|
14674 | };
|
14675 | var Statusbar$1 = {
|
14676 | name: 'statusbar',
|
14677 | params: {
|
14678 | statusbar: {
|
14679 | enabled: true,
|
14680 | scrollTopOnClick: true,
|
14681 | iosOverlaysWebView: true,
|
14682 | iosTextColor: 'black',
|
14683 | iosBackgroundColor: null,
|
14684 | androidOverlaysWebView: false,
|
14685 | androidTextColor: 'black',
|
14686 | androidBackgroundColor: null
|
14687 | }
|
14688 | },
|
14689 | create: function create() {
|
14690 | var app = this;
|
14691 | bindMethods(app, {
|
14692 | statusbar: Statusbar
|
14693 | });
|
14694 | },
|
14695 | on: {
|
14696 | init: function init() {
|
14697 | var app = this;
|
14698 | Statusbar.init.call(app);
|
14699 | }
|
14700 | }
|
14701 | };
|
14702 |
|
14703 | function getCurrentView(app) {
|
14704 | var $popoverView = $('.popover.modal-in .view');
|
14705 | var $popupView = $('.popup.modal-in .view');
|
14706 | var $panelView = $('.panel.panel-in .view');
|
14707 | var $viewsEl = $('.views');
|
14708 | if ($viewsEl.length === 0) $viewsEl = app.$el;
|
14709 |
|
14710 | var $viewEl = $viewsEl.children('.view');
|
14711 |
|
14712 | if ($viewEl.length === 0) {
|
14713 | $viewEl = $viewsEl.children('.tabs').children('.view');
|
14714 | }
|
14715 |
|
14716 |
|
14717 | if ($viewEl.length > 1) {
|
14718 | if ($viewEl.hasClass('tab')) {
|
14719 |
|
14720 | $viewEl = $viewsEl.children('.view.tab-active');
|
14721 |
|
14722 | if ($viewEl.length === 0) {
|
14723 | $viewEl = $viewsEl.children('.tabs').children('.view.tab-active');
|
14724 | }
|
14725 | } else {
|
14726 | }
|
14727 | }
|
14728 |
|
14729 | if ($popoverView.length > 0 && $popoverView[0].f7View) return $popoverView[0].f7View;
|
14730 | if ($popupView.length > 0 && $popupView[0].f7View) return $popupView[0].f7View;
|
14731 | if ($panelView.length > 0 && $panelView[0].f7View) return $panelView[0].f7View;
|
14732 |
|
14733 | if ($viewEl.length > 0) {
|
14734 | if ($viewEl.length === 1 && $viewEl[0].f7View) return $viewEl[0].f7View;
|
14735 |
|
14736 | if ($viewEl.length > 1) {
|
14737 | return app.views.main;
|
14738 | }
|
14739 | }
|
14740 |
|
14741 | return undefined;
|
14742 | }
|
14743 |
|
14744 | var View = {
|
14745 | name: 'view',
|
14746 | params: {
|
14747 | view: {
|
14748 | init: true,
|
14749 | name: undefined,
|
14750 | main: false,
|
14751 | router: true,
|
14752 | linksView: null,
|
14753 | stackPages: false,
|
14754 | xhrCache: true,
|
14755 | xhrCacheIgnore: [],
|
14756 | xhrCacheIgnoreGetParameters: false,
|
14757 | xhrCacheDuration: 1000 * 60 * 10,
|
14758 |
|
14759 | componentCache: true,
|
14760 | preloadPreviousPage: true,
|
14761 | allowDuplicateUrls: false,
|
14762 | reloadPages: false,
|
14763 | reloadDetail: false,
|
14764 | masterDetailBreakpoint: 0,
|
14765 | masterDetailResizable: false,
|
14766 | removeElements: true,
|
14767 | removeElementsWithTimeout: false,
|
14768 | removeElementsTimeout: 0,
|
14769 | restoreScrollTopOnBack: true,
|
14770 | unloadTabContent: true,
|
14771 | passRouteQueryToRequest: true,
|
14772 | passRouteParamsToRequest: false,
|
14773 | loadInitialPage: true,
|
14774 |
|
14775 | iosSwipeBack: true,
|
14776 | iosSwipeBackAnimateShadow: true,
|
14777 | iosSwipeBackAnimateOpacity: true,
|
14778 | iosSwipeBackActiveArea: 30,
|
14779 | iosSwipeBackThreshold: 0,
|
14780 | mdSwipeBack: false,
|
14781 | mdSwipeBackAnimateShadow: true,
|
14782 | mdSwipeBackAnimateOpacity: false,
|
14783 | mdSwipeBackActiveArea: 30,
|
14784 | mdSwipeBackThreshold: 0,
|
14785 | auroraSwipeBack: false,
|
14786 | auroraSwipeBackAnimateShadow: false,
|
14787 | auroraSwipeBackAnimateOpacity: true,
|
14788 | auroraSwipeBackActiveArea: 30,
|
14789 | auroraSwipeBackThreshold: 0,
|
14790 |
|
14791 | browserHistory: false,
|
14792 | browserHistoryRoot: undefined,
|
14793 | browserHistoryAnimate: true,
|
14794 | browserHistoryAnimateOnLoad: false,
|
14795 | browserHistorySeparator: '#!',
|
14796 | browserHistoryOnLoad: true,
|
14797 | browserHistoryInitialMatch: false,
|
14798 | browserHistoryStoreHistory: true,
|
14799 |
|
14800 | animate: true,
|
14801 |
|
14802 | iosDynamicNavbar: true,
|
14803 |
|
14804 | iosAnimateNavbarBackIcon: true,
|
14805 |
|
14806 | iosPageLoadDelay: 0,
|
14807 | mdPageLoadDelay: 0,
|
14808 | auroraPageLoadDelay: 0,
|
14809 |
|
14810 | routesBeforeEnter: null,
|
14811 | routesBeforeLeave: null
|
14812 | }
|
14813 | },
|
14814 | static: {
|
14815 | View: View$1
|
14816 | },
|
14817 | create: function create() {
|
14818 | var app = this;
|
14819 | extend$1(app, {
|
14820 | views: extend$1([], {
|
14821 | create: function create(el, params) {
|
14822 | return new View$1(app, el, params);
|
14823 | },
|
14824 | get: function get(viewEl) {
|
14825 | var $viewEl = $(viewEl);
|
14826 | if ($viewEl.length && $viewEl[0].f7View) return $viewEl[0].f7View;
|
14827 | return undefined;
|
14828 | }
|
14829 | })
|
14830 | });
|
14831 | Object.defineProperty(app.views, 'current', {
|
14832 | enumerable: true,
|
14833 | configurable: true,
|
14834 | get: function get() {
|
14835 | return getCurrentView(app);
|
14836 | }
|
14837 | });
|
14838 |
|
14839 | app.view = app.views;
|
14840 | },
|
14841 | on: {
|
14842 | init: function init() {
|
14843 | var app = this;
|
14844 | $('.view-init').each(function (viewEl) {
|
14845 | if (viewEl.f7View) return;
|
14846 | var viewParams = $(viewEl).dataset();
|
14847 | app.views.create(viewEl, viewParams);
|
14848 | });
|
14849 | },
|
14850 | 'modalOpen panelOpen': function onOpen(instance) {
|
14851 | var app = this;
|
14852 | instance.$el.find('.view-init').each(function (viewEl) {
|
14853 | if (viewEl.f7View) return;
|
14854 | var viewParams = $(viewEl).dataset();
|
14855 | app.views.create(viewEl, viewParams);
|
14856 | });
|
14857 | },
|
14858 | 'modalBeforeDestroy panelBeforeDestroy': function onClose(instance) {
|
14859 | if (!instance || !instance.$el) return;
|
14860 | instance.$el.find('.view-init').each(function (viewEl) {
|
14861 | var view = viewEl.f7View;
|
14862 | if (!view) return;
|
14863 | view.destroy();
|
14864 | });
|
14865 | }
|
14866 | },
|
14867 | vnode: {
|
14868 | 'view-init': {
|
14869 | insert: function insert(vnode) {
|
14870 | var app = this;
|
14871 | var viewEl = vnode.elm;
|
14872 | if (viewEl.f7View) return;
|
14873 | var viewParams = $(viewEl).dataset();
|
14874 | app.views.create(viewEl, viewParams);
|
14875 | },
|
14876 | destroy: function destroy(vnode) {
|
14877 | var viewEl = vnode.elm;
|
14878 | var view = viewEl.f7View;
|
14879 | if (!view) return;
|
14880 | view.destroy();
|
14881 | }
|
14882 | }
|
14883 | }
|
14884 | };
|
14885 |
|
14886 | var Navbar = {
|
14887 | size: function size(el) {
|
14888 | var app = this;
|
14889 | var $el = $(el);
|
14890 |
|
14891 | if ($el.hasClass('navbars')) {
|
14892 | $el = $el.children('.navbar').each(function (navbarEl) {
|
14893 | app.navbar.size(navbarEl);
|
14894 | });
|
14895 | return;
|
14896 | }
|
14897 |
|
14898 | var $innerEl = $el.children('.navbar-inner');
|
14899 | if (!$innerEl.length) return;
|
14900 | var needCenterTitle = $innerEl.hasClass('navbar-inner-centered-title') || app.params.navbar[app.theme + "CenterTitle"];
|
14901 | var needLeftTitle = app.theme === 'ios' && !app.params.navbar[app.theme + "CenterTitle"];
|
14902 | if (!needCenterTitle && !needLeftTitle) return;
|
14903 |
|
14904 | if ($el.hasClass('stacked') || $el.parents('.stacked').length > 0 || $el.parents('.tab:not(.tab-active)').length > 0 || $el.parents('.popup:not(.modal-in)').length > 0) {
|
14905 | return;
|
14906 | }
|
14907 |
|
14908 | if (app.theme !== 'ios' && app.params.navbar[app.theme + "CenterTitle"]) {
|
14909 | $innerEl.addClass('navbar-inner-centered-title');
|
14910 | }
|
14911 |
|
14912 | if (app.theme === 'ios' && !app.params.navbar.iosCenterTitle) {
|
14913 | $innerEl.addClass('navbar-inner-left-title');
|
14914 | }
|
14915 |
|
14916 | var $viewEl = $el.parents('.view').eq(0);
|
14917 | var left = app.rtl ? $innerEl.children('.right') : $innerEl.children('.left');
|
14918 | var right = app.rtl ? $innerEl.children('.left') : $innerEl.children('.right');
|
14919 | var title = $innerEl.children('.title');
|
14920 | var subnavbar = $innerEl.children('.subnavbar');
|
14921 | var noLeft = left.length === 0;
|
14922 | var noRight = right.length === 0;
|
14923 | var leftWidth = noLeft ? 0 : left.outerWidth(true);
|
14924 | var rightWidth = noRight ? 0 : right.outerWidth(true);
|
14925 | var titleWidth = title.outerWidth(true);
|
14926 | var navbarStyles = $innerEl.styles();
|
14927 | var navbarWidth = $innerEl[0].offsetWidth;
|
14928 | var navbarInnerWidth = navbarWidth - parseInt(navbarStyles.paddingLeft, 10) - parseInt(navbarStyles.paddingRight, 10);
|
14929 | var isPrevious = $el.hasClass('navbar-previous');
|
14930 | var sliding = $innerEl.hasClass('sliding');
|
14931 | var router;
|
14932 | var dynamicNavbar;
|
14933 |
|
14934 | if ($viewEl.length > 0 && $viewEl[0].f7View) {
|
14935 | router = $viewEl[0].f7View.router;
|
14936 | dynamicNavbar = router && router.dynamicNavbar;
|
14937 | }
|
14938 |
|
14939 | var currLeft;
|
14940 | var diff;
|
14941 |
|
14942 | if (noRight) {
|
14943 | currLeft = navbarInnerWidth - titleWidth;
|
14944 | }
|
14945 |
|
14946 | if (noLeft) {
|
14947 | currLeft = 0;
|
14948 | }
|
14949 |
|
14950 | if (!noLeft && !noRight) {
|
14951 | currLeft = (navbarInnerWidth - rightWidth - titleWidth + leftWidth) / 2;
|
14952 | }
|
14953 |
|
14954 | var requiredLeft = (navbarInnerWidth - titleWidth) / 2;
|
14955 |
|
14956 | if (navbarInnerWidth - leftWidth - rightWidth > titleWidth) {
|
14957 | if (requiredLeft < leftWidth) {
|
14958 | requiredLeft = leftWidth;
|
14959 | }
|
14960 |
|
14961 | if (requiredLeft + titleWidth > navbarInnerWidth - rightWidth) {
|
14962 | requiredLeft = navbarInnerWidth - rightWidth - titleWidth;
|
14963 | }
|
14964 |
|
14965 | diff = requiredLeft - currLeft;
|
14966 | } else {
|
14967 | diff = 0;
|
14968 | }
|
14969 |
|
14970 |
|
14971 | var inverter = app.rtl ? -1 : 1;
|
14972 |
|
14973 | if (dynamicNavbar && app.theme === 'ios') {
|
14974 | if (title.hasClass('sliding') || title.length > 0 && sliding) {
|
14975 | var titleLeftOffset = -(currLeft + diff) * inverter;
|
14976 | var titleRightOffset = (navbarInnerWidth - currLeft - diff - titleWidth) * inverter;
|
14977 |
|
14978 | if (isPrevious) {
|
14979 | if (router && router.params.iosAnimateNavbarBackIcon) {
|
14980 | var activeNavbarBackLink = $el.parent().find('.navbar-current').children('.left.sliding').find('.back .icon ~ span');
|
14981 |
|
14982 | if (activeNavbarBackLink.length > 0) {
|
14983 | titleLeftOffset += activeNavbarBackLink[0].offsetLeft;
|
14984 | }
|
14985 | }
|
14986 | }
|
14987 |
|
14988 | title[0].f7NavbarLeftOffset = titleLeftOffset;
|
14989 | title[0].f7NavbarRightOffset = titleRightOffset;
|
14990 | }
|
14991 |
|
14992 | if (!noLeft && (left.hasClass('sliding') || sliding)) {
|
14993 | if (app.rtl) {
|
14994 | left[0].f7NavbarLeftOffset = -(navbarInnerWidth - left[0].offsetWidth) / 2 * inverter;
|
14995 | left[0].f7NavbarRightOffset = leftWidth * inverter;
|
14996 | } else {
|
14997 | left[0].f7NavbarLeftOffset = -leftWidth;
|
14998 | left[0].f7NavbarRightOffset = (navbarInnerWidth - left[0].offsetWidth) / 2;
|
14999 |
|
15000 | if (router && router.params.iosAnimateNavbarBackIcon && left.find('.back .icon').length > 0) {
|
15001 | if (left.find('.back .icon ~ span').length) {
|
15002 | var leftOffset = left[0].f7NavbarLeftOffset;
|
15003 | var rightOffset = left[0].f7NavbarRightOffset;
|
15004 | left[0].f7NavbarLeftOffset = 0;
|
15005 | left[0].f7NavbarRightOffset = 0;
|
15006 | left.find('.back .icon ~ span')[0].f7NavbarLeftOffset = leftOffset;
|
15007 | left.find('.back .icon ~ span')[0].f7NavbarRightOffset = rightOffset - left.find('.back .icon')[0].offsetWidth;
|
15008 | }
|
15009 | }
|
15010 | }
|
15011 | }
|
15012 |
|
15013 | if (!noRight && (right.hasClass('sliding') || sliding)) {
|
15014 | if (app.rtl) {
|
15015 | right[0].f7NavbarLeftOffset = -rightWidth * inverter;
|
15016 | right[0].f7NavbarRightOffset = (navbarInnerWidth - right[0].offsetWidth) / 2 * inverter;
|
15017 | } else {
|
15018 | right[0].f7NavbarLeftOffset = -(navbarInnerWidth - right[0].offsetWidth) / 2;
|
15019 | right[0].f7NavbarRightOffset = rightWidth;
|
15020 | }
|
15021 | }
|
15022 |
|
15023 | if (subnavbar.length && (subnavbar.hasClass('sliding') || sliding)) {
|
15024 | subnavbar[0].f7NavbarLeftOffset = app.rtl ? subnavbar[0].offsetWidth : -subnavbar[0].offsetWidth;
|
15025 | subnavbar[0].f7NavbarRightOffset = -subnavbar[0].f7NavbarLeftOffset;
|
15026 | }
|
15027 | }
|
15028 |
|
15029 |
|
15030 | if (needCenterTitle) {
|
15031 | var titleLeft = diff;
|
15032 | if (app.rtl && noLeft && noRight && title.length > 0) titleLeft = -titleLeft;
|
15033 | title.css({
|
15034 | left: titleLeft + "px"
|
15035 | });
|
15036 | }
|
15037 | },
|
15038 | hide: function hide(el, animate, hideStatusbar, hideOnlyCurrent) {
|
15039 | if (animate === void 0) {
|
15040 | animate = true;
|
15041 | }
|
15042 |
|
15043 | if (hideStatusbar === void 0) {
|
15044 | hideStatusbar = false;
|
15045 | }
|
15046 |
|
15047 | if (hideOnlyCurrent === void 0) {
|
15048 | hideOnlyCurrent = false;
|
15049 | }
|
15050 |
|
15051 | var app = this;
|
15052 | var $el = $(el);
|
15053 | var isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;
|
15054 | if (isDynamic) $el = $el.parents('.navbars');
|
15055 | if (!$el.length) return;
|
15056 | if ($el.hasClass('navbar-hidden')) return;
|
15057 | var className = "navbar-hidden" + (animate ? ' navbar-transitioning' : '');
|
15058 | var currentIsLarge = isDynamic ? $el.find('.navbar-current .title-large').length : $el.find('.title-large').length;
|
15059 |
|
15060 | if (currentIsLarge) {
|
15061 | className += ' navbar-large-hidden';
|
15062 | }
|
15063 |
|
15064 | if (hideStatusbar) {
|
15065 | className += ' navbar-hidden-statusbar';
|
15066 | }
|
15067 |
|
15068 | $el.transitionEnd(function () {
|
15069 | $el.removeClass('navbar-transitioning');
|
15070 | });
|
15071 | $el.addClass(className);
|
15072 |
|
15073 | if (isDynamic) {
|
15074 | $el.children('.navbar').each(function (subEl) {
|
15075 | $(subEl).trigger('navbar:hide');
|
15076 | app.emit('navbarHide', subEl);
|
15077 | });
|
15078 | } else {
|
15079 | $el.trigger('navbar:hide');
|
15080 | app.emit('navbarHide', $el[0]);
|
15081 | }
|
15082 | },
|
15083 | show: function show(el, animate, hideOnlyCurrent) {
|
15084 | if (el === void 0) {
|
15085 | el = '.navbar-hidden';
|
15086 | }
|
15087 |
|
15088 | if (animate === void 0) {
|
15089 | animate = true;
|
15090 | }
|
15091 |
|
15092 | if (hideOnlyCurrent === void 0) {
|
15093 | hideOnlyCurrent = false;
|
15094 | }
|
15095 |
|
15096 | var app = this;
|
15097 | var $el = $(el);
|
15098 | var isDynamic = $el.hasClass('navbar') && $el.parent('.navbars').length && !hideOnlyCurrent;
|
15099 | if (isDynamic) $el = $el.parents('.navbars');
|
15100 | if (!$el.length) return;
|
15101 | if (!$el.hasClass('navbar-hidden')) return;
|
15102 |
|
15103 | if (animate) {
|
15104 | $el.addClass('navbar-transitioning');
|
15105 | $el.transitionEnd(function () {
|
15106 | $el.removeClass('navbar-transitioning');
|
15107 | });
|
15108 | }
|
15109 |
|
15110 | $el.removeClass('navbar-hidden navbar-large-hidden navbar-hidden-statusbar');
|
15111 |
|
15112 | if (isDynamic) {
|
15113 | $el.children('.navbar').each(function (subEl) {
|
15114 | $(subEl).trigger('navbar:show');
|
15115 | app.emit('navbarShow', subEl);
|
15116 | });
|
15117 | } else {
|
15118 | $el.trigger('navbar:show');
|
15119 | app.emit('navbarShow', $el[0]);
|
15120 | }
|
15121 | },
|
15122 | getElByPage: function getElByPage(page) {
|
15123 | var $pageEl;
|
15124 | var $navbarEl;
|
15125 | var pageData;
|
15126 |
|
15127 | if (page.$navbarEl || page.$el) {
|
15128 | pageData = page;
|
15129 | $pageEl = page.$el;
|
15130 | } else {
|
15131 | $pageEl = $(page);
|
15132 | if ($pageEl.length > 0) pageData = $pageEl[0].f7Page;
|
15133 | }
|
15134 |
|
15135 | if (pageData && pageData.$navbarEl && pageData.$navbarEl.length > 0) {
|
15136 | $navbarEl = pageData.$navbarEl;
|
15137 | } else if ($pageEl) {
|
15138 | $navbarEl = $pageEl.children('.navbar');
|
15139 | }
|
15140 |
|
15141 | if (!$navbarEl || $navbarEl && $navbarEl.length === 0) return undefined;
|
15142 | return $navbarEl[0];
|
15143 | },
|
15144 | getPageByEl: function getPageByEl(navbarEl) {
|
15145 | var $navbarEl = $(navbarEl);
|
15146 |
|
15147 | if ($navbarEl.parents('.page').length) {
|
15148 | return $navbarEl.parents('.page')[0];
|
15149 | }
|
15150 |
|
15151 | var pageEl;
|
15152 | $navbarEl.parents('.view').find('.page').each(function (el) {
|
15153 | if (el && el.f7Page && el.f7Page.navbarEl && $navbarEl[0] === el.f7Page.navbarEl) {
|
15154 | pageEl = el;
|
15155 | }
|
15156 | });
|
15157 | return pageEl;
|
15158 | },
|
15159 | collapseLargeTitle: function collapseLargeTitle(navbarEl) {
|
15160 | var app = this;
|
15161 | var $navbarEl = $(navbarEl);
|
15162 |
|
15163 | if ($navbarEl.hasClass('navbars')) {
|
15164 | $navbarEl = $navbarEl.find('.navbar');
|
15165 |
|
15166 | if ($navbarEl.length > 1) {
|
15167 | $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');
|
15168 | }
|
15169 |
|
15170 | if ($navbarEl.length > 1 || !$navbarEl.length) {
|
15171 | return;
|
15172 | }
|
15173 | }
|
15174 |
|
15175 | var $pageEl = $(app.navbar.getPageByEl($navbarEl));
|
15176 | $navbarEl.addClass('navbar-large-collapsed');
|
15177 | $pageEl.eq(0).addClass('page-with-navbar-large-collapsed').trigger('page:navbarlargecollapsed');
|
15178 | app.emit('pageNavbarLargeCollapsed', $pageEl[0]);
|
15179 | $navbarEl.trigger('navbar:collapse');
|
15180 | app.emit('navbarCollapse', $navbarEl[0]);
|
15181 | },
|
15182 | expandLargeTitle: function expandLargeTitle(navbarEl) {
|
15183 | var app = this;
|
15184 | var $navbarEl = $(navbarEl);
|
15185 |
|
15186 | if ($navbarEl.hasClass('navbars')) {
|
15187 | $navbarEl = $navbarEl.find('.navbar-large');
|
15188 |
|
15189 | if ($navbarEl.length > 1) {
|
15190 | $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');
|
15191 | }
|
15192 |
|
15193 | if ($navbarEl.length > 1 || !$navbarEl.length) {
|
15194 | return;
|
15195 | }
|
15196 | }
|
15197 |
|
15198 | var $pageEl = $(app.navbar.getPageByEl($navbarEl));
|
15199 | $navbarEl.removeClass('navbar-large-collapsed');
|
15200 | $pageEl.eq(0).removeClass('page-with-navbar-large-collapsed').trigger('page:navbarlargeexpanded');
|
15201 | app.emit('pageNavbarLargeExpanded', $pageEl[0]);
|
15202 | $navbarEl.trigger('navbar:expand');
|
15203 | app.emit('navbarExpand', $navbarEl[0]);
|
15204 | },
|
15205 | toggleLargeTitle: function toggleLargeTitle(navbarEl) {
|
15206 | var app = this;
|
15207 | var $navbarEl = $(navbarEl);
|
15208 |
|
15209 | if ($navbarEl.hasClass('navbars')) {
|
15210 | $navbarEl = $navbarEl.find('.navbar-large');
|
15211 |
|
15212 | if ($navbarEl.length > 1) {
|
15213 | $navbarEl = $(navbarEl).find('.navbar-large.navbar-current');
|
15214 | }
|
15215 |
|
15216 | if ($navbarEl.length > 1 || !$navbarEl.length) {
|
15217 | return;
|
15218 | }
|
15219 | }
|
15220 |
|
15221 | if ($navbarEl.hasClass('navbar-large-collapsed')) {
|
15222 | app.navbar.expandLargeTitle($navbarEl);
|
15223 | } else {
|
15224 | app.navbar.collapseLargeTitle($navbarEl);
|
15225 | }
|
15226 | },
|
15227 | initNavbarOnScroll: function initNavbarOnScroll(pageEl, navbarEl, needHide, needCollapse, needTransparent) {
|
15228 | var app = this;
|
15229 | var support = getSupport$1();
|
15230 | var $pageEl = $(pageEl);
|
15231 | var $navbarEl = $(navbarEl);
|
15232 | var $titleLargeEl = $navbarEl.find('.title-large');
|
15233 | var isLarge = $titleLargeEl.length || $navbarEl.hasClass('.navbar-large');
|
15234 | var navbarHideHeight = 44;
|
15235 | var snapPageScrollToLargeTitle = app.params.navbar.snapPageScrollToLargeTitle;
|
15236 | var snapPageScrollToTransparentNavbar = app.params.navbar.snapPageScrollToTransparentNavbar;
|
15237 | var previousScrollTop;
|
15238 | var currentScrollTop;
|
15239 | var scrollHeight;
|
15240 | var offsetHeight;
|
15241 | var reachEnd;
|
15242 | var action;
|
15243 | var navbarHidden;
|
15244 | var navbarCollapsed;
|
15245 | var navbarTitleLargeHeight;
|
15246 | var navbarOffsetHeight;
|
15247 |
|
15248 | if (needCollapse || needHide && isLarge) {
|
15249 | navbarTitleLargeHeight = $navbarEl.css('--f7-navbar-large-title-height');
|
15250 |
|
15251 | if (navbarTitleLargeHeight && navbarTitleLargeHeight.indexOf('px') >= 0) {
|
15252 | navbarTitleLargeHeight = parseInt(navbarTitleLargeHeight, 10);
|
15253 |
|
15254 | if (Number.isNaN(navbarTitleLargeHeight) && $titleLargeEl.length) {
|
15255 | navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;
|
15256 | } else if (Number.isNaN(navbarTitleLargeHeight)) {
|
15257 | if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 48;else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;
|
15258 | }
|
15259 | } else if ($titleLargeEl.length) {
|
15260 | navbarTitleLargeHeight = $titleLargeEl[0].offsetHeight;
|
15261 | } else {
|
15262 |
|
15263 | if (app.theme === 'ios') navbarTitleLargeHeight = 52;else if (app.theme === 'md') navbarTitleLargeHeight = 48;else if (app.theme === 'aurora') navbarTitleLargeHeight = 38;
|
15264 | }
|
15265 | }
|
15266 |
|
15267 | if (needHide && isLarge) {
|
15268 | navbarHideHeight += navbarTitleLargeHeight;
|
15269 | }
|
15270 |
|
15271 | var scrollChanged;
|
15272 | var scrollContent;
|
15273 | var scrollTimeoutId;
|
15274 | var touchEndTimeoutId;
|
15275 | var touchSnapTimeout = 70;
|
15276 | var desktopSnapTimeout = 300;
|
15277 |
|
15278 | function calcScrollableDistance() {
|
15279 | $pageEl.find('.page-content').each(function (pageContentEl) {
|
15280 | pageContentEl.f7ScrollableDistance = pageContentEl.scrollHeight - pageContentEl.offsetHeight;
|
15281 | });
|
15282 | }
|
15283 |
|
15284 | function snapLargeNavbar() {
|
15285 | var inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
|
15286 | if (inSearchbarExpanded) return;
|
15287 | if (!scrollContent || currentScrollTop < 0) return;
|
15288 |
|
15289 | if (currentScrollTop >= navbarTitleLargeHeight / 2 && currentScrollTop < navbarTitleLargeHeight) {
|
15290 | $(scrollContent).scrollTop(navbarTitleLargeHeight, 100);
|
15291 | } else if (currentScrollTop < navbarTitleLargeHeight) {
|
15292 | $(scrollContent).scrollTop(0, 200);
|
15293 | }
|
15294 | }
|
15295 |
|
15296 | function snapTransparentNavbar() {
|
15297 | var inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
|
15298 | if (inSearchbarExpanded) return;
|
15299 | if (!scrollContent || currentScrollTop < 0) return;
|
15300 |
|
15301 | if (currentScrollTop >= navbarOffsetHeight / 2 && currentScrollTop < navbarOffsetHeight) {
|
15302 | $(scrollContent).scrollTop(navbarOffsetHeight, 100);
|
15303 | } else if (currentScrollTop < navbarOffsetHeight) {
|
15304 | $(scrollContent).scrollTop(0, 200);
|
15305 | }
|
15306 | }
|
15307 |
|
15308 | function handleNavbarTransparent() {
|
15309 | var isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');
|
15310 | var inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
|
15311 | if (inSearchbarExpanded || isHidden) return;
|
15312 |
|
15313 | if (!navbarOffsetHeight) {
|
15314 | navbarOffsetHeight = navbarEl.offsetHeight;
|
15315 | }
|
15316 |
|
15317 | var opacity = currentScrollTop / navbarOffsetHeight;
|
15318 | var notTransparent = $navbarEl.hasClass('navbar-transparent-visible');
|
15319 | opacity = Math.max(Math.min(opacity, 1), 0);
|
15320 |
|
15321 | if (notTransparent && opacity === 1 || !notTransparent && opacity === 0) {
|
15322 | $navbarEl.find('.navbar-bg, .title').css('opacity', '');
|
15323 | return;
|
15324 | }
|
15325 |
|
15326 | if (notTransparent && opacity === 0) {
|
15327 | $navbarEl.trigger('navbar:transparenthide');
|
15328 | app.emit('navbarTransparentHide', $navbarEl[0]);
|
15329 | $navbarEl.removeClass('navbar-transparent-visible');
|
15330 | $navbarEl.find('.navbar-bg, .title').css('opacity', '');
|
15331 | return;
|
15332 | }
|
15333 |
|
15334 | if (!notTransparent && opacity === 1) {
|
15335 | $navbarEl.trigger('navbar:transparentshow');
|
15336 | app.emit('navbarTransparentShow', $navbarEl[0]);
|
15337 | $navbarEl.addClass('navbar-transparent-visible');
|
15338 | $navbarEl.find('.navbar-bg, .title').css('opacity', '');
|
15339 | return;
|
15340 | }
|
15341 |
|
15342 | $navbarEl.find('.navbar-bg, .title').css('opacity', opacity);
|
15343 |
|
15344 | if (snapPageScrollToTransparentNavbar) {
|
15345 | if (!support.touch) {
|
15346 | clearTimeout(scrollTimeoutId);
|
15347 | scrollTimeoutId = setTimeout(function () {
|
15348 | snapTransparentNavbar();
|
15349 | }, desktopSnapTimeout);
|
15350 | } else if (touchEndTimeoutId) {
|
15351 | clearTimeout(touchEndTimeoutId);
|
15352 | touchEndTimeoutId = null;
|
15353 | touchEndTimeoutId = setTimeout(function () {
|
15354 | snapTransparentNavbar();
|
15355 | clearTimeout(touchEndTimeoutId);
|
15356 | touchEndTimeoutId = null;
|
15357 | }, touchSnapTimeout);
|
15358 | }
|
15359 | }
|
15360 | }
|
15361 |
|
15362 | var previousCollapseProgress = null;
|
15363 | var collapseProgress = null;
|
15364 |
|
15365 | function handleLargeNavbarCollapse(pageContentEl) {
|
15366 | var isHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');
|
15367 | if (isHidden) return;
|
15368 | var isLargeTransparent = $navbarEl.hasClass('navbar-large-transparent') || $navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-transparent');
|
15369 | previousCollapseProgress = collapseProgress;
|
15370 | var scrollableDistance = Math.min(navbarTitleLargeHeight, pageContentEl.f7ScrollableDistance || navbarTitleLargeHeight);
|
15371 | collapseProgress = Math.min(Math.max(currentScrollTop / scrollableDistance, 0), 1);
|
15372 | var previousCollapseWasInMiddle = previousCollapseProgress > 0 && previousCollapseProgress < 1;
|
15373 | var inSearchbarExpanded = $navbarEl.hasClass('with-searchbar-expandable-enabled');
|
15374 | if (inSearchbarExpanded) return;
|
15375 | navbarCollapsed = $navbarEl.hasClass('navbar-large-collapsed');
|
15376 |
|
15377 | if (collapseProgress === 0 && navbarCollapsed) {
|
15378 | app.navbar.expandLargeTitle($navbarEl[0]);
|
15379 | } else if (collapseProgress === 1 && !navbarCollapsed) {
|
15380 | app.navbar.collapseLargeTitle($navbarEl[0]);
|
15381 | }
|
15382 |
|
15383 | if (collapseProgress === 0 && navbarCollapsed || collapseProgress === 0 && previousCollapseWasInMiddle || collapseProgress === 1 && !navbarCollapsed || collapseProgress === 1 && previousCollapseWasInMiddle) {
|
15384 | if (app.theme === 'md') {
|
15385 | $navbarEl.find('.navbar-inner').css('overflow', '');
|
15386 | }
|
15387 |
|
15388 | $navbarEl.find('.title').css('opacity', '');
|
15389 | $navbarEl.find('.title-large-text, .subnavbar').css('transform', '');
|
15390 |
|
15391 | if (isLargeTransparent) {
|
15392 | $navbarEl.find('.navbar-bg').css('opacity', '');
|
15393 | } else {
|
15394 | $navbarEl.find('.navbar-bg').css('transform', '');
|
15395 | }
|
15396 | } else if (collapseProgress > 0 && collapseProgress < 1) {
|
15397 | if (app.theme === 'md') {
|
15398 | $navbarEl.find('.navbar-inner').css('overflow', 'visible');
|
15399 | }
|
15400 |
|
15401 | $navbarEl.find('.title').css('opacity', collapseProgress);
|
15402 | $navbarEl.find('.title-large-text, .subnavbar').css('transform', "translate3d(0px, " + -1 * collapseProgress * navbarTitleLargeHeight + "px, 0)");
|
15403 |
|
15404 | if (isLargeTransparent) {
|
15405 | $navbarEl.find('.navbar-bg').css('opacity', collapseProgress);
|
15406 | } else {
|
15407 | $navbarEl.find('.navbar-bg').css('transform', "translate3d(0px, " + -1 * collapseProgress * navbarTitleLargeHeight + "px, 0)");
|
15408 | }
|
15409 | }
|
15410 |
|
15411 | if (snapPageScrollToLargeTitle) {
|
15412 | if (!support.touch) {
|
15413 | clearTimeout(scrollTimeoutId);
|
15414 | scrollTimeoutId = setTimeout(function () {
|
15415 | snapLargeNavbar();
|
15416 | }, desktopSnapTimeout);
|
15417 | } else if (touchEndTimeoutId) {
|
15418 | clearTimeout(touchEndTimeoutId);
|
15419 | touchEndTimeoutId = null;
|
15420 | touchEndTimeoutId = setTimeout(function () {
|
15421 | snapLargeNavbar();
|
15422 | clearTimeout(touchEndTimeoutId);
|
15423 | touchEndTimeoutId = null;
|
15424 | }, touchSnapTimeout);
|
15425 | }
|
15426 | }
|
15427 | }
|
15428 |
|
15429 | function handleTitleHideShow() {
|
15430 | if ($pageEl.hasClass('page-with-card-opened')) return;
|
15431 | scrollHeight = scrollContent.scrollHeight;
|
15432 | offsetHeight = scrollContent.offsetHeight;
|
15433 | reachEnd = currentScrollTop + offsetHeight >= scrollHeight;
|
15434 | navbarHidden = $navbarEl.hasClass('navbar-hidden') || $navbarEl.parent('.navbars').hasClass('navbar-hidden');
|
15435 |
|
15436 | if (reachEnd) {
|
15437 | if (app.params.navbar.showOnPageScrollEnd) {
|
15438 | action = 'show';
|
15439 | }
|
15440 | } else if (previousScrollTop > currentScrollTop) {
|
15441 | if (app.params.navbar.showOnPageScrollTop || currentScrollTop <= navbarHideHeight) {
|
15442 | action = 'show';
|
15443 | } else {
|
15444 | action = 'hide';
|
15445 | }
|
15446 | } else if (currentScrollTop > navbarHideHeight) {
|
15447 | action = 'hide';
|
15448 | } else {
|
15449 | action = 'show';
|
15450 | }
|
15451 |
|
15452 | if (action === 'show' && navbarHidden) {
|
15453 | app.navbar.show($navbarEl, true, true);
|
15454 | navbarHidden = false;
|
15455 | } else if (action === 'hide' && !navbarHidden) {
|
15456 | app.navbar.hide($navbarEl, true, false, true);
|
15457 | navbarHidden = true;
|
15458 | }
|
15459 |
|
15460 | previousScrollTop = currentScrollTop;
|
15461 | }
|
15462 |
|
15463 | function handleScroll(e) {
|
15464 | scrollContent = this;
|
15465 |
|
15466 | if (e && e.target && e.target !== scrollContent) {
|
15467 | return;
|
15468 | }
|
15469 |
|
15470 | currentScrollTop = scrollContent.scrollTop;
|
15471 | scrollChanged = currentScrollTop;
|
15472 |
|
15473 | if (needCollapse) {
|
15474 | handleLargeNavbarCollapse(scrollContent);
|
15475 | } else if (needTransparent) {
|
15476 | handleNavbarTransparent();
|
15477 | }
|
15478 |
|
15479 | if ($pageEl.hasClass('page-previous')) return;
|
15480 |
|
15481 | if (needHide) {
|
15482 | handleTitleHideShow();
|
15483 | }
|
15484 | }
|
15485 |
|
15486 | function handeTouchStart() {
|
15487 | scrollChanged = false;
|
15488 | }
|
15489 |
|
15490 | function handleTouchEnd() {
|
15491 | clearTimeout(touchEndTimeoutId);
|
15492 | touchEndTimeoutId = null;
|
15493 | touchEndTimeoutId = setTimeout(function () {
|
15494 | if (scrollChanged !== false) {
|
15495 | if (needTransparent && !needCollapse) {
|
15496 | snapTransparentNavbar();
|
15497 | } else {
|
15498 | snapLargeNavbar();
|
15499 | }
|
15500 |
|
15501 | clearTimeout(touchEndTimeoutId);
|
15502 | touchEndTimeoutId = null;
|
15503 | }
|
15504 | }, touchSnapTimeout);
|
15505 | }
|
15506 |
|
15507 | $pageEl.on('scroll', '.page-content', handleScroll, true);
|
15508 |
|
15509 | if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {
|
15510 | app.on('touchstart:passive', handeTouchStart);
|
15511 | app.on('touchend:passive', handleTouchEnd);
|
15512 | }
|
15513 |
|
15514 | calcScrollableDistance();
|
15515 |
|
15516 | if (needCollapse || needTransparent) {
|
15517 | $pageEl.find('.page-content').each(function (pageContentEl) {
|
15518 | if (pageContentEl.scrollTop > 0) handleScroll.call(pageContentEl);
|
15519 | });
|
15520 | }
|
15521 |
|
15522 | app.on('resize', calcScrollableDistance);
|
15523 |
|
15524 | $pageEl[0].f7DetachNavbarScrollHandlers = function f7DetachNavbarScrollHandlers() {
|
15525 | app.off('resize', calcScrollableDistance);
|
15526 | delete $pageEl[0].f7DetachNavbarScrollHandlers;
|
15527 | $pageEl.off('scroll', '.page-content', handleScroll, true);
|
15528 |
|
15529 | if (support.touch && (needCollapse && snapPageScrollToLargeTitle || needTransparent && snapPageScrollToTransparentNavbar)) {
|
15530 | app.off('touchstart:passive', handeTouchStart);
|
15531 | app.off('touchend:passive', handleTouchEnd);
|
15532 | }
|
15533 | };
|
15534 | }
|
15535 | };
|
15536 | var Navbar$1 = {
|
15537 | name: 'navbar',
|
15538 | create: function create() {
|
15539 | var app = this;
|
15540 | bindMethods(app, {
|
15541 | navbar: Navbar
|
15542 | });
|
15543 | },
|
15544 | params: {
|
15545 | navbar: {
|
15546 | scrollTopOnTitleClick: true,
|
15547 | iosCenterTitle: true,
|
15548 | mdCenterTitle: false,
|
15549 | auroraCenterTitle: true,
|
15550 | hideOnPageScroll: false,
|
15551 | showOnPageScrollEnd: true,
|
15552 | showOnPageScrollTop: true,
|
15553 | collapseLargeTitleOnScroll: true,
|
15554 | snapPageScrollToLargeTitle: true,
|
15555 | snapPageScrollToTransparentNavbar: true
|
15556 | }
|
15557 | },
|
15558 | on: {
|
15559 | 'panelBreakpoint panelCollapsedBreakpoint panelResize viewResize resize viewMasterDetailBreakpoint': function onPanelResize() {
|
15560 | var app = this;
|
15561 | $('.navbar').each(function (navbarEl) {
|
15562 | app.navbar.size(navbarEl);
|
15563 | });
|
15564 | },
|
15565 | pageBeforeRemove: function pageBeforeRemove(page) {
|
15566 | if (page.$el[0].f7DetachNavbarScrollHandlers) {
|
15567 | page.$el[0].f7DetachNavbarScrollHandlers();
|
15568 | }
|
15569 | },
|
15570 | pageBeforeIn: function pageBeforeIn(page) {
|
15571 | var app = this;
|
15572 | if (app.theme !== 'ios') return;
|
15573 | var $navbarsEl;
|
15574 | var view = page.$el.parents('.view')[0].f7View;
|
15575 | var navbarEl = app.navbar.getElByPage(page);
|
15576 |
|
15577 | if (!navbarEl) {
|
15578 | $navbarsEl = page.$el.parents('.view').children('.navbars');
|
15579 | } else {
|
15580 | $navbarsEl = $(navbarEl).parents('.navbars');
|
15581 | }
|
15582 |
|
15583 | if (page.$el.hasClass('no-navbar') || view.router.dynamicNavbar && !navbarEl) {
|
15584 | var animate = !!(page.pageFrom && page.router.history.length > 0);
|
15585 | app.navbar.hide($navbarsEl, animate);
|
15586 | } else {
|
15587 | app.navbar.show($navbarsEl);
|
15588 | }
|
15589 | },
|
15590 | pageReinit: function pageReinit(page) {
|
15591 | var app = this;
|
15592 | var $navbarEl = $(app.navbar.getElByPage(page));
|
15593 | if (!$navbarEl || $navbarEl.length === 0) return;
|
15594 | app.navbar.size($navbarEl);
|
15595 | },
|
15596 | pageInit: function pageInit(page) {
|
15597 | var app = this;
|
15598 | var $navbarEl = $(app.navbar.getElByPage(page));
|
15599 | if (!$navbarEl || $navbarEl.length === 0) return;
|
15600 |
|
15601 | app.navbar.size($navbarEl);
|
15602 |
|
15603 | var needCollapseOnScrollHandler;
|
15604 |
|
15605 | if ($navbarEl.find('.title-large').length > 0) {
|
15606 | $navbarEl.addClass('navbar-large');
|
15607 | }
|
15608 |
|
15609 | if ($navbarEl.hasClass('navbar-large')) {
|
15610 | if (app.params.navbar.collapseLargeTitleOnScroll) needCollapseOnScrollHandler = true;
|
15611 | page.$el.addClass('page-with-navbar-large');
|
15612 | }
|
15613 |
|
15614 |
|
15615 | var needTransparentOnScroll;
|
15616 |
|
15617 | if (!needCollapseOnScrollHandler && $navbarEl.hasClass('navbar-transparent')) {
|
15618 | needTransparentOnScroll = true;
|
15619 | }
|
15620 |
|
15621 |
|
15622 | var needHideOnScrollHandler;
|
15623 |
|
15624 | if (app.params.navbar.hideOnPageScroll || page.$el.find('.hide-navbar-on-scroll').length || page.$el.hasClass('hide-navbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {
|
15625 | if (page.$el.find('.keep-navbar-on-scroll').length || page.$el.hasClass('keep-navbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {
|
15626 | needHideOnScrollHandler = false;
|
15627 | } else {
|
15628 | needHideOnScrollHandler = true;
|
15629 | }
|
15630 | }
|
15631 |
|
15632 | if (needCollapseOnScrollHandler || needHideOnScrollHandler || needTransparentOnScroll) {
|
15633 | app.navbar.initNavbarOnScroll(page.el, $navbarEl[0], needHideOnScrollHandler, needCollapseOnScrollHandler, needTransparentOnScroll);
|
15634 | }
|
15635 | },
|
15636 | 'panelOpen panelSwipeOpen modalOpen': function onPanelModalOpen(instance) {
|
15637 | var app = this;
|
15638 | instance.$el.find('.navbar:not(.navbar-previous):not(.stacked)').each(function (navbarEl) {
|
15639 | app.navbar.size(navbarEl);
|
15640 | });
|
15641 | },
|
15642 | tabShow: function tabShow(tabEl) {
|
15643 | var app = this;
|
15644 | $(tabEl).find('.navbar:not(.navbar-previous):not(.stacked)').each(function (navbarEl) {
|
15645 | app.navbar.size(navbarEl);
|
15646 | });
|
15647 | }
|
15648 | },
|
15649 | clicks: {
|
15650 | '.navbar .title': function onTitleClick($clickedEl) {
|
15651 | var app = this;
|
15652 | if (!app.params.navbar.scrollTopOnTitleClick) return;
|
15653 |
|
15654 | if ($clickedEl.closest('a').length > 0) {
|
15655 | return;
|
15656 | }
|
15657 |
|
15658 | var $pageContentEl;
|
15659 |
|
15660 | var $navbarEl = $clickedEl.parents('.navbar');
|
15661 | var $navbarsEl = $navbarEl.parents('.navbars');
|
15662 |
|
15663 | $pageContentEl = $navbarEl.parents('.page-content');
|
15664 |
|
15665 | if ($pageContentEl.length === 0) {
|
15666 |
|
15667 | if ($navbarEl.parents('.page').length > 0) {
|
15668 | $pageContentEl = $navbarEl.parents('.page').find('.page-content');
|
15669 | }
|
15670 |
|
15671 |
|
15672 | if ($pageContentEl.length === 0 && $navbarsEl.length) {
|
15673 | if ($navbarsEl.nextAll('.page-current:not(.stacked)').length > 0) {
|
15674 | $pageContentEl = $navbarsEl.nextAll('.page-current:not(.stacked)').find('.page-content');
|
15675 | }
|
15676 | }
|
15677 |
|
15678 |
|
15679 | if ($pageContentEl.length === 0) {
|
15680 | if ($navbarEl.nextAll('.page-current:not(.stacked)').length > 0) {
|
15681 | $pageContentEl = $navbarEl.nextAll('.page-current:not(.stacked)').find('.page-content');
|
15682 | }
|
15683 | }
|
15684 | }
|
15685 |
|
15686 | if ($pageContentEl && $pageContentEl.length > 0) {
|
15687 |
|
15688 | if ($pageContentEl.hasClass('tab')) {
|
15689 | $pageContentEl = $pageContentEl.parent('.tabs').children('.page-content.tab-active');
|
15690 | }
|
15691 |
|
15692 | if ($pageContentEl.length > 0) $pageContentEl.scrollTop(0, 300);
|
15693 | }
|
15694 | }
|
15695 | },
|
15696 | vnode: {
|
15697 | navbar: {
|
15698 | postpatch: function postpatch(vnode) {
|
15699 | var app = this;
|
15700 | app.navbar.size(vnode.elm);
|
15701 | }
|
15702 | }
|
15703 | }
|
15704 | };
|
15705 |
|
15706 | var Toolbar = {
|
15707 | setHighlight: function setHighlight(tabbarEl) {
|
15708 | var app = this;
|
15709 | if (app.theme === 'ios') return;
|
15710 | var $tabbarEl = $(tabbarEl);
|
15711 | if ($tabbarEl.length === 0 || !($tabbarEl.hasClass('tabbar') || $tabbarEl.hasClass('tabbar-labels'))) return;
|
15712 | var $highlightEl = $tabbarEl.find('.tab-link-highlight');
|
15713 | var tabLinksCount = $tabbarEl.find('.tab-link').length;
|
15714 |
|
15715 | if (tabLinksCount === 0) {
|
15716 | $highlightEl.remove();
|
15717 | return;
|
15718 | }
|
15719 |
|
15720 | if ($highlightEl.length === 0) {
|
15721 | $tabbarEl.children('.toolbar-inner').append('<span class="tab-link-highlight"></span>');
|
15722 | $highlightEl = $tabbarEl.find('.tab-link-highlight');
|
15723 | } else if ($highlightEl.next().length) {
|
15724 | $tabbarEl.children('.toolbar-inner').append($highlightEl);
|
15725 | }
|
15726 |
|
15727 | var $activeLink = $tabbarEl.find('.tab-link-active');
|
15728 | var highlightWidth;
|
15729 | var highlightTranslate;
|
15730 |
|
15731 | if ($tabbarEl.hasClass('tabbar-scrollable') && $activeLink && $activeLink[0]) {
|
15732 | highlightWidth = $activeLink[0].offsetWidth + "px";
|
15733 | highlightTranslate = $activeLink[0].offsetLeft + "px";
|
15734 | } else {
|
15735 | var activeIndex = $activeLink.index();
|
15736 | highlightWidth = 100 / tabLinksCount + "%";
|
15737 | highlightTranslate = (app.rtl ? -activeIndex : activeIndex) * 100 + "%";
|
15738 | }
|
15739 |
|
15740 | nextFrame$1(function () {
|
15741 | $highlightEl.css('width', highlightWidth).transform("translate3d(" + highlightTranslate + ",0,0)");
|
15742 | });
|
15743 | },
|
15744 | init: function init(tabbarEl) {
|
15745 | var app = this;
|
15746 | app.toolbar.setHighlight(tabbarEl);
|
15747 | },
|
15748 | hide: function hide(el, animate) {
|
15749 | if (animate === void 0) {
|
15750 | animate = true;
|
15751 | }
|
15752 |
|
15753 | var app = this;
|
15754 | var $el = $(el);
|
15755 | if ($el.hasClass('toolbar-hidden')) return;
|
15756 | var className = "toolbar-hidden" + (animate ? ' toolbar-transitioning' : '');
|
15757 | $el.transitionEnd(function () {
|
15758 | $el.removeClass('toolbar-transitioning');
|
15759 | });
|
15760 | $el.addClass(className);
|
15761 | $el.trigger('toolbar:hide');
|
15762 | app.emit('toolbarHide', $el[0]);
|
15763 | },
|
15764 | show: function show(el, animate) {
|
15765 | if (animate === void 0) {
|
15766 | animate = true;
|
15767 | }
|
15768 |
|
15769 | var app = this;
|
15770 | var $el = $(el);
|
15771 | if (!$el.hasClass('toolbar-hidden')) return;
|
15772 |
|
15773 | if (animate) {
|
15774 | $el.addClass('toolbar-transitioning');
|
15775 | $el.transitionEnd(function () {
|
15776 | $el.removeClass('toolbar-transitioning');
|
15777 | });
|
15778 | }
|
15779 |
|
15780 | $el.removeClass('toolbar-hidden');
|
15781 | $el.trigger('toolbar:show');
|
15782 | app.emit('toolbarShow', $el[0]);
|
15783 | },
|
15784 | initToolbarOnScroll: function initToolbarOnScroll(pageEl) {
|
15785 | var app = this;
|
15786 | var $pageEl = $(pageEl);
|
15787 | var $toolbarEl = $pageEl.parents('.view').children('.toolbar');
|
15788 |
|
15789 | if ($toolbarEl.length === 0) {
|
15790 | $toolbarEl = $pageEl.find('.toolbar');
|
15791 | }
|
15792 |
|
15793 | if ($toolbarEl.length === 0) {
|
15794 | $toolbarEl = $pageEl.parents('.views').children('.tabbar, .tabbar-labels');
|
15795 | }
|
15796 |
|
15797 | if ($toolbarEl.length === 0) {
|
15798 | return;
|
15799 | }
|
15800 |
|
15801 | var previousScrollTop;
|
15802 | var currentScrollTop;
|
15803 | var scrollHeight;
|
15804 | var offsetHeight;
|
15805 | var reachEnd;
|
15806 | var action;
|
15807 | var toolbarHidden;
|
15808 |
|
15809 | function handleScroll(e) {
|
15810 | if ($pageEl.hasClass('page-with-card-opened')) return;
|
15811 | if ($pageEl.hasClass('page-previous')) return;
|
15812 | var scrollContent = this;
|
15813 |
|
15814 | if (e && e.target && e.target !== scrollContent) {
|
15815 | return;
|
15816 | }
|
15817 |
|
15818 | currentScrollTop = scrollContent.scrollTop;
|
15819 | scrollHeight = scrollContent.scrollHeight;
|
15820 | offsetHeight = scrollContent.offsetHeight;
|
15821 | reachEnd = currentScrollTop + offsetHeight >= scrollHeight;
|
15822 | toolbarHidden = $toolbarEl.hasClass('toolbar-hidden');
|
15823 |
|
15824 | if (reachEnd) {
|
15825 | if (app.params.toolbar.showOnPageScrollEnd) {
|
15826 | action = 'show';
|
15827 | }
|
15828 | } else if (previousScrollTop > currentScrollTop) {
|
15829 | if (app.params.toolbar.showOnPageScrollTop || currentScrollTop <= 44) {
|
15830 | action = 'show';
|
15831 | } else {
|
15832 | action = 'hide';
|
15833 | }
|
15834 | } else if (currentScrollTop > 44) {
|
15835 | action = 'hide';
|
15836 | } else {
|
15837 | action = 'show';
|
15838 | }
|
15839 |
|
15840 | if (action === 'show' && toolbarHidden) {
|
15841 | app.toolbar.show($toolbarEl);
|
15842 | toolbarHidden = false;
|
15843 | } else if (action === 'hide' && !toolbarHidden) {
|
15844 | app.toolbar.hide($toolbarEl);
|
15845 | toolbarHidden = true;
|
15846 | }
|
15847 |
|
15848 | previousScrollTop = currentScrollTop;
|
15849 | }
|
15850 |
|
15851 | $pageEl.on('scroll', '.page-content', handleScroll, true);
|
15852 | $pageEl[0].f7ScrollToolbarHandler = handleScroll;
|
15853 | }
|
15854 | };
|
15855 | var Toolbar$1 = {
|
15856 | name: 'toolbar',
|
15857 | create: function create() {
|
15858 | var app = this;
|
15859 | bindMethods(app, {
|
15860 | toolbar: Toolbar
|
15861 | });
|
15862 | },
|
15863 | params: {
|
15864 | toolbar: {
|
15865 | hideOnPageScroll: false,
|
15866 | showOnPageScrollEnd: true,
|
15867 | showOnPageScrollTop: true
|
15868 | }
|
15869 | },
|
15870 | on: {
|
15871 | pageBeforeRemove: function pageBeforeRemove(page) {
|
15872 | if (page.$el[0].f7ScrollToolbarHandler) {
|
15873 | page.$el.off('scroll', '.page-content', page.$el[0].f7ScrollToolbarHandler, true);
|
15874 | }
|
15875 | },
|
15876 | pageBeforeIn: function pageBeforeIn(page) {
|
15877 | var app = this;
|
15878 | var $toolbarEl = page.$el.parents('.view').children('.toolbar');
|
15879 |
|
15880 | if ($toolbarEl.length === 0) {
|
15881 | $toolbarEl = page.$el.parents('.views').children('.tabbar, .tabbar-labels');
|
15882 | }
|
15883 |
|
15884 | if ($toolbarEl.length === 0) {
|
15885 | $toolbarEl = page.$el.find('.toolbar');
|
15886 | }
|
15887 |
|
15888 | if ($toolbarEl.length === 0) {
|
15889 | return;
|
15890 | }
|
15891 |
|
15892 | if (page.$el.hasClass('no-toolbar')) {
|
15893 | app.toolbar.hide($toolbarEl);
|
15894 | } else {
|
15895 | app.toolbar.show($toolbarEl);
|
15896 | }
|
15897 | },
|
15898 | pageInit: function pageInit(page) {
|
15899 | var app = this;
|
15900 | page.$el.find('.tabbar, .tabbar-labels').each(function (tabbarEl) {
|
15901 | app.toolbar.init(tabbarEl);
|
15902 | });
|
15903 |
|
15904 | if (app.params.toolbar.hideOnPageScroll || page.$el.find('.hide-toolbar-on-scroll').length || page.$el.hasClass('hide-toolbar-on-scroll') || page.$el.find('.hide-bars-on-scroll').length || page.$el.hasClass('hide-bars-on-scroll')) {
|
15905 | if (page.$el.find('.keep-toolbar-on-scroll').length || page.$el.hasClass('keep-toolbar-on-scroll') || page.$el.find('.keep-bars-on-scroll').length || page.$el.hasClass('keep-bars-on-scroll')) {
|
15906 | return;
|
15907 | }
|
15908 |
|
15909 | app.toolbar.initToolbarOnScroll(page.el);
|
15910 | }
|
15911 | },
|
15912 | init: function init() {
|
15913 | var app = this;
|
15914 | app.$el.find('.tabbar, .tabbar-labels').each(function (tabbarEl) {
|
15915 | app.toolbar.init(tabbarEl);
|
15916 | });
|
15917 | }
|
15918 | },
|
15919 | vnode: {
|
15920 | tabbar: {
|
15921 | insert: function insert(vnode) {
|
15922 | var app = this;
|
15923 | app.toolbar.init(vnode.elm);
|
15924 | }
|
15925 | }
|
15926 | }
|
15927 | };
|
15928 |
|
15929 | var Subnavbar = {
|
15930 | name: 'subnavbar',
|
15931 | on: {
|
15932 | pageInit: function pageInit(page) {
|
15933 | if (page.$navbarEl && page.$navbarEl.length && page.$navbarEl.find('.subnavbar').length) {
|
15934 | page.$el.addClass('page-with-subnavbar');
|
15935 | }
|
15936 |
|
15937 | var $innerSubnavbars = page.$el.find('.subnavbar').filter(function (subnavbarEl) {
|
15938 | return $(subnavbarEl).parents('.page')[0] === page.$el[0];
|
15939 | });
|
15940 |
|
15941 | if ($innerSubnavbars.length) {
|
15942 | page.$el.addClass('page-with-subnavbar');
|
15943 | }
|
15944 | }
|
15945 | }
|
15946 | };
|
15947 |
|
15948 | var TouchRipple$1 = function () {
|
15949 | function TouchRipple(app, $el, x, y) {
|
15950 | var ripple = this;
|
15951 | if (!$el) return undefined;
|
15952 |
|
15953 | var _$el$0$getBoundingCli = $el[0].getBoundingClientRect(),
|
15954 | left = _$el$0$getBoundingCli.left,
|
15955 | top = _$el$0$getBoundingCli.top,
|
15956 | width = _$el$0$getBoundingCli.width,
|
15957 | height = _$el$0$getBoundingCli.height;
|
15958 |
|
15959 | var center = {
|
15960 | x: x - left,
|
15961 | y: y - top
|
15962 | };
|
15963 | var diameter = Math.max(Math.pow(Math.pow(height, 2) + Math.pow(width, 2), 0.5), 48);
|
15964 | var isInset = false;
|
15965 | var insetElements = app.params.touch.touchRippleInsetElements || '';
|
15966 |
|
15967 | if (insetElements && $el.is(insetElements)) {
|
15968 | isInset = true;
|
15969 | }
|
15970 |
|
15971 | if (isInset) {
|
15972 | diameter = Math.max(Math.min(width, height), 48);
|
15973 | }
|
15974 |
|
15975 | if (!isInset && $el.css('overflow') === 'hidden') {
|
15976 | var distanceFromCenter = Math.pow(Math.pow(center.x - width / 2, 2) + Math.pow(center.y - height / 2, 2), 0.5);
|
15977 | var scale = (diameter / 2 + distanceFromCenter) / (diameter / 2);
|
15978 | ripple.rippleTransform = "translate3d(0px, 0px, 0) scale(" + scale + ")";
|
15979 | } else {
|
15980 |
|
15981 | ripple.rippleTransform = "translate3d(" + (-center.x + width / 2) + "px, " + (-center.y + height / 2) + "px, 0) scale(1)";
|
15982 | }
|
15983 |
|
15984 | if (isInset) {
|
15985 | $el.addClass('ripple-inset');
|
15986 | }
|
15987 |
|
15988 | ripple.$rippleWaveEl = $("<div class=\"ripple-wave\" style=\"width: " + diameter + "px; height: " + diameter + "px; margin-top:-" + diameter / 2 + "px; margin-left:-" + diameter / 2 + "px; left:" + center.x + "px; top:" + center.y + "px; --f7-ripple-transform: " + ripple.rippleTransform + "\"></div>");
|
15989 | $el.prepend(ripple.$rippleWaveEl);
|
15990 | ripple.$rippleWaveEl.animationEnd(function () {
|
15991 | if (!ripple.$rippleWaveEl) return;
|
15992 | if (ripple.$rippleWaveEl.hasClass('ripple-wave-out')) return;
|
15993 | ripple.$rippleWaveEl.addClass('ripple-wave-in');
|
15994 |
|
15995 | if (ripple.shouldBeRemoved) {
|
15996 | ripple.out();
|
15997 | }
|
15998 | });
|
15999 | return ripple;
|
16000 | }
|
16001 |
|
16002 | var _proto = TouchRipple.prototype;
|
16003 |
|
16004 | _proto.destroy = function destroy() {
|
16005 | var ripple = this;
|
16006 |
|
16007 | if (ripple.$rippleWaveEl) {
|
16008 | ripple.$rippleWaveEl.remove();
|
16009 | }
|
16010 |
|
16011 | Object.keys(ripple).forEach(function (key) {
|
16012 | ripple[key] = null;
|
16013 | delete ripple[key];
|
16014 | });
|
16015 | ripple = null;
|
16016 | };
|
16017 |
|
16018 | _proto.out = function out() {
|
16019 | var ripple = this;
|
16020 | var $rippleWaveEl = this.$rippleWaveEl;
|
16021 | clearTimeout(ripple.removeTimeout);
|
16022 | $rippleWaveEl.addClass('ripple-wave-out');
|
16023 | ripple.removeTimeout = setTimeout(function () {
|
16024 | ripple.destroy();
|
16025 | }, 300);
|
16026 | $rippleWaveEl.animationEnd(function () {
|
16027 | clearTimeout(ripple.removeTimeout);
|
16028 | ripple.destroy();
|
16029 | });
|
16030 | };
|
16031 |
|
16032 | _proto.remove = function remove() {
|
16033 | var ripple = this;
|
16034 | if (ripple.shouldBeRemoved) return;
|
16035 | ripple.removeTimeout = setTimeout(function () {
|
16036 | ripple.destroy();
|
16037 | }, 400);
|
16038 | ripple.shouldBeRemoved = true;
|
16039 |
|
16040 | if (ripple.$rippleWaveEl.hasClass('ripple-wave-in')) {
|
16041 | ripple.out();
|
16042 | }
|
16043 | };
|
16044 |
|
16045 | return TouchRipple;
|
16046 | }();
|
16047 |
|
16048 | var TouchRipple = {
|
16049 | name: 'touch-ripple',
|
16050 | static: {
|
16051 | TouchRipple: TouchRipple$1
|
16052 | },
|
16053 | create: function create() {
|
16054 | var app = this;
|
16055 | app.touchRipple = {
|
16056 | create: function create() {
|
16057 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
16058 | args[_key] = arguments[_key];
|
16059 | }
|
16060 |
|
16061 | return _construct(TouchRipple$1, args);
|
16062 | }
|
16063 | };
|
16064 | }
|
16065 | };
|
16066 |
|
16067 | var openedModals = [];
|
16068 | var dialogsQueue = [];
|
16069 |
|
16070 | function clearDialogsQueue() {
|
16071 | if (dialogsQueue.length === 0) return;
|
16072 | var dialog = dialogsQueue.shift();
|
16073 | dialog.open();
|
16074 | }
|
16075 |
|
16076 | var Modal$1 = function (_Framework7Class) {
|
16077 | _inheritsLoose(Modal, _Framework7Class);
|
16078 |
|
16079 | function Modal(app, params) {
|
16080 | var _this;
|
16081 |
|
16082 | _this = _Framework7Class.call(this, params, [app]) || this;
|
16083 |
|
16084 | var modal = _assertThisInitialized(_this);
|
16085 |
|
16086 | var defaults = {};
|
16087 |
|
16088 | modal.useModulesParams(defaults);
|
16089 | modal.params = extend$1(defaults, params);
|
16090 | modal.opened = false;
|
16091 | var $containerEl = modal.params.containerEl ? $(modal.params.containerEl).eq(0) : app.$el;
|
16092 | if (!$containerEl.length) $containerEl = app.$el;
|
16093 | modal.$containerEl = $containerEl;
|
16094 | modal.containerEl = $containerEl[0];
|
16095 |
|
16096 | modal.useModules();
|
16097 | return _assertThisInitialized(_this) || _assertThisInitialized(_this);
|
16098 | }
|
16099 |
|
16100 | var _proto = Modal.prototype;
|
16101 |
|
16102 | _proto.onOpen = function onOpen() {
|
16103 | var modal = this;
|
16104 | modal.opened = true;
|
16105 | openedModals.push(modal);
|
16106 | $('html').addClass("with-modal-" + modal.type.toLowerCase());
|
16107 | modal.$el.trigger("modal:open " + modal.type.toLowerCase() + ":open");
|
16108 | modal.emit("local::open modalOpen " + modal.type + "Open", modal);
|
16109 | };
|
16110 |
|
16111 | _proto.onOpened = function onOpened() {
|
16112 | var modal = this;
|
16113 | modal.$el.trigger("modal:opened " + modal.type.toLowerCase() + ":opened");
|
16114 | modal.emit("local::opened modalOpened " + modal.type + "Opened", modal);
|
16115 | };
|
16116 |
|
16117 | _proto.onClose = function onClose() {
|
16118 | var modal = this;
|
16119 | modal.opened = false;
|
16120 | if (!modal.type || !modal.$el) return;
|
16121 | openedModals.splice(openedModals.indexOf(modal), 1);
|
16122 | $('html').removeClass("with-modal-" + modal.type.toLowerCase());
|
16123 | modal.$el.trigger("modal:close " + modal.type.toLowerCase() + ":close");
|
16124 | modal.emit("local::close modalClose " + modal.type + "Close", modal);
|
16125 | };
|
16126 |
|
16127 | _proto.onClosed = function onClosed() {
|
16128 | var modal = this;
|
16129 | if (!modal.type || !modal.$el) return;
|
16130 | modal.$el.removeClass('modal-out');
|
16131 | modal.$el.hide();
|
16132 | modal.$el.trigger("modal:closed " + modal.type.toLowerCase() + ":closed");
|
16133 | modal.emit("local::closed modalClosed " + modal.type + "Closed", modal);
|
16134 | };
|
16135 |
|
16136 | _proto.open = function open(animateModal) {
|
16137 | var modal = this;
|
16138 | var document = getDocument();
|
16139 | var app = modal.app;
|
16140 | var $el = modal.$el;
|
16141 | var $backdropEl = modal.$backdropEl;
|
16142 | var type = modal.type;
|
16143 | var animate = true;
|
16144 | if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
|
16145 | animate = modal.params.animate;
|
16146 | }
|
16147 |
|
16148 | if (!$el || $el.hasClass('modal-in')) {
|
16149 | if (animateModal === false && $el[0] && type !== 'dialog') {
|
16150 | $el[0].style.display = 'block';
|
16151 | }
|
16152 |
|
16153 | return modal;
|
16154 | }
|
16155 |
|
16156 | if (type === 'dialog' && app.params.modal.queueDialogs) {
|
16157 | var pushToQueue;
|
16158 |
|
16159 | if ($('.dialog.modal-in').length > 0) {
|
16160 | pushToQueue = true;
|
16161 | } else if (openedModals.length > 0) {
|
16162 | openedModals.forEach(function (openedModal) {
|
16163 | if (openedModal.type === 'dialog') pushToQueue = true;
|
16164 | });
|
16165 | }
|
16166 |
|
16167 | if (pushToQueue) {
|
16168 | dialogsQueue.push(modal);
|
16169 | return modal;
|
16170 | }
|
16171 | }
|
16172 |
|
16173 | var $modalParentEl = $el.parent();
|
16174 | var wasInDom = $el.parents(document).length > 0;
|
16175 |
|
16176 | if (!$modalParentEl.is(modal.$containerEl)) {
|
16177 | modal.$containerEl.append($el);
|
16178 | modal.once(type + "Closed", function () {
|
16179 | if (wasInDom) {
|
16180 | $modalParentEl.append($el);
|
16181 | } else {
|
16182 | $el.remove();
|
16183 | }
|
16184 | });
|
16185 | }
|
16186 |
|
16187 |
|
16188 | $el.show();
|
16189 |
|
16190 |
|
16191 | modal._clientLeft = $el[0].clientLeft;
|
16192 |
|
16193 | function transitionEnd() {
|
16194 | if ($el.hasClass('modal-out')) {
|
16195 | modal.onClosed();
|
16196 | } else if ($el.hasClass('modal-in')) {
|
16197 | modal.onOpened();
|
16198 | }
|
16199 | }
|
16200 |
|
16201 | if (animate) {
|
16202 | if ($backdropEl) {
|
16203 | $backdropEl.removeClass('not-animated');
|
16204 | $backdropEl.addClass('backdrop-in');
|
16205 | }
|
16206 |
|
16207 | $el.animationEnd(function () {
|
16208 | transitionEnd();
|
16209 | });
|
16210 | $el.transitionEnd(function () {
|
16211 | transitionEnd();
|
16212 | });
|
16213 | $el.removeClass('modal-out not-animated').addClass('modal-in');
|
16214 | modal.onOpen();
|
16215 | } else {
|
16216 | if ($backdropEl) {
|
16217 | $backdropEl.addClass('backdrop-in not-animated');
|
16218 | }
|
16219 |
|
16220 | $el.removeClass('modal-out').addClass('modal-in not-animated');
|
16221 | modal.onOpen();
|
16222 | modal.onOpened();
|
16223 | }
|
16224 |
|
16225 | return modal;
|
16226 | };
|
16227 |
|
16228 | _proto.close = function close(animateModal) {
|
16229 | var modal = this;
|
16230 | var $el = modal.$el;
|
16231 | var $backdropEl = modal.$backdropEl;
|
16232 | var animate = true;
|
16233 | if (typeof animateModal !== 'undefined') animate = animateModal;else if (typeof modal.params.animate !== 'undefined') {
|
16234 | animate = modal.params.animate;
|
16235 | }
|
16236 |
|
16237 | if (!$el || !$el.hasClass('modal-in')) {
|
16238 | if (dialogsQueue.indexOf(modal) >= 0) {
|
16239 | dialogsQueue.splice(dialogsQueue.indexOf(modal), 1);
|
16240 | }
|
16241 |
|
16242 | return modal;
|
16243 | }
|
16244 |
|
16245 |
|
16246 | if ($backdropEl) {
|
16247 | var needToHideBackdrop = true;
|
16248 |
|
16249 | if (modal.type === 'popup') {
|
16250 | modal.$el.prevAll('.popup.modal-in').add(modal.$el.nextAll('.popup.modal-in')).each(function (popupEl) {
|
16251 | var popupInstance = popupEl.f7Modal;
|
16252 | if (!popupInstance) return;
|
16253 |
|
16254 | if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === modal.backdropEl) {
|
16255 | needToHideBackdrop = false;
|
16256 | }
|
16257 | });
|
16258 | }
|
16259 |
|
16260 | if (needToHideBackdrop) {
|
16261 | $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
|
16262 | $backdropEl.removeClass('backdrop-in');
|
16263 | }
|
16264 | }
|
16265 |
|
16266 |
|
16267 | $el[animate ? 'removeClass' : 'addClass']('not-animated');
|
16268 |
|
16269 | function transitionEnd() {
|
16270 | if ($el.hasClass('modal-out')) {
|
16271 | modal.onClosed();
|
16272 | } else if ($el.hasClass('modal-in')) {
|
16273 | modal.onOpened();
|
16274 | }
|
16275 | }
|
16276 |
|
16277 | if (animate) {
|
16278 | $el.animationEnd(function () {
|
16279 | transitionEnd();
|
16280 | });
|
16281 | $el.transitionEnd(function () {
|
16282 | transitionEnd();
|
16283 | });
|
16284 | $el.removeClass('modal-in').addClass('modal-out');
|
16285 |
|
16286 | modal.onClose();
|
16287 | } else {
|
16288 | $el.addClass('not-animated').removeClass('modal-in').addClass('modal-out');
|
16289 |
|
16290 | modal.onClose();
|
16291 | modal.onClosed();
|
16292 | }
|
16293 |
|
16294 | if (modal.type === 'dialog') {
|
16295 | clearDialogsQueue();
|
16296 | }
|
16297 |
|
16298 | return modal;
|
16299 | };
|
16300 |
|
16301 | _proto.destroy = function destroy() {
|
16302 | var modal = this;
|
16303 | if (modal.destroyed) return;
|
16304 | modal.emit("local::beforeDestroy modalBeforeDestroy " + modal.type + "BeforeDestroy", modal);
|
16305 |
|
16306 | if (modal.$el) {
|
16307 | modal.$el.trigger("modal:beforedestroy " + modal.type.toLowerCase() + ":beforedestroy");
|
16308 |
|
16309 | if (modal.$el.length && modal.$el[0].f7Modal) {
|
16310 | delete modal.$el[0].f7Modal;
|
16311 | }
|
16312 | }
|
16313 |
|
16314 | deleteProps$1(modal);
|
16315 | modal.destroyed = true;
|
16316 | };
|
16317 |
|
16318 | return Modal;
|
16319 | }(Framework7Class);
|
16320 |
|
16321 | var CustomModal = function (_Modal) {
|
16322 | _inheritsLoose(CustomModal, _Modal);
|
16323 |
|
16324 | function CustomModal(app, params) {
|
16325 | var _this;
|
16326 |
|
16327 | var extendedParams = extend$1({
|
16328 | backdrop: true,
|
16329 | closeByBackdropClick: true,
|
16330 | on: {}
|
16331 | }, params);
|
16332 |
|
16333 | _this = _Modal.call(this, app, extendedParams) || this;
|
16334 |
|
16335 | var customModal = _assertThisInitialized(_this);
|
16336 |
|
16337 | customModal.params = extendedParams;
|
16338 |
|
16339 | var $el;
|
16340 |
|
16341 | if (!customModal.params.el) {
|
16342 | $el = $(customModal.params.content);
|
16343 | } else {
|
16344 | $el = $(customModal.params.el);
|
16345 | }
|
16346 |
|
16347 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
16348 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
16349 | }
|
16350 |
|
16351 | if ($el.length === 0) {
|
16352 | return customModal.destroy() || _assertThisInitialized(_this);
|
16353 | }
|
16354 |
|
16355 | var $backdropEl;
|
16356 |
|
16357 | if (customModal.params.backdrop) {
|
16358 | $backdropEl = app.$el.children('.custom-modal-backdrop');
|
16359 |
|
16360 | if ($backdropEl.length === 0) {
|
16361 | $backdropEl = $('<div class="custom-modal-backdrop"></div>');
|
16362 | app.$el.append($backdropEl);
|
16363 | }
|
16364 | }
|
16365 |
|
16366 | function handleClick(e) {
|
16367 | if (!customModal || customModal.destroyed) return;
|
16368 |
|
16369 | if ($backdropEl && e.target === $backdropEl[0]) {
|
16370 | customModal.close();
|
16371 | }
|
16372 | }
|
16373 |
|
16374 | customModal.on('customModalOpened', function () {
|
16375 | if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {
|
16376 | app.on('click', handleClick);
|
16377 | }
|
16378 | });
|
16379 | customModal.on('customModalClose', function () {
|
16380 | if (customModal.params.closeByBackdropClick && customModal.params.backdrop) {
|
16381 | app.off('click', handleClick);
|
16382 | }
|
16383 | });
|
16384 | extend$1(customModal, {
|
16385 | app: app,
|
16386 | $el: $el,
|
16387 | el: $el[0],
|
16388 | $backdropEl: $backdropEl,
|
16389 | backdropEl: $backdropEl && $backdropEl[0],
|
16390 | type: 'customModal'
|
16391 | });
|
16392 | $el[0].f7Modal = customModal;
|
16393 | return customModal || _assertThisInitialized(_this);
|
16394 | }
|
16395 |
|
16396 | return CustomModal;
|
16397 | }(Modal$1);
|
16398 |
|
16399 | var Modal = {
|
16400 | name: 'modal',
|
16401 | static: {
|
16402 | Modal: Modal$1,
|
16403 | CustomModal: CustomModal
|
16404 | },
|
16405 | create: function create() {
|
16406 | var app = this;
|
16407 | app.customModal = {
|
16408 | create: function create(params) {
|
16409 | return new CustomModal(app, params);
|
16410 | }
|
16411 | };
|
16412 | },
|
16413 | params: {
|
16414 | modal: {
|
16415 | queueDialogs: true
|
16416 | }
|
16417 | }
|
16418 | };
|
16419 |
|
16420 | var Appbar = {
|
16421 | name: 'appbar'
|
16422 | };
|
16423 |
|
16424 |
|
16425 | var $jsx = function $jsx(tag, props) {
|
16426 | var attrs = props || {};
|
16427 |
|
16428 | for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
16429 | args[_key - 2] = arguments[_key];
|
16430 | }
|
16431 |
|
16432 | var children = args || [];
|
16433 | var attrsString = Object.keys(attrs).map(function (attr) {
|
16434 | if (attr[0] === '_') {
|
16435 | if (attrs[attr]) return attr.replace('_', '');
|
16436 | return '';
|
16437 | }
|
16438 |
|
16439 | return attr + "=\"" + attrs[attr] + "\"";
|
16440 | }).filter(function (attr) {
|
16441 | return !!attr;
|
16442 | }).join(' ');
|
16443 |
|
16444 | if (['path', 'img', 'circle', 'polygon', 'line', 'input'].indexOf(tag) >= 0) {
|
16445 | return ("<" + tag + " " + attrsString + " />").trim();
|
16446 | }
|
16447 |
|
16448 | var childrenContent = children.filter(function (c) {
|
16449 | return !!c;
|
16450 | }).map(function (c) {
|
16451 | return Array.isArray(c) ? c.join('') : c;
|
16452 | }).join('');
|
16453 | return ("<" + tag + " " + attrsString + ">" + childrenContent + "</" + tag + ">").trim();
|
16454 | };
|
16455 |
|
16456 | var Dialog$1 = function (_Modal) {
|
16457 | _inheritsLoose(Dialog, _Modal);
|
16458 |
|
16459 | function Dialog(app, params) {
|
16460 | var _this;
|
16461 |
|
16462 | var extendedParams = extend$1({
|
16463 | title: app.params.dialog.title,
|
16464 | text: undefined,
|
16465 | content: '',
|
16466 | buttons: [],
|
16467 | verticalButtons: false,
|
16468 | onClick: undefined,
|
16469 | cssClass: undefined,
|
16470 | destroyOnClose: false,
|
16471 | on: {}
|
16472 | }, params);
|
16473 |
|
16474 | if (typeof extendedParams.closeByBackdropClick === 'undefined') {
|
16475 | extendedParams.closeByBackdropClick = app.params.dialog.closeByBackdropClick;
|
16476 | }
|
16477 |
|
16478 | if (typeof extendedParams.backdrop === 'undefined') {
|
16479 | extendedParams.backdrop = app.params.dialog.backdrop;
|
16480 | }
|
16481 |
|
16482 |
|
16483 | _this = _Modal.call(this, app, extendedParams) || this;
|
16484 |
|
16485 | var dialog = _assertThisInitialized(_this);
|
16486 |
|
16487 | var device = getDevice$1();
|
16488 | var document = getDocument();
|
16489 | var title = extendedParams.title,
|
16490 | text = extendedParams.text,
|
16491 | content = extendedParams.content,
|
16492 | buttons = extendedParams.buttons,
|
16493 | verticalButtons = extendedParams.verticalButtons,
|
16494 | cssClass = extendedParams.cssClass,
|
16495 | backdrop = extendedParams.backdrop;
|
16496 | dialog.params = extendedParams;
|
16497 |
|
16498 | var $el;
|
16499 |
|
16500 | if (!dialog.params.el) {
|
16501 | var dialogClasses = ['dialog'];
|
16502 | if (buttons.length === 0) dialogClasses.push('dialog-no-buttons');
|
16503 | if (buttons.length > 0) dialogClasses.push("dialog-buttons-" + buttons.length);
|
16504 | if (verticalButtons) dialogClasses.push('dialog-buttons-vertical');
|
16505 | if (cssClass) dialogClasses.push(cssClass);
|
16506 | var buttonsHTML = '';
|
16507 |
|
16508 | if (buttons.length > 0) {
|
16509 | buttonsHTML = $jsx("div", {
|
16510 | class: "dialog-buttons"
|
16511 | }, buttons.map(function (button) {
|
16512 | return $jsx("span", {
|
16513 | class: "dialog-button" + (button.bold ? ' dialog-button-bold' : '') + (button.color ? " color-" + button.color : '') + (button.cssClass ? " " + button.cssClass : '')
|
16514 | }, button.text);
|
16515 | }));
|
16516 | }
|
16517 |
|
16518 | var dialogHtml = $jsx("div", {
|
16519 | class: dialogClasses.join(' ')
|
16520 | }, $jsx("div", {
|
16521 | class: "dialog-inner"
|
16522 | }, title && $jsx("div", {
|
16523 | class: "dialog-title"
|
16524 | }, title), text && $jsx("div", {
|
16525 | class: "dialog-text"
|
16526 | }, text), content), buttonsHTML);
|
16527 | $el = $(dialogHtml);
|
16528 | } else {
|
16529 | $el = $(dialog.params.el);
|
16530 | }
|
16531 |
|
16532 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
16533 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
16534 | }
|
16535 |
|
16536 | if ($el.length === 0) {
|
16537 | return dialog.destroy() || _assertThisInitialized(_this);
|
16538 | }
|
16539 |
|
16540 | var $backdropEl;
|
16541 |
|
16542 | if (backdrop) {
|
16543 | $backdropEl = app.$el.children('.dialog-backdrop');
|
16544 |
|
16545 | if ($backdropEl.length === 0) {
|
16546 | $backdropEl = $('<div class="dialog-backdrop"></div>');
|
16547 | app.$el.append($backdropEl);
|
16548 | }
|
16549 | }
|
16550 |
|
16551 |
|
16552 | function buttonOnClick(e) {
|
16553 | var buttonEl = this;
|
16554 | var index = $(buttonEl).index();
|
16555 | var button = buttons[index];
|
16556 | if (button.onClick) button.onClick(dialog, e);
|
16557 | if (dialog.params.onClick) dialog.params.onClick(dialog, index);
|
16558 | if (button.close !== false) dialog.close();
|
16559 | }
|
16560 |
|
16561 | var addKeyboardHander;
|
16562 |
|
16563 | function onKeyDown(e) {
|
16564 | var keyCode = e.keyCode;
|
16565 | buttons.forEach(function (button, index) {
|
16566 | if (button.keyCodes && button.keyCodes.indexOf(keyCode) >= 0) {
|
16567 | if (document.activeElement) document.activeElement.blur();
|
16568 | if (button.onClick) button.onClick(dialog, e);
|
16569 | if (dialog.params.onClick) dialog.params.onClick(dialog, index);
|
16570 | if (button.close !== false) dialog.close();
|
16571 | }
|
16572 | });
|
16573 | }
|
16574 |
|
16575 | if (buttons && buttons.length > 0) {
|
16576 | dialog.on('open', function () {
|
16577 | $el.find('.dialog-button').each(function (buttonEl, index) {
|
16578 | var button = buttons[index];
|
16579 | if (button.keyCodes) addKeyboardHander = true;
|
16580 | $(buttonEl).on('click', buttonOnClick);
|
16581 | });
|
16582 |
|
16583 | if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {
|
16584 | $(document).on('keydown', onKeyDown);
|
16585 | }
|
16586 | });
|
16587 | dialog.on('close', function () {
|
16588 | $el.find('.dialog-button').each(function (buttonEl) {
|
16589 | $(buttonEl).off('click', buttonOnClick);
|
16590 | });
|
16591 |
|
16592 | if (addKeyboardHander && !device.ios && !device.android && !device.cordova && !device.capacitor) {
|
16593 | $(document).off('keydown', onKeyDown);
|
16594 | }
|
16595 |
|
16596 | addKeyboardHander = false;
|
16597 | });
|
16598 | }
|
16599 |
|
16600 | extend$1(dialog, {
|
16601 | app: app,
|
16602 | $el: $el,
|
16603 | el: $el[0],
|
16604 | $backdropEl: $backdropEl,
|
16605 | backdropEl: $backdropEl && $backdropEl[0],
|
16606 | type: 'dialog',
|
16607 | setProgress: function setProgress(progress, duration) {
|
16608 | app.progressbar.set($el.find('.progressbar'), progress, duration);
|
16609 | return dialog;
|
16610 | },
|
16611 | setText: function setText(newText) {
|
16612 | var $textEl = $el.find('.dialog-text');
|
16613 |
|
16614 | if ($textEl.length === 0) {
|
16615 | $textEl = $('<div class="dialog-text"></div>');
|
16616 |
|
16617 | if (typeof title !== 'undefined') {
|
16618 | $textEl.insertAfter($el.find('.dialog-title'));
|
16619 | } else {
|
16620 | $el.find('.dialog-inner').prepend($textEl);
|
16621 | }
|
16622 | }
|
16623 |
|
16624 | $textEl.html(newText);
|
16625 | dialog.params.text = newText;
|
16626 | return dialog;
|
16627 | },
|
16628 | setTitle: function setTitle(newTitle) {
|
16629 | var $titleEl = $el.find('.dialog-title');
|
16630 |
|
16631 | if ($titleEl.length === 0) {
|
16632 | $titleEl = $('<div class="dialog-title"></div>');
|
16633 | $el.find('.dialog-inner').prepend($titleEl);
|
16634 | }
|
16635 |
|
16636 | $titleEl.html(newTitle);
|
16637 | dialog.params.title = newTitle;
|
16638 | return dialog;
|
16639 | }
|
16640 | });
|
16641 |
|
16642 | function handleClick(e) {
|
16643 | var target = e.target;
|
16644 | var $target = $(target);
|
16645 |
|
16646 | if ($target.closest(dialog.el).length === 0) {
|
16647 | if (dialog.params.closeByBackdropClick && dialog.backdropEl && dialog.backdropEl === target) {
|
16648 | dialog.close();
|
16649 | }
|
16650 | }
|
16651 | }
|
16652 |
|
16653 | dialog.on('opened', function () {
|
16654 | if (dialog.params.closeByBackdropClick) {
|
16655 | app.on('click', handleClick);
|
16656 | }
|
16657 | });
|
16658 | dialog.on('close', function () {
|
16659 | if (dialog.params.closeByBackdropClick) {
|
16660 | app.off('click', handleClick);
|
16661 | }
|
16662 | });
|
16663 | $el[0].f7Modal = dialog;
|
16664 |
|
16665 | if (dialog.params.destroyOnClose) {
|
16666 | dialog.once('closed', function () {
|
16667 | setTimeout(function () {
|
16668 | dialog.destroy();
|
16669 | }, 0);
|
16670 | });
|
16671 | }
|
16672 |
|
16673 | return dialog || _assertThisInitialized(_this);
|
16674 | }
|
16675 |
|
16676 | return Dialog;
|
16677 | }(Modal$1);
|
16678 |
|
16679 | var Dialog = {
|
16680 | name: 'dialog',
|
16681 | params: {
|
16682 | dialog: {
|
16683 | title: undefined,
|
16684 | buttonOk: 'OK',
|
16685 | buttonCancel: 'Cancel',
|
16686 | usernamePlaceholder: 'Username',
|
16687 | passwordPlaceholder: 'Password',
|
16688 | preloaderTitle: 'Loading... ',
|
16689 | progressTitle: 'Loading... ',
|
16690 | backdrop: true,
|
16691 | closeByBackdropClick: false,
|
16692 | destroyPredefinedDialogs: true,
|
16693 | keyboardActions: true,
|
16694 | autoFocus: true
|
16695 | }
|
16696 | },
|
16697 | static: {
|
16698 | Dialog: Dialog$1
|
16699 | },
|
16700 | create: function create() {
|
16701 | var app = this;
|
16702 |
|
16703 | function defaultDialogTitle() {
|
16704 | return app.params.dialog.title || app.name;
|
16705 | }
|
16706 |
|
16707 | var destroyOnClose = app.params.dialog.destroyPredefinedDialogs;
|
16708 | var keyboardActions = app.params.dialog.keyboardActions;
|
16709 | var autoFocus = app.params.dialog.autoFocus;
|
16710 | var autoFocusHandler = autoFocus ? {
|
16711 | on: {
|
16712 | opened: function opened(dialog) {
|
16713 | dialog.$el.find('input').eq(0).focus();
|
16714 | }
|
16715 | }
|
16716 | } : {};
|
16717 | app.dialog = extend$1(ModalMethods({
|
16718 | app: app,
|
16719 | constructor: Dialog$1,
|
16720 | defaultSelector: '.dialog.modal-in'
|
16721 | }), {
|
16722 |
|
16723 | alert: function alert() {
|
16724 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
16725 | args[_key] = arguments[_key];
|
16726 | }
|
16727 |
|
16728 | var text = args[0],
|
16729 | title = args[1],
|
16730 | callbackOk = args[2];
|
16731 |
|
16732 | if (args.length === 2 && typeof args[1] === 'function') {
|
16733 | text = args[0];
|
16734 | callbackOk = args[1];
|
16735 | title = args[2];
|
16736 | }
|
16737 |
|
16738 | return new Dialog$1(app, {
|
16739 | title: typeof title === 'undefined' ? defaultDialogTitle() : title,
|
16740 | text: text,
|
16741 | buttons: [{
|
16742 | text: app.params.dialog.buttonOk,
|
16743 | bold: true,
|
16744 | onClick: callbackOk,
|
16745 | keyCodes: keyboardActions ? [13, 27] : null
|
16746 | }],
|
16747 | destroyOnClose: destroyOnClose
|
16748 | }).open();
|
16749 | },
|
16750 | prompt: function prompt() {
|
16751 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
16752 | args[_key2] = arguments[_key2];
|
16753 | }
|
16754 |
|
16755 | var text = args[0],
|
16756 | title = args[1],
|
16757 | callbackOk = args[2],
|
16758 | callbackCancel = args[3],
|
16759 | defaultValue = args[4];
|
16760 |
|
16761 | if (typeof args[1] === 'function') {
|
16762 | text = args[0];
|
16763 | callbackOk = args[1];
|
16764 | callbackCancel = args[2];
|
16765 | defaultValue = args[3];
|
16766 | title = args[4];
|
16767 | }
|
16768 |
|
16769 | defaultValue = typeof defaultValue === 'undefined' || defaultValue === null ? '' : defaultValue;
|
16770 | return new Dialog$1(app, _extends$j({
|
16771 | title: typeof title === 'undefined' ? defaultDialogTitle() : title,
|
16772 | text: text,
|
16773 | content: "<div class=\"dialog-input-field input\"><input type=\"text\" class=\"dialog-input\" value=\"" + defaultValue + "\"></div>",
|
16774 | buttons: [{
|
16775 | text: app.params.dialog.buttonCancel,
|
16776 | keyCodes: keyboardActions ? [27] : null,
|
16777 | color: app.theme === 'aurora' ? 'gray' : null
|
16778 | }, {
|
16779 | text: app.params.dialog.buttonOk,
|
16780 | bold: true,
|
16781 | keyCodes: keyboardActions ? [13] : null
|
16782 | }],
|
16783 | onClick: function onClick(dialog, index) {
|
16784 | var inputValue = dialog.$el.find('.dialog-input').val();
|
16785 | if (index === 0 && callbackCancel) callbackCancel(inputValue);
|
16786 | if (index === 1 && callbackOk) callbackOk(inputValue);
|
16787 | },
|
16788 | destroyOnClose: destroyOnClose
|
16789 | }, autoFocusHandler)).open();
|
16790 | },
|
16791 | confirm: function confirm() {
|
16792 | for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
16793 | args[_key3] = arguments[_key3];
|
16794 | }
|
16795 |
|
16796 | var text = args[0],
|
16797 | title = args[1],
|
16798 | callbackOk = args[2],
|
16799 | callbackCancel = args[3];
|
16800 |
|
16801 | if (typeof args[1] === 'function') {
|
16802 | text = args[0];
|
16803 | callbackOk = args[1];
|
16804 | callbackCancel = args[2];
|
16805 | title = args[3];
|
16806 | }
|
16807 |
|
16808 | return new Dialog$1(app, {
|
16809 | title: typeof title === 'undefined' ? defaultDialogTitle() : title,
|
16810 | text: text,
|
16811 | buttons: [{
|
16812 | text: app.params.dialog.buttonCancel,
|
16813 | onClick: callbackCancel,
|
16814 | keyCodes: keyboardActions ? [27] : null,
|
16815 | color: app.theme === 'aurora' ? 'gray' : null
|
16816 | }, {
|
16817 | text: app.params.dialog.buttonOk,
|
16818 | bold: true,
|
16819 | onClick: callbackOk,
|
16820 | keyCodes: keyboardActions ? [13] : null
|
16821 | }],
|
16822 | destroyOnClose: destroyOnClose
|
16823 | }).open();
|
16824 | },
|
16825 | login: function login() {
|
16826 | for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
16827 | args[_key4] = arguments[_key4];
|
16828 | }
|
16829 |
|
16830 | var text = args[0],
|
16831 | title = args[1],
|
16832 | callbackOk = args[2],
|
16833 | callbackCancel = args[3];
|
16834 |
|
16835 | if (typeof args[1] === 'function') {
|
16836 | text = args[0];
|
16837 | callbackOk = args[1];
|
16838 | callbackCancel = args[2];
|
16839 | title = args[3];
|
16840 | }
|
16841 |
|
16842 | return new Dialog$1(app, _extends$j({
|
16843 | title: typeof title === 'undefined' ? defaultDialogTitle() : title,
|
16844 | text: text,
|
16845 |
|
16846 | content: "\n <div class=\"dialog-input-field dialog-input-double input\">\n <input type=\"text\" name=\"dialog-username\" placeholder=\"" + app.params.dialog.usernamePlaceholder + "\" class=\"dialog-input\">\n </div>\n <div class=\"dialog-input-field dialog-input-double input\">\n <input type=\"password\" name=\"dialog-password\" placeholder=\"" + app.params.dialog.passwordPlaceholder + "\" class=\"dialog-input\">\n </div>",
|
16847 | buttons: [{
|
16848 | text: app.params.dialog.buttonCancel,
|
16849 | keyCodes: keyboardActions ? [27] : null,
|
16850 | color: app.theme === 'aurora' ? 'gray' : null
|
16851 | }, {
|
16852 | text: app.params.dialog.buttonOk,
|
16853 | bold: true,
|
16854 | keyCodes: keyboardActions ? [13] : null
|
16855 | }],
|
16856 | onClick: function onClick(dialog, index) {
|
16857 | var username = dialog.$el.find('[name="dialog-username"]').val();
|
16858 | var password = dialog.$el.find('[name="dialog-password"]').val();
|
16859 | if (index === 0 && callbackCancel) callbackCancel(username, password);
|
16860 | if (index === 1 && callbackOk) callbackOk(username, password);
|
16861 | },
|
16862 | destroyOnClose: destroyOnClose
|
16863 | }, autoFocusHandler)).open();
|
16864 | },
|
16865 | password: function password() {
|
16866 | for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
16867 | args[_key5] = arguments[_key5];
|
16868 | }
|
16869 |
|
16870 | var text = args[0],
|
16871 | title = args[1],
|
16872 | callbackOk = args[2],
|
16873 | callbackCancel = args[3];
|
16874 |
|
16875 | if (typeof args[1] === 'function') {
|
16876 | text = args[0];
|
16877 | callbackOk = args[1];
|
16878 | callbackCancel = args[2];
|
16879 | title = args[3];
|
16880 | }
|
16881 |
|
16882 | return new Dialog$1(app, _extends$j({
|
16883 | title: typeof title === 'undefined' ? defaultDialogTitle() : title,
|
16884 | text: text,
|
16885 |
|
16886 | content: "\n <div class=\"dialog-input-field input\">\n <input type=\"password\" name=\"dialog-password\" placeholder=\"" + app.params.dialog.passwordPlaceholder + "\" class=\"dialog-input\">\n </div>",
|
16887 | buttons: [{
|
16888 | text: app.params.dialog.buttonCancel,
|
16889 | keyCodes: keyboardActions ? [27] : null,
|
16890 | color: app.theme === 'aurora' ? 'gray' : null
|
16891 | }, {
|
16892 | text: app.params.dialog.buttonOk,
|
16893 | bold: true,
|
16894 | keyCodes: keyboardActions ? [13] : null
|
16895 | }],
|
16896 | onClick: function onClick(dialog, index) {
|
16897 | var password = dialog.$el.find('[name="dialog-password"]').val();
|
16898 | if (index === 0 && callbackCancel) callbackCancel(password);
|
16899 | if (index === 1 && callbackOk) callbackOk(password);
|
16900 | },
|
16901 | destroyOnClose: destroyOnClose
|
16902 | }, autoFocusHandler)).open();
|
16903 | },
|
16904 | preloader: function preloader(title, color) {
|
16905 | var preloaders = {
|
16906 | iosPreloaderContent: iosPreloaderContent,
|
16907 | mdPreloaderContent: mdPreloaderContent,
|
16908 | auroraPreloaderContent: auroraPreloaderContent
|
16909 | };
|
16910 | var preloaderInner = preloaders[app.theme + "PreloaderContent"] || '';
|
16911 | return new Dialog$1(app, {
|
16912 | title: typeof title === 'undefined' || title === null ? app.params.dialog.preloaderTitle : title,
|
16913 |
|
16914 | content: "<div class=\"preloader" + (color ? " color-" + color : '') + "\">" + preloaderInner + "</div>",
|
16915 | cssClass: 'dialog-preloader',
|
16916 | destroyOnClose: destroyOnClose
|
16917 | }).open();
|
16918 | },
|
16919 | progress: function progress() {
|
16920 | for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
16921 | args[_key6] = arguments[_key6];
|
16922 | }
|
16923 |
|
16924 | var title = args[0],
|
16925 | progress = args[1],
|
16926 | color = args[2];
|
16927 |
|
16928 | if (args.length === 2) {
|
16929 | if (typeof args[0] === 'number') {
|
16930 | progress = args[0];
|
16931 | color = args[1];
|
16932 | title = args[2];
|
16933 | } else if (typeof args[0] === 'string' && typeof args[1] === 'string') {
|
16934 | title = args[0];
|
16935 | color = args[1];
|
16936 | progress = args[2];
|
16937 | }
|
16938 | } else if (args.length === 1) {
|
16939 | if (typeof args[0] === 'number') {
|
16940 | progress = args[0];
|
16941 | title = args[1];
|
16942 | color = args[2];
|
16943 | }
|
16944 | }
|
16945 |
|
16946 | var infinite = typeof progress === 'undefined';
|
16947 | var dialog = new Dialog$1(app, {
|
16948 | title: typeof title === 'undefined' ? app.params.dialog.progressTitle : title,
|
16949 | cssClass: 'dialog-progress',
|
16950 |
|
16951 | content: "\n <div class=\"progressbar" + (infinite ? '-infinite' : '') + (color ? " color-" + color : '') + "\">\n " + (!infinite ? '<span></span>' : '') + "\n </div>\n ",
|
16952 | destroyOnClose: destroyOnClose
|
16953 | });
|
16954 | if (!infinite) dialog.setProgress(progress);
|
16955 | return dialog.open();
|
16956 | }
|
16957 | });
|
16958 | }
|
16959 | };
|
16960 |
|
16961 | var Popup$1 = function (_Modal) {
|
16962 | _inheritsLoose(Popup, _Modal);
|
16963 |
|
16964 | function Popup(app, params) {
|
16965 | var _this;
|
16966 |
|
16967 | var extendedParams = extend$1({
|
16968 | on: {}
|
16969 | }, app.params.popup, params);
|
16970 |
|
16971 | _this = _Modal.call(this, app, extendedParams) || this;
|
16972 |
|
16973 | var popup = _assertThisInitialized(_this);
|
16974 |
|
16975 | var window = getWindow();
|
16976 | var document = getDocument();
|
16977 | var support = getSupport$1();
|
16978 | var device = getDevice$1();
|
16979 | popup.params = extendedParams;
|
16980 |
|
16981 | var $el;
|
16982 |
|
16983 | if (!popup.params.el) {
|
16984 | $el = $(popup.params.content).filter(function (node) {
|
16985 | return node.nodeType === 1;
|
16986 | }).eq(0);
|
16987 | } else {
|
16988 | $el = $(popup.params.el).eq(0);
|
16989 | }
|
16990 |
|
16991 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
16992 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
16993 | }
|
16994 |
|
16995 | if ($el.length === 0) {
|
16996 | return popup.destroy() || _assertThisInitialized(_this);
|
16997 | }
|
16998 |
|
16999 | var $backdropEl;
|
17000 |
|
17001 | if (popup.params.backdrop && popup.params.backdropEl) {
|
17002 | $backdropEl = $(popup.params.backdropEl);
|
17003 | } else if (popup.params.backdrop) {
|
17004 | $backdropEl = popup.$containerEl.children('.popup-backdrop');
|
17005 |
|
17006 | if ($backdropEl.length === 0) {
|
17007 | $backdropEl = $('<div class="popup-backdrop"></div>');
|
17008 | popup.$containerEl.append($backdropEl);
|
17009 | }
|
17010 | }
|
17011 |
|
17012 | extend$1(popup, {
|
17013 | app: app,
|
17014 | push: $el.hasClass('popup-push') || popup.params.push,
|
17015 | $el: $el,
|
17016 | el: $el[0],
|
17017 | $backdropEl: $backdropEl,
|
17018 | backdropEl: $backdropEl && $backdropEl[0],
|
17019 | type: 'popup',
|
17020 | $htmlEl: $('html')
|
17021 | });
|
17022 |
|
17023 | if (popup.params.push) {
|
17024 | $el.addClass('popup-push');
|
17025 | }
|
17026 |
|
17027 | function handleClick(e) {
|
17028 | var target = e.target;
|
17029 | var $target = $(target);
|
17030 | var keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
|
17031 | if (keyboardOpened) return;
|
17032 |
|
17033 | if ($target.closest(popup.el).length === 0) {
|
17034 | if (popup.params && popup.params.closeByBackdropClick && popup.params.backdrop && popup.backdropEl && popup.backdropEl === target) {
|
17035 | var needToClose = true;
|
17036 | popup.$el.nextAll('.popup.modal-in').each(function (popupEl) {
|
17037 | var popupInstance = popupEl.f7Modal;
|
17038 | if (!popupInstance) return;
|
17039 |
|
17040 | if (popupInstance.params.closeByBackdropClick && popupInstance.params.backdrop && popupInstance.backdropEl === popup.backdropEl) {
|
17041 | needToClose = false;
|
17042 | }
|
17043 | });
|
17044 |
|
17045 | if (needToClose) {
|
17046 | popup.close();
|
17047 | }
|
17048 | }
|
17049 | }
|
17050 | }
|
17051 |
|
17052 | function onKeyDown(e) {
|
17053 | var keyCode = e.keyCode;
|
17054 |
|
17055 | if (keyCode === 27 && popup.params.closeOnEscape) {
|
17056 | popup.close();
|
17057 | }
|
17058 | }
|
17059 |
|
17060 | var pushOffset;
|
17061 | var isPush;
|
17062 |
|
17063 | function pushViewScale(offset) {
|
17064 | return (app.height - offset * 2) / app.height;
|
17065 | }
|
17066 |
|
17067 | var allowSwipeToClose = true;
|
17068 | var isTouched = false;
|
17069 | var startTouch;
|
17070 | var currentTouch;
|
17071 | var isScrolling;
|
17072 | var touchStartTime;
|
17073 | var touchesDiff;
|
17074 | var isMoved = false;
|
17075 | var pageContentEl;
|
17076 | var pageContentScrollTop;
|
17077 | var pageContentOffsetHeight;
|
17078 | var pageContentScrollHeight;
|
17079 | var popupHeight;
|
17080 | var $pushEl;
|
17081 |
|
17082 | function handleTouchStart(e) {
|
17083 | if (isTouched || !allowSwipeToClose || !popup.params.swipeToClose) return;
|
17084 |
|
17085 | if (popup.params.swipeHandler && $(e.target).closest(popup.params.swipeHandler).length === 0) {
|
17086 | return;
|
17087 | }
|
17088 |
|
17089 | isTouched = true;
|
17090 | isMoved = false;
|
17091 | startTouch = {
|
17092 | x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,
|
17093 | y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY
|
17094 | };
|
17095 | touchStartTime = now$1();
|
17096 | isScrolling = undefined;
|
17097 |
|
17098 | if (!popup.params.swipeHandler && e.type === 'touchstart') {
|
17099 | pageContentEl = $(e.target).closest('.page-content')[0];
|
17100 | }
|
17101 | }
|
17102 |
|
17103 | function handleTouchMove(e) {
|
17104 | if (!isTouched) return;
|
17105 | currentTouch = {
|
17106 | x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,
|
17107 | y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY
|
17108 | };
|
17109 |
|
17110 | if (typeof isScrolling === 'undefined') {
|
17111 | isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));
|
17112 | }
|
17113 |
|
17114 | if (isScrolling) {
|
17115 | isTouched = false;
|
17116 | isMoved = false;
|
17117 | return;
|
17118 | }
|
17119 |
|
17120 | touchesDiff = startTouch.y - currentTouch.y;
|
17121 |
|
17122 | if (isPush && pushOffset && touchesDiff > 0) {
|
17123 | touchesDiff = 0;
|
17124 | }
|
17125 |
|
17126 | var direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';
|
17127 | $el.transition(0);
|
17128 |
|
17129 | if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {
|
17130 | $el.transform('');
|
17131 | $el.transition('');
|
17132 | return;
|
17133 | }
|
17134 |
|
17135 | if (!isMoved) {
|
17136 | if (isPush && pushOffset) {
|
17137 | popupHeight = $el[0].offsetHeight;
|
17138 | $pushEl = $el.prevAll('.popup.modal-in').eq(0);
|
17139 |
|
17140 | if ($pushEl.length === 0) {
|
17141 | $pushEl = app.$el.children('.view, .views');
|
17142 | }
|
17143 | }
|
17144 |
|
17145 | if (pageContentEl) {
|
17146 | pageContentScrollTop = pageContentEl.scrollTop;
|
17147 | pageContentScrollHeight = pageContentEl.scrollHeight;
|
17148 | pageContentOffsetHeight = pageContentEl.offsetHeight;
|
17149 |
|
17150 | if (!(pageContentScrollHeight === pageContentOffsetHeight) && !(direction === 'to-bottom' && pageContentScrollTop === 0) && !(direction === 'to-top' && pageContentScrollTop === pageContentScrollHeight - pageContentOffsetHeight)) {
|
17151 | $el.transform('');
|
17152 | $el.transition('');
|
17153 | isTouched = false;
|
17154 | isMoved = false;
|
17155 | return;
|
17156 | }
|
17157 | }
|
17158 |
|
17159 | isMoved = true;
|
17160 | popup.emit('local::swipeStart popupSwipeStart', popup);
|
17161 | popup.$el.trigger('popup:swipestart');
|
17162 | } else {
|
17163 | popup.emit('local::swipeMove popupSwipeMove', popup);
|
17164 | popup.$el.trigger('popup:swipemove');
|
17165 | }
|
17166 |
|
17167 | e.preventDefault();
|
17168 |
|
17169 | if (isPush && pushOffset) {
|
17170 | var pushProgress = 1 - Math.abs(touchesDiff / popupHeight);
|
17171 | var scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;
|
17172 |
|
17173 | if ($pushEl.hasClass('popup')) {
|
17174 | if ($pushEl.hasClass('popup-push')) {
|
17175 | $pushEl.transition(0).forEach(function (el) {
|
17176 | el.style.setProperty('transform', "translate3d(0, calc(-1 * " + pushProgress + " * (var(--f7-popup-push-offset) + 10px)) , 0px) scale(" + scale + ")", 'important');
|
17177 | });
|
17178 | } else {
|
17179 | $pushEl.transition(0).forEach(function (el) {
|
17180 | el.style.setProperty('transform', "translate3d(0, 0px , 0px) scale(" + scale + ")", 'important');
|
17181 | });
|
17182 | }
|
17183 | } else {
|
17184 | $pushEl.transition(0).forEach(function (el) {
|
17185 | el.style.setProperty('transform', "translate3d(0,0,0) scale(" + scale + ")", 'important');
|
17186 | });
|
17187 | }
|
17188 | }
|
17189 |
|
17190 | $el.transition(0).transform("translate3d(0," + -touchesDiff + "px,0)");
|
17191 | }
|
17192 |
|
17193 | function handleTouchEnd() {
|
17194 | isTouched = false;
|
17195 |
|
17196 | if (!isMoved) {
|
17197 | return;
|
17198 | }
|
17199 |
|
17200 | popup.emit('local::swipeEnd popupSwipeEnd', popup);
|
17201 | popup.$el.trigger('popup:swipeend');
|
17202 | isMoved = false;
|
17203 | allowSwipeToClose = false;
|
17204 | $el.transition('');
|
17205 |
|
17206 | if (isPush && pushOffset) {
|
17207 | $pushEl.transition('').transform('');
|
17208 | }
|
17209 |
|
17210 | var direction = touchesDiff <= 0 ? 'to-bottom' : 'to-top';
|
17211 |
|
17212 | if (typeof popup.params.swipeToClose === 'string' && direction !== popup.params.swipeToClose) {
|
17213 | $el.transform('');
|
17214 | allowSwipeToClose = true;
|
17215 | return;
|
17216 | }
|
17217 |
|
17218 | var diff = Math.abs(touchesDiff);
|
17219 | var timeDiff = new Date().getTime() - touchStartTime;
|
17220 |
|
17221 | if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {
|
17222 | nextTick$1(function () {
|
17223 | if (direction === 'to-bottom') {
|
17224 | $el.addClass('swipe-close-to-bottom');
|
17225 | } else {
|
17226 | $el.addClass('swipe-close-to-top');
|
17227 | }
|
17228 |
|
17229 | $el.transform('');
|
17230 | popup.emit('local::swipeclose popupSwipeClose', popup);
|
17231 | popup.$el.trigger('popup:swipeclose');
|
17232 | popup.close();
|
17233 | allowSwipeToClose = true;
|
17234 | });
|
17235 | return;
|
17236 | }
|
17237 |
|
17238 | allowSwipeToClose = true;
|
17239 | $el.transform('');
|
17240 | }
|
17241 |
|
17242 | var passive = support.passiveListener ? {
|
17243 | passive: true
|
17244 | } : false;
|
17245 |
|
17246 | if (popup.params.swipeToClose) {
|
17247 | $el.on(app.touchEvents.start, handleTouchStart, passive);
|
17248 | app.on('touchmove', handleTouchMove);
|
17249 | app.on('touchend:passive', handleTouchEnd);
|
17250 | popup.once('popupDestroy', function () {
|
17251 | $el.off(app.touchEvents.start, handleTouchStart, passive);
|
17252 | app.off('touchmove', handleTouchMove);
|
17253 | app.off('touchend:passive', handleTouchEnd);
|
17254 | });
|
17255 | }
|
17256 |
|
17257 | var hasPreviousPushPopup;
|
17258 |
|
17259 | var updatePushOffset = function updatePushOffset() {
|
17260 | var wasPush = isPush;
|
17261 |
|
17262 | if (popup.push) {
|
17263 | isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));
|
17264 | }
|
17265 |
|
17266 | if (isPush && !wasPush) {
|
17267 |
|
17268 | setPushOffset();
|
17269 | } else if (isPush && wasPush) {
|
17270 | popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));
|
17271 | } else if (!isPush && wasPush) {
|
17272 | popup.$htmlEl.removeClass('with-modal-popup-push');
|
17273 | popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');
|
17274 | }
|
17275 | };
|
17276 |
|
17277 | var setPushOffset = function setPushOffset() {
|
17278 | app.off('resize', updatePushOffset);
|
17279 |
|
17280 | if (popup.push) {
|
17281 | isPush = popup.push && (app.width < 630 || app.height < 630 || $el.hasClass('popup-tablet-fullscreen'));
|
17282 | }
|
17283 |
|
17284 | if (isPush) {
|
17285 | pushOffset = parseInt($el.css('--f7-popup-push-offset'), 10);
|
17286 | if (Number.isNaN(pushOffset)) pushOffset = 0;
|
17287 |
|
17288 | if (pushOffset) {
|
17289 | $el.addClass('popup-push');
|
17290 | popup.$htmlEl.addClass('with-modal-popup-push');
|
17291 | popup.$htmlEl[0].style.setProperty('--f7-popup-push-scale', pushViewScale(pushOffset));
|
17292 | }
|
17293 | }
|
17294 |
|
17295 | app.on('resize', updatePushOffset);
|
17296 | };
|
17297 |
|
17298 | popup.on('open', function () {
|
17299 | hasPreviousPushPopup = false;
|
17300 |
|
17301 | if (popup.params.closeOnEscape) {
|
17302 | $(document).on('keydown', onKeyDown);
|
17303 | }
|
17304 |
|
17305 | $el.prevAll('.popup.modal-in').addClass('popup-behind');
|
17306 | setPushOffset();
|
17307 | });
|
17308 | popup.on('opened', function () {
|
17309 | $el.removeClass('swipe-close-to-bottom swipe-close-to-top');
|
17310 |
|
17311 | if (popup.params.closeByBackdropClick) {
|
17312 | app.on('click', handleClick);
|
17313 | }
|
17314 | });
|
17315 | popup.on('close', function () {
|
17316 | hasPreviousPushPopup = popup.$el.prevAll('.popup-push.modal-in').length > 0;
|
17317 |
|
17318 | if (popup.params.closeOnEscape) {
|
17319 | $(document).off('keydown', onKeyDown);
|
17320 | }
|
17321 |
|
17322 | if (popup.params.closeByBackdropClick) {
|
17323 | app.off('click', handleClick);
|
17324 | }
|
17325 |
|
17326 | $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');
|
17327 |
|
17328 | if (isPush && pushOffset && !hasPreviousPushPopup) {
|
17329 | popup.$htmlEl.removeClass('with-modal-popup-push');
|
17330 | popup.$htmlEl.addClass('with-modal-popup-push-closing');
|
17331 | }
|
17332 |
|
17333 | app.off('resize', updatePushOffset);
|
17334 | });
|
17335 | popup.on('closed', function () {
|
17336 | $el.removeClass('popup-behind');
|
17337 |
|
17338 | if (isPush && pushOffset && !hasPreviousPushPopup) {
|
17339 | popup.$htmlEl.removeClass('with-modal-popup-push-closing');
|
17340 | popup.$htmlEl[0].style.removeProperty('--f7-popup-push-scale');
|
17341 | }
|
17342 | });
|
17343 | $el[0].f7Modal = popup;
|
17344 | return popup || _assertThisInitialized(_this);
|
17345 | }
|
17346 |
|
17347 | return Popup;
|
17348 | }(Modal$1);
|
17349 |
|
17350 | var Popup = {
|
17351 | name: 'popup',
|
17352 | params: {
|
17353 | popup: {
|
17354 | backdrop: true,
|
17355 | backdropEl: undefined,
|
17356 | closeByBackdropClick: true,
|
17357 | closeOnEscape: false,
|
17358 | swipeToClose: false,
|
17359 | swipeHandler: null,
|
17360 | push: false,
|
17361 | containerEl: null
|
17362 | }
|
17363 | },
|
17364 | static: {
|
17365 | Popup: Popup$1
|
17366 | },
|
17367 | create: function create() {
|
17368 | var app = this;
|
17369 | app.popup = ModalMethods({
|
17370 | app: app,
|
17371 | constructor: Popup$1,
|
17372 | defaultSelector: '.popup.modal-in',
|
17373 | parentSelector: '.popup'
|
17374 | });
|
17375 | },
|
17376 | clicks: {
|
17377 | '.popup-open': function openPopup($clickedEl, data) {
|
17378 | if (data === void 0) {
|
17379 | data = {};
|
17380 | }
|
17381 |
|
17382 | var app = this;
|
17383 | app.popup.open(data.popup, data.animate, $clickedEl);
|
17384 | },
|
17385 | '.popup-close': function closePopup($clickedEl, data) {
|
17386 | if (data === void 0) {
|
17387 | data = {};
|
17388 | }
|
17389 |
|
17390 | var app = this;
|
17391 | app.popup.close(data.popup, data.animate, $clickedEl);
|
17392 | }
|
17393 | }
|
17394 | };
|
17395 |
|
17396 | var LoginScreen$1 = function (_Modal) {
|
17397 | _inheritsLoose(LoginScreen, _Modal);
|
17398 |
|
17399 | function LoginScreen(app, params) {
|
17400 | var _this;
|
17401 |
|
17402 | var extendedParams = extend$1({
|
17403 | on: {}
|
17404 | }, params);
|
17405 |
|
17406 | _this = _Modal.call(this, app, extendedParams) || this;
|
17407 |
|
17408 | var loginScreen = _assertThisInitialized(_this);
|
17409 |
|
17410 | loginScreen.params = extendedParams;
|
17411 |
|
17412 | var $el;
|
17413 |
|
17414 | if (!loginScreen.params.el) {
|
17415 | $el = $(loginScreen.params.content).filter(function (node) {
|
17416 | return node.nodeType === 1;
|
17417 | }).eq(0);
|
17418 | } else {
|
17419 | $el = $(loginScreen.params.el).eq(0);
|
17420 | }
|
17421 |
|
17422 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
17423 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
17424 | }
|
17425 |
|
17426 | if ($el.length === 0) {
|
17427 | return loginScreen.destroy() || _assertThisInitialized(_this);
|
17428 | }
|
17429 |
|
17430 | extend$1(loginScreen, {
|
17431 | app: app,
|
17432 | $el: $el,
|
17433 | el: $el[0],
|
17434 | type: 'loginScreen'
|
17435 | });
|
17436 | $el[0].f7Modal = loginScreen;
|
17437 | return loginScreen || _assertThisInitialized(_this);
|
17438 | }
|
17439 |
|
17440 | return LoginScreen;
|
17441 | }(Modal$1);
|
17442 |
|
17443 | var LoginScreen = {
|
17444 | name: 'loginScreen',
|
17445 | static: {
|
17446 | LoginScreen: LoginScreen$1
|
17447 | },
|
17448 | create: function create() {
|
17449 | var app = this;
|
17450 | app.loginScreen = ModalMethods({
|
17451 | app: app,
|
17452 | constructor: LoginScreen$1,
|
17453 | defaultSelector: '.login-screen.modal-in'
|
17454 | });
|
17455 | },
|
17456 | clicks: {
|
17457 | '.login-screen-open': function openLoginScreen($clickedEl, data) {
|
17458 | if (data === void 0) {
|
17459 | data = {};
|
17460 | }
|
17461 |
|
17462 | var app = this;
|
17463 | app.loginScreen.open(data.loginScreen, data.animate, $clickedEl);
|
17464 | },
|
17465 | '.login-screen-close': function closeLoginScreen($clickedEl, data) {
|
17466 | if (data === void 0) {
|
17467 | data = {};
|
17468 | }
|
17469 |
|
17470 | var app = this;
|
17471 | app.loginScreen.close(data.loginScreen, data.animate, $clickedEl);
|
17472 | }
|
17473 | }
|
17474 | };
|
17475 |
|
17476 | var Popover$1 = function (_Modal) {
|
17477 | _inheritsLoose(Popover, _Modal);
|
17478 |
|
17479 | function Popover(app, params) {
|
17480 | var _this;
|
17481 |
|
17482 | var extendedParams = extend$1({
|
17483 | on: {}
|
17484 | }, app.params.popover, params);
|
17485 |
|
17486 | _this = _Modal.call(this, app, extendedParams) || this;
|
17487 |
|
17488 | var popover = _assertThisInitialized(_this);
|
17489 |
|
17490 | var device = getDevice$1();
|
17491 | var window = getWindow();
|
17492 | var document = getDocument();
|
17493 | popover.params = extendedParams;
|
17494 |
|
17495 | var $el;
|
17496 |
|
17497 | if (!popover.params.el) {
|
17498 | $el = $(popover.params.content).filter(function (node) {
|
17499 | return node.nodeType === 1;
|
17500 | }).eq(0);
|
17501 | } else {
|
17502 | $el = $(popover.params.el).eq(0);
|
17503 | }
|
17504 |
|
17505 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
17506 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
17507 | }
|
17508 |
|
17509 |
|
17510 | var $targetEl = $(popover.params.targetEl).eq(0);
|
17511 |
|
17512 | if ($el.length === 0) {
|
17513 | return popover.destroy() || _assertThisInitialized(_this);
|
17514 | }
|
17515 |
|
17516 |
|
17517 | var $backdropEl;
|
17518 |
|
17519 | if (popover.params.backdrop && popover.params.backdropEl) {
|
17520 | $backdropEl = $(popover.params.backdropEl);
|
17521 | } else if (popover.params.backdrop) {
|
17522 | $backdropEl = popover.$containerEl.children('.popover-backdrop');
|
17523 |
|
17524 | if ($backdropEl.length === 0) {
|
17525 | $backdropEl = $('<div class="popover-backdrop"></div>');
|
17526 | popover.$containerEl.append($backdropEl);
|
17527 | }
|
17528 | }
|
17529 |
|
17530 |
|
17531 | var $angleEl;
|
17532 |
|
17533 | if ($el.find('.popover-angle').length === 0) {
|
17534 | $angleEl = $('<div class="popover-angle"></div>');
|
17535 | $el.prepend($angleEl);
|
17536 | } else {
|
17537 | $angleEl = $el.find('.popover-angle');
|
17538 | }
|
17539 |
|
17540 |
|
17541 | var originalOpen = popover.open;
|
17542 | extend$1(popover, {
|
17543 | app: app,
|
17544 | $el: $el,
|
17545 | el: $el[0],
|
17546 | $targetEl: $targetEl,
|
17547 | targetEl: $targetEl[0],
|
17548 | $angleEl: $angleEl,
|
17549 | angleEl: $angleEl[0],
|
17550 | $backdropEl: $backdropEl,
|
17551 | backdropEl: $backdropEl && $backdropEl[0],
|
17552 | type: 'popover',
|
17553 | open: function open() {
|
17554 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
17555 | args[_key] = arguments[_key];
|
17556 | }
|
17557 |
|
17558 | var targetEl = args[0],
|
17559 | animate = args[1];
|
17560 |
|
17561 | if (typeof args[0] === 'boolean') {
|
17562 | animate = args[0];
|
17563 | targetEl = args[1];
|
17564 | }
|
17565 |
|
17566 | if (targetEl) {
|
17567 | popover.$targetEl = $(targetEl);
|
17568 | popover.targetEl = popover.$targetEl[0];
|
17569 | }
|
17570 |
|
17571 | return originalOpen.call(popover, animate);
|
17572 | }
|
17573 | });
|
17574 |
|
17575 | function handleResize() {
|
17576 | popover.resize();
|
17577 | }
|
17578 |
|
17579 | popover.on('popoverOpen', function () {
|
17580 | popover.resize();
|
17581 | app.on('resize', handleResize);
|
17582 | $(window).on('keyboardDidShow keyboardDidHide', handleResize);
|
17583 | popover.on('popoverClose popoverBeforeDestroy', function () {
|
17584 | app.off('resize', handleResize);
|
17585 | $(window).off('keyboardDidShow keyboardDidHide', handleResize);
|
17586 | });
|
17587 | });
|
17588 |
|
17589 | function handleClick(e) {
|
17590 | var target = e.target;
|
17591 | var $target = $(target);
|
17592 | var keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
|
17593 | if (keyboardOpened) return;
|
17594 |
|
17595 | if ($target.closest(popover.el).length === 0) {
|
17596 | if (popover.params.closeByBackdropClick && popover.params.backdrop && popover.backdropEl && popover.backdropEl === target) {
|
17597 | popover.close();
|
17598 | } else if (popover.params.closeByOutsideClick) {
|
17599 | popover.close();
|
17600 | }
|
17601 | }
|
17602 | }
|
17603 |
|
17604 | function onKeyDown(e) {
|
17605 | var keyCode = e.keyCode;
|
17606 |
|
17607 | if (keyCode === 27 && popover.params.closeOnEscape) {
|
17608 | popover.close();
|
17609 | }
|
17610 | }
|
17611 |
|
17612 | if (popover.params.closeOnEscape) {
|
17613 | popover.on('popoverOpen', function () {
|
17614 | $(document).on('keydown', onKeyDown);
|
17615 | });
|
17616 | popover.on('popoverClose', function () {
|
17617 | $(document).off('keydown', onKeyDown);
|
17618 | });
|
17619 | }
|
17620 |
|
17621 | popover.on('popoverOpened', function () {
|
17622 | if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {
|
17623 | app.on('click', handleClick);
|
17624 | }
|
17625 | });
|
17626 | popover.on('popoverClose', function () {
|
17627 | if (popover.params.closeByOutsideClick || popover.params.closeByBackdropClick) {
|
17628 | app.off('click', handleClick);
|
17629 | }
|
17630 | });
|
17631 | $el[0].f7Modal = popover;
|
17632 | return popover || _assertThisInitialized(_this);
|
17633 | }
|
17634 |
|
17635 | var _proto = Popover.prototype;
|
17636 |
|
17637 | _proto.resize = function resize() {
|
17638 | var popover = this;
|
17639 | var app = popover.app,
|
17640 | $el = popover.$el,
|
17641 | $targetEl = popover.$targetEl,
|
17642 | $angleEl = popover.$angleEl;
|
17643 | var _popover$params = popover.params,
|
17644 | targetX = _popover$params.targetX,
|
17645 | targetY = _popover$params.targetY;
|
17646 | $el.css({
|
17647 | left: '',
|
17648 | top: ''
|
17649 | });
|
17650 | var _ref = [$el.width(), $el.height()],
|
17651 | width = _ref[0],
|
17652 | height = _ref[1];
|
17653 | var angleSize = 0;
|
17654 | var angleLeft;
|
17655 | var angleTop;
|
17656 |
|
17657 | if (app.theme === 'ios' || app.theme === 'aurora') {
|
17658 | $angleEl.removeClass('on-left on-right on-top on-bottom').css({
|
17659 | left: '',
|
17660 | top: ''
|
17661 | });
|
17662 | angleSize = $angleEl.width() / 2;
|
17663 | } else {
|
17664 | $el.removeClass('popover-on-left popover-on-right popover-on-top popover-on-bottom popover-on-middle').css({
|
17665 | left: '',
|
17666 | top: ''
|
17667 | });
|
17668 | }
|
17669 |
|
17670 | var targetWidth;
|
17671 | var targetHeight;
|
17672 | var targetOffsetLeft;
|
17673 | var targetOffsetTop;
|
17674 | var safeAreaTop = parseInt($('html').css('--f7-safe-area-top'), 10);
|
17675 | var safeAreaLeft = parseInt($('html').css('--f7-safe-area-left'), 10);
|
17676 | var safeAreaRight = parseInt($('html').css('--f7-safe-area-right'), 10);
|
17677 | if (Number.isNaN(safeAreaTop)) safeAreaTop = 0;
|
17678 | if (Number.isNaN(safeAreaLeft)) safeAreaLeft = 0;
|
17679 | if (Number.isNaN(safeAreaRight)) safeAreaRight = 0;
|
17680 |
|
17681 | if ($targetEl && $targetEl.length > 0) {
|
17682 | targetWidth = $targetEl.outerWidth();
|
17683 | targetHeight = $targetEl.outerHeight();
|
17684 | var targetOffset = $targetEl.offset();
|
17685 | targetOffsetLeft = targetOffset.left - app.left;
|
17686 | targetOffsetTop = targetOffset.top - app.top;
|
17687 | var targetParentPage = $targetEl.parents('.page');
|
17688 |
|
17689 | if (targetParentPage.length > 0) {
|
17690 | targetOffsetTop -= targetParentPage[0].scrollTop;
|
17691 | }
|
17692 | } else if (typeof targetX !== 'undefined' && targetY !== 'undefined') {
|
17693 | targetOffsetLeft = targetX;
|
17694 | targetOffsetTop = targetY;
|
17695 | targetWidth = popover.params.targetWidth || 0;
|
17696 | targetHeight = popover.params.targetHeight || 0;
|
17697 | }
|
17698 |
|
17699 | var left = 0,
|
17700 | top = 0,
|
17701 | diff = 0;
|
17702 |
|
17703 | var position = app.theme === 'md' ? 'bottom' : 'top';
|
17704 |
|
17705 | if (app.theme === 'md') {
|
17706 | if (height < app.height - targetOffsetTop - targetHeight) {
|
17707 |
|
17708 | position = 'bottom';
|
17709 | top = targetOffsetTop + targetHeight;
|
17710 | } else if (height < targetOffsetTop - safeAreaTop) {
|
17711 |
|
17712 | top = targetOffsetTop - height;
|
17713 | position = 'top';
|
17714 | } else {
|
17715 |
|
17716 | position = 'middle';
|
17717 | top = targetHeight / 2 + targetOffsetTop - height / 2;
|
17718 | }
|
17719 |
|
17720 | top = Math.max(8, Math.min(top, app.height - height - 8));
|
17721 |
|
17722 | var hPosition;
|
17723 |
|
17724 | if (targetOffsetLeft < app.width / 2) {
|
17725 | hPosition = 'right';
|
17726 | left = position === 'middle' ? targetOffsetLeft + targetWidth : targetOffsetLeft;
|
17727 | } else {
|
17728 | hPosition = 'left';
|
17729 | left = position === 'middle' ? targetOffsetLeft - width : targetOffsetLeft + targetWidth - width;
|
17730 | }
|
17731 |
|
17732 | left = Math.max(8, Math.min(left, app.width - width - 8 - safeAreaRight), safeAreaLeft);
|
17733 | $el.addClass("popover-on-" + position + " popover-on-" + hPosition);
|
17734 | } else {
|
17735 |
|
17736 | if (height + angleSize < targetOffsetTop - safeAreaTop) {
|
17737 |
|
17738 | top = targetOffsetTop - height - angleSize;
|
17739 | } else if (height + angleSize < app.height - targetOffsetTop - targetHeight) {
|
17740 |
|
17741 | position = 'bottom';
|
17742 | top = targetOffsetTop + targetHeight + angleSize;
|
17743 | } else {
|
17744 |
|
17745 | position = 'middle';
|
17746 | top = targetHeight / 2 + targetOffsetTop - height / 2;
|
17747 | diff = top;
|
17748 | top = Math.max(5, Math.min(top, app.height - height - 5));
|
17749 | diff -= top;
|
17750 | }
|
17751 |
|
17752 |
|
17753 | if (position === 'top' || position === 'bottom') {
|
17754 | left = targetWidth / 2 + targetOffsetLeft - width / 2;
|
17755 | diff = left;
|
17756 | left = Math.max(5, Math.min(left, app.width - width - 5));
|
17757 |
|
17758 | if (safeAreaLeft) {
|
17759 | left = Math.max(left, safeAreaLeft);
|
17760 | }
|
17761 |
|
17762 | if (safeAreaRight && left + width > app.width - 5 - safeAreaRight) {
|
17763 | left = app.width - 5 - safeAreaRight - width;
|
17764 | }
|
17765 |
|
17766 | if (position === 'top') {
|
17767 | $angleEl.addClass('on-bottom');
|
17768 | }
|
17769 |
|
17770 | if (position === 'bottom') {
|
17771 | $angleEl.addClass('on-top');
|
17772 | }
|
17773 |
|
17774 | diff -= left;
|
17775 | angleLeft = width / 2 - angleSize + diff;
|
17776 | angleLeft = Math.max(Math.min(angleLeft, width - angleSize * 2 - 13), 13);
|
17777 | $angleEl.css({
|
17778 | left: angleLeft + "px"
|
17779 | });
|
17780 | } else if (position === 'middle') {
|
17781 | left = targetOffsetLeft - width - angleSize;
|
17782 | $angleEl.addClass('on-right');
|
17783 |
|
17784 | if (left < 5 || left + width + safeAreaRight > app.width || left < safeAreaLeft) {
|
17785 | if (left < 5) left = targetOffsetLeft + targetWidth + angleSize;
|
17786 | if (left + width + safeAreaRight > app.width) left = app.width - width - 5 - safeAreaRight;
|
17787 | if (left < safeAreaLeft) left = safeAreaLeft;
|
17788 | $angleEl.removeClass('on-right').addClass('on-left');
|
17789 | }
|
17790 |
|
17791 | angleTop = height / 2 - angleSize + diff;
|
17792 | angleTop = Math.max(Math.min(angleTop, height - angleSize * 2 - 13), 13);
|
17793 | $angleEl.css({
|
17794 | top: angleTop + "px"
|
17795 | });
|
17796 | }
|
17797 | }
|
17798 |
|
17799 |
|
17800 | $el.css({
|
17801 | top: top + "px",
|
17802 | left: left + "px"
|
17803 | });
|
17804 | };
|
17805 |
|
17806 | return Popover;
|
17807 | }(Modal$1);
|
17808 |
|
17809 | var Popover = {
|
17810 | name: 'popover',
|
17811 | params: {
|
17812 | popover: {
|
17813 | backdrop: true,
|
17814 | backdropEl: undefined,
|
17815 | closeByBackdropClick: true,
|
17816 | closeByOutsideClick: true,
|
17817 | closeOnEscape: false,
|
17818 | containerEl: null
|
17819 | }
|
17820 | },
|
17821 | static: {
|
17822 | Popover: Popover$1
|
17823 | },
|
17824 | create: function create() {
|
17825 | var app = this;
|
17826 | app.popover = extend$1(ModalMethods({
|
17827 | app: app,
|
17828 | constructor: Popover$1,
|
17829 | defaultSelector: '.popover.modal-in'
|
17830 | }), {
|
17831 | open: function open(popoverEl, targetEl, animate) {
|
17832 | var $popoverEl = $(popoverEl);
|
17833 |
|
17834 | if ($popoverEl.length > 1) {
|
17835 |
|
17836 | var $targetPage = $(targetEl).parents('.page');
|
17837 |
|
17838 | if ($targetPage.length) {
|
17839 | $popoverEl.each(function (el) {
|
17840 | var $el = $(el);
|
17841 |
|
17842 | if ($el.parents($targetPage)[0] === $targetPage[0]) {
|
17843 | $popoverEl = $el;
|
17844 | }
|
17845 | });
|
17846 | }
|
17847 | }
|
17848 |
|
17849 | if ($popoverEl.length > 1) {
|
17850 | $popoverEl = $popoverEl.eq($popoverEl.length - 1);
|
17851 | }
|
17852 |
|
17853 | var popover = $popoverEl[0].f7Modal;
|
17854 | var data = $popoverEl.dataset();
|
17855 |
|
17856 | if (!popover) {
|
17857 | popover = new Popover$1(app, Object.assign({
|
17858 | el: $popoverEl,
|
17859 | targetEl: targetEl
|
17860 | }, data));
|
17861 | }
|
17862 |
|
17863 | return popover.open(targetEl, animate);
|
17864 | }
|
17865 | });
|
17866 | },
|
17867 | clicks: {
|
17868 | '.popover-open': function openPopover($clickedEl, data) {
|
17869 | if (data === void 0) {
|
17870 | data = {};
|
17871 | }
|
17872 |
|
17873 | var app = this;
|
17874 | app.popover.open(data.popover, $clickedEl, data.animate);
|
17875 | },
|
17876 | '.popover-close': function closePopover($clickedEl, data) {
|
17877 | if (data === void 0) {
|
17878 | data = {};
|
17879 | }
|
17880 |
|
17881 | var app = this;
|
17882 | app.popover.close(data.popover, data.animate, $clickedEl);
|
17883 | }
|
17884 | }
|
17885 | };
|
17886 |
|
17887 | var Actions$1 = function (_Modal) {
|
17888 | _inheritsLoose(Actions, _Modal);
|
17889 |
|
17890 | function Actions(app, params) {
|
17891 | var _this;
|
17892 |
|
17893 | var extendedParams = extend$1({
|
17894 | on: {}
|
17895 | }, app.params.actions, params);
|
17896 |
|
17897 | _this = _Modal.call(this, app, extendedParams) || this;
|
17898 |
|
17899 | var actions = _assertThisInitialized(_this);
|
17900 |
|
17901 | var device = getDevice$1();
|
17902 | var window = getWindow();
|
17903 | var document = getDocument();
|
17904 | actions.params = extendedParams;
|
17905 |
|
17906 | var groups;
|
17907 |
|
17908 | if (actions.params.buttons) {
|
17909 | groups = actions.params.buttons;
|
17910 | if (!Array.isArray(groups[0])) groups = [groups];
|
17911 | }
|
17912 |
|
17913 | actions.groups = groups;
|
17914 |
|
17915 | var $el;
|
17916 |
|
17917 | if (actions.params.el) {
|
17918 | $el = $(actions.params.el).eq(0);
|
17919 | } else if (actions.params.content) {
|
17920 | $el = $(actions.params.content).filter(function (node) {
|
17921 | return node.nodeType === 1;
|
17922 | }).eq(0);
|
17923 | } else if (actions.params.buttons) {
|
17924 | if (actions.params.convertToPopover) {
|
17925 | actions.popoverHtml = actions.renderPopover();
|
17926 | }
|
17927 |
|
17928 | actions.actionsHtml = actions.render();
|
17929 | }
|
17930 |
|
17931 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
17932 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
17933 | }
|
17934 |
|
17935 | if ($el && $el.length === 0 && !(actions.actionsHtml || actions.popoverHtml)) {
|
17936 | return actions.destroy() || _assertThisInitialized(_this);
|
17937 | }
|
17938 |
|
17939 |
|
17940 | var $backdropEl;
|
17941 |
|
17942 | if (actions.params.backdrop && actions.params.backdropEl) {
|
17943 | $backdropEl = $(actions.params.backdropEl);
|
17944 | } else if (actions.params.backdrop) {
|
17945 | $backdropEl = actions.$containerEl.children('.actions-backdrop');
|
17946 |
|
17947 | if ($backdropEl.length === 0) {
|
17948 | $backdropEl = $('<div class="actions-backdrop"></div>');
|
17949 | actions.$containerEl.append($backdropEl);
|
17950 | }
|
17951 | }
|
17952 |
|
17953 | var originalOpen = actions.open;
|
17954 | var originalClose = actions.close;
|
17955 | var popover;
|
17956 |
|
17957 | function buttonOnClick(e) {
|
17958 | var $buttonEl = $(this);
|
17959 | var buttonIndex;
|
17960 | var groupIndex;
|
17961 |
|
17962 | if ($buttonEl.hasClass('list-button') || $buttonEl.hasClass('item-link')) {
|
17963 | buttonIndex = $buttonEl.parents('li').index();
|
17964 | groupIndex = $buttonEl.parents('.list').index();
|
17965 | } else {
|
17966 | buttonIndex = $buttonEl.index();
|
17967 | groupIndex = $buttonEl.parents('.actions-group').index();
|
17968 | }
|
17969 |
|
17970 | if (typeof groups !== 'undefined') {
|
17971 | var button = groups[groupIndex][buttonIndex];
|
17972 | if (button.onClick) button.onClick(actions, e);
|
17973 | if (actions.params.onClick) actions.params.onClick(actions, e);
|
17974 | if (button.close !== false) actions.close();
|
17975 | }
|
17976 | }
|
17977 |
|
17978 | actions.open = function open(animate) {
|
17979 | var convertToPopover = false;
|
17980 | var _actions$params = actions.params,
|
17981 | targetEl = _actions$params.targetEl,
|
17982 | targetX = _actions$params.targetX,
|
17983 | targetY = _actions$params.targetY,
|
17984 | targetWidth = _actions$params.targetWidth,
|
17985 | targetHeight = _actions$params.targetHeight;
|
17986 |
|
17987 | if (actions.params.convertToPopover && (targetEl || targetX !== undefined && targetY !== undefined)) {
|
17988 |
|
17989 | if (actions.params.forceToPopover || device.ios && device.ipad || app.width >= 768 || device.desktop && app.theme === 'aurora') {
|
17990 | convertToPopover = true;
|
17991 | }
|
17992 | }
|
17993 |
|
17994 | if (convertToPopover && actions.popoverHtml) {
|
17995 | popover = app.popover.create({
|
17996 | content: actions.popoverHtml,
|
17997 | backdrop: actions.params.backdrop,
|
17998 | targetEl: targetEl,
|
17999 | targetX: targetX,
|
18000 | targetY: targetY,
|
18001 | targetWidth: targetWidth,
|
18002 | targetHeight: targetHeight,
|
18003 | on: {
|
18004 | open: function open() {
|
18005 | if (!actions.$el) {
|
18006 | actions.$el = popover.$el;
|
18007 | }
|
18008 |
|
18009 | actions.$el.trigger("modal:open " + actions.type.toLowerCase() + ":open");
|
18010 | actions.emit("local::open modalOpen " + actions.type + "Open", actions);
|
18011 | },
|
18012 | opened: function opened() {
|
18013 | if (!actions.$el) {
|
18014 | actions.$el = popover.$el;
|
18015 | }
|
18016 |
|
18017 | actions.$el.trigger("modal:opened " + actions.type.toLowerCase() + ":opened");
|
18018 | actions.emit("local::opened modalOpened " + actions.type + "Opened", actions);
|
18019 | },
|
18020 | close: function close() {
|
18021 | if (!actions.$el) {
|
18022 | actions.$el = popover.$el;
|
18023 | }
|
18024 |
|
18025 | actions.$el.trigger("modal:close " + actions.type.toLowerCase() + ":close");
|
18026 | actions.emit("local::close modalClose " + actions.type + "Close", actions);
|
18027 | },
|
18028 | closed: function closed() {
|
18029 | if (!actions.$el) {
|
18030 | actions.$el = popover.$el;
|
18031 | }
|
18032 |
|
18033 | actions.$el.trigger("modal:closed " + actions.type.toLowerCase() + ":closed");
|
18034 | actions.emit("local::closed modalClosed " + actions.type + "Closed", actions);
|
18035 | }
|
18036 | }
|
18037 | });
|
18038 | popover.open(animate);
|
18039 | popover.once('popoverOpened', function () {
|
18040 | popover.$el.find('.list-button, .item-link').each(function (buttonEl) {
|
18041 | $(buttonEl).on('click', buttonOnClick);
|
18042 | });
|
18043 | });
|
18044 | popover.once('popoverClosed', function () {
|
18045 | popover.$el.find('.list-button, .item-link').each(function (buttonEl) {
|
18046 | $(buttonEl).off('click', buttonOnClick);
|
18047 | });
|
18048 | nextTick$1(function () {
|
18049 | popover.destroy();
|
18050 | popover = undefined;
|
18051 | });
|
18052 | });
|
18053 | } else {
|
18054 | actions.$el = actions.actionsHtml ? $(actions.actionsHtml) : actions.$el;
|
18055 | actions.$el[0].f7Modal = actions;
|
18056 |
|
18057 | if (actions.groups) {
|
18058 | actions.$el.find('.actions-button').each(function (buttonEl) {
|
18059 | $(buttonEl).on('click', buttonOnClick);
|
18060 | });
|
18061 | actions.once('actionsClosed', function () {
|
18062 | actions.$el.find('.actions-button').each(function (buttonEl) {
|
18063 | $(buttonEl).off('click', buttonOnClick);
|
18064 | });
|
18065 | });
|
18066 | }
|
18067 |
|
18068 | actions.el = actions.$el[0];
|
18069 | originalOpen.call(actions, animate);
|
18070 | }
|
18071 |
|
18072 | return actions;
|
18073 | };
|
18074 |
|
18075 | actions.close = function close(animate) {
|
18076 | if (popover) {
|
18077 | popover.close(animate);
|
18078 | } else {
|
18079 | originalClose.call(actions, animate);
|
18080 | }
|
18081 |
|
18082 | return actions;
|
18083 | };
|
18084 |
|
18085 | extend$1(actions, {
|
18086 | app: app,
|
18087 | $el: $el,
|
18088 | el: $el ? $el[0] : undefined,
|
18089 | $backdropEl: $backdropEl,
|
18090 | backdropEl: $backdropEl && $backdropEl[0],
|
18091 | type: 'actions'
|
18092 | });
|
18093 |
|
18094 | function handleClick(e) {
|
18095 | var target = e.target;
|
18096 | var $target = $(target);
|
18097 | var keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
|
18098 | if (keyboardOpened) return;
|
18099 |
|
18100 | if ($target.closest(actions.el).length === 0) {
|
18101 | if (actions.params.closeByBackdropClick && actions.params.backdrop && actions.backdropEl && actions.backdropEl === target) {
|
18102 | actions.close();
|
18103 | } else if (actions.params.closeByOutsideClick) {
|
18104 | actions.close();
|
18105 | }
|
18106 | }
|
18107 | }
|
18108 |
|
18109 | function onKeyDown(e) {
|
18110 | var keyCode = e.keyCode;
|
18111 |
|
18112 | if (keyCode === 27 && actions.params.closeOnEscape) {
|
18113 | actions.close();
|
18114 | }
|
18115 | }
|
18116 |
|
18117 | if (actions.params.closeOnEscape) {
|
18118 | actions.on('open', function () {
|
18119 | $(document).on('keydown', onKeyDown);
|
18120 | });
|
18121 | actions.on('close', function () {
|
18122 | $(document).off('keydown', onKeyDown);
|
18123 | });
|
18124 | }
|
18125 |
|
18126 | actions.on('opened', function () {
|
18127 | if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {
|
18128 | app.on('click', handleClick);
|
18129 | }
|
18130 | });
|
18131 | actions.on('close', function () {
|
18132 | if (actions.params.closeByBackdropClick || actions.params.closeByOutsideClick) {
|
18133 | app.off('click', handleClick);
|
18134 | }
|
18135 | });
|
18136 |
|
18137 | if ($el) {
|
18138 | $el[0].f7Modal = actions;
|
18139 | }
|
18140 |
|
18141 | return actions || _assertThisInitialized(_this);
|
18142 | }
|
18143 |
|
18144 | var _proto = Actions.prototype;
|
18145 |
|
18146 | _proto.render = function render() {
|
18147 | var actions = this;
|
18148 | if (actions.params.render) return actions.params.render.call(actions, actions);
|
18149 | var groups = actions.groups;
|
18150 | var cssClass = actions.params.cssClass;
|
18151 | return $jsx("div", {
|
18152 | class: "actions-modal" + (actions.params.grid ? ' actions-grid' : '') + " " + (cssClass || '')
|
18153 | }, groups.map(function (group) {
|
18154 | return $jsx("div", {
|
18155 | class: "actions-group"
|
18156 | }, group.map(function (button) {
|
18157 | var buttonClasses = ["actions-" + (button.label ? 'label' : 'button')];
|
18158 | var color = button.color,
|
18159 | bg = button.bg,
|
18160 | bold = button.bold,
|
18161 | disabled = button.disabled,
|
18162 | label = button.label,
|
18163 | text = button.text,
|
18164 | icon = button.icon;
|
18165 | if (color) buttonClasses.push("color-" + color);
|
18166 | if (bg) buttonClasses.push("bg-color-" + bg);
|
18167 | if (bold) buttonClasses.push('actions-button-bold');
|
18168 | if (disabled) buttonClasses.push('disabled');
|
18169 |
|
18170 | if (label) {
|
18171 | return $jsx("div", {
|
18172 | class: buttonClasses.join(' ')
|
18173 | }, text);
|
18174 | }
|
18175 |
|
18176 | return $jsx("div", {
|
18177 | class: buttonClasses.join(' ')
|
18178 | }, icon && $jsx("div", {
|
18179 | class: "actions-button-media"
|
18180 | }, icon), $jsx("div", {
|
18181 | class: "actions-button-text"
|
18182 | }, text));
|
18183 | }));
|
18184 | }));
|
18185 | };
|
18186 |
|
18187 | _proto.renderPopover = function renderPopover() {
|
18188 | var actions = this;
|
18189 | if (actions.params.renderPopover) return actions.params.renderPopover.call(actions, actions);
|
18190 | var groups = actions.groups;
|
18191 | var cssClass = actions.params.cssClass;
|
18192 | return $jsx("div", {
|
18193 | class: "popover popover-from-actions " + (cssClass || '')
|
18194 | }, $jsx("div", {
|
18195 | class: "popover-inner"
|
18196 | }, groups.map(function (group) {
|
18197 | return $jsx("div", {
|
18198 | class: "list"
|
18199 | }, $jsx("ul", null, group.map(function (button) {
|
18200 | var itemClasses = [];
|
18201 | var color = button.color,
|
18202 | bg = button.bg,
|
18203 | bold = button.bold,
|
18204 | disabled = button.disabled,
|
18205 | label = button.label,
|
18206 | text = button.text,
|
18207 | icon = button.icon;
|
18208 | if (color) itemClasses.push("color-" + color);
|
18209 | if (bg) itemClasses.push("bg-color-" + bg);
|
18210 | if (bold) itemClasses.push('popover-from-actions-bold');
|
18211 | if (disabled) itemClasses.push('disabled');
|
18212 |
|
18213 | if (label) {
|
18214 | itemClasses.push('popover-from-actions-label');
|
18215 | return "<li class=\"" + itemClasses.join(' ') + "\">" + text + "</li>";
|
18216 | }
|
18217 |
|
18218 | if (icon) {
|
18219 | itemClasses.push('item-link item-content');
|
18220 | return $jsx("li", null, $jsx("a", {
|
18221 | class: itemClasses.join(' ')
|
18222 | }, $jsx("div", {
|
18223 | class: "item-media"
|
18224 | }, icon), $jsx("div", {
|
18225 | class: "item-inner"
|
18226 | }, $jsx("div", {
|
18227 | class: "item-title"
|
18228 | }, text))));
|
18229 | }
|
18230 |
|
18231 | itemClasses.push('list-button');
|
18232 | return $jsx("li", null, $jsx("a", {
|
18233 | class: itemClasses.join(' ')
|
18234 | }, text));
|
18235 | })));
|
18236 | })));
|
18237 | };
|
18238 |
|
18239 | return Actions;
|
18240 | }(Modal$1);
|
18241 |
|
18242 | var Actions = {
|
18243 | name: 'actions',
|
18244 | params: {
|
18245 | actions: {
|
18246 | convertToPopover: true,
|
18247 | forceToPopover: false,
|
18248 | backdrop: true,
|
18249 | backdropEl: undefined,
|
18250 | cssClass: null,
|
18251 | closeByBackdropClick: true,
|
18252 | closeOnEscape: false,
|
18253 | render: null,
|
18254 | renderPopover: null,
|
18255 | containerEl: null
|
18256 | }
|
18257 | },
|
18258 | static: {
|
18259 | Actions: Actions$1
|
18260 | },
|
18261 | create: function create() {
|
18262 | var app = this;
|
18263 | app.actions = ModalMethods({
|
18264 | app: app,
|
18265 | constructor: Actions$1,
|
18266 | defaultSelector: '.actions-modal.modal-in'
|
18267 | });
|
18268 | },
|
18269 | clicks: {
|
18270 | '.actions-open': function openActions($clickedEl, data) {
|
18271 | if (data === void 0) {
|
18272 | data = {};
|
18273 | }
|
18274 |
|
18275 | var app = this;
|
18276 | app.actions.open(data.actions, data.animate, $clickedEl);
|
18277 | },
|
18278 | '.actions-close': function closeActions($clickedEl, data) {
|
18279 | if (data === void 0) {
|
18280 | data = {};
|
18281 | }
|
18282 |
|
18283 | var app = this;
|
18284 | app.actions.close(data.actions, data.animate, $clickedEl);
|
18285 | }
|
18286 | }
|
18287 | };
|
18288 |
|
18289 | var Sheet$1 = function (_Modal) {
|
18290 | _inheritsLoose(Sheet, _Modal);
|
18291 |
|
18292 | function Sheet(app, params) {
|
18293 | var _this;
|
18294 |
|
18295 | var extendedParams = extend$1({
|
18296 | on: {}
|
18297 | }, app.params.sheet, params);
|
18298 |
|
18299 | _this = _Modal.call(this, app, extendedParams) || this;
|
18300 |
|
18301 | var sheet = _assertThisInitialized(_this);
|
18302 |
|
18303 | var window = getWindow();
|
18304 | var document = getDocument();
|
18305 | var support = getSupport$1();
|
18306 | var device = getDevice$1();
|
18307 | sheet.params = extendedParams;
|
18308 |
|
18309 | if (typeof sheet.params.backdrop === 'undefined') {
|
18310 | sheet.params.backdrop = app.theme !== 'ios';
|
18311 | }
|
18312 |
|
18313 |
|
18314 | var $el;
|
18315 |
|
18316 | if (!sheet.params.el) {
|
18317 | $el = $(sheet.params.content).filter(function (node) {
|
18318 | return node.nodeType === 1;
|
18319 | }).eq(0);
|
18320 | } else {
|
18321 | $el = $(sheet.params.el).eq(0);
|
18322 | }
|
18323 |
|
18324 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
18325 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
18326 | }
|
18327 |
|
18328 | if ($el.length === 0) {
|
18329 | return sheet.destroy() || _assertThisInitialized(_this);
|
18330 | }
|
18331 |
|
18332 | var $backdropEl;
|
18333 |
|
18334 | if (sheet.params.backdrop && sheet.params.backdropEl) {
|
18335 | $backdropEl = $(sheet.params.backdropEl);
|
18336 | } else if (sheet.params.backdrop) {
|
18337 | $backdropEl = sheet.$containerEl.children('.sheet-backdrop');
|
18338 |
|
18339 | if ($backdropEl.length === 0) {
|
18340 | $backdropEl = $('<div class="sheet-backdrop"></div>');
|
18341 | sheet.$containerEl.append($backdropEl);
|
18342 | }
|
18343 | }
|
18344 |
|
18345 | extend$1(sheet, {
|
18346 | app: app,
|
18347 | push: $el.hasClass('sheet-modal-push') || sheet.params.push,
|
18348 | $el: $el,
|
18349 | el: $el[0],
|
18350 | $backdropEl: $backdropEl,
|
18351 | backdropEl: $backdropEl && $backdropEl[0],
|
18352 | type: 'sheet',
|
18353 | $htmlEl: $('html')
|
18354 | });
|
18355 |
|
18356 | if (sheet.params.push) {
|
18357 | $el.addClass('sheet-modal-push');
|
18358 | }
|
18359 |
|
18360 | var $pageContentEl;
|
18361 |
|
18362 | function scrollToElementOnOpen() {
|
18363 | var $scrollEl = $(sheet.params.scrollToEl).eq(0);
|
18364 | if ($scrollEl.length === 0) return;
|
18365 | $pageContentEl = $scrollEl.parents('.page-content');
|
18366 | if ($pageContentEl.length === 0) return;
|
18367 | var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);
|
18368 | var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);
|
18369 | var pageHeight = $pageContentEl[0].offsetHeight - paddingTop - $el.height();
|
18370 | var pageScrollHeight = $pageContentEl[0].scrollHeight - paddingTop - $el.height();
|
18371 | var pageScroll = $pageContentEl.scrollTop();
|
18372 | var newPaddingBottom;
|
18373 | var scrollElTop = $scrollEl.offset().top - paddingTop + $scrollEl[0].offsetHeight;
|
18374 |
|
18375 | if (scrollElTop > pageHeight) {
|
18376 | var scrollTop = pageScroll + scrollElTop - pageHeight;
|
18377 |
|
18378 | if (scrollTop + pageHeight > pageScrollHeight) {
|
18379 | newPaddingBottom = scrollTop + pageHeight - pageScrollHeight + paddingBottom;
|
18380 |
|
18381 | if (pageHeight === pageScrollHeight) {
|
18382 | newPaddingBottom = $el.height();
|
18383 | }
|
18384 |
|
18385 | $pageContentEl.css({
|
18386 | 'padding-bottom': newPaddingBottom + "px"
|
18387 | });
|
18388 | }
|
18389 |
|
18390 | $pageContentEl.scrollTop(scrollTop, 300);
|
18391 | }
|
18392 | }
|
18393 |
|
18394 | function scrollToElementOnClose() {
|
18395 | if ($pageContentEl && $pageContentEl.length > 0) {
|
18396 | $pageContentEl.css({
|
18397 | 'padding-bottom': ''
|
18398 | });
|
18399 | }
|
18400 | }
|
18401 |
|
18402 | function handleClick(e) {
|
18403 | var target = e.target;
|
18404 | var $target = $(target);
|
18405 | var keyboardOpened = !device.desktop && device.cordova && (window.Keyboard && window.Keyboard.isVisible || window.cordova.plugins && window.cordova.plugins.Keyboard && window.cordova.plugins.Keyboard.isVisible);
|
18406 | if (keyboardOpened) return;
|
18407 |
|
18408 | if ($target.closest(sheet.el).length === 0) {
|
18409 | if (sheet.params.closeByBackdropClick && sheet.params.backdrop && sheet.backdropEl && sheet.backdropEl === target) {
|
18410 | sheet.close();
|
18411 | } else if (sheet.params.closeByOutsideClick) {
|
18412 | sheet.close();
|
18413 | }
|
18414 | }
|
18415 | }
|
18416 |
|
18417 | function onKeyDown(e) {
|
18418 | var keyCode = e.keyCode;
|
18419 |
|
18420 | if (keyCode === 27 && sheet.params.closeOnEscape) {
|
18421 | sheet.close();
|
18422 | }
|
18423 | }
|
18424 |
|
18425 | var pushOffset;
|
18426 |
|
18427 | function pushViewScale(offset) {
|
18428 | return (app.height - offset * 2) / app.height;
|
18429 | }
|
18430 |
|
18431 | var isTouched = false;
|
18432 | var startTouch;
|
18433 | var currentTouch;
|
18434 | var isScrolling;
|
18435 | var touchStartTime;
|
18436 | var touchesDiff;
|
18437 | var isMoved = false;
|
18438 | var isTopSheetModal;
|
18439 | var swipeStepTranslate;
|
18440 | var startTranslate;
|
18441 | var currentTranslate;
|
18442 | var sheetElOffsetHeight;
|
18443 | var minTranslate;
|
18444 | var maxTranslate;
|
18445 | var $pushViewEl;
|
18446 | var pushBorderRadius;
|
18447 | var sheetPageContentEl;
|
18448 | var sheetPageContentScrollTop;
|
18449 | var sheetPageContentScrollHeight;
|
18450 | var sheetPageContentOffsetHeight;
|
18451 |
|
18452 | function handleTouchStart(e) {
|
18453 | if (isTouched || !(sheet.params.swipeToClose || sheet.params.swipeToStep)) return;
|
18454 |
|
18455 | if (sheet.params.swipeHandler && $(e.target).closest(sheet.params.swipeHandler).length === 0) {
|
18456 | return;
|
18457 | }
|
18458 |
|
18459 | isTouched = true;
|
18460 | isMoved = false;
|
18461 | startTouch = {
|
18462 | x: e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX,
|
18463 | y: e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY
|
18464 | };
|
18465 | touchStartTime = now$1();
|
18466 | isScrolling = undefined;
|
18467 | isTopSheetModal = $el.hasClass('sheet-modal-top');
|
18468 |
|
18469 | if (!sheet.params.swipeHandler && e.type === 'touchstart') {
|
18470 | sheetPageContentEl = $(e.target).closest('.page-content')[0];
|
18471 | }
|
18472 | }
|
18473 |
|
18474 | function handleTouchMove(e) {
|
18475 | if (!isTouched) return;
|
18476 | currentTouch = {
|
18477 | x: e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX,
|
18478 | y: e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY
|
18479 | };
|
18480 |
|
18481 | if (typeof isScrolling === 'undefined') {
|
18482 | isScrolling = !!(isScrolling || Math.abs(currentTouch.x - startTouch.x) > Math.abs(currentTouch.y - startTouch.y));
|
18483 | }
|
18484 |
|
18485 | if (isScrolling) {
|
18486 | isTouched = false;
|
18487 | isMoved = false;
|
18488 | return;
|
18489 | }
|
18490 |
|
18491 | touchesDiff = startTouch.y - currentTouch.y;
|
18492 | var direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';
|
18493 |
|
18494 | if (!isMoved) {
|
18495 | if (sheetPageContentEl && !$el.hasClass('modal-in-swipe-step')) {
|
18496 | sheetPageContentScrollTop = sheetPageContentEl.scrollTop;
|
18497 | sheetPageContentScrollHeight = sheetPageContentEl.scrollHeight;
|
18498 | sheetPageContentOffsetHeight = sheetPageContentEl.offsetHeight;
|
18499 |
|
18500 | if (!(sheetPageContentScrollHeight === sheetPageContentOffsetHeight) && !(direction === 'to-bottom' && sheetPageContentScrollTop === 0) && !(direction === 'to-top' && sheetPageContentScrollTop === sheetPageContentScrollHeight - sheetPageContentOffsetHeight)) {
|
18501 | $el.transform('');
|
18502 | isTouched = false;
|
18503 | isMoved = false;
|
18504 | return;
|
18505 | }
|
18506 | }
|
18507 |
|
18508 | if (sheet.push && pushOffset) {
|
18509 | $pushViewEl = app.$el.children('.view, .views');
|
18510 | }
|
18511 |
|
18512 | sheetElOffsetHeight = $el[0].offsetHeight;
|
18513 | startTranslate = getTranslate$1($el[0], 'y');
|
18514 |
|
18515 | if (isTopSheetModal) {
|
18516 | minTranslate = sheet.params.swipeToClose ? -sheetElOffsetHeight : -swipeStepTranslate;
|
18517 | maxTranslate = 0;
|
18518 | } else {
|
18519 | minTranslate = 0;
|
18520 | maxTranslate = sheet.params.swipeToClose ? sheetElOffsetHeight : swipeStepTranslate;
|
18521 | }
|
18522 |
|
18523 | isMoved = true;
|
18524 | }
|
18525 |
|
18526 | currentTranslate = startTranslate - touchesDiff;
|
18527 | currentTranslate = Math.min(Math.max(currentTranslate, minTranslate), maxTranslate);
|
18528 | e.preventDefault();
|
18529 |
|
18530 | if (sheet.push && pushOffset) {
|
18531 | var progress = (currentTranslate - startTranslate) / sheetElOffsetHeight;
|
18532 |
|
18533 | if (sheet.params.swipeToStep) {
|
18534 | if (isTopSheetModal) {
|
18535 | progress = currentTranslate / swipeStepTranslate;
|
18536 | } else {
|
18537 | progress = 1 - (swipeStepTranslate - currentTranslate) / swipeStepTranslate;
|
18538 | }
|
18539 | }
|
18540 |
|
18541 | progress = Math.abs(progress);
|
18542 | progress = Math.min(Math.max(progress, 0), 1);
|
18543 | var pushProgress = 1 - progress;
|
18544 | var scale = 1 - (1 - pushViewScale(pushOffset)) * pushProgress;
|
18545 | $pushViewEl.transition(0).forEach(function (el) {
|
18546 | el.style.setProperty('transform', "translate3d(0,0,0) scale(" + scale + ")", 'important');
|
18547 | });
|
18548 |
|
18549 | if (sheet.params.swipeToStep) {
|
18550 | $pushViewEl.css('border-radius', pushBorderRadius * pushProgress + "px");
|
18551 | }
|
18552 | }
|
18553 |
|
18554 | $el.transition(0).transform("translate3d(0," + currentTranslate + "px,0)");
|
18555 |
|
18556 | if (sheet.params.swipeToStep) {
|
18557 | var _progress;
|
18558 |
|
18559 | if (isTopSheetModal) {
|
18560 | _progress = 1 - currentTranslate / swipeStepTranslate;
|
18561 | } else {
|
18562 | _progress = (swipeStepTranslate - currentTranslate) / swipeStepTranslate;
|
18563 | }
|
18564 |
|
18565 | _progress = Math.min(Math.max(_progress, 0), 1);
|
18566 | $el.trigger('sheet:stepprogress', _progress);
|
18567 | sheet.emit('local::stepProgress sheetStepProgress', sheet, _progress);
|
18568 | }
|
18569 | }
|
18570 |
|
18571 | function handleTouchEnd() {
|
18572 | isTouched = false;
|
18573 |
|
18574 | if (!isMoved) {
|
18575 | return;
|
18576 | }
|
18577 |
|
18578 | isMoved = false;
|
18579 | $el.transform('').transition('');
|
18580 |
|
18581 | if (sheet.push && pushOffset) {
|
18582 | $pushViewEl.transition('').transform('');
|
18583 | $pushViewEl.css('border-radius', '');
|
18584 | }
|
18585 |
|
18586 | var direction = touchesDiff < 0 ? 'to-bottom' : 'to-top';
|
18587 | var diff = Math.abs(touchesDiff);
|
18588 | if (diff === 0 || currentTranslate === startTranslate) return;
|
18589 | var timeDiff = new Date().getTime() - touchStartTime;
|
18590 |
|
18591 | if (!sheet.params.swipeToStep) {
|
18592 | if (direction !== (isTopSheetModal ? 'to-top' : 'to-bottom')) {
|
18593 | return;
|
18594 | }
|
18595 |
|
18596 | if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > sheetElOffsetHeight / 2) {
|
18597 | sheet.close();
|
18598 | }
|
18599 |
|
18600 | return;
|
18601 | }
|
18602 |
|
18603 | var openDirection = isTopSheetModal ? 'to-bottom' : 'to-top';
|
18604 | var closeDirection = isTopSheetModal ? 'to-top' : 'to-bottom';
|
18605 | var absCurrentTranslate = Math.abs(currentTranslate);
|
18606 | var absSwipeStepTranslate = Math.abs(swipeStepTranslate);
|
18607 |
|
18608 | if (timeDiff < 300 && diff > 10) {
|
18609 | if (direction === openDirection && absCurrentTranslate < absSwipeStepTranslate) {
|
18610 |
|
18611 | $el.removeClass('modal-in-swipe-step');
|
18612 | $el.trigger('sheet:stepprogress', 1);
|
18613 | sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);
|
18614 | $el.trigger('sheet:stepopen');
|
18615 | sheet.emit('local::stepOpen sheetStepOpen', sheet);
|
18616 |
|
18617 | if (sheet.push && pushOffset) {
|
18618 | sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
|
18619 | $pushViewEl.css('border-radius', '');
|
18620 | }
|
18621 | }
|
18622 |
|
18623 | if (direction === closeDirection && absCurrentTranslate > absSwipeStepTranslate) {
|
18624 |
|
18625 | if (sheet.params.swipeToClose) {
|
18626 | sheet.close();
|
18627 | } else {
|
18628 |
|
18629 | $el.addClass('modal-in-swipe-step');
|
18630 | $el.trigger('sheet:stepprogress', 0);
|
18631 | sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);
|
18632 | $el.trigger('sheet:stepclose');
|
18633 | sheet.emit('local::stepClose sheetStepClose', sheet);
|
18634 |
|
18635 | if (sheet.push && pushOffset) {
|
18636 | sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
|
18637 | $pushViewEl.css('border-radius', '0px');
|
18638 | }
|
18639 | }
|
18640 | }
|
18641 |
|
18642 | if (direction === closeDirection && absCurrentTranslate <= absSwipeStepTranslate) {
|
18643 |
|
18644 | $el.addClass('modal-in-swipe-step');
|
18645 | $el.trigger('sheet:stepprogress', 0);
|
18646 | sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);
|
18647 | $el.trigger('sheet:stepclose');
|
18648 | sheet.emit('local::stepClose sheetStepClose', sheet);
|
18649 |
|
18650 | if (sheet.push && pushOffset) {
|
18651 | sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
|
18652 | $pushViewEl.css('border-radius', '0px');
|
18653 | }
|
18654 | }
|
18655 |
|
18656 | return;
|
18657 | }
|
18658 |
|
18659 | if (timeDiff >= 300) {
|
18660 | var stepOpened = !$el.hasClass('modal-in-swipe-step');
|
18661 |
|
18662 | if (!stepOpened) {
|
18663 | if (absCurrentTranslate < absSwipeStepTranslate / 2) {
|
18664 |
|
18665 | $el.removeClass('modal-in-swipe-step');
|
18666 | $el.trigger('sheet:stepprogress', 1);
|
18667 | sheet.emit('local::stepProgress sheetStepProgress', sheet, 1);
|
18668 | $el.trigger('sheet:stepopen');
|
18669 | sheet.emit('local::stepOpen sheetStepOpen', sheet);
|
18670 |
|
18671 | if (sheet.push && pushOffset) {
|
18672 | sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
|
18673 | $pushViewEl.css('border-radius', '');
|
18674 | }
|
18675 | } else if (absCurrentTranslate - absSwipeStepTranslate > (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {
|
18676 |
|
18677 | if (sheet.params.swipeToClose) sheet.close();
|
18678 | }
|
18679 | } else if (stepOpened) {
|
18680 | if (absCurrentTranslate > absSwipeStepTranslate + (sheetElOffsetHeight - absSwipeStepTranslate) / 2) {
|
18681 |
|
18682 | if (sheet.params.swipeToClose) sheet.close();
|
18683 | } else if (absCurrentTranslate > absSwipeStepTranslate / 2) {
|
18684 |
|
18685 | $el.addClass('modal-in-swipe-step');
|
18686 | $el.trigger('sheet:stepprogress', 0);
|
18687 | sheet.emit('local::stepProgress sheetStepProgress', sheet, 0);
|
18688 | $el.trigger('sheet:stepclose');
|
18689 | sheet.emit('local::stepClose sheetStepClose', sheet);
|
18690 |
|
18691 | if (sheet.push && pushOffset) {
|
18692 | sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
|
18693 | $pushViewEl.css('border-radius', '0px');
|
18694 | }
|
18695 | }
|
18696 | }
|
18697 | }
|
18698 | }
|
18699 |
|
18700 | sheet.setSwipeStep = function setSwipeStep(byResize) {
|
18701 | if (byResize === void 0) {
|
18702 | byResize = true;
|
18703 | }
|
18704 |
|
18705 | var $swipeStepEl = $el.find('.sheet-modal-swipe-step').eq(0);
|
18706 | if (!$swipeStepEl.length) return;
|
18707 |
|
18708 | if ($el.hasClass('sheet-modal-top')) {
|
18709 | swipeStepTranslate = -($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);
|
18710 | } else {
|
18711 | swipeStepTranslate = $el[0].offsetHeight - ($swipeStepEl.offset().top - $el.offset().top + $swipeStepEl[0].offsetHeight);
|
18712 | }
|
18713 |
|
18714 | $el[0].style.setProperty('--f7-sheet-swipe-step', swipeStepTranslate + "px");
|
18715 |
|
18716 | if (!byResize) {
|
18717 | $el.addClass('modal-in-swipe-step');
|
18718 | }
|
18719 | };
|
18720 |
|
18721 | function onResize() {
|
18722 | sheet.setSwipeStep(true);
|
18723 | }
|
18724 |
|
18725 | var passive = support.passiveListener ? {
|
18726 | passive: true
|
18727 | } : false;
|
18728 |
|
18729 | if (sheet.params.swipeToClose || sheet.params.swipeToStep) {
|
18730 | $el.on(app.touchEvents.start, handleTouchStart, passive);
|
18731 | app.on('touchmove', handleTouchMove);
|
18732 | app.on('touchend:passive', handleTouchEnd);
|
18733 | sheet.once('sheetDestroy', function () {
|
18734 | $el.off(app.touchEvents.start, handleTouchStart, passive);
|
18735 | app.off('touchmove', handleTouchMove);
|
18736 | app.off('touchend:passive', handleTouchEnd);
|
18737 | });
|
18738 | }
|
18739 |
|
18740 | sheet.on('open', function () {
|
18741 | if (sheet.params.closeOnEscape) {
|
18742 | $(document).on('keydown', onKeyDown);
|
18743 | }
|
18744 |
|
18745 | $el.prevAll('.popup.modal-in').addClass('popup-behind');
|
18746 |
|
18747 | if (sheet.params.swipeToStep) {
|
18748 | sheet.setSwipeStep(false);
|
18749 | app.on('resize', onResize);
|
18750 | }
|
18751 |
|
18752 | if (sheet.params.scrollToEl) {
|
18753 | scrollToElementOnOpen();
|
18754 | }
|
18755 |
|
18756 | if (sheet.push) {
|
18757 | pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);
|
18758 | if (Number.isNaN(pushOffset)) pushOffset = 0;
|
18759 |
|
18760 | if (pushOffset) {
|
18761 | $el.addClass('sheet-modal-push');
|
18762 | sheet.$htmlEl.addClass('with-modal-sheet-push');
|
18763 |
|
18764 | if (!sheet.params.swipeToStep) {
|
18765 | sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
|
18766 | } else {
|
18767 | $pushViewEl = app.$el.children('.view, .views');
|
18768 | pushBorderRadius = parseFloat($el.css("border-" + (isTopSheetModal ? 'bottom' : 'top') + "-left-radius"));
|
18769 | $pushViewEl.css('border-radius', '0px');
|
18770 | }
|
18771 | }
|
18772 | }
|
18773 | });
|
18774 | sheet.on('opened', function () {
|
18775 | if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {
|
18776 | app.on('click', handleClick);
|
18777 | }
|
18778 | });
|
18779 | sheet.on('close', function () {
|
18780 | if (sheet.params.swipeToStep) {
|
18781 | $el.removeClass('modal-in-swipe-step');
|
18782 | app.off('resize', onResize);
|
18783 | }
|
18784 |
|
18785 | if (sheet.params.closeOnEscape) {
|
18786 | $(document).off('keydown', onKeyDown);
|
18787 | }
|
18788 |
|
18789 | if (sheet.params.scrollToEl) {
|
18790 | scrollToElementOnClose();
|
18791 | }
|
18792 |
|
18793 | if (sheet.params.closeByOutsideClick || sheet.params.closeByBackdropClick) {
|
18794 | app.off('click', handleClick);
|
18795 | }
|
18796 |
|
18797 | $el.prevAll('.popup.modal-in').eq(0).removeClass('popup-behind');
|
18798 |
|
18799 | if (sheet.push && pushOffset) {
|
18800 | sheet.$htmlEl.removeClass('with-modal-sheet-push');
|
18801 | sheet.$htmlEl.addClass('with-modal-sheet-push-closing');
|
18802 | }
|
18803 | });
|
18804 | sheet.on('closed', function () {
|
18805 | if (sheet.push && pushOffset) {
|
18806 | sheet.$htmlEl.removeClass('with-modal-sheet-push-closing');
|
18807 | sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
|
18808 | }
|
18809 | });
|
18810 |
|
18811 | sheet.stepOpen = function stepOpen() {
|
18812 | $el.removeClass('modal-in-swipe-step');
|
18813 |
|
18814 | if (sheet.push) {
|
18815 | if (!pushOffset) {
|
18816 | pushOffset = parseInt($el.css('--f7-sheet-push-offset'), 10);
|
18817 | if (Number.isNaN(pushOffset)) pushOffset = 0;
|
18818 | }
|
18819 |
|
18820 | if (pushOffset) {
|
18821 | sheet.$htmlEl[0].style.setProperty('--f7-sheet-push-scale', pushViewScale(pushOffset));
|
18822 | }
|
18823 | }
|
18824 | };
|
18825 |
|
18826 | sheet.stepClose = function stepClose() {
|
18827 | $el.addClass('modal-in-swipe-step');
|
18828 |
|
18829 | if (sheet.push) {
|
18830 | sheet.$htmlEl[0].style.removeProperty('--f7-sheet-push-scale');
|
18831 | }
|
18832 | };
|
18833 |
|
18834 | sheet.stepToggle = function stepToggle() {
|
18835 | $el.toggleClass('modal-in-swipe-step');
|
18836 | };
|
18837 |
|
18838 | $el[0].f7Modal = sheet;
|
18839 | return sheet || _assertThisInitialized(_this);
|
18840 | }
|
18841 |
|
18842 | return Sheet;
|
18843 | }(Modal$1);
|
18844 |
|
18845 | var Sheet = {
|
18846 | name: 'sheet',
|
18847 | params: {
|
18848 | sheet: {
|
18849 | push: false,
|
18850 | backdrop: undefined,
|
18851 | backdropEl: undefined,
|
18852 | closeByBackdropClick: true,
|
18853 | closeByOutsideClick: false,
|
18854 | closeOnEscape: false,
|
18855 | swipeToClose: false,
|
18856 | swipeToStep: false,
|
18857 | swipeHandler: null,
|
18858 | containerEl: null
|
18859 | }
|
18860 | },
|
18861 | static: {
|
18862 | Sheet: Sheet$1
|
18863 | },
|
18864 | create: function create() {
|
18865 | var app = this;
|
18866 | app.sheet = extend$1({}, ModalMethods({
|
18867 | app: app,
|
18868 | constructor: Sheet$1,
|
18869 | defaultSelector: '.sheet-modal.modal-in'
|
18870 | }), {
|
18871 | stepOpen: function stepOpen(sheet) {
|
18872 | var sheetInstance = app.sheet.get(sheet);
|
18873 | if (sheetInstance && sheetInstance.stepOpen) return sheetInstance.stepOpen();
|
18874 | return undefined;
|
18875 | },
|
18876 | stepClose: function stepClose(sheet) {
|
18877 | var sheetInstance = app.sheet.get(sheet);
|
18878 | if (sheetInstance && sheetInstance.stepClose) return sheetInstance.stepClose();
|
18879 | return undefined;
|
18880 | },
|
18881 | stepToggle: function stepToggle(sheet) {
|
18882 | var sheetInstance = app.sheet.get(sheet);
|
18883 | if (sheetInstance && sheetInstance.stepToggle) return sheetInstance.stepToggle();
|
18884 | return undefined;
|
18885 | }
|
18886 | });
|
18887 | },
|
18888 | clicks: {
|
18889 | '.sheet-open': function openSheet($clickedEl, data) {
|
18890 | if (data === void 0) {
|
18891 | data = {};
|
18892 | }
|
18893 |
|
18894 | var app = this;
|
18895 |
|
18896 | if ($('.sheet-modal.modal-in').length > 0 && data.sheet && $(data.sheet)[0] !== $('.sheet-modal.modal-in')[0]) {
|
18897 | app.sheet.close('.sheet-modal.modal-in');
|
18898 | }
|
18899 |
|
18900 | app.sheet.open(data.sheet, data.animate, $clickedEl);
|
18901 | },
|
18902 | '.sheet-close': function closeSheet($clickedEl, data) {
|
18903 | if (data === void 0) {
|
18904 | data = {};
|
18905 | }
|
18906 |
|
18907 | var app = this;
|
18908 | app.sheet.close(data.sheet, data.animate, $clickedEl);
|
18909 | }
|
18910 | }
|
18911 | };
|
18912 |
|
18913 | var Toast$1 = function (_Modal) {
|
18914 | _inheritsLoose(Toast, _Modal);
|
18915 |
|
18916 | function Toast(app, params) {
|
18917 | var _this;
|
18918 |
|
18919 | var extendedParams = extend$1({
|
18920 | on: {}
|
18921 | }, app.params.toast, params);
|
18922 |
|
18923 | _this = _Modal.call(this, app, extendedParams) || this;
|
18924 |
|
18925 | var toast = _assertThisInitialized(_this);
|
18926 |
|
18927 | var window = getWindow();
|
18928 | toast.app = app;
|
18929 | toast.params = extendedParams;
|
18930 | var _toast$params = toast.params,
|
18931 | closeButton = _toast$params.closeButton,
|
18932 | closeTimeout = _toast$params.closeTimeout;
|
18933 | var $el;
|
18934 |
|
18935 | if (!toast.params.el) {
|
18936 |
|
18937 | var toastHtml = toast.render();
|
18938 | $el = $(toastHtml);
|
18939 | } else {
|
18940 | $el = $(toast.params.el);
|
18941 | }
|
18942 |
|
18943 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
18944 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
18945 | }
|
18946 |
|
18947 | if ($el.length === 0) {
|
18948 | return toast.destroy() || _assertThisInitialized(_this);
|
18949 | }
|
18950 |
|
18951 | extend$1(toast, {
|
18952 | $el: $el,
|
18953 | el: $el[0],
|
18954 | type: 'toast'
|
18955 | });
|
18956 | $el[0].f7Modal = toast;
|
18957 |
|
18958 | if (closeButton) {
|
18959 | $el.find('.toast-button').on('click', function () {
|
18960 | toast.emit('local::closeButtonClick toastCloseButtonClick', toast);
|
18961 | toast.close();
|
18962 | });
|
18963 | toast.on('beforeDestroy', function () {
|
18964 | $el.find('.toast-button').off('click');
|
18965 | });
|
18966 | }
|
18967 |
|
18968 | var timeoutId;
|
18969 | toast.on('open', function () {
|
18970 | $('.toast.modal-in').each(function (openedEl) {
|
18971 | var toastInstance = app.toast.get(openedEl);
|
18972 |
|
18973 | if (openedEl !== toast.el && toastInstance) {
|
18974 | toastInstance.close();
|
18975 | }
|
18976 | });
|
18977 |
|
18978 | if (closeTimeout) {
|
18979 | timeoutId = nextTick$1(function () {
|
18980 | toast.close();
|
18981 | }, closeTimeout);
|
18982 | }
|
18983 | });
|
18984 | toast.on('close', function () {
|
18985 | window.clearTimeout(timeoutId);
|
18986 | });
|
18987 |
|
18988 | if (toast.params.destroyOnClose) {
|
18989 | toast.once('closed', function () {
|
18990 | setTimeout(function () {
|
18991 | toast.destroy();
|
18992 | }, 0);
|
18993 | });
|
18994 | }
|
18995 |
|
18996 | return toast || _assertThisInitialized(_this);
|
18997 | }
|
18998 |
|
18999 | var _proto = Toast.prototype;
|
19000 |
|
19001 | _proto.render = function render() {
|
19002 | var toast = this;
|
19003 | if (toast.params.render) return toast.params.render.call(toast, toast);
|
19004 | var _toast$params2 = toast.params,
|
19005 | position = _toast$params2.position,
|
19006 | horizontalPosition = _toast$params2.horizontalPosition,
|
19007 | cssClass = _toast$params2.cssClass,
|
19008 | icon = _toast$params2.icon,
|
19009 | text = _toast$params2.text,
|
19010 | closeButton = _toast$params2.closeButton,
|
19011 | closeButtonColor = _toast$params2.closeButtonColor,
|
19012 | closeButtonText = _toast$params2.closeButtonText;
|
19013 | var horizontalClass = position === 'top' || position === 'bottom' ? "toast-horizontal-" + horizontalPosition : '';
|
19014 | return $jsx("div", {
|
19015 | class: "toast toast-" + position + " " + horizontalClass + " " + (cssClass || '') + " " + (icon ? 'toast-with-icon' : '')
|
19016 | }, $jsx("div", {
|
19017 | class: "toast-content"
|
19018 | }, icon && $jsx("div", {
|
19019 | class: "toast-icon"
|
19020 | }, icon), $jsx("div", {
|
19021 | class: "toast-text"
|
19022 | }, text), closeButton && !icon && $jsx("a", {
|
19023 | class: "toast-button button " + (closeButtonColor ? "color-" + closeButtonColor : '')
|
19024 | }, closeButtonText)));
|
19025 | };
|
19026 |
|
19027 | return Toast;
|
19028 | }(Modal$1);
|
19029 |
|
19030 | var Toast = {
|
19031 | name: 'toast',
|
19032 | static: {
|
19033 | Toast: Toast$1
|
19034 | },
|
19035 | create: function create() {
|
19036 | var app = this;
|
19037 | app.toast = extend$1({}, ModalMethods({
|
19038 | app: app,
|
19039 | constructor: Toast$1,
|
19040 | defaultSelector: '.toast.modal-in'
|
19041 | }), {
|
19042 |
|
19043 | show: function show(params) {
|
19044 | extend$1(params, {
|
19045 | destroyOnClose: true
|
19046 | });
|
19047 | return new Toast$1(app, params).open();
|
19048 | }
|
19049 | });
|
19050 | },
|
19051 | params: {
|
19052 | toast: {
|
19053 | icon: null,
|
19054 | text: null,
|
19055 | position: 'bottom',
|
19056 | horizontalPosition: 'left',
|
19057 | closeButton: false,
|
19058 | closeButtonColor: null,
|
19059 | closeButtonText: 'Ok',
|
19060 | closeTimeout: null,
|
19061 | cssClass: null,
|
19062 | render: null,
|
19063 | containerEl: null
|
19064 | }
|
19065 | }
|
19066 | };
|
19067 |
|
19068 | var Preloader = {
|
19069 | init: function init(el) {
|
19070 | var app = this;
|
19071 | var preloaders = {
|
19072 | iosPreloaderContent: iosPreloaderContent,
|
19073 | mdPreloaderContent: mdPreloaderContent,
|
19074 | auroraPreloaderContent: auroraPreloaderContent
|
19075 | };
|
19076 | var $el = $(el);
|
19077 | if ($el.length === 0 || $el.children('.preloader-inner').length > 0 || $el.children('.preloader-inner-line').length > 0) return;
|
19078 | $el.append(preloaders[app.theme + "PreloaderContent"]);
|
19079 | },
|
19080 |
|
19081 | visible: false,
|
19082 | show: function show(color) {
|
19083 | if (color === void 0) {
|
19084 | color = 'white';
|
19085 | }
|
19086 |
|
19087 | var app = this;
|
19088 | if (Preloader.visible) return;
|
19089 | var preloaders = {
|
19090 | iosPreloaderContent: iosPreloaderContent,
|
19091 | mdPreloaderContent: mdPreloaderContent,
|
19092 | auroraPreloaderContent: auroraPreloaderContent
|
19093 | };
|
19094 | var preloaderInner = preloaders[app.theme + "PreloaderContent"] || '';
|
19095 | $('html').addClass('with-modal-preloader');
|
19096 |
|
19097 | app.$el.append("\n <div class=\"preloader-backdrop\"></div>\n <div class=\"preloader-modal\">\n <div class=\"preloader color-" + color + "\">" + preloaderInner + "</div>\n </div>\n ");
|
19098 | Preloader.visible = true;
|
19099 | },
|
19100 | showIn: function showIn(el, color) {
|
19101 | if (color === void 0) {
|
19102 | color = 'white';
|
19103 | }
|
19104 |
|
19105 | var app = this;
|
19106 | var preloaders = {
|
19107 | iosPreloaderContent: iosPreloaderContent,
|
19108 | mdPreloaderContent: mdPreloaderContent,
|
19109 | auroraPreloaderContent: auroraPreloaderContent
|
19110 | };
|
19111 | var preloaderInner = preloaders[app.theme + "PreloaderContent"] || '';
|
19112 | $(el || 'html').addClass('with-modal-preloader');
|
19113 |
|
19114 | $(el || app.$el).append("\n <div class=\"preloader-backdrop\"></div>\n <div class=\"preloader-modal\">\n <div class=\"preloader color-" + color + "\">" + preloaderInner + "</div>\n </div>\n ");
|
19115 | },
|
19116 | hide: function hide() {
|
19117 | var app = this;
|
19118 | if (!Preloader.visible) return;
|
19119 | $('html').removeClass('with-modal-preloader');
|
19120 | app.$el.find('.preloader-backdrop, .preloader-modal').remove();
|
19121 | Preloader.visible = false;
|
19122 | },
|
19123 | hideIn: function hideIn(el) {
|
19124 | var app = this;
|
19125 | $(el || 'html').removeClass('with-modal-preloader');
|
19126 | $(el || app.$el).find('.preloader-backdrop, .preloader-modal').remove();
|
19127 | }
|
19128 | };
|
19129 | var Preloader$1 = {
|
19130 | name: 'preloader',
|
19131 | create: function create() {
|
19132 | var app = this;
|
19133 | bindMethods(app, {
|
19134 | preloader: Preloader
|
19135 | });
|
19136 | },
|
19137 | on: {
|
19138 | photoBrowserOpen: function photoBrowserOpen(pb) {
|
19139 | var app = this;
|
19140 | pb.$el.find('.preloader').each(function (preloaderEl) {
|
19141 | app.preloader.init(preloaderEl);
|
19142 | });
|
19143 | },
|
19144 | tabMounted: function tabMounted(tabEl) {
|
19145 | var app = this;
|
19146 | $(tabEl).find('.preloader').each(function (preloaderEl) {
|
19147 | app.preloader.init(preloaderEl);
|
19148 | });
|
19149 | },
|
19150 | pageInit: function pageInit(page) {
|
19151 | var app = this;
|
19152 | page.$el.find('.preloader').each(function (preloaderEl) {
|
19153 | app.preloader.init(preloaderEl);
|
19154 | });
|
19155 | }
|
19156 | },
|
19157 | vnode: {
|
19158 | preloader: {
|
19159 | insert: function insert(vnode) {
|
19160 | var app = this;
|
19161 | var preloaderEl = vnode.elm;
|
19162 | app.preloader.init(preloaderEl);
|
19163 | }
|
19164 | }
|
19165 | }
|
19166 | };
|
19167 |
|
19168 | var Progressbar = {
|
19169 | set: function set() {
|
19170 | var app = this;
|
19171 |
|
19172 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
19173 | args[_key] = arguments[_key];
|
19174 | }
|
19175 |
|
19176 | var el = args[0],
|
19177 | progress = args[1],
|
19178 | duration = args[2];
|
19179 |
|
19180 | if (typeof args[0] === 'number') {
|
19181 | progress = args[0];
|
19182 | duration = args[1];
|
19183 | el = app.$el;
|
19184 | }
|
19185 |
|
19186 | if (typeof progress === 'undefined' || progress === null) return el;
|
19187 | if (!progress) progress = 0;
|
19188 | var $el = $(el || app.$el);
|
19189 |
|
19190 | if ($el.length === 0) {
|
19191 | return el;
|
19192 | }
|
19193 |
|
19194 | var progressNormalized = Math.min(Math.max(progress, 0), 100);
|
19195 | var $progressbarEl;
|
19196 | if ($el.hasClass('progressbar')) $progressbarEl = $el.eq(0);else {
|
19197 | $progressbarEl = $el.children('.progressbar');
|
19198 | }
|
19199 |
|
19200 | if ($progressbarEl.length === 0 || $progressbarEl.hasClass('progressbar-infinite')) {
|
19201 | return $progressbarEl;
|
19202 | }
|
19203 |
|
19204 | var $progressbarLine = $progressbarEl.children('span');
|
19205 |
|
19206 | if ($progressbarLine.length === 0) {
|
19207 | $progressbarLine = $('<span></span>');
|
19208 | $progressbarEl.append($progressbarLine);
|
19209 | }
|
19210 |
|
19211 | $progressbarLine.transition(typeof duration !== 'undefined' ? duration : '').transform("translate3d(" + (-100 + progressNormalized) + "%,0,0)");
|
19212 | return $progressbarEl[0];
|
19213 | },
|
19214 | show: function show() {
|
19215 | var app = this;
|
19216 |
|
19217 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
19218 | args[_key2] = arguments[_key2];
|
19219 | }
|
19220 |
|
19221 | var el = args[0],
|
19222 | progress = args[1],
|
19223 | color = args[2];
|
19224 | var type = 'determined';
|
19225 |
|
19226 | if (args.length === 2) {
|
19227 | if ((typeof args[0] === 'string' || typeof args[0] === 'object') && typeof args[1] === 'string') {
|
19228 |
|
19229 | el = args[0];
|
19230 | color = args[1];
|
19231 | progress = args[2];
|
19232 | type = 'infinite';
|
19233 | } else if (typeof args[0] === 'number' && typeof args[1] === 'string') {
|
19234 |
|
19235 | progress = args[0];
|
19236 | color = args[1];
|
19237 | el = app.$el;
|
19238 | }
|
19239 | } else if (args.length === 1) {
|
19240 | if (typeof args[0] === 'number') {
|
19241 | el = app.$el;
|
19242 | progress = args[0];
|
19243 | } else if (typeof args[0] === 'string') {
|
19244 | type = 'infinite';
|
19245 | el = app.$el;
|
19246 | color = args[0];
|
19247 | }
|
19248 | } else if (args.length === 0) {
|
19249 | type = 'infinite';
|
19250 | el = app.$el;
|
19251 | }
|
19252 |
|
19253 | var $el = $(el);
|
19254 | if ($el.length === 0) return undefined;
|
19255 | var $progressbarEl;
|
19256 |
|
19257 | if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {
|
19258 | $progressbarEl = $el;
|
19259 | } else {
|
19260 | $progressbarEl = $el.children('.progressbar:not(.progressbar-out), .progressbar-infinite:not(.progressbar-out)');
|
19261 |
|
19262 | if ($progressbarEl.length === 0) {
|
19263 | $progressbarEl = $("\n <span class=\"progressbar" + (type === 'infinite' ? '-infinite' : '') + (color ? " color-" + color : '') + " progressbar-in\">\n " + (type === 'infinite' ? '' : '<span></span>') + "\n </span>");
|
19264 | $el.append($progressbarEl);
|
19265 | }
|
19266 | }
|
19267 |
|
19268 | if (typeof progress !== 'undefined') {
|
19269 | app.progressbar.set($progressbarEl, progress);
|
19270 | }
|
19271 |
|
19272 | return $progressbarEl[0];
|
19273 | },
|
19274 | hide: function hide(el, removeAfterHide) {
|
19275 | if (removeAfterHide === void 0) {
|
19276 | removeAfterHide = true;
|
19277 | }
|
19278 |
|
19279 | var app = this;
|
19280 | var $el = $(el || app.$el);
|
19281 | if ($el.length === 0) return undefined;
|
19282 | var $progressbarEl;
|
19283 |
|
19284 | if ($el.hasClass('progressbar') || $el.hasClass('progressbar-infinite')) {
|
19285 | $progressbarEl = $el;
|
19286 | } else {
|
19287 | $progressbarEl = $el.children('.progressbar, .progressbar-infinite');
|
19288 | }
|
19289 |
|
19290 | if ($progressbarEl.length === 0 || !$progressbarEl.hasClass('progressbar-in') || $progressbarEl.hasClass('progressbar-out')) {
|
19291 | return $progressbarEl;
|
19292 | }
|
19293 |
|
19294 | $progressbarEl.removeClass('progressbar-in').addClass('progressbar-out').animationEnd(function () {
|
19295 | if (removeAfterHide) {
|
19296 | $progressbarEl.remove();
|
19297 | }
|
19298 | });
|
19299 | return $progressbarEl;
|
19300 | }
|
19301 | };
|
19302 | var Progressbar$1 = {
|
19303 | name: 'progressbar',
|
19304 | create: function create() {
|
19305 | var app = this;
|
19306 | bindMethods(app, {
|
19307 | progressbar: Progressbar
|
19308 | });
|
19309 | },
|
19310 | on: {
|
19311 | tabMounted: function tabMounted(tabEl) {
|
19312 | var app = this;
|
19313 | $(tabEl).find('.progressbar').each(function (progressbarEl) {
|
19314 | var $progressbarEl = $(progressbarEl);
|
19315 | app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));
|
19316 | });
|
19317 | },
|
19318 | pageInit: function pageInit(page) {
|
19319 | var app = this;
|
19320 | page.$el.find('.progressbar').each(function (progressbarEl) {
|
19321 | var $progressbarEl = $(progressbarEl);
|
19322 | app.progressbar.set($progressbarEl, $progressbarEl.attr('data-progress'));
|
19323 | });
|
19324 | }
|
19325 | },
|
19326 | vnode: {
|
19327 | progressbar: {
|
19328 | insert: function insert(vnode) {
|
19329 | var app = this;
|
19330 | var el = vnode.elm;
|
19331 | app.progressbar.set(el, el.getAttribute('data-progress'));
|
19332 | },
|
19333 | update: function update(vnode) {
|
19334 | var app = this;
|
19335 | var el = vnode.elm;
|
19336 | app.progressbar.set(el, el.getAttribute('data-progress'));
|
19337 | }
|
19338 | }
|
19339 | }
|
19340 | };
|
19341 |
|
19342 | var Sortable = {
|
19343 | init: function init() {
|
19344 | var app = this;
|
19345 | var document = getDocument();
|
19346 | var isTouched;
|
19347 | var isMoved;
|
19348 | var touchStartY;
|
19349 | var touchesDiff;
|
19350 | var $sortingEl;
|
19351 | var $sortingItems;
|
19352 | var $sortableContainer;
|
19353 | var sortingElHeight;
|
19354 | var minTop;
|
19355 | var maxTop;
|
19356 | var $insertAfterEl;
|
19357 | var $insertBeforeEl;
|
19358 | var indexFrom;
|
19359 | var $pageEl;
|
19360 | var $pageContentEl;
|
19361 | var pageHeight;
|
19362 | var pageOffset;
|
19363 | var sortingElOffsetLocal;
|
19364 | var sortingElOffsetTop;
|
19365 | var initialScrollTop;
|
19366 | var wasTapHold;
|
19367 |
|
19368 | function handleTouchStart(e, isTapHold) {
|
19369 | isMoved = false;
|
19370 | isTouched = true;
|
19371 | wasTapHold = false;
|
19372 | touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
19373 | $sortingEl = $(e.target).closest('li').eq(0);
|
19374 | indexFrom = $sortingEl.index();
|
19375 | $sortableContainer = $sortingEl.parents('.sortable');
|
19376 | var $listGroup = $sortingEl.parents('.list-group');
|
19377 |
|
19378 | if ($listGroup.length && $listGroup.parents($sortableContainer).length) {
|
19379 | $sortableContainer = $listGroup;
|
19380 | }
|
19381 |
|
19382 | $sortingItems = $sortableContainer.children('ul').children('li:not(.disallow-sorting):not(.no-sorting)');
|
19383 | if (app.panel) app.panel.allowOpen = false;
|
19384 | if (app.swipeout) app.swipeout.allow = false;
|
19385 |
|
19386 | if (isTapHold) {
|
19387 | $sortingEl.addClass('sorting');
|
19388 | $sortableContainer.addClass('sortable-sorting');
|
19389 | wasTapHold = true;
|
19390 | }
|
19391 | }
|
19392 |
|
19393 | function handleTouchMove(e) {
|
19394 | if (!isTouched || !$sortingEl) return;
|
19395 | var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
19396 |
|
19397 | if (!isMoved) {
|
19398 | $pageEl = $sortingEl.parents('.page');
|
19399 | $pageContentEl = $sortingEl.parents('.page-content');
|
19400 | var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);
|
19401 | var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);
|
19402 | initialScrollTop = $pageContentEl[0].scrollTop;
|
19403 | pageOffset = $pageEl.offset().top + paddingTop;
|
19404 | pageHeight = $pageEl.height() - paddingTop - paddingBottom;
|
19405 | $sortingEl.addClass('sorting');
|
19406 | $sortableContainer.addClass('sortable-sorting');
|
19407 | sortingElOffsetLocal = $sortingEl[0].offsetTop;
|
19408 | minTop = $sortingEl[0].offsetTop;
|
19409 | maxTop = $sortingEl.parent().height() - sortingElOffsetLocal - $sortingEl.height();
|
19410 | sortingElHeight = $sortingEl[0].offsetHeight;
|
19411 | sortingElOffsetTop = $sortingEl.offset().top;
|
19412 | }
|
19413 |
|
19414 | isMoved = true;
|
19415 | e.preventDefault();
|
19416 | e.f7PreventSwipePanel = true;
|
19417 | touchesDiff = pageY - touchStartY;
|
19418 | var translateScrollOffset = $pageContentEl[0].scrollTop - initialScrollTop;
|
19419 | var translate = Math.min(Math.max(touchesDiff + translateScrollOffset, -minTop), maxTop);
|
19420 | $sortingEl.transform("translate3d(0," + translate + "px,0)");
|
19421 | var scrollAddition = 44;
|
19422 | var allowScroll = true;
|
19423 |
|
19424 | if (touchesDiff + translateScrollOffset + scrollAddition < -minTop) {
|
19425 | allowScroll = false;
|
19426 | }
|
19427 |
|
19428 | if (touchesDiff + translateScrollOffset - scrollAddition > maxTop) {
|
19429 | allowScroll = false;
|
19430 | }
|
19431 |
|
19432 | $insertBeforeEl = undefined;
|
19433 | $insertAfterEl = undefined;
|
19434 | var scrollDiff;
|
19435 |
|
19436 | if (allowScroll) {
|
19437 | if (sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition > pageOffset + pageHeight) {
|
19438 |
|
19439 | scrollDiff = sortingElOffsetTop + touchesDiff + sortingElHeight + scrollAddition - (pageOffset + pageHeight);
|
19440 | }
|
19441 |
|
19442 | if (sortingElOffsetTop + touchesDiff < pageOffset + scrollAddition) {
|
19443 |
|
19444 | scrollDiff = sortingElOffsetTop + touchesDiff - pageOffset - scrollAddition;
|
19445 | }
|
19446 |
|
19447 | if (scrollDiff) {
|
19448 | $pageContentEl[0].scrollTop += scrollDiff;
|
19449 | }
|
19450 | }
|
19451 |
|
19452 | $sortingItems.each(function (el) {
|
19453 | var $currentEl = $(el);
|
19454 | if ($currentEl[0] === $sortingEl[0]) return;
|
19455 | var currentElOffset = $currentEl[0].offsetTop;
|
19456 | var currentElHeight = $currentEl.height();
|
19457 | var sortingElOffset = sortingElOffsetLocal + translate;
|
19458 |
|
19459 | if (sortingElOffset >= currentElOffset - currentElHeight / 2 && $sortingEl.index() < $currentEl.index()) {
|
19460 | $currentEl.transform("translate3d(0, " + -sortingElHeight + "px,0)");
|
19461 | $insertAfterEl = $currentEl;
|
19462 | $insertBeforeEl = undefined;
|
19463 | } else if (sortingElOffset <= currentElOffset + currentElHeight / 2 && $sortingEl.index() > $currentEl.index()) {
|
19464 | $currentEl.transform("translate3d(0, " + sortingElHeight + "px,0)");
|
19465 | $insertAfterEl = undefined;
|
19466 | if (!$insertBeforeEl) $insertBeforeEl = $currentEl;
|
19467 | } else {
|
19468 | $currentEl.transform('translate3d(0, 0%,0)');
|
19469 | }
|
19470 | });
|
19471 | }
|
19472 |
|
19473 | function handleTouchEnd() {
|
19474 | if (!isTouched || !isMoved) {
|
19475 | if (isTouched && !isMoved) {
|
19476 | if (app.panel) app.panel.allowOpen = true;
|
19477 | if (app.swipeout) app.swipeout.allow = true;
|
19478 |
|
19479 | if (wasTapHold) {
|
19480 | $sortingEl.removeClass('sorting');
|
19481 | $sortableContainer.removeClass('sortable-sorting');
|
19482 | }
|
19483 | }
|
19484 |
|
19485 | isTouched = false;
|
19486 | isMoved = false;
|
19487 | return;
|
19488 | }
|
19489 |
|
19490 | if (app.panel) app.panel.allowOpen = true;
|
19491 | if (app.swipeout) app.swipeout.allow = true;
|
19492 | $sortingItems.transform('');
|
19493 | $sortingEl.removeClass('sorting');
|
19494 | $sortableContainer.removeClass('sortable-sorting');
|
19495 | var indexTo;
|
19496 | if ($insertAfterEl) indexTo = $insertAfterEl.index();else if ($insertBeforeEl) indexTo = $insertBeforeEl.index();
|
19497 | var moveElements = $sortableContainer.dataset().sortableMoveElements;
|
19498 |
|
19499 | if (typeof moveElements === 'undefined') {
|
19500 | moveElements = app.params.sortable.moveElements;
|
19501 | }
|
19502 |
|
19503 | if (moveElements) {
|
19504 | if ($insertAfterEl) {
|
19505 | $sortingEl.insertAfter($insertAfterEl);
|
19506 | }
|
19507 |
|
19508 | if ($insertBeforeEl) {
|
19509 | $sortingEl.insertBefore($insertBeforeEl);
|
19510 | }
|
19511 | }
|
19512 |
|
19513 | if (($insertAfterEl || $insertBeforeEl) && $sortableContainer.hasClass('virtual-list')) {
|
19514 | indexFrom = $sortingEl[0].f7VirtualListIndex;
|
19515 | if (typeof indexFrom === 'undefined') indexFrom = $sortingEl.attr('data-virtual-list-index');
|
19516 |
|
19517 | if ($insertBeforeEl) {
|
19518 | indexTo = $insertBeforeEl[0].f7VirtualListIndex;
|
19519 | if (typeof indexTo === 'undefined') indexTo = $insertBeforeEl.attr('data-virtual-list-index');
|
19520 | } else {
|
19521 | indexTo = $insertAfterEl[0].f7VirtualListIndex;
|
19522 | if (typeof indexTo === 'undefined') indexTo = $insertAfterEl.attr('data-virtual-list-index');
|
19523 | }
|
19524 |
|
19525 | if (indexTo !== null) indexTo = parseInt(indexTo, 10);else indexTo = undefined;
|
19526 | var virtualList = $sortableContainer[0].f7VirtualList;
|
19527 | if (indexFrom) indexFrom = parseInt(indexFrom, 10);
|
19528 | if (indexTo) indexTo = parseInt(indexTo, 10);
|
19529 | if (virtualList) virtualList.moveItem(indexFrom, indexTo);
|
19530 | }
|
19531 |
|
19532 | if (typeof indexTo !== 'undefined' && !Number.isNaN(indexTo) && indexTo !== indexFrom) {
|
19533 | $sortingEl.trigger('sortable:sort', {
|
19534 | from: indexFrom,
|
19535 | to: indexTo
|
19536 | });
|
19537 | app.emit('sortableSort', $sortingEl[0], {
|
19538 | from: indexFrom,
|
19539 | to: indexTo,
|
19540 | el: $sortingEl[0]
|
19541 | }, $sortableContainer[0]);
|
19542 | }
|
19543 |
|
19544 | $insertBeforeEl = undefined;
|
19545 | $insertAfterEl = undefined;
|
19546 | isTouched = false;
|
19547 | isMoved = false;
|
19548 | }
|
19549 |
|
19550 | var activeListener = getSupport$1().passiveListener ? {
|
19551 | passive: false,
|
19552 | capture: false
|
19553 | } : false;
|
19554 | $(document).on(app.touchEvents.start, '.list.sortable .sortable-handler', handleTouchStart, activeListener);
|
19555 | app.on('touchmove:active', handleTouchMove);
|
19556 | app.on('touchend:passive', handleTouchEnd);
|
19557 | $(document).on('taphold', '.sortable-tap-hold', function (e, pointerEvent) {
|
19558 | handleTouchStart(pointerEvent, true);
|
19559 | });
|
19560 | },
|
19561 | enable: function enable(el) {
|
19562 | if (el === void 0) {
|
19563 | el = '.list.sortable';
|
19564 | }
|
19565 |
|
19566 | var app = this;
|
19567 | var $el = $(el);
|
19568 | if ($el.length === 0) return;
|
19569 | $el.addClass('sortable-enabled');
|
19570 | $el.trigger('sortable:enable');
|
19571 | app.emit('sortableEnable', $el[0]);
|
19572 | },
|
19573 | disable: function disable(el) {
|
19574 | if (el === void 0) {
|
19575 | el = '.list.sortable';
|
19576 | }
|
19577 |
|
19578 | var app = this;
|
19579 | var $el = $(el);
|
19580 | if ($el.length === 0) return;
|
19581 | $el.removeClass('sortable-enabled');
|
19582 | $el.trigger('sortable:disable');
|
19583 | app.emit('sortableDisable', $el[0]);
|
19584 | },
|
19585 | toggle: function toggle(el) {
|
19586 | if (el === void 0) {
|
19587 | el = '.list.sortable';
|
19588 | }
|
19589 |
|
19590 | var app = this;
|
19591 | var $el = $(el);
|
19592 | if ($el.length === 0) return;
|
19593 |
|
19594 | if ($el.hasClass('sortable-enabled')) {
|
19595 | app.sortable.disable($el);
|
19596 | } else {
|
19597 | app.sortable.enable($el);
|
19598 | }
|
19599 | }
|
19600 | };
|
19601 | var Sortable$1 = {
|
19602 | name: 'sortable',
|
19603 | params: {
|
19604 | sortable: {
|
19605 | moveElements: true
|
19606 | }
|
19607 | },
|
19608 | create: function create() {
|
19609 | var app = this;
|
19610 | bindMethods(app, {
|
19611 | sortable: Sortable
|
19612 | });
|
19613 | },
|
19614 | on: {
|
19615 | init: function init() {
|
19616 | var app = this;
|
19617 | if (!app.params.sortable) return;
|
19618 | app.sortable.init();
|
19619 | }
|
19620 | },
|
19621 | clicks: {
|
19622 | '.sortable-enable': function enable($clickedEl, data) {
|
19623 | if (data === void 0) {
|
19624 | data = {};
|
19625 | }
|
19626 |
|
19627 | var app = this;
|
19628 | app.sortable.enable(data.sortable);
|
19629 | },
|
19630 | '.sortable-disable': function disable($clickedEl, data) {
|
19631 | if (data === void 0) {
|
19632 | data = {};
|
19633 | }
|
19634 |
|
19635 | var app = this;
|
19636 | app.sortable.disable(data.sortable);
|
19637 | },
|
19638 | '.sortable-toggle': function toggle($clickedEl, data) {
|
19639 | if (data === void 0) {
|
19640 | data = {};
|
19641 | }
|
19642 |
|
19643 | var app = this;
|
19644 | app.sortable.toggle(data.sortable);
|
19645 | }
|
19646 | }
|
19647 | };
|
19648 |
|
19649 | var Swipeout = {
|
19650 | init: function init() {
|
19651 | var app = this;
|
19652 | var document = getDocument();
|
19653 | var touchesStart = {};
|
19654 | var isTouched;
|
19655 | var isMoved;
|
19656 | var isScrolling;
|
19657 | var touchStartTime;
|
19658 | var touchesDiff;
|
19659 | var $swipeoutEl;
|
19660 | var $swipeoutContent;
|
19661 | var $actionsRight;
|
19662 | var $actionsLeft;
|
19663 | var actionsLeftWidth;
|
19664 | var actionsRightWidth;
|
19665 | var translate;
|
19666 | var opened;
|
19667 | var openedActionsSide;
|
19668 | var $leftButtons;
|
19669 | var $rightButtons;
|
19670 | var direction;
|
19671 | var $overswipeLeftButton;
|
19672 | var $overswipeRightButton;
|
19673 | var overswipeLeft;
|
19674 | var overswipeRight;
|
19675 |
|
19676 | function handleTouchStart(e) {
|
19677 | if (!app.swipeout.allow) return;
|
19678 | isMoved = false;
|
19679 | isTouched = true;
|
19680 | isScrolling = undefined;
|
19681 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
19682 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
19683 | touchStartTime = new Date().getTime();
|
19684 | $swipeoutEl = $(this);
|
19685 | }
|
19686 |
|
19687 | function handleTouchMove(e) {
|
19688 | if (!isTouched) return;
|
19689 | var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
19690 | var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
19691 |
|
19692 | if (typeof isScrolling === 'undefined') {
|
19693 | isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
|
19694 | }
|
19695 |
|
19696 | if (isScrolling) {
|
19697 | isTouched = false;
|
19698 | return;
|
19699 | }
|
19700 |
|
19701 | if (!isMoved) {
|
19702 | if ($('.list.sortable-opened').length > 0) return;
|
19703 | $swipeoutContent = $swipeoutEl.find('.swipeout-content');
|
19704 | $actionsRight = $swipeoutEl.find('.swipeout-actions-right');
|
19705 | $actionsLeft = $swipeoutEl.find('.swipeout-actions-left');
|
19706 | actionsLeftWidth = null;
|
19707 | actionsRightWidth = null;
|
19708 | $leftButtons = null;
|
19709 | $rightButtons = null;
|
19710 | $overswipeRightButton = null;
|
19711 | $overswipeLeftButton = null;
|
19712 |
|
19713 | if ($actionsLeft.length > 0) {
|
19714 | actionsLeftWidth = $actionsLeft.outerWidth();
|
19715 | $leftButtons = $actionsLeft.children('a');
|
19716 | $overswipeLeftButton = $actionsLeft.find('.swipeout-overswipe');
|
19717 | }
|
19718 |
|
19719 | if ($actionsRight.length > 0) {
|
19720 | actionsRightWidth = $actionsRight.outerWidth();
|
19721 | $rightButtons = $actionsRight.children('a');
|
19722 | $overswipeRightButton = $actionsRight.find('.swipeout-overswipe');
|
19723 | }
|
19724 |
|
19725 | opened = $swipeoutEl.hasClass('swipeout-opened');
|
19726 |
|
19727 | if (opened) {
|
19728 | openedActionsSide = $swipeoutEl.find('.swipeout-actions-left.swipeout-actions-opened').length > 0 ? 'left' : 'right';
|
19729 | }
|
19730 |
|
19731 | $swipeoutEl.removeClass('swipeout-transitioning');
|
19732 |
|
19733 | if (!app.params.swipeout.noFollow) {
|
19734 | $swipeoutEl.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');
|
19735 | $swipeoutEl.removeClass('swipeout-opened');
|
19736 | }
|
19737 | }
|
19738 |
|
19739 | isMoved = true;
|
19740 |
|
19741 | if (e.cancelable) {
|
19742 | e.preventDefault();
|
19743 | }
|
19744 |
|
19745 | touchesDiff = pageX - touchesStart.x;
|
19746 | translate = touchesDiff;
|
19747 |
|
19748 | if (opened) {
|
19749 | if (openedActionsSide === 'right') translate -= actionsRightWidth;else translate += actionsLeftWidth;
|
19750 | }
|
19751 |
|
19752 | if (translate > 0 && $actionsLeft.length === 0 || translate < 0 && $actionsRight.length === 0) {
|
19753 | if (!opened) {
|
19754 | isTouched = false;
|
19755 | isMoved = false;
|
19756 | $swipeoutContent.transform('');
|
19757 |
|
19758 | if ($rightButtons && $rightButtons.length > 0) {
|
19759 | $rightButtons.transform('');
|
19760 | }
|
19761 |
|
19762 | if ($leftButtons && $leftButtons.length > 0) {
|
19763 | $leftButtons.transform('');
|
19764 | }
|
19765 |
|
19766 | return;
|
19767 | }
|
19768 |
|
19769 | translate = 0;
|
19770 | }
|
19771 |
|
19772 | if (translate < 0) direction = 'to-left';else if (translate > 0) direction = 'to-right';else if (!direction) direction = 'to-left';
|
19773 | var buttonOffset;
|
19774 | var progress;
|
19775 | e.f7PreventSwipePanel = true;
|
19776 |
|
19777 | if (app.params.swipeout.noFollow) {
|
19778 | if (opened) {
|
19779 | if (openedActionsSide === 'right' && touchesDiff > 0) {
|
19780 | app.swipeout.close($swipeoutEl);
|
19781 | }
|
19782 |
|
19783 | if (openedActionsSide === 'left' && touchesDiff < 0) {
|
19784 | app.swipeout.close($swipeoutEl);
|
19785 | }
|
19786 | } else {
|
19787 | if (touchesDiff < 0 && $actionsRight.length > 0) {
|
19788 | app.swipeout.open($swipeoutEl, 'right');
|
19789 | }
|
19790 |
|
19791 | if (touchesDiff > 0 && $actionsLeft.length > 0) {
|
19792 | app.swipeout.open($swipeoutEl, 'left');
|
19793 | }
|
19794 | }
|
19795 |
|
19796 | isTouched = false;
|
19797 | isMoved = false;
|
19798 | return;
|
19799 | }
|
19800 |
|
19801 | overswipeLeft = false;
|
19802 | overswipeRight = false;
|
19803 |
|
19804 | if ($actionsRight.length > 0) {
|
19805 |
|
19806 | var buttonTranslate = translate;
|
19807 | progress = buttonTranslate / actionsRightWidth;
|
19808 |
|
19809 | if (buttonTranslate < -actionsRightWidth) {
|
19810 | var ratio = buttonTranslate / -actionsRightWidth;
|
19811 | buttonTranslate = -actionsRightWidth - Math.pow(-buttonTranslate - actionsRightWidth, 0.8);
|
19812 | translate = buttonTranslate;
|
19813 |
|
19814 | if ($overswipeRightButton.length > 0 && ratio > app.params.swipeout.overswipeRatio) {
|
19815 | overswipeRight = true;
|
19816 | }
|
19817 | }
|
19818 |
|
19819 | if (direction !== 'to-left') {
|
19820 | progress = 0;
|
19821 | buttonTranslate = 0;
|
19822 | }
|
19823 |
|
19824 | $rightButtons.each(function (buttonEl) {
|
19825 | var $buttonEl = $(buttonEl);
|
19826 |
|
19827 | if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {
|
19828 | $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;
|
19829 | }
|
19830 |
|
19831 | buttonOffset = buttonEl.f7SwipeoutButtonOffset;
|
19832 |
|
19833 | if ($overswipeRightButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-left') {
|
19834 | $buttonEl.css({
|
19835 | left: (overswipeRight ? -buttonOffset : 0) + "px"
|
19836 | });
|
19837 |
|
19838 | if (overswipeRight) {
|
19839 | if (!$buttonEl.hasClass('swipeout-overswipe-active')) {
|
19840 | $swipeoutEl.trigger('swipeout:overswipeenter');
|
19841 | app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);
|
19842 | }
|
19843 |
|
19844 | $buttonEl.addClass('swipeout-overswipe-active');
|
19845 | } else {
|
19846 | if ($buttonEl.hasClass('swipeout-overswipe-active')) {
|
19847 | $swipeoutEl.trigger('swipeout:overswipeexit');
|
19848 | app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);
|
19849 | }
|
19850 |
|
19851 | $buttonEl.removeClass('swipeout-overswipe-active');
|
19852 | }
|
19853 | }
|
19854 |
|
19855 | $buttonEl.transform("translate3d(" + (buttonTranslate - buttonOffset * (1 + Math.max(progress, -1))) + "px,0,0)");
|
19856 | });
|
19857 | }
|
19858 |
|
19859 | if ($actionsLeft.length > 0) {
|
19860 |
|
19861 | var _buttonTranslate = translate;
|
19862 | progress = _buttonTranslate / actionsLeftWidth;
|
19863 |
|
19864 | if (_buttonTranslate > actionsLeftWidth) {
|
19865 | var _ratio = _buttonTranslate / actionsRightWidth;
|
19866 |
|
19867 | _buttonTranslate = actionsLeftWidth + Math.pow(_buttonTranslate - actionsLeftWidth, 0.8);
|
19868 | translate = _buttonTranslate;
|
19869 |
|
19870 | if ($overswipeLeftButton.length > 0 && _ratio > app.params.swipeout.overswipeRatio) {
|
19871 | overswipeLeft = true;
|
19872 | }
|
19873 | }
|
19874 |
|
19875 | if (direction !== 'to-right') {
|
19876 | _buttonTranslate = 0;
|
19877 | progress = 0;
|
19878 | }
|
19879 |
|
19880 | $leftButtons.each(function (buttonEl, index) {
|
19881 | var $buttonEl = $(buttonEl);
|
19882 |
|
19883 | if (typeof buttonEl.f7SwipeoutButtonOffset === 'undefined') {
|
19884 | $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
|
19885 | }
|
19886 |
|
19887 | buttonOffset = buttonEl.f7SwipeoutButtonOffset;
|
19888 |
|
19889 | if ($overswipeLeftButton.length > 0 && $buttonEl.hasClass('swipeout-overswipe') && direction === 'to-right') {
|
19890 | $buttonEl.css({
|
19891 | left: (overswipeLeft ? buttonOffset : 0) + "px"
|
19892 | });
|
19893 |
|
19894 | if (overswipeLeft) {
|
19895 | if (!$buttonEl.hasClass('swipeout-overswipe-active')) {
|
19896 | $swipeoutEl.trigger('swipeout:overswipeenter');
|
19897 | app.emit('swipeoutOverswipeEnter', $swipeoutEl[0]);
|
19898 | }
|
19899 |
|
19900 | $buttonEl.addClass('swipeout-overswipe-active');
|
19901 | } else {
|
19902 | if ($buttonEl.hasClass('swipeout-overswipe-active')) {
|
19903 | $swipeoutEl.trigger('swipeout:overswipeexit');
|
19904 | app.emit('swipeoutOverswipeExit', $swipeoutEl[0]);
|
19905 | }
|
19906 |
|
19907 | $buttonEl.removeClass('swipeout-overswipe-active');
|
19908 | }
|
19909 | }
|
19910 |
|
19911 | if ($leftButtons.length > 1) {
|
19912 | $buttonEl.css('z-index', $leftButtons.length - index);
|
19913 | }
|
19914 |
|
19915 | $buttonEl.transform("translate3d(" + (_buttonTranslate + buttonOffset * (1 - Math.min(progress, 1))) + "px,0,0)");
|
19916 | });
|
19917 | }
|
19918 |
|
19919 | $swipeoutEl.trigger('swipeout', progress);
|
19920 | app.emit('swipeout', $swipeoutEl[0], progress);
|
19921 | $swipeoutContent.transform("translate3d(" + translate + "px,0,0)");
|
19922 | }
|
19923 |
|
19924 | function handleTouchEnd() {
|
19925 | if (!isTouched || !isMoved) {
|
19926 | isTouched = false;
|
19927 | isMoved = false;
|
19928 | return;
|
19929 | }
|
19930 |
|
19931 | isTouched = false;
|
19932 | isMoved = false;
|
19933 | var timeDiff = new Date().getTime() - touchStartTime;
|
19934 | var $actions = direction === 'to-left' ? $actionsRight : $actionsLeft;
|
19935 | var actionsWidth = direction === 'to-left' ? actionsRightWidth : actionsLeftWidth;
|
19936 | var action;
|
19937 | var $buttons;
|
19938 | var i;
|
19939 |
|
19940 | if (timeDiff < 300 && (touchesDiff < -10 && direction === 'to-left' || touchesDiff > 10 && direction === 'to-right') || timeDiff >= 300 && Math.abs(translate) > actionsWidth / 2) {
|
19941 | action = 'open';
|
19942 | } else {
|
19943 | action = 'close';
|
19944 | }
|
19945 |
|
19946 | if (timeDiff < 300) {
|
19947 | if (Math.abs(translate) === 0) action = 'close';
|
19948 | if (Math.abs(translate) === actionsWidth) action = 'open';
|
19949 | }
|
19950 |
|
19951 | if (action === 'open') {
|
19952 | Swipeout.el = $swipeoutEl[0];
|
19953 | $swipeoutEl.trigger('swipeout:open');
|
19954 | app.emit('swipeoutOpen', $swipeoutEl[0]);
|
19955 | $swipeoutEl.addClass('swipeout-opened swipeout-transitioning');
|
19956 | var newTranslate = direction === 'to-left' ? -actionsWidth : actionsWidth;
|
19957 | $swipeoutContent.transform("translate3d(" + newTranslate + "px,0,0)");
|
19958 | $actions.addClass('swipeout-actions-opened');
|
19959 | $buttons = direction === 'to-left' ? $rightButtons : $leftButtons;
|
19960 |
|
19961 | if ($buttons) {
|
19962 | for (i = 0; i < $buttons.length; i += 1) {
|
19963 | $($buttons[i]).transform("translate3d(" + newTranslate + "px,0,0)");
|
19964 | }
|
19965 | }
|
19966 |
|
19967 | if (overswipeRight) {
|
19968 | $actionsRight.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');
|
19969 | }
|
19970 |
|
19971 | if (overswipeLeft) {
|
19972 | $actionsLeft.find('.swipeout-overswipe').trigger('click', 'f7Overswipe');
|
19973 | }
|
19974 | } else {
|
19975 | $swipeoutEl.trigger('swipeout:close');
|
19976 | app.emit('swipeoutClose', $swipeoutEl[0]);
|
19977 | Swipeout.el = undefined;
|
19978 | $swipeoutEl.addClass('swipeout-transitioning').removeClass('swipeout-opened');
|
19979 | $swipeoutContent.transform('');
|
19980 | $actions.removeClass('swipeout-actions-opened');
|
19981 | }
|
19982 |
|
19983 | var buttonOffset;
|
19984 |
|
19985 | if ($leftButtons && $leftButtons.length > 0 && $leftButtons !== $buttons) {
|
19986 | $leftButtons.each(function (buttonEl) {
|
19987 | var $buttonEl = $(buttonEl);
|
19988 | buttonOffset = buttonEl.f7SwipeoutButtonOffset;
|
19989 |
|
19990 | if (typeof buttonOffset === 'undefined') {
|
19991 | $buttonEl[0].f7SwipeoutButtonOffset = actionsLeftWidth - buttonEl.offsetLeft - buttonEl.offsetWidth;
|
19992 | }
|
19993 |
|
19994 | $buttonEl.transform("translate3d(" + buttonOffset + "px,0,0)");
|
19995 | });
|
19996 | }
|
19997 |
|
19998 | if ($rightButtons && $rightButtons.length > 0 && $rightButtons !== $buttons) {
|
19999 | $rightButtons.each(function (buttonEl) {
|
20000 | var $buttonEl = $(buttonEl);
|
20001 | buttonOffset = buttonEl.f7SwipeoutButtonOffset;
|
20002 |
|
20003 | if (typeof buttonOffset === 'undefined') {
|
20004 | $buttonEl[0].f7SwipeoutButtonOffset = buttonEl.offsetLeft;
|
20005 | }
|
20006 |
|
20007 | $buttonEl.transform("translate3d(" + -buttonOffset + "px,0,0)");
|
20008 | });
|
20009 | }
|
20010 |
|
20011 | $swipeoutContent.transitionEnd(function () {
|
20012 | if (opened && action === 'open' || !opened && action === 'close') return;
|
20013 | $swipeoutEl.trigger(action === 'open' ? 'swipeout:opened' : 'swipeout:closed');
|
20014 | app.emit(action === 'open' ? 'swipeoutOpened' : 'swipeoutClosed', $swipeoutEl[0]);
|
20015 | $swipeoutEl.removeClass('swipeout-transitioning');
|
20016 |
|
20017 | if (opened && action === 'close') {
|
20018 | if ($actionsRight.length > 0) {
|
20019 | $rightButtons.transform('');
|
20020 | }
|
20021 |
|
20022 | if ($actionsLeft.length > 0) {
|
20023 | $leftButtons.transform('');
|
20024 | }
|
20025 | }
|
20026 | });
|
20027 | }
|
20028 |
|
20029 | var passiveListener = getSupport$1().passiveListener ? {
|
20030 | passive: true
|
20031 | } : false;
|
20032 | app.on('touchstart', function (e) {
|
20033 | if (Swipeout.el) {
|
20034 | var $targetEl = $(e.target);
|
20035 |
|
20036 | if (!($(Swipeout.el).is($targetEl[0]) || $targetEl.parents('.swipeout').is(Swipeout.el) || $targetEl.hasClass('modal-in') || ($targetEl.attr('class') || '').indexOf('-backdrop') > 0 || $targetEl.hasClass('actions-modal') || $targetEl.parents('.actions-modal.modal-in, .dialog.modal-in').length > 0)) {
|
20037 | app.swipeout.close(Swipeout.el);
|
20038 | }
|
20039 | }
|
20040 | });
|
20041 | $(document).on(app.touchEvents.start, 'li.swipeout', handleTouchStart, passiveListener);
|
20042 | app.on('touchmove:active', handleTouchMove);
|
20043 | app.on('touchend:passive', handleTouchEnd);
|
20044 | },
|
20045 | allow: true,
|
20046 | el: undefined,
|
20047 | open: function open() {
|
20048 | var app = this;
|
20049 |
|
20050 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
20051 | args[_key] = arguments[_key];
|
20052 | }
|
20053 |
|
20054 | var el = args[0],
|
20055 | side = args[1],
|
20056 | callback = args[2];
|
20057 |
|
20058 | if (typeof args[1] === 'function') {
|
20059 | el = args[0];
|
20060 | callback = args[1];
|
20061 | side = args[2];
|
20062 | }
|
20063 |
|
20064 | var $el = $(el).eq(0);
|
20065 | if ($el.length === 0) return;
|
20066 | if (!$el.hasClass('swipeout') || $el.hasClass('swipeout-opened')) return;
|
20067 |
|
20068 | if (!side) {
|
20069 | if ($el.find('.swipeout-actions-right').length > 0) side = 'right';else side = 'left';
|
20070 | }
|
20071 |
|
20072 | var $swipeoutActions = $el.find(".swipeout-actions-" + side);
|
20073 | var $swipeoutContent = $el.find('.swipeout-content');
|
20074 | if ($swipeoutActions.length === 0) return;
|
20075 | $el.trigger('swipeout:open').addClass('swipeout-opened').removeClass('swipeout-transitioning');
|
20076 | app.emit('swipeoutOpen', $el[0]);
|
20077 | $swipeoutActions.addClass('swipeout-actions-opened');
|
20078 | var $buttons = $swipeoutActions.children('a');
|
20079 | var swipeoutActionsWidth = $swipeoutActions.outerWidth();
|
20080 | var translate = side === 'right' ? -swipeoutActionsWidth : swipeoutActionsWidth;
|
20081 |
|
20082 | if ($buttons.length > 1) {
|
20083 | $buttons.each(function (buttonEl, buttonIndex) {
|
20084 | var $buttonEl = $(buttonEl);
|
20085 |
|
20086 | if (side === 'right') {
|
20087 | $buttonEl.transform("translate3d(" + -buttonEl.offsetLeft + "px,0,0)");
|
20088 | } else {
|
20089 | $buttonEl.css('z-index', $buttons.length - buttonIndex).transform("translate3d(" + (swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft) + "px,0,0)");
|
20090 | }
|
20091 | });
|
20092 | }
|
20093 |
|
20094 | $el.addClass('swipeout-transitioning');
|
20095 | $swipeoutContent.transitionEnd(function () {
|
20096 | $el.trigger('swipeout:opened');
|
20097 | app.emit('swipeoutOpened', $el[0]);
|
20098 | if (callback) callback.call($el[0]);
|
20099 | });
|
20100 | nextFrame$1(function () {
|
20101 | $buttons.transform("translate3d(" + translate + "px,0,0)");
|
20102 | $swipeoutContent.transform("translate3d(" + translate + "px,0,0)");
|
20103 | });
|
20104 | Swipeout.el = $el[0];
|
20105 | },
|
20106 | close: function close(el, callback) {
|
20107 | var app = this;
|
20108 | var $el = $(el).eq(0);
|
20109 | if ($el.length === 0) return;
|
20110 | if (!$el.hasClass('swipeout-opened')) return;
|
20111 | var side = $el.find('.swipeout-actions-opened').hasClass('swipeout-actions-right') ? 'right' : 'left';
|
20112 | var $swipeoutActions = $el.find('.swipeout-actions-opened').removeClass('swipeout-actions-opened');
|
20113 | var $buttons = $swipeoutActions.children('a');
|
20114 | var swipeoutActionsWidth = $swipeoutActions.outerWidth();
|
20115 | app.swipeout.allow = false;
|
20116 | $el.trigger('swipeout:close');
|
20117 | app.emit('swipeoutClose', $el[0]);
|
20118 | $el.removeClass('swipeout-opened').addClass('swipeout-transitioning');
|
20119 | var closeTimeout;
|
20120 |
|
20121 | function onSwipeoutClose() {
|
20122 | app.swipeout.allow = true;
|
20123 | if ($el.hasClass('swipeout-opened')) return;
|
20124 | $el.removeClass('swipeout-transitioning');
|
20125 | $buttons.transform('');
|
20126 | $el.trigger('swipeout:closed');
|
20127 | app.emit('swipeoutClosed', $el[0]);
|
20128 | if (callback) callback.call($el[0]);
|
20129 | if (closeTimeout) clearTimeout(closeTimeout);
|
20130 | }
|
20131 |
|
20132 | $el.find('.swipeout-content').transform('').transitionEnd(onSwipeoutClose);
|
20133 | closeTimeout = setTimeout(onSwipeoutClose, 500);
|
20134 | $buttons.each(function (buttonEl) {
|
20135 | var $buttonEl = $(buttonEl);
|
20136 |
|
20137 | if (side === 'right') {
|
20138 | $buttonEl.transform("translate3d(" + -buttonEl.offsetLeft + "px,0,0)");
|
20139 | } else {
|
20140 | $buttonEl.transform("translate3d(" + (swipeoutActionsWidth - buttonEl.offsetWidth - buttonEl.offsetLeft) + "px,0,0)");
|
20141 | }
|
20142 |
|
20143 | $buttonEl.css({
|
20144 | left: '0px'
|
20145 | }).removeClass('swipeout-overswipe-active');
|
20146 | });
|
20147 | if (Swipeout.el && Swipeout.el === $el[0]) Swipeout.el = undefined;
|
20148 | },
|
20149 | delete: function _delete(el, callback) {
|
20150 | var app = this;
|
20151 | var $el = $(el).eq(0);
|
20152 | if ($el.length === 0) return;
|
20153 | Swipeout.el = undefined;
|
20154 | $el.trigger('swipeout:delete');
|
20155 | app.emit('swipeoutDelete', $el[0]);
|
20156 | $el.css({
|
20157 | height: $el.outerHeight() + "px"
|
20158 | });
|
20159 | $el.transitionEnd(function () {
|
20160 | $el.trigger('swipeout:deleted');
|
20161 | app.emit('swipeoutDeleted', $el[0]);
|
20162 | if (callback) callback.call($el[0]);
|
20163 |
|
20164 | if ($el.parents('.virtual-list').length > 0) {
|
20165 | var virtualList = $el.parents('.virtual-list')[0].f7VirtualList;
|
20166 | var virtualIndex = $el[0].f7VirtualListIndex;
|
20167 | if (virtualList && typeof virtualIndex !== 'undefined') virtualList.deleteItem(virtualIndex);
|
20168 | } else if (app.params.swipeout.removeElements) {
|
20169 | if (app.params.swipeout.removeElementsWithTimeout) {
|
20170 | setTimeout(function () {
|
20171 | $el.remove();
|
20172 | }, app.params.swipeout.removeElementsTimeout);
|
20173 | } else {
|
20174 | $el.remove();
|
20175 | }
|
20176 | } else {
|
20177 | $el.removeClass('swipeout-deleting swipeout-transitioning');
|
20178 | }
|
20179 | });
|
20180 |
|
20181 |
|
20182 | nextFrame$1(function () {
|
20183 | $el.addClass('swipeout-deleting swipeout-transitioning').css({
|
20184 | height: '0px'
|
20185 | }).find('.swipeout-content').transform('translate3d(-100%,0,0)');
|
20186 | });
|
20187 | }
|
20188 | };
|
20189 | var Swipeout$1 = {
|
20190 | name: 'swipeout',
|
20191 | params: {
|
20192 | swipeout: {
|
20193 | actionsNoFold: false,
|
20194 | noFollow: false,
|
20195 | removeElements: true,
|
20196 | removeElementsWithTimeout: false,
|
20197 | removeElementsTimeout: 0,
|
20198 | overswipeRatio: 1.2
|
20199 | }
|
20200 | },
|
20201 | create: function create() {
|
20202 | var app = this;
|
20203 | bindMethods(app, {
|
20204 | swipeout: Swipeout
|
20205 | });
|
20206 | },
|
20207 | clicks: {
|
20208 | '.swipeout-open': function openSwipeout($clickedEl, data) {
|
20209 | if (data === void 0) {
|
20210 | data = {};
|
20211 | }
|
20212 |
|
20213 | var app = this;
|
20214 | app.swipeout.open(data.swipeout, data.side);
|
20215 | },
|
20216 | '.swipeout-close': function closeSwipeout($clickedEl) {
|
20217 | var app = this;
|
20218 | var $swipeoutEl = $clickedEl.closest('.swipeout');
|
20219 | if ($swipeoutEl.length === 0) return;
|
20220 | app.swipeout.close($swipeoutEl);
|
20221 | },
|
20222 | '.swipeout-delete': function deleteSwipeout($clickedEl, data) {
|
20223 | if (data === void 0) {
|
20224 | data = {};
|
20225 | }
|
20226 |
|
20227 | var app = this;
|
20228 | var $swipeoutEl = $clickedEl.closest('.swipeout');
|
20229 | if ($swipeoutEl.length === 0) return;
|
20230 | var _data = data,
|
20231 | confirm = _data.confirm,
|
20232 | confirmTitle = _data.confirmTitle;
|
20233 |
|
20234 | if (data.confirm) {
|
20235 | app.dialog.confirm(confirm, confirmTitle, function () {
|
20236 | app.swipeout.delete($swipeoutEl);
|
20237 | });
|
20238 | } else {
|
20239 | app.swipeout.delete($swipeoutEl);
|
20240 | }
|
20241 | }
|
20242 | },
|
20243 | on: {
|
20244 | init: function init() {
|
20245 | var app = this;
|
20246 | if (!app.params.swipeout) return;
|
20247 | app.swipeout.init();
|
20248 | }
|
20249 | }
|
20250 | };
|
20251 |
|
20252 | var Accordion = {
|
20253 | toggleClicked: function toggleClicked($clickedEl) {
|
20254 | var app = this;
|
20255 | var $accordionItemEl = $clickedEl.closest('.accordion-item').eq(0);
|
20256 | if (!$accordionItemEl.length) $accordionItemEl = $clickedEl.parents('li').eq(0);
|
20257 | var $accordionContent = $clickedEl.parents('.accordion-item-content').eq(0);
|
20258 |
|
20259 | if ($accordionContent.length) {
|
20260 | if ($accordionContent.parents($accordionItemEl).length) return;
|
20261 | }
|
20262 |
|
20263 | if ($clickedEl.parents('li').length > 1 && $clickedEl.parents('li')[0] !== $accordionItemEl[0]) return;
|
20264 | app.accordion.toggle($accordionItemEl);
|
20265 | },
|
20266 | open: function open(el) {
|
20267 | var app = this;
|
20268 | var $el = $(el);
|
20269 | var prevented = false;
|
20270 |
|
20271 | function prevent() {
|
20272 | prevented = true;
|
20273 | }
|
20274 |
|
20275 | $el.trigger('accordion:beforeopen', {
|
20276 | prevent: prevent
|
20277 | }, prevent);
|
20278 | app.emit('accordionBeforeOpen', $el[0], prevent);
|
20279 | if (prevented) return;
|
20280 | var $list = $el.parents('.accordion-list').eq(0);
|
20281 | var $contentEl = $el.children('.accordion-item-content');
|
20282 | $contentEl.removeAttr('aria-hidden');
|
20283 | if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');
|
20284 | if ($contentEl.length === 0) return;
|
20285 | var $openedItem = $list.length > 0 && $el.parent().children('.accordion-item-opened');
|
20286 |
|
20287 | if ($openedItem.length > 0) {
|
20288 | app.accordion.close($openedItem);
|
20289 | }
|
20290 |
|
20291 | $contentEl.transitionEnd(function () {
|
20292 | if ($el.hasClass('accordion-item-opened')) {
|
20293 | $contentEl.transition(0);
|
20294 | $contentEl.css('height', 'auto');
|
20295 | nextFrame$1(function () {
|
20296 | $contentEl.transition('');
|
20297 | $el.trigger('accordion:opened');
|
20298 | app.emit('accordionOpened', $el[0]);
|
20299 | });
|
20300 | } else {
|
20301 | $contentEl.css('height', '');
|
20302 | $el.trigger('accordion:closed');
|
20303 | app.emit('accordionClosed', $el[0]);
|
20304 | }
|
20305 | });
|
20306 | $contentEl.css('height', $contentEl[0].scrollHeight + "px");
|
20307 | $el.trigger('accordion:open');
|
20308 | $el.addClass('accordion-item-opened');
|
20309 | app.emit('accordionOpen', $el[0]);
|
20310 | },
|
20311 | close: function close(el) {
|
20312 | var app = this;
|
20313 | var $el = $(el);
|
20314 | var prevented = false;
|
20315 |
|
20316 | function prevent() {
|
20317 | prevented = true;
|
20318 | }
|
20319 |
|
20320 | $el.trigger('accordion:beforeclose', {
|
20321 | prevent: prevent
|
20322 | }, prevent);
|
20323 | app.emit('accordionBeforeClose', $el[0], prevent);
|
20324 | if (prevented) return;
|
20325 | var $contentEl = $el.children('.accordion-item-content');
|
20326 | if ($contentEl.length === 0) $contentEl = $el.find('.accordion-item-content');
|
20327 | $el.removeClass('accordion-item-opened');
|
20328 | $contentEl.attr('aria-hidden', true);
|
20329 | $contentEl.transition(0);
|
20330 | $contentEl.css('height', $contentEl[0].scrollHeight + "px");
|
20331 |
|
20332 | $contentEl.transitionEnd(function () {
|
20333 | if ($el.hasClass('accordion-item-opened')) {
|
20334 | $contentEl.transition(0);
|
20335 | $contentEl.css('height', 'auto');
|
20336 | nextFrame$1(function () {
|
20337 | $contentEl.transition('');
|
20338 | $el.trigger('accordion:opened');
|
20339 | app.emit('accordionOpened', $el[0]);
|
20340 | });
|
20341 | } else {
|
20342 | $contentEl.css('height', '');
|
20343 | $el.trigger('accordion:closed');
|
20344 | app.emit('accordionClosed', $el[0]);
|
20345 | }
|
20346 | });
|
20347 | nextFrame$1(function () {
|
20348 | $contentEl.transition('');
|
20349 | $contentEl.css('height', '');
|
20350 | $el.trigger('accordion:close');
|
20351 | app.emit('accordionClose', $el[0]);
|
20352 | });
|
20353 | },
|
20354 | toggle: function toggle(el) {
|
20355 | var app = this;
|
20356 | var $el = $(el);
|
20357 | if ($el.length === 0) return;
|
20358 | if ($el.hasClass('accordion-item-opened')) app.accordion.close(el);else app.accordion.open(el);
|
20359 | }
|
20360 | };
|
20361 | var Accordion$1 = {
|
20362 | name: 'accordion',
|
20363 | create: function create() {
|
20364 | var app = this;
|
20365 | bindMethods(app, {
|
20366 | accordion: Accordion
|
20367 | });
|
20368 | },
|
20369 | clicks: {
|
20370 | '.accordion-item .item-link, .accordion-item-toggle, .links-list.accordion-list > ul > li > a': function open($clickedEl) {
|
20371 | var app = this;
|
20372 | Accordion.toggleClicked.call(app, $clickedEl);
|
20373 | }
|
20374 | }
|
20375 | };
|
20376 |
|
20377 | var ContactsList = {
|
20378 | name: 'contactsList'
|
20379 | };
|
20380 |
|
20381 | var VirtualList$1 = function (_Framework7Class) {
|
20382 | _inheritsLoose(VirtualList, _Framework7Class);
|
20383 |
|
20384 | function VirtualList(app, params) {
|
20385 | var _this;
|
20386 |
|
20387 | if (params === void 0) {
|
20388 | params = {};
|
20389 | }
|
20390 |
|
20391 | _this = _Framework7Class.call(this, params, [app]) || this;
|
20392 |
|
20393 | var vl = _assertThisInitialized(_this);
|
20394 |
|
20395 | var device = getDevice$1();
|
20396 | var document = getDocument();
|
20397 | var defaultHeight;
|
20398 |
|
20399 | if (app.theme === 'md') {
|
20400 | defaultHeight = 48;
|
20401 | } else if (app.theme === 'ios') {
|
20402 | defaultHeight = 44;
|
20403 | } else if (app.theme === 'aurora') {
|
20404 | defaultHeight = 38;
|
20405 | }
|
20406 |
|
20407 | var defaults = {
|
20408 | cols: 1,
|
20409 | height: defaultHeight,
|
20410 | cache: true,
|
20411 | dynamicHeightBufferSize: 1,
|
20412 | showFilteredItemsOnly: false,
|
20413 | renderExternal: undefined,
|
20414 | setListHeight: true,
|
20415 | searchByItem: undefined,
|
20416 | searchAll: undefined,
|
20417 | ul: null,
|
20418 | createUl: true,
|
20419 | scrollableParentEl: undefined,
|
20420 | renderItem: function renderItem(item) {
|
20421 | return ("\n <li>\n <div class=\"item-content\">\n <div class=\"item-inner\">\n <div class=\"item-title\">" + item + "</div>\n </div>\n </div>\n </li>\n ").trim();
|
20422 | },
|
20423 | on: {}
|
20424 | };
|
20425 |
|
20426 | vl.useModulesParams(defaults);
|
20427 | vl.params = extend$1(defaults, params);
|
20428 |
|
20429 | if (vl.params.height === undefined || !vl.params.height) {
|
20430 | vl.params.height = defaultHeight;
|
20431 | }
|
20432 |
|
20433 | vl.$el = $(params.el);
|
20434 | vl.el = vl.$el[0];
|
20435 | if (vl.$el.length === 0) return undefined || _assertThisInitialized(_this);
|
20436 | vl.$el[0].f7VirtualList = vl;
|
20437 | vl.items = vl.params.items;
|
20438 |
|
20439 | if (vl.params.showFilteredItemsOnly) {
|
20440 | vl.filteredItems = [];
|
20441 | }
|
20442 |
|
20443 | if (vl.params.renderItem) {
|
20444 | vl.renderItem = vl.params.renderItem;
|
20445 | }
|
20446 |
|
20447 | vl.$pageContentEl = vl.$el.parents('.page-content');
|
20448 | vl.pageContentEl = vl.$pageContentEl[0];
|
20449 | vl.$scrollableParentEl = vl.params.scrollableParentEl ? $(vl.params.scrollableParentEl).eq(0) : vl.$pageContentEl;
|
20450 |
|
20451 | if (!vl.$scrollableParentEl.length && vl.$pageContentEl.length) {
|
20452 | vl.$scrollableParentEl = vl.$pageContentEl;
|
20453 | }
|
20454 |
|
20455 | vl.scrollableParentEl = vl.$scrollableParentEl[0];
|
20456 |
|
20457 | if (typeof vl.params.updatableScroll !== 'undefined') {
|
20458 | vl.updatableScroll = vl.params.updatableScroll;
|
20459 | } else {
|
20460 | vl.updatableScroll = true;
|
20461 |
|
20462 | if (device.ios && device.osVersion.split('.')[0] < 8) {
|
20463 | vl.updatableScroll = false;
|
20464 | }
|
20465 | }
|
20466 |
|
20467 |
|
20468 | var ul = vl.params.ul;
|
20469 | vl.$ul = ul ? $(vl.params.ul) : vl.$el.children('ul');
|
20470 |
|
20471 | if (vl.$ul.length === 0 && vl.params.createUl) {
|
20472 | vl.$el.append('<ul></ul>');
|
20473 | vl.$ul = vl.$el.children('ul');
|
20474 | }
|
20475 |
|
20476 | vl.ul = vl.$ul[0];
|
20477 | var $itemsWrapEl;
|
20478 | if (!vl.ul && !vl.params.createUl) $itemsWrapEl = vl.$el;else $itemsWrapEl = vl.$ul;
|
20479 | extend$1(vl, {
|
20480 | $itemsWrapEl: $itemsWrapEl,
|
20481 | itemsWrapEl: $itemsWrapEl[0],
|
20482 |
|
20483 | domCache: {},
|
20484 | displayDomCache: {},
|
20485 |
|
20486 | tempDomElement: document.createElement('ul'),
|
20487 |
|
20488 | lastRepaintY: null,
|
20489 |
|
20490 | fragment: document.createDocumentFragment(),
|
20491 |
|
20492 | pageHeight: undefined,
|
20493 | rowsPerScreen: undefined,
|
20494 | rowsBefore: undefined,
|
20495 | rowsAfter: undefined,
|
20496 | rowsToRender: undefined,
|
20497 | maxBufferHeight: 0,
|
20498 | listHeight: undefined,
|
20499 | dynamicHeight: typeof vl.params.height === 'function'
|
20500 | });
|
20501 |
|
20502 | vl.useModules();
|
20503 |
|
20504 | var handleScrollBound = vl.handleScroll.bind(vl);
|
20505 | var handleResizeBound = vl.handleResize.bind(vl);
|
20506 | var $pageEl;
|
20507 | var $tabEl;
|
20508 | var $panelEl;
|
20509 | var $popupEl;
|
20510 |
|
20511 | vl.attachEvents = function attachEvents() {
|
20512 | $pageEl = vl.$el.parents('.page').eq(0);
|
20513 | $tabEl = vl.$el.parents('.tab').filter(function (tabEl) {
|
20514 | return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, .tabs-swipeable-wrap').length === 0;
|
20515 | }).eq(0);
|
20516 | $panelEl = vl.$el.parents('.panel').eq(0);
|
20517 | $popupEl = vl.$el.parents('.popup').eq(0);
|
20518 | vl.$scrollableParentEl.on('scroll', handleScrollBound);
|
20519 | if ($pageEl.length) $pageEl.on('page:reinit', handleResizeBound);
|
20520 | if ($tabEl.length) $tabEl.on('tab:show', handleResizeBound);
|
20521 | if ($panelEl.length) $panelEl.on('panel:open', handleResizeBound);
|
20522 | if ($popupEl.length) $popupEl.on('popup:open', handleResizeBound);
|
20523 | app.on('resize', handleResizeBound);
|
20524 | };
|
20525 |
|
20526 | vl.detachEvents = function attachEvents() {
|
20527 | vl.$scrollableParentEl.off('scroll', handleScrollBound);
|
20528 | if ($pageEl.length) $pageEl.off('page:reinit', handleResizeBound);
|
20529 | if ($tabEl.length) $tabEl.off('tab:show', handleResizeBound);
|
20530 | if ($panelEl.length) $panelEl.off('panel:open', handleResizeBound);
|
20531 | if ($popupEl.length) $popupEl.off('popup:open', handleResizeBound);
|
20532 | app.off('resize', handleResizeBound);
|
20533 | };
|
20534 |
|
20535 |
|
20536 | vl.init();
|
20537 | return vl || _assertThisInitialized(_this);
|
20538 | }
|
20539 |
|
20540 | var _proto = VirtualList.prototype;
|
20541 |
|
20542 | _proto.setListSize = function setListSize() {
|
20543 | var vl = this;
|
20544 | var items = vl.filteredItems || vl.items;
|
20545 | vl.pageHeight = vl.$scrollableParentEl[0].offsetHeight;
|
20546 |
|
20547 | if (vl.dynamicHeight) {
|
20548 | vl.listHeight = 0;
|
20549 | vl.heights = [];
|
20550 |
|
20551 | for (var i = 0; i < items.length; i += 1) {
|
20552 | var itemHeight = vl.params.height(items[i]);
|
20553 | vl.listHeight += itemHeight;
|
20554 | vl.heights.push(itemHeight);
|
20555 | }
|
20556 | } else {
|
20557 | vl.listHeight = Math.ceil(items.length / vl.params.cols) * vl.params.height;
|
20558 | vl.rowsPerScreen = Math.ceil(vl.pageHeight / vl.params.height);
|
20559 | vl.rowsBefore = vl.params.rowsBefore || vl.rowsPerScreen * 2;
|
20560 | vl.rowsAfter = vl.params.rowsAfter || vl.rowsPerScreen;
|
20561 | vl.rowsToRender = vl.rowsPerScreen + vl.rowsBefore + vl.rowsAfter;
|
20562 | vl.maxBufferHeight = vl.rowsBefore / 2 * vl.params.height;
|
20563 | }
|
20564 |
|
20565 | if (vl.updatableScroll || vl.params.setListHeight) {
|
20566 | vl.$itemsWrapEl.css({
|
20567 | height: vl.listHeight + "px"
|
20568 | });
|
20569 | }
|
20570 | };
|
20571 |
|
20572 | _proto.render = function render(force, forceScrollTop) {
|
20573 | var vl = this;
|
20574 | if (force) vl.lastRepaintY = null;
|
20575 | var scrollTop = -(vl.$el[0].getBoundingClientRect().top - vl.$scrollableParentEl[0].getBoundingClientRect().top);
|
20576 | if (typeof forceScrollTop !== 'undefined') scrollTop = forceScrollTop;
|
20577 |
|
20578 | if (vl.lastRepaintY === null || Math.abs(scrollTop - vl.lastRepaintY) > vl.maxBufferHeight || !vl.updatableScroll && vl.$scrollableParentEl[0].scrollTop + vl.pageHeight >= vl.$scrollableParentEl[0].scrollHeight) {
|
20579 | vl.lastRepaintY = scrollTop;
|
20580 | } else {
|
20581 | return;
|
20582 | }
|
20583 |
|
20584 | var items = vl.filteredItems || vl.items;
|
20585 | var fromIndex;
|
20586 | var toIndex;
|
20587 | var heightBeforeFirstItem = 0;
|
20588 | var heightBeforeLastItem = 0;
|
20589 |
|
20590 | if (vl.dynamicHeight) {
|
20591 | var itemTop = 0;
|
20592 | var itemHeight;
|
20593 | vl.maxBufferHeight = vl.pageHeight;
|
20594 |
|
20595 | for (var j = 0; j < vl.heights.length; j += 1) {
|
20596 | itemHeight = vl.heights[j];
|
20597 |
|
20598 | if (typeof fromIndex === 'undefined') {
|
20599 | if (itemTop + itemHeight >= scrollTop - vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize) fromIndex = j;else heightBeforeFirstItem += itemHeight;
|
20600 | }
|
20601 |
|
20602 | if (typeof toIndex === 'undefined') {
|
20603 | if (itemTop + itemHeight >= scrollTop + vl.pageHeight * 2 * vl.params.dynamicHeightBufferSize || j === vl.heights.length - 1) toIndex = j + 1;
|
20604 | heightBeforeLastItem += itemHeight;
|
20605 | }
|
20606 |
|
20607 | itemTop += itemHeight;
|
20608 | }
|
20609 |
|
20610 | toIndex = Math.min(toIndex, items.length);
|
20611 | } else {
|
20612 | fromIndex = (parseInt(scrollTop / vl.params.height, 10) - vl.rowsBefore) * vl.params.cols;
|
20613 |
|
20614 | if (fromIndex < 0) {
|
20615 | fromIndex = 0;
|
20616 | }
|
20617 |
|
20618 | toIndex = Math.min(fromIndex + vl.rowsToRender * vl.params.cols, items.length);
|
20619 | }
|
20620 |
|
20621 | var topPosition;
|
20622 | var renderExternalItems = [];
|
20623 | vl.reachEnd = false;
|
20624 | var i;
|
20625 |
|
20626 | for (i = fromIndex; i < toIndex; i += 1) {
|
20627 | var itemEl = void 0;
|
20628 |
|
20629 | var index = vl.items.indexOf(items[i]);
|
20630 | if (i === fromIndex) vl.currentFromIndex = index;
|
20631 | if (i === toIndex - 1) vl.currentToIndex = index;
|
20632 |
|
20633 | if (vl.filteredItems) {
|
20634 | if (vl.items[index] === vl.filteredItems[vl.filteredItems.length - 1]) vl.reachEnd = true;
|
20635 | } else if (index === vl.items.length - 1) vl.reachEnd = true;
|
20636 |
|
20637 |
|
20638 | if (vl.params.renderExternal) {
|
20639 | renderExternalItems.push(items[i]);
|
20640 | } else if (vl.domCache[index]) {
|
20641 | itemEl = vl.domCache[index];
|
20642 | itemEl.f7VirtualListIndex = index;
|
20643 | } else {
|
20644 | if (vl.renderItem) {
|
20645 | vl.tempDomElement.innerHTML = vl.renderItem(items[i], index).trim();
|
20646 | } else {
|
20647 | vl.tempDomElement.innerHTML = items[i].toString().trim();
|
20648 | }
|
20649 |
|
20650 | itemEl = vl.tempDomElement.childNodes[0];
|
20651 | if (vl.params.cache) vl.domCache[index] = itemEl;
|
20652 | itemEl.f7VirtualListIndex = index;
|
20653 | }
|
20654 |
|
20655 |
|
20656 | if (i === fromIndex) {
|
20657 | if (vl.dynamicHeight) {
|
20658 | topPosition = heightBeforeFirstItem;
|
20659 | } else {
|
20660 | topPosition = i * vl.params.height / vl.params.cols;
|
20661 | }
|
20662 | }
|
20663 |
|
20664 | if (!vl.params.renderExternal) {
|
20665 | itemEl.style.top = topPosition + "px";
|
20666 |
|
20667 | vl.emit('local::itemBeforeInsert vlItemBeforeInsert', vl, itemEl, items[i]);
|
20668 |
|
20669 | vl.fragment.appendChild(itemEl);
|
20670 | }
|
20671 | }
|
20672 |
|
20673 |
|
20674 | if (!vl.updatableScroll) {
|
20675 | if (vl.dynamicHeight) {
|
20676 | vl.itemsWrapEl.style.height = heightBeforeLastItem + "px";
|
20677 | } else {
|
20678 | vl.itemsWrapEl.style.height = i * vl.params.height / vl.params.cols + "px";
|
20679 | }
|
20680 | }
|
20681 |
|
20682 |
|
20683 | if (vl.params.renderExternal) {
|
20684 | if (items && items.length === 0) {
|
20685 | vl.reachEnd = true;
|
20686 | }
|
20687 | } else {
|
20688 | vl.emit('local::beforeClear vlBeforeClear', vl, vl.fragment);
|
20689 | vl.itemsWrapEl.innerHTML = '';
|
20690 | vl.emit('local::itemsBeforeInsert vlItemsBeforeInsert', vl, vl.fragment);
|
20691 |
|
20692 | if (items && items.length === 0) {
|
20693 | vl.reachEnd = true;
|
20694 | if (vl.params.emptyTemplate) vl.itemsWrapEl.innerHTML = vl.params.emptyTemplate;
|
20695 | } else {
|
20696 | vl.itemsWrapEl.appendChild(vl.fragment);
|
20697 | }
|
20698 |
|
20699 | vl.emit('local::itemsAfterInsert vlItemsAfterInsert', vl, vl.fragment);
|
20700 | }
|
20701 |
|
20702 | if (typeof forceScrollTop !== 'undefined' && force) {
|
20703 | vl.$scrollableParentEl.scrollTop(forceScrollTop, 0);
|
20704 | }
|
20705 |
|
20706 | if (vl.params.renderExternal) {
|
20707 | vl.params.renderExternal(vl, {
|
20708 | fromIndex: fromIndex,
|
20709 | toIndex: toIndex,
|
20710 | listHeight: vl.listHeight,
|
20711 | topPosition: topPosition,
|
20712 | items: renderExternalItems
|
20713 | });
|
20714 | }
|
20715 | }
|
20716 | ;
|
20717 |
|
20718 | _proto.filterItems = function filterItems(indexes, resetScrollTop) {
|
20719 | if (resetScrollTop === void 0) {
|
20720 | resetScrollTop = true;
|
20721 | }
|
20722 |
|
20723 | var vl = this;
|
20724 | vl.filteredItems = [];
|
20725 |
|
20726 | for (var i = 0; i < indexes.length; i += 1) {
|
20727 | vl.filteredItems.push(vl.items[indexes[i]]);
|
20728 | }
|
20729 |
|
20730 | if (resetScrollTop) {
|
20731 | vl.$scrollableParentEl[0].scrollTop = 0;
|
20732 | }
|
20733 |
|
20734 | vl.update();
|
20735 | };
|
20736 |
|
20737 | _proto.resetFilter = function resetFilter() {
|
20738 | var vl = this;
|
20739 |
|
20740 | if (vl.params.showFilteredItemsOnly) {
|
20741 | vl.filteredItems = [];
|
20742 | } else {
|
20743 | vl.filteredItems = null;
|
20744 | delete vl.filteredItems;
|
20745 | }
|
20746 |
|
20747 | vl.update();
|
20748 | };
|
20749 |
|
20750 | _proto.scrollToItem = function scrollToItem(index) {
|
20751 | var vl = this;
|
20752 | if (index > vl.items.length) return false;
|
20753 | var itemTop = 0;
|
20754 |
|
20755 | if (vl.dynamicHeight) {
|
20756 | for (var i = 0; i < index; i += 1) {
|
20757 | itemTop += vl.heights[i];
|
20758 | }
|
20759 | } else {
|
20760 | itemTop = index * vl.params.height;
|
20761 | }
|
20762 |
|
20763 | var listTop = vl.$el[0].offsetTop;
|
20764 | vl.render(true, listTop + itemTop - parseInt(vl.$scrollableParentEl.css('padding-top'), 10));
|
20765 | return true;
|
20766 | };
|
20767 |
|
20768 | _proto.handleScroll = function handleScroll() {
|
20769 | var vl = this;
|
20770 | vl.render();
|
20771 | }
|
20772 | ;
|
20773 |
|
20774 | _proto.isVisible = function isVisible() {
|
20775 | var vl = this;
|
20776 | return !!(vl.el.offsetWidth || vl.el.offsetHeight || vl.el.getClientRects().length);
|
20777 | };
|
20778 |
|
20779 | _proto.handleResize = function handleResize() {
|
20780 | var vl = this;
|
20781 |
|
20782 | if (vl.isVisible()) {
|
20783 | vl.setListSize();
|
20784 | vl.render(true);
|
20785 | }
|
20786 | }
|
20787 | ;
|
20788 |
|
20789 | _proto.appendItems = function appendItems(items) {
|
20790 | var vl = this;
|
20791 |
|
20792 | for (var i = 0; i < items.length; i += 1) {
|
20793 | vl.items.push(items[i]);
|
20794 | }
|
20795 |
|
20796 | vl.update();
|
20797 | };
|
20798 |
|
20799 | _proto.appendItem = function appendItem(item) {
|
20800 | var vl = this;
|
20801 | vl.appendItems([item]);
|
20802 | }
|
20803 | ;
|
20804 |
|
20805 | _proto.replaceAllItems = function replaceAllItems(items) {
|
20806 | var vl = this;
|
20807 | vl.items = items;
|
20808 | delete vl.filteredItems;
|
20809 | vl.domCache = {};
|
20810 | vl.update();
|
20811 | };
|
20812 |
|
20813 | _proto.replaceItem = function replaceItem(index, item) {
|
20814 | var vl = this;
|
20815 | vl.items[index] = item;
|
20816 | if (vl.params.cache) delete vl.domCache[index];
|
20817 | vl.update();
|
20818 | }
|
20819 | ;
|
20820 |
|
20821 | _proto.prependItems = function prependItems(items) {
|
20822 | var vl = this;
|
20823 |
|
20824 | for (var i = items.length - 1; i >= 0; i -= 1) {
|
20825 | vl.items.unshift(items[i]);
|
20826 | }
|
20827 |
|
20828 | if (vl.params.cache) {
|
20829 | var newCache = {};
|
20830 | Object.keys(vl.domCache).forEach(function (cached) {
|
20831 | newCache[parseInt(cached, 10) + items.length] = vl.domCache[cached];
|
20832 | });
|
20833 | vl.domCache = newCache;
|
20834 | }
|
20835 |
|
20836 | vl.update();
|
20837 | };
|
20838 |
|
20839 | _proto.prependItem = function prependItem(item) {
|
20840 | var vl = this;
|
20841 | vl.prependItems([item]);
|
20842 | }
|
20843 | ;
|
20844 |
|
20845 | _proto.moveItem = function moveItem(from, to) {
|
20846 | var vl = this;
|
20847 | var fromIndex = from;
|
20848 | var toIndex = to;
|
20849 | if (fromIndex === toIndex) return;
|
20850 |
|
20851 | var item = vl.items.splice(fromIndex, 1)[0];
|
20852 |
|
20853 | if (toIndex >= vl.items.length) {
|
20854 |
|
20855 | vl.items.push(item);
|
20856 | toIndex = vl.items.length - 1;
|
20857 | } else {
|
20858 |
|
20859 | vl.items.splice(toIndex, 0, item);
|
20860 | }
|
20861 |
|
20862 |
|
20863 | if (vl.params.cache) {
|
20864 | var newCache = {};
|
20865 | Object.keys(vl.domCache).forEach(function (cached) {
|
20866 | var cachedIndex = parseInt(cached, 10);
|
20867 | var leftIndex = fromIndex < toIndex ? fromIndex : toIndex;
|
20868 | var rightIndex = fromIndex < toIndex ? toIndex : fromIndex;
|
20869 | var indexShift = fromIndex < toIndex ? -1 : 1;
|
20870 | if (cachedIndex < leftIndex || cachedIndex > rightIndex) newCache[cachedIndex] = vl.domCache[cachedIndex];
|
20871 | if (cachedIndex === leftIndex) newCache[rightIndex] = vl.domCache[cachedIndex];
|
20872 | if (cachedIndex > leftIndex && cachedIndex <= rightIndex) newCache[cachedIndex + indexShift] = vl.domCache[cachedIndex];
|
20873 | });
|
20874 | vl.domCache = newCache;
|
20875 | }
|
20876 |
|
20877 | vl.update();
|
20878 | }
|
20879 | ;
|
20880 |
|
20881 | _proto.insertItemBefore = function insertItemBefore(index, item) {
|
20882 | var vl = this;
|
20883 |
|
20884 | if (index === 0) {
|
20885 | vl.prependItem(item);
|
20886 | return;
|
20887 | }
|
20888 |
|
20889 | if (index >= vl.items.length) {
|
20890 | vl.appendItem(item);
|
20891 | return;
|
20892 | }
|
20893 |
|
20894 | vl.items.splice(index, 0, item);
|
20895 |
|
20896 | if (vl.params.cache) {
|
20897 | var newCache = {};
|
20898 | Object.keys(vl.domCache).forEach(function (cached) {
|
20899 | var cachedIndex = parseInt(cached, 10);
|
20900 |
|
20901 | if (cachedIndex >= index) {
|
20902 | newCache[cachedIndex + 1] = vl.domCache[cachedIndex];
|
20903 | }
|
20904 | });
|
20905 | vl.domCache = newCache;
|
20906 | }
|
20907 |
|
20908 | vl.update();
|
20909 | }
|
20910 | ;
|
20911 |
|
20912 | _proto.deleteItems = function deleteItems(indexes) {
|
20913 | var vl = this;
|
20914 | var prevIndex;
|
20915 | var indexShift = 0;
|
20916 |
|
20917 | var _loop = function _loop(i) {
|
20918 | var index = indexes[i];
|
20919 |
|
20920 | if (typeof prevIndex !== 'undefined') {
|
20921 | if (index > prevIndex) {
|
20922 | indexShift = -i;
|
20923 | }
|
20924 | }
|
20925 |
|
20926 | index += indexShift;
|
20927 | prevIndex = indexes[i];
|
20928 |
|
20929 | var deletedItem = vl.items.splice(index, 1)[0];
|
20930 |
|
20931 | if (vl.filteredItems && vl.filteredItems.indexOf(deletedItem) >= 0) {
|
20932 | vl.filteredItems.splice(vl.filteredItems.indexOf(deletedItem), 1);
|
20933 | }
|
20934 |
|
20935 |
|
20936 | if (vl.params.cache) {
|
20937 | var newCache = {};
|
20938 | Object.keys(vl.domCache).forEach(function (cached) {
|
20939 | var cachedIndex = parseInt(cached, 10);
|
20940 |
|
20941 | if (cachedIndex === index) {
|
20942 | delete vl.domCache[index];
|
20943 | } else if (parseInt(cached, 10) > index) {
|
20944 | newCache[cachedIndex - 1] = vl.domCache[cached];
|
20945 | } else {
|
20946 | newCache[cachedIndex] = vl.domCache[cached];
|
20947 | }
|
20948 | });
|
20949 | vl.domCache = newCache;
|
20950 | }
|
20951 | };
|
20952 |
|
20953 | for (var i = 0; i < indexes.length; i += 1) {
|
20954 | _loop(i);
|
20955 | }
|
20956 |
|
20957 | vl.update();
|
20958 | };
|
20959 |
|
20960 | _proto.deleteAllItems = function deleteAllItems() {
|
20961 | var vl = this;
|
20962 | vl.items = [];
|
20963 | delete vl.filteredItems;
|
20964 | if (vl.params.cache) vl.domCache = {};
|
20965 | vl.update();
|
20966 | };
|
20967 |
|
20968 | _proto.deleteItem = function deleteItem(index) {
|
20969 | var vl = this;
|
20970 | vl.deleteItems([index]);
|
20971 | }
|
20972 | ;
|
20973 |
|
20974 | _proto.clearCache = function clearCache() {
|
20975 | var vl = this;
|
20976 | vl.domCache = {};
|
20977 | }
|
20978 | ;
|
20979 |
|
20980 | _proto.update = function update(deleteCache) {
|
20981 | var vl = this;
|
20982 |
|
20983 | if (deleteCache && vl.params.cache) {
|
20984 | vl.domCache = {};
|
20985 | }
|
20986 |
|
20987 | vl.setListSize();
|
20988 | vl.render(true);
|
20989 | };
|
20990 |
|
20991 | _proto.init = function init() {
|
20992 | var vl = this;
|
20993 | vl.attachEvents();
|
20994 | vl.setListSize();
|
20995 | vl.render();
|
20996 | };
|
20997 |
|
20998 | _proto.destroy = function destroy() {
|
20999 | var vl = this;
|
21000 | vl.detachEvents();
|
21001 | vl.$el[0].f7VirtualList = null;
|
21002 | delete vl.$el[0].f7VirtualList;
|
21003 | deleteProps$1(vl);
|
21004 | vl = null;
|
21005 | };
|
21006 |
|
21007 | return VirtualList;
|
21008 | }(Framework7Class);
|
21009 |
|
21010 | var VirtualList = {
|
21011 | name: 'virtualList',
|
21012 | static: {
|
21013 | VirtualList: VirtualList$1
|
21014 | },
|
21015 | create: function create() {
|
21016 | var app = this;
|
21017 | app.virtualList = ConstructorMethods({
|
21018 | defaultSelector: '.virtual-list',
|
21019 | constructor: VirtualList$1,
|
21020 | app: app,
|
21021 | domProp: 'f7VirtualList'
|
21022 | });
|
21023 | }
|
21024 | };
|
21025 |
|
21026 | var ListIndex$1 = /*#__PURE__*/function (_Framework7Class) {
|
21027 | _inheritsLoose(ListIndex, _Framework7Class);
|
21028 |
|
21029 | function ListIndex(app, params) {
|
21030 | var _this;
|
21031 |
|
21032 | if (params === void 0) {
|
21033 | params = {};
|
21034 | }
|
21035 |
|
21036 | _this = _Framework7Class.call(this, params, [app]) || this;
|
21037 |
|
21038 | var index = _assertThisInitialized(_this);
|
21039 |
|
21040 | var defaults = {
|
21041 | el: null,
|
21042 |
|
21043 | listEl: null,
|
21044 |
|
21045 | indexes: 'auto',
|
21046 |
|
21047 | iosItemHeight: 14,
|
21048 | mdItemHeight: 14,
|
21049 | auroraItemHeight: 14,
|
21050 | scrollList: true,
|
21051 | label: false,
|
21052 |
|
21053 | renderItem: function renderItem(itemContent, itemIndex) {
|
21054 | return ("\n <li>" + itemContent + "</li>\n ").trim();
|
21055 | },
|
21056 | renderSkipPlaceholder: function renderSkipPlaceholder() {
|
21057 | return '<li class="list-index-skip-placeholder"></li>';
|
21058 | },
|
21059 | on: {}
|
21060 | };
|
21061 |
|
21062 | index.useModulesParams(defaults);
|
21063 | index.params = extend$1(defaults, params);
|
21064 | var $el;
|
21065 | var $listEl;
|
21066 | var $pageContentEl;
|
21067 | var $ul;
|
21068 |
|
21069 | if (index.params.el) {
|
21070 | $el = $(index.params.el);
|
21071 | } else {
|
21072 | return index || _assertThisInitialized(_this);
|
21073 | }
|
21074 |
|
21075 | if ($el[0].f7ListIndex) {
|
21076 | return $el[0].f7ListIndex || _assertThisInitialized(_this);
|
21077 | }
|
21078 |
|
21079 | $ul = $el.find('ul');
|
21080 |
|
21081 | if ($ul.length === 0) {
|
21082 | $ul = $('<ul></ul>');
|
21083 | $el.append($ul);
|
21084 | }
|
21085 |
|
21086 | if (index.params.listEl) {
|
21087 | $listEl = $(index.params.listEl);
|
21088 | }
|
21089 |
|
21090 | if (index.params.indexes === 'auto' && !$listEl) {
|
21091 | return index || _assertThisInitialized(_this);
|
21092 | }
|
21093 |
|
21094 | if ($listEl) {
|
21095 | $pageContentEl = $listEl.parents('.page-content').eq(0);
|
21096 | } else {
|
21097 | $pageContentEl = $el.siblings('.page-content').eq(0);
|
21098 |
|
21099 | if ($pageContentEl.length === 0) {
|
21100 | $pageContentEl = $el.parents('.page').eq(0).find('.page-content').eq(0);
|
21101 | }
|
21102 | }
|
21103 |
|
21104 | $el[0].f7ListIndex = index;
|
21105 | extend$1(index, {
|
21106 | app: app,
|
21107 | $el: $el,
|
21108 | el: $el && $el[0],
|
21109 | $ul: $ul,
|
21110 | ul: $ul && $ul[0],
|
21111 | $listEl: $listEl,
|
21112 | listEl: $listEl && $listEl[0],
|
21113 | $pageContentEl: $pageContentEl,
|
21114 | pageContentEl: $pageContentEl && $pageContentEl[0],
|
21115 | indexes: params.indexes,
|
21116 | height: 0,
|
21117 | skipRate: 0
|
21118 | });
|
21119 |
|
21120 | index.useModules();
|
21121 |
|
21122 | function handleResize() {
|
21123 | var height = {
|
21124 | index: index
|
21125 | };
|
21126 | index.calcSize();
|
21127 |
|
21128 | if (height !== index.height) {
|
21129 | index.render();
|
21130 | }
|
21131 | }
|
21132 |
|
21133 | function handleClick(e) {
|
21134 | var $clickedLi = $(e.target).closest('li');
|
21135 | if (!$clickedLi.length) return;
|
21136 | var itemIndex = $clickedLi.index();
|
21137 |
|
21138 | if (index.skipRate > 0) {
|
21139 | var percentage = itemIndex / ($clickedLi.siblings('li').length - 1);
|
21140 | itemIndex = Math.round((index.indexes.length - 1) * percentage);
|
21141 | }
|
21142 |
|
21143 | var itemContent = index.indexes[itemIndex];
|
21144 | index.$el.trigger('listindex:click', {
|
21145 | content: itemContent,
|
21146 | index: itemIndex
|
21147 | });
|
21148 | index.emit('local::click listIndexClick', index, itemContent, itemIndex);
|
21149 | index.$el.trigger('listindex:select', {
|
21150 | content: itemContent,
|
21151 | index: itemIndex
|
21152 | });
|
21153 | index.emit('local::select listIndexSelect', index, itemContent, itemIndex);
|
21154 |
|
21155 | if (index.$listEl && index.params.scrollList) {
|
21156 | index.scrollListToIndex(itemContent, itemIndex);
|
21157 | }
|
21158 | }
|
21159 |
|
21160 | var touchesStart = {};
|
21161 | var isTouched;
|
21162 | var isMoved;
|
21163 | var topPoint;
|
21164 | var bottomPoint;
|
21165 | var $labelEl;
|
21166 | var previousIndex = null;
|
21167 |
|
21168 | function handleTouchStart(e) {
|
21169 | var $children = $ul.children();
|
21170 | if (!$children.length) return;
|
21171 | topPoint = $children[0].getBoundingClientRect().top;
|
21172 | bottomPoint = $children[$children.length - 1].getBoundingClientRect().top + $children[0].offsetHeight;
|
21173 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
21174 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
21175 | isTouched = true;
|
21176 | isMoved = false;
|
21177 | previousIndex = null;
|
21178 | }
|
21179 |
|
21180 | function handleTouchMove(e) {
|
21181 | if (!isTouched) return;
|
21182 |
|
21183 | if (!isMoved && index.params.label) {
|
21184 | $labelEl = $('<span class="list-index-label"></span>');
|
21185 | $el.append($labelEl);
|
21186 | }
|
21187 |
|
21188 | isMoved = true;
|
21189 | var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
21190 | e.preventDefault();
|
21191 | var percentage = (pageY - topPoint) / (bottomPoint - topPoint);
|
21192 | percentage = Math.min(Math.max(percentage, 0), 1);
|
21193 | var itemIndex = Math.round((index.indexes.length - 1) * percentage);
|
21194 | var itemContent = index.indexes[itemIndex];
|
21195 | var ulHeight = bottomPoint - topPoint;
|
21196 | var bubbleBottom = (index.height - ulHeight) / 2 + (1 - percentage) * ulHeight;
|
21197 |
|
21198 | if (itemIndex !== previousIndex) {
|
21199 | if (index.params.label) {
|
21200 | $labelEl.html(itemContent).transform("translateY(-" + bubbleBottom + "px)");
|
21201 | }
|
21202 |
|
21203 | if (index.$listEl && index.params.scrollList) {
|
21204 | index.scrollListToIndex(itemContent, itemIndex);
|
21205 | }
|
21206 | }
|
21207 |
|
21208 | previousIndex = itemIndex;
|
21209 | index.$el.trigger('listindex:select');
|
21210 | index.emit('local::select listIndexSelect', index, itemContent, itemIndex);
|
21211 | }
|
21212 |
|
21213 | function handleTouchEnd() {
|
21214 | if (!isTouched) return;
|
21215 | isTouched = false;
|
21216 | isMoved = false;
|
21217 |
|
21218 | if (index.params.label) {
|
21219 | if ($labelEl) $labelEl.remove();
|
21220 | $labelEl = undefined;
|
21221 | }
|
21222 | }
|
21223 |
|
21224 | var passiveListener = getSupport$1().passiveListener ? {
|
21225 | passive: true
|
21226 | } : false;
|
21227 |
|
21228 | index.attachEvents = function attachEvents() {
|
21229 | $el.parents('.tab').on('tab:show', handleResize);
|
21230 | $el.parents('.page').on('page:reinit', handleResize);
|
21231 | $el.parents('.panel').on('panel:open', handleResize);
|
21232 | $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').on('modal:open', handleResize);
|
21233 | app.on('resize', handleResize);
|
21234 | $el.on('click', handleClick);
|
21235 | $el.on(app.touchEvents.start, handleTouchStart, passiveListener);
|
21236 | app.on('touchmove:active', handleTouchMove);
|
21237 | app.on('touchend:passive', handleTouchEnd);
|
21238 | };
|
21239 |
|
21240 | index.detachEvents = function attachEvents() {
|
21241 | $el.parents('.tab').off('tab:show', handleResize);
|
21242 | $el.parents('.page').off('page:reinit', handleResize);
|
21243 | $el.parents('.panel').off('panel:open', handleResize);
|
21244 | $el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast').off('modal:open', handleResize);
|
21245 | app.off('resize', handleResize);
|
21246 | $el.off('click', handleClick);
|
21247 | $el.off(app.touchEvents.start, handleTouchStart, passiveListener);
|
21248 | app.off('touchmove:active', handleTouchMove);
|
21249 | app.off('touchend:passive', handleTouchEnd);
|
21250 | };
|
21251 |
|
21252 |
|
21253 | index.init();
|
21254 | return index || _assertThisInitialized(_this);
|
21255 | }
|
21256 |
|
21257 |
|
21258 | var _proto = ListIndex.prototype;
|
21259 |
|
21260 | _proto.scrollListToIndex = function scrollListToIndex(itemContent, itemIndex) {
|
21261 | var index = this;
|
21262 | var $listEl = index.$listEl,
|
21263 | $pageContentEl = index.$pageContentEl,
|
21264 | app = index.app;
|
21265 | if (!$listEl || !$pageContentEl || $pageContentEl.length === 0) return index;
|
21266 | var $scrollToEl;
|
21267 | $listEl.find('.list-group-title, .item-divider').each(function (el) {
|
21268 | if ($scrollToEl) return;
|
21269 | var $el = $(el);
|
21270 |
|
21271 | if ($el.text() === itemContent) {
|
21272 | $scrollToEl = $el;
|
21273 | }
|
21274 | });
|
21275 | if (!$scrollToEl || $scrollToEl.length === 0) return index;
|
21276 | var parentTop = $scrollToEl.parent().offset().top;
|
21277 | var paddingTop = parseInt($pageContentEl.css('padding-top'), 10);
|
21278 | var scrollTop = $pageContentEl[0].scrollTop;
|
21279 | var scrollToElTop = $scrollToEl.offset().top;
|
21280 |
|
21281 | if ($pageContentEl.parents('.page-with-navbar-large').length) {
|
21282 | var navbarInnerEl = app.navbar.getElByPage($pageContentEl.parents('.page-with-navbar-large').eq(0));
|
21283 | var $titleLargeEl = $(navbarInnerEl).find('.title-large');
|
21284 |
|
21285 | if ($titleLargeEl.length) {
|
21286 | paddingTop -= $titleLargeEl[0].offsetHeight || 0;
|
21287 | }
|
21288 | }
|
21289 |
|
21290 | if (parentTop <= paddingTop) {
|
21291 | $pageContentEl.scrollTop(parentTop + scrollTop - paddingTop);
|
21292 | } else {
|
21293 | $pageContentEl.scrollTop(scrollToElTop + scrollTop - paddingTop);
|
21294 | }
|
21295 |
|
21296 | return index;
|
21297 | };
|
21298 |
|
21299 | _proto.renderSkipPlaceholder = function renderSkipPlaceholder() {
|
21300 | var index = this;
|
21301 | return index.params.renderSkipPlaceholder.call(index);
|
21302 | };
|
21303 |
|
21304 | _proto.renderItem = function renderItem(itemContent, itemIndex) {
|
21305 | var index = this;
|
21306 | return index.params.renderItem.call(index, itemContent, itemIndex);
|
21307 | };
|
21308 |
|
21309 | _proto.render = function render() {
|
21310 | var index = this;
|
21311 | var $ul = index.$ul,
|
21312 | indexes = index.indexes,
|
21313 | skipRate = index.skipRate;
|
21314 | var wasSkipped;
|
21315 | var html = indexes.map(function (itemContent, itemIndex) {
|
21316 | if (itemIndex % skipRate !== 0 && skipRate > 0) {
|
21317 | wasSkipped = true;
|
21318 | return '';
|
21319 | }
|
21320 |
|
21321 | var itemHtml = index.renderItem(itemContent, itemIndex);
|
21322 |
|
21323 | if (wasSkipped) {
|
21324 | itemHtml = index.renderSkipPlaceholder() + itemHtml;
|
21325 | }
|
21326 |
|
21327 | wasSkipped = false;
|
21328 | return itemHtml;
|
21329 | }).join('');
|
21330 | $ul.html(html);
|
21331 | return index;
|
21332 | };
|
21333 |
|
21334 | _proto.calcSize = function calcSize() {
|
21335 | var index = this;
|
21336 | var app = index.app,
|
21337 | params = index.params,
|
21338 | el = index.el,
|
21339 | indexes = index.indexes;
|
21340 | var height = el.offsetHeight;
|
21341 | var itemHeight = params[app.theme + "ItemHeight"];
|
21342 | var maxItems = Math.floor(height / itemHeight);
|
21343 | var items = indexes.length;
|
21344 | var skipRate = 0;
|
21345 |
|
21346 | if (items > maxItems) {
|
21347 | skipRate = Math.ceil((items * 2 - 1) / maxItems);
|
21348 | }
|
21349 |
|
21350 | index.height = height;
|
21351 | index.skipRate = skipRate;
|
21352 | return index;
|
21353 | };
|
21354 |
|
21355 | _proto.calcIndexes = function calcIndexes() {
|
21356 | var index = this;
|
21357 |
|
21358 | if (index.params.indexes === 'auto') {
|
21359 | index.indexes = [];
|
21360 | index.$listEl.find('.list-group-title, .item-divider').each(function (el) {
|
21361 | var elContent = $(el).text();
|
21362 |
|
21363 | if (index.indexes.indexOf(elContent) < 0) {
|
21364 | index.indexes.push(elContent);
|
21365 | }
|
21366 | });
|
21367 | } else {
|
21368 | index.indexes = index.params.indexes;
|
21369 | }
|
21370 |
|
21371 | return index;
|
21372 | };
|
21373 |
|
21374 | _proto.update = function update() {
|
21375 | var index = this;
|
21376 | index.calcIndexes();
|
21377 | index.calcSize();
|
21378 | index.render();
|
21379 | return index;
|
21380 | };
|
21381 |
|
21382 | _proto.init = function init() {
|
21383 | var index = this;
|
21384 | index.calcIndexes();
|
21385 | index.calcSize();
|
21386 | index.render();
|
21387 | index.attachEvents();
|
21388 | };
|
21389 |
|
21390 | _proto.destroy = function destroy() {
|
21391 | var index = this;
|
21392 | index.$el.trigger('listindex:beforedestroy', index);
|
21393 | index.emit('local::beforeDestroy listIndexBeforeDestroy');
|
21394 | index.detachEvents();
|
21395 |
|
21396 | if (index.$el[0]) {
|
21397 | index.$el[0].f7ListIndex = null;
|
21398 | delete index.$el[0].f7ListIndex;
|
21399 | }
|
21400 |
|
21401 | deleteProps$1(index);
|
21402 | index = null;
|
21403 | };
|
21404 |
|
21405 | return ListIndex;
|
21406 | }(Framework7Class);
|
21407 |
|
21408 | var ListIndex = {
|
21409 | name: 'listIndex',
|
21410 | static: {
|
21411 | ListIndex: ListIndex$1
|
21412 | },
|
21413 | create: function create() {
|
21414 | var app = this;
|
21415 | app.listIndex = ConstructorMethods({
|
21416 | defaultSelector: '.list-index',
|
21417 | constructor: ListIndex$1,
|
21418 | app: app,
|
21419 | domProp: 'f7ListIndex'
|
21420 | });
|
21421 | },
|
21422 | on: {
|
21423 | tabMounted: function tabMounted(tabEl) {
|
21424 | var app = this;
|
21425 | $(tabEl).find('.list-index-init').each(function (listIndexEl) {
|
21426 | var params = extend$1($(listIndexEl).dataset(), {
|
21427 | el: listIndexEl
|
21428 | });
|
21429 | app.listIndex.create(params);
|
21430 | });
|
21431 | },
|
21432 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
21433 | $(tabEl).find('.list-index-init').each(function (listIndexEl) {
|
21434 | if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
|
21435 | });
|
21436 | },
|
21437 | pageInit: function pageInit(page) {
|
21438 | var app = this;
|
21439 | page.$el.find('.list-index-init').each(function (listIndexEl) {
|
21440 | var params = extend$1($(listIndexEl).dataset(), {
|
21441 | el: listIndexEl
|
21442 | });
|
21443 | app.listIndex.create(params);
|
21444 | });
|
21445 | },
|
21446 | pageBeforeRemove: function pageBeforeRemove(page) {
|
21447 | page.$el.find('.list-index-init').each(function (listIndexEl) {
|
21448 | if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
|
21449 | });
|
21450 | }
|
21451 | },
|
21452 | vnode: {
|
21453 | 'list-index-init': {
|
21454 | insert: function insert(vnode) {
|
21455 | var app = this;
|
21456 | var listIndexEl = vnode.elm;
|
21457 | var params = extend$1($(listIndexEl).dataset(), {
|
21458 | el: listIndexEl
|
21459 | });
|
21460 | app.listIndex.create(params);
|
21461 | },
|
21462 | destroy: function destroy(vnode) {
|
21463 | var listIndexEl = vnode.elm;
|
21464 | if (listIndexEl.f7ListIndex) listIndexEl.f7ListIndex.destroy();
|
21465 | }
|
21466 | }
|
21467 | }
|
21468 | };
|
21469 |
|
21470 | var Timeline = {
|
21471 | name: 'timeline'
|
21472 | };
|
21473 |
|
21474 | var Tab = {
|
21475 | show: function show() {
|
21476 | var app = this;
|
21477 | var tabEl;
|
21478 | var tabLinkEl;
|
21479 | var animate;
|
21480 | var tabRoute;
|
21481 | var animatedInit;
|
21482 |
|
21483 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
21484 | args[_key] = arguments[_key];
|
21485 | }
|
21486 |
|
21487 | if (args.length === 1 && args[0] && args[0].constructor === Object) {
|
21488 | tabEl = args[0].tabEl;
|
21489 | tabLinkEl = args[0].tabLinkEl;
|
21490 | animate = args[0].animate;
|
21491 | tabRoute = args[0].tabRoute;
|
21492 | animatedInit = args[0].animatedInit;
|
21493 | } else {
|
21494 | tabEl = args[0];
|
21495 | tabLinkEl = args[1];
|
21496 | animate = args[2];
|
21497 | tabRoute = args[3];
|
21498 |
|
21499 | if (typeof args[1] === 'boolean') {
|
21500 | tabEl = args[0];
|
21501 | animate = args[1];
|
21502 | tabLinkEl = args[2];
|
21503 | tabRoute = args[3];
|
21504 |
|
21505 | if (args.length > 2 && tabLinkEl.constructor === Object) {
|
21506 | tabEl = args[0];
|
21507 | animate = args[1];
|
21508 | tabRoute = args[2];
|
21509 | tabLinkEl = args[3];
|
21510 | }
|
21511 | }
|
21512 | }
|
21513 |
|
21514 | if (typeof animate === 'undefined') animate = true;
|
21515 | var $newTabEl = $(tabEl);
|
21516 |
|
21517 | if (tabRoute && $newTabEl[0]) {
|
21518 | $newTabEl[0].f7TabRoute = tabRoute;
|
21519 | }
|
21520 |
|
21521 | if (!animatedInit && ($newTabEl.length === 0 || $newTabEl.hasClass('tab-active'))) {
|
21522 | return {
|
21523 | $newTabEl: $newTabEl,
|
21524 | newTabEl: $newTabEl[0]
|
21525 | };
|
21526 | }
|
21527 |
|
21528 | var $tabLinkEl;
|
21529 | if (tabLinkEl) $tabLinkEl = $(tabLinkEl);
|
21530 | var $tabsEl = $newTabEl.parent('.tabs');
|
21531 |
|
21532 | if ($tabsEl.length === 0) {
|
21533 | return {
|
21534 | $newTabEl: $newTabEl,
|
21535 | newTabEl: $newTabEl[0]
|
21536 | };
|
21537 | }
|
21538 |
|
21539 |
|
21540 | if (app.swipeout) app.swipeout.allowOpen = true;
|
21541 |
|
21542 | var tabsChangedCallbacks = [];
|
21543 |
|
21544 | function onTabsChanged(callback) {
|
21545 | tabsChangedCallbacks.push(callback);
|
21546 | }
|
21547 |
|
21548 | function tabsChanged() {
|
21549 | tabsChangedCallbacks.forEach(function (callback) {
|
21550 | callback();
|
21551 | });
|
21552 | }
|
21553 |
|
21554 | var animated = false;
|
21555 |
|
21556 | if ($tabsEl.parent().hasClass('tabs-animated-wrap')) {
|
21557 | $tabsEl.parent()[animate ? 'removeClass' : 'addClass']('not-animated');
|
21558 | var transitionDuration = parseFloat($tabsEl.css('transition-duration').replace(',', '.'));
|
21559 |
|
21560 | if (animate && transitionDuration) {
|
21561 | $tabsEl.transitionEnd(tabsChanged);
|
21562 | animated = true;
|
21563 | }
|
21564 |
|
21565 | var tabsTranslate = (app.rtl ? $newTabEl.index() : -$newTabEl.index()) * 100;
|
21566 | $tabsEl.transform("translate3d(" + tabsTranslate + "%,0,0)");
|
21567 | }
|
21568 |
|
21569 |
|
21570 | var swiper;
|
21571 |
|
21572 | if ($tabsEl.parent().hasClass('tabs-swipeable-wrap') && app.swiper) {
|
21573 | swiper = $tabsEl.parent()[0].swiper;
|
21574 |
|
21575 | if (swiper && swiper.activeIndex !== $newTabEl.index()) {
|
21576 | animated = true;
|
21577 | swiper.once('slideChangeTransitionEnd', function () {
|
21578 | tabsChanged();
|
21579 | }).slideTo($newTabEl.index(), animate ? undefined : 0);
|
21580 | } else if (swiper && swiper.animating) {
|
21581 | animated = true;
|
21582 | swiper.once('slideChangeTransitionEnd', function () {
|
21583 | tabsChanged();
|
21584 | });
|
21585 | }
|
21586 | }
|
21587 |
|
21588 |
|
21589 | var $oldTabEl = $tabsEl.children('.tab-active');
|
21590 | $oldTabEl.removeClass('tab-active');
|
21591 |
|
21592 | if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {
|
21593 | if ($oldTabEl.hasClass('view') && $oldTabEl.children('.page').length) {
|
21594 | $oldTabEl.children('.page').each(function (pageEl) {
|
21595 | $(pageEl).trigger('page:tabhide');
|
21596 | app.emit('pageTabHide', pageEl);
|
21597 | });
|
21598 | }
|
21599 |
|
21600 | $oldTabEl.trigger('tab:hide');
|
21601 | app.emit('tabHide', $oldTabEl[0]);
|
21602 | }
|
21603 |
|
21604 |
|
21605 | $newTabEl.addClass('tab-active');
|
21606 |
|
21607 | if (!animatedInit && (!swiper || swiper && !swiper.animating || swiper && tabRoute)) {
|
21608 | if ($newTabEl.hasClass('view') && $newTabEl.children('.page').length) {
|
21609 | $newTabEl.children('.page').each(function (pageEl) {
|
21610 | $(pageEl).trigger('page:tabshow');
|
21611 | app.emit('pageTabShow', pageEl);
|
21612 | });
|
21613 | }
|
21614 |
|
21615 | $newTabEl.trigger('tab:show');
|
21616 | app.emit('tabShow', $newTabEl[0]);
|
21617 | }
|
21618 |
|
21619 |
|
21620 | if (!$tabLinkEl) {
|
21621 |
|
21622 | if (typeof tabEl === 'string') $tabLinkEl = $(".tab-link[href=\"" + tabEl + "\"]");else $tabLinkEl = $(".tab-link[href=\"#" + $newTabEl.attr('id') + "\"]");
|
21623 |
|
21624 | if (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0) {
|
21625 | $('[data-tab]').each(function (el) {
|
21626 | if ($newTabEl.is($(el).attr('data-tab'))) $tabLinkEl = $(el);
|
21627 | });
|
21628 | }
|
21629 |
|
21630 | if (tabRoute && (!$tabLinkEl || $tabLinkEl && $tabLinkEl.length === 0)) {
|
21631 | $tabLinkEl = $("[data-route-tab-id=\"" + tabRoute.route.tab.id + "\"]");
|
21632 |
|
21633 | if ($tabLinkEl.length === 0) {
|
21634 | $tabLinkEl = $(".tab-link[href=\"" + tabRoute.url + "\"]");
|
21635 | }
|
21636 | }
|
21637 |
|
21638 | if ($tabLinkEl.length > 1 && $newTabEl.parents('.page').length) {
|
21639 |
|
21640 | $tabLinkEl = $tabLinkEl.filter(function (tabLinkElement) {
|
21641 | return $(tabLinkElement).parents('.page')[0] === $newTabEl.parents('.page')[0];
|
21642 | });
|
21643 |
|
21644 | if (app.theme === 'ios' && $tabLinkEl.length === 0 && tabRoute) {
|
21645 | var $pageEl = $newTabEl.parents('.page');
|
21646 | var $navbarEl = $(app.navbar.getElByPage($pageEl));
|
21647 | $tabLinkEl = $navbarEl.find("[data-route-tab-id=\"" + tabRoute.route.tab.id + "\"]");
|
21648 |
|
21649 | if ($tabLinkEl.length === 0) {
|
21650 | $tabLinkEl = $navbarEl.find(".tab-link[href=\"" + tabRoute.url + "\"]");
|
21651 | }
|
21652 | }
|
21653 | }
|
21654 | }
|
21655 |
|
21656 | if ($tabLinkEl.length > 0) {
|
21657 |
|
21658 | var $oldTabLinkEl;
|
21659 |
|
21660 | if ($oldTabEl && $oldTabEl.length > 0) {
|
21661 |
|
21662 | var oldTabId = $oldTabEl.attr('id');
|
21663 |
|
21664 | if (oldTabId) {
|
21665 | $oldTabLinkEl = $(".tab-link[href=\"#" + oldTabId + "\"]");
|
21666 |
|
21667 | if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {
|
21668 | $oldTabLinkEl = $(".tab-link[data-route-tab-id=\"" + oldTabId + "\"]");
|
21669 | }
|
21670 | }
|
21671 |
|
21672 |
|
21673 | if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {
|
21674 | $('[data-tab]').each(function (tabLinkElement) {
|
21675 | if ($oldTabEl.is($(tabLinkElement).attr('data-tab'))) $oldTabLinkEl = $(tabLinkElement);
|
21676 | });
|
21677 | }
|
21678 |
|
21679 | if (!$oldTabLinkEl || $oldTabLinkEl && $oldTabLinkEl.length === 0) {
|
21680 | $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');
|
21681 | }
|
21682 | } else if (tabRoute) {
|
21683 | $oldTabLinkEl = $tabLinkEl.siblings('.tab-link-active');
|
21684 | }
|
21685 |
|
21686 | if ($oldTabLinkEl && $oldTabLinkEl.length > 1 && $oldTabEl && $oldTabEl.parents('.page').length) {
|
21687 |
|
21688 | $oldTabLinkEl = $oldTabLinkEl.filter(function (tabLinkElement) {
|
21689 | return $(tabLinkElement).parents('.page')[0] === $oldTabEl.parents('.page')[0];
|
21690 | });
|
21691 | }
|
21692 |
|
21693 | if ($oldTabLinkEl && $oldTabLinkEl.length > 0) $oldTabLinkEl.removeClass('tab-link-active');
|
21694 |
|
21695 | if ($tabLinkEl && $tabLinkEl.length > 0) {
|
21696 | $tabLinkEl.addClass('tab-link-active');
|
21697 |
|
21698 | if (app.theme !== 'ios' && app.toolbar) {
|
21699 | var $tabbarEl = $tabLinkEl.parents('.tabbar, .tabbar-labels');
|
21700 |
|
21701 | if ($tabbarEl.length > 0) {
|
21702 | app.toolbar.setHighlight($tabbarEl);
|
21703 | }
|
21704 | }
|
21705 | }
|
21706 | }
|
21707 |
|
21708 | return {
|
21709 | $newTabEl: $newTabEl,
|
21710 | newTabEl: $newTabEl[0],
|
21711 | $oldTabEl: $oldTabEl,
|
21712 | oldTabEl: $oldTabEl[0],
|
21713 | onTabsChanged: onTabsChanged,
|
21714 | animated: animated
|
21715 | };
|
21716 | }
|
21717 | };
|
21718 | var Tabs = {
|
21719 | name: 'tabs',
|
21720 | create: function create() {
|
21721 | var app = this;
|
21722 | extend$1(app, {
|
21723 | tab: {
|
21724 | show: Tab.show.bind(app)
|
21725 | }
|
21726 | });
|
21727 | },
|
21728 | on: {
|
21729 | 'pageInit tabMounted': function onInit(pageOrTabEl) {
|
21730 | var $el = $(pageOrTabEl.el || pageOrTabEl);
|
21731 | var animatedTabEl = $el.find('.tabs-animated-wrap > .tabs > .tab-active')[0];
|
21732 | if (!animatedTabEl) return;
|
21733 | var app = this;
|
21734 | app.tab.show({
|
21735 | tabEl: animatedTabEl,
|
21736 | animatedInit: true,
|
21737 | animate: false
|
21738 | });
|
21739 | }
|
21740 | },
|
21741 | clicks: {
|
21742 | '.tab-link': function tabLinkClick($clickedEl, data) {
|
21743 | if (data === void 0) {
|
21744 | data = {};
|
21745 | }
|
21746 |
|
21747 | if ($clickedEl.attr('href') && $clickedEl.attr('href').indexOf('#') === 0 || $clickedEl.attr('data-tab')) {
|
21748 | var app = this;
|
21749 | app.tab.show({
|
21750 | tabEl: data.tab || $clickedEl.attr('href'),
|
21751 | tabLinkEl: $clickedEl,
|
21752 | animate: data.animate
|
21753 | });
|
21754 | }
|
21755 | }
|
21756 | }
|
21757 | };
|
21758 |
|
21759 | function swipePanel(panel) {
|
21760 | var app = panel.app;
|
21761 |
|
21762 | if (panel.swipeInitialized) {
|
21763 | return;
|
21764 | }
|
21765 |
|
21766 | extend$1(panel, {
|
21767 | swipeable: true,
|
21768 | swipeInitialized: true
|
21769 | });
|
21770 | var params = panel.params;
|
21771 | var $el = panel.$el,
|
21772 | $backdropEl = panel.$backdropEl,
|
21773 | side = panel.side,
|
21774 | effect = panel.effect;
|
21775 | var otherPanel;
|
21776 | var isTouched;
|
21777 | var isGestureStarted;
|
21778 | var isMoved;
|
21779 | var isScrolling;
|
21780 | var isInterrupted;
|
21781 | var touchesStart = {};
|
21782 | var touchStartTime;
|
21783 | var touchesDiff;
|
21784 | var translate;
|
21785 | var backdropOpacity;
|
21786 | var panelWidth;
|
21787 | var direction;
|
21788 | var $viewEl;
|
21789 | var touchMoves = 0;
|
21790 |
|
21791 | function handleTouchStart(e) {
|
21792 | if (!panel.swipeable || isGestureStarted) return;
|
21793 | if (!app.panel.allowOpen || !params.swipe && !params.swipeOnlyClose || isTouched) return;
|
21794 | if ($('.modal-in:not(.toast):not(.notification), .photo-browser-in').length > 0) return;
|
21795 | otherPanel = app.panel.get(side === 'left' ? 'right' : 'left') || {};
|
21796 | var otherPanelOpened = otherPanel.opened && otherPanel.$el && !otherPanel.$el.hasClass('panel-in-breakpoint');
|
21797 |
|
21798 | if (!panel.opened && otherPanelOpened) {
|
21799 | return;
|
21800 | }
|
21801 |
|
21802 | if (!params.swipeOnlyClose) {
|
21803 | if (otherPanelOpened) return;
|
21804 | }
|
21805 |
|
21806 | if (e.target && e.target.nodeName.toLowerCase() === 'input' && e.target.type === 'range') return;
|
21807 | if ($(e.target).closest('.range-slider, .tabs-swipeable-wrap, .calendar-months, .no-swipe-panel, .card-opened').length > 0) return;
|
21808 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
21809 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
21810 |
|
21811 | if (params.swipeOnlyClose && !panel.opened) {
|
21812 | return;
|
21813 | }
|
21814 |
|
21815 | if (params.swipeActiveArea && !panel.opened) {
|
21816 | if (side === 'left') {
|
21817 | if (touchesStart.x > params.swipeActiveArea) return;
|
21818 | }
|
21819 |
|
21820 | if (side === 'right') {
|
21821 | if (touchesStart.x < app.width - params.swipeActiveArea) return;
|
21822 | }
|
21823 | }
|
21824 |
|
21825 | touchMoves = 0;
|
21826 | $viewEl = $(panel.getViewEl());
|
21827 | isMoved = false;
|
21828 | isTouched = true;
|
21829 | isScrolling = undefined;
|
21830 | isInterrupted = false;
|
21831 | touchStartTime = now$1();
|
21832 | direction = undefined;
|
21833 | }
|
21834 |
|
21835 | function handleTouchMove(e) {
|
21836 | if (!isTouched || isGestureStarted || isInterrupted) return;
|
21837 | touchMoves += 1;
|
21838 | if (touchMoves < 2) return;
|
21839 |
|
21840 | if (e.f7PreventSwipePanel || app.preventSwipePanelBySwipeBack || app.preventSwipePanel) {
|
21841 | isTouched = false;
|
21842 | return;
|
21843 | }
|
21844 |
|
21845 | var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
21846 | var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
21847 |
|
21848 | if (typeof isScrolling === 'undefined') {
|
21849 | isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
|
21850 | }
|
21851 |
|
21852 | if (isScrolling) {
|
21853 | isTouched = false;
|
21854 | return;
|
21855 | }
|
21856 |
|
21857 | if (!direction) {
|
21858 | if (pageX > touchesStart.x) {
|
21859 | direction = 'to-right';
|
21860 | } else {
|
21861 | direction = 'to-left';
|
21862 | }
|
21863 |
|
21864 | if (params.swipeActiveArea > 0 && !panel.opened) {
|
21865 | if (side === 'left' && touchesStart.x > params.swipeActiveArea) {
|
21866 | isTouched = false;
|
21867 | return;
|
21868 | }
|
21869 |
|
21870 | if (side === 'right' && touchesStart.x < app.width - params.swipeActiveArea) {
|
21871 | isTouched = false;
|
21872 | return;
|
21873 | }
|
21874 | }
|
21875 |
|
21876 | if ($el.hasClass('panel-in-breakpoint')) {
|
21877 | isTouched = false;
|
21878 | return;
|
21879 | }
|
21880 |
|
21881 | if (side === 'left' && direction === 'to-left' && !$el.hasClass('panel-in') || side === 'right' && direction === 'to-right' && !$el.hasClass('panel-in')) {
|
21882 | isTouched = false;
|
21883 | return;
|
21884 | }
|
21885 | }
|
21886 |
|
21887 | var threshold = panel.opened ? 0 : -params.swipeThreshold;
|
21888 | if (side === 'right') threshold = -threshold;
|
21889 |
|
21890 | if (!isMoved) {
|
21891 | if (!panel.opened) {
|
21892 | panel.insertToRoot();
|
21893 | $el.addClass('panel-in-swipe');
|
21894 | $backdropEl.css('visibility', 'visible');
|
21895 | $el.trigger('panel:swipeopen');
|
21896 | panel.emit('local::swipeOpen panelSwipeOpen', panel);
|
21897 | }
|
21898 |
|
21899 | panelWidth = $el[0].offsetWidth;
|
21900 |
|
21901 | if (effect === 'reveal' && $el.hasClass('panel-in-collapsed')) {
|
21902 | panelWidth -= parseFloat($viewEl.css("margin-" + side));
|
21903 | }
|
21904 |
|
21905 | $el.transition(0);
|
21906 | }
|
21907 |
|
21908 | isMoved = true;
|
21909 | e.preventDefault();
|
21910 | touchesDiff = pageX - touchesStart.x + threshold;
|
21911 |
|
21912 | if (side === 'right') {
|
21913 | if (effect === 'cover') {
|
21914 | translate = touchesDiff + (panel.opened ? 0 : panelWidth);
|
21915 | if (translate < 0) translate = 0;
|
21916 |
|
21917 | if (translate > panelWidth) {
|
21918 | translate = panelWidth;
|
21919 | }
|
21920 | } else {
|
21921 | translate = touchesDiff - (panel.opened ? panelWidth : 0);
|
21922 | if (translate > 0) translate = 0;
|
21923 |
|
21924 | if (translate < -panelWidth) {
|
21925 | translate = -panelWidth;
|
21926 | }
|
21927 | }
|
21928 | } else {
|
21929 | translate = touchesDiff + (panel.opened ? panelWidth : 0);
|
21930 | if (translate < 0) translate = 0;
|
21931 |
|
21932 | if (translate > panelWidth) {
|
21933 | translate = panelWidth;
|
21934 | }
|
21935 | }
|
21936 |
|
21937 | var noFollowProgress = Math.abs(translate / panelWidth);
|
21938 |
|
21939 | if (effect === 'reveal') {
|
21940 | if (!params.swipeNoFollow) {
|
21941 | $viewEl.transform("translate3d(" + translate + "px,0,0)").transition(0);
|
21942 | $backdropEl.transform("translate3d(" + translate + "px,0,0)").transition(0);
|
21943 | }
|
21944 |
|
21945 | $el.trigger('panel:swipe', Math.abs(translate / panelWidth));
|
21946 | panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));
|
21947 | } else {
|
21948 | if (side === 'left') translate -= panelWidth;
|
21949 |
|
21950 | if (!params.swipeNoFollow) {
|
21951 | $el.transform("translate3d(" + translate + "px,0,0)").transition(0);
|
21952 | $backdropEl.transition(0);
|
21953 | backdropOpacity = 1 - Math.abs(translate / panelWidth);
|
21954 | $backdropEl.css({
|
21955 | opacity: backdropOpacity
|
21956 | });
|
21957 | }
|
21958 |
|
21959 | $el.trigger('panel:swipe', Math.abs(translate / panelWidth));
|
21960 | panel.emit('local::swipe panelSwipe', panel, Math.abs(translate / panelWidth));
|
21961 | }
|
21962 |
|
21963 | if (params.swipeNoFollow) {
|
21964 | var stateChanged = panel.opened && noFollowProgress === 0 || !panel.opened && noFollowProgress === 1;
|
21965 |
|
21966 | if (stateChanged) {
|
21967 | isInterrupted = true;
|
21968 |
|
21969 | handleTouchEnd(e);
|
21970 | }
|
21971 | }
|
21972 | }
|
21973 |
|
21974 | function handleTouchEnd(e) {
|
21975 | if (!isTouched || !isMoved) {
|
21976 | isTouched = false;
|
21977 | isMoved = false;
|
21978 | return;
|
21979 | }
|
21980 |
|
21981 | var isGesture = e.type === 'gesturestart' || isGestureStarted;
|
21982 | isTouched = false;
|
21983 | isMoved = false;
|
21984 | var timeDiff = new Date().getTime() - touchStartTime;
|
21985 | var action;
|
21986 | var edge = (translate === 0 || Math.abs(translate) === panelWidth) && !params.swipeNoFollow;
|
21987 | var threshold = params.swipeThreshold || 0;
|
21988 |
|
21989 | if (isGesture) {
|
21990 | action = 'reset';
|
21991 | } else if (!panel.opened) {
|
21992 | if (Math.abs(touchesDiff) < threshold) {
|
21993 | action = 'reset';
|
21994 | } else if (effect === 'cover') {
|
21995 | if (translate === 0) {
|
21996 | action = 'swap';
|
21997 | } else if (timeDiff < 300 && Math.abs(translate) > 0) {
|
21998 | action = 'swap';
|
21999 | } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {
|
22000 | action = 'swap';
|
22001 | } else {
|
22002 | action = 'reset';
|
22003 | }
|
22004 | } else if (translate === 0) {
|
22005 | action = 'reset';
|
22006 | } else if (timeDiff < 300 && Math.abs(translate) > 0 || timeDiff >= 300 && Math.abs(translate) >= panelWidth / 2) {
|
22007 | action = 'swap';
|
22008 | } else {
|
22009 | action = 'reset';
|
22010 | }
|
22011 | } else if (effect === 'cover') {
|
22012 | if (translate === 0) {
|
22013 | action = 'reset';
|
22014 | } else if (timeDiff < 300 && Math.abs(translate) > 0) {
|
22015 | action = 'swap';
|
22016 | } else if (timeDiff >= 300 && Math.abs(translate) < panelWidth / 2) {
|
22017 | action = 'reset';
|
22018 | } else {
|
22019 | action = 'swap';
|
22020 | }
|
22021 | } else if (translate === -panelWidth) {
|
22022 | action = 'reset';
|
22023 | } else if (timeDiff < 300 && Math.abs(translate) >= 0 || timeDiff >= 300 && Math.abs(translate) <= panelWidth / 2) {
|
22024 | if (side === 'left' && translate === panelWidth) action = 'reset';else action = 'swap';
|
22025 | } else {
|
22026 | action = 'reset';
|
22027 | }
|
22028 |
|
22029 | if (action === 'swap') {
|
22030 | if (panel.opened) {
|
22031 | panel.close(!edge);
|
22032 | } else {
|
22033 | panel.open(!edge);
|
22034 | }
|
22035 | }
|
22036 |
|
22037 | var removePanelInClass = true;
|
22038 |
|
22039 | if (action === 'reset') {
|
22040 | if (!panel.opened) {
|
22041 | if (edge) {
|
22042 |
|
22043 | $el.removeClass('panel-in-swipe');
|
22044 | } else {
|
22045 | removePanelInClass = false;
|
22046 | var target = effect === 'reveal' ? $viewEl : $el;
|
22047 | panel.setStateClasses('before-closing');
|
22048 | target.transitionEnd(function () {
|
22049 | if ($el.hasClass('panel-in')) return;
|
22050 | $el.removeClass('panel-in-swipe');
|
22051 | panel.setStateClasses('after-closing');
|
22052 | });
|
22053 | }
|
22054 | }
|
22055 | }
|
22056 |
|
22057 | if (effect === 'reveal') {
|
22058 | nextFrame$1(function () {
|
22059 | $viewEl.transition('');
|
22060 | $viewEl.transform('');
|
22061 | });
|
22062 | }
|
22063 |
|
22064 | if (removePanelInClass) {
|
22065 | $el.removeClass('panel-in-swipe');
|
22066 | }
|
22067 |
|
22068 | $el.transition('').transform('');
|
22069 | $backdropEl.transform('').transition('').css({
|
22070 | opacity: '',
|
22071 | visibility: ''
|
22072 | });
|
22073 | }
|
22074 |
|
22075 | function handleGestureStart(e) {
|
22076 | isGestureStarted = true;
|
22077 | handleTouchEnd(e);
|
22078 | }
|
22079 |
|
22080 | function handleGestureEnd() {
|
22081 | isGestureStarted = false;
|
22082 | }
|
22083 |
|
22084 |
|
22085 | app.on('touchstart:passive', handleTouchStart);
|
22086 | app.on('touchmove:active', handleTouchMove);
|
22087 | app.on('touchend:passive', handleTouchEnd);
|
22088 | app.on('gesturestart', handleGestureStart);
|
22089 | app.on('gestureend', handleGestureEnd);
|
22090 | panel.on('panelDestroy', function () {
|
22091 | app.off('touchstart:passive', handleTouchStart);
|
22092 | app.off('touchmove:active', handleTouchMove);
|
22093 | app.off('touchend:passive', handleTouchEnd);
|
22094 | app.off('gesturestart', handleGestureStart);
|
22095 | app.off('gestureend', handleGestureEnd);
|
22096 | });
|
22097 | }
|
22098 |
|
22099 | function resizablePanel(panel) {
|
22100 | var app = panel.app;
|
22101 | var support = getSupport$1();
|
22102 | if (panel.resizableInitialized) return;
|
22103 | extend$1(panel, {
|
22104 | resizable: true,
|
22105 | resizableWidth: null,
|
22106 | resizableInitialized: true
|
22107 | });
|
22108 | var $htmlEl = $('html');
|
22109 | var $el = panel.$el,
|
22110 | $backdropEl = panel.$backdropEl,
|
22111 | side = panel.side,
|
22112 | effect = panel.effect;
|
22113 | if (!$el) return;
|
22114 | var isTouched;
|
22115 | var isMoved;
|
22116 | var touchesStart = {};
|
22117 | var touchesDiff;
|
22118 | var panelWidth;
|
22119 | var $viewEl;
|
22120 | var panelMinWidth;
|
22121 | var panelMaxWidth;
|
22122 | var visibleByBreakpoint;
|
22123 |
|
22124 | function transformCSSWidth(v) {
|
22125 | if (!v) return null;
|
22126 |
|
22127 | if (v.indexOf('%') >= 0 || v.indexOf('vw') >= 0) {
|
22128 | return parseInt(v, 10) / 100 * app.width;
|
22129 | }
|
22130 |
|
22131 | var newV = parseInt(v, 10);
|
22132 | if (Number.isNaN(newV)) return null;
|
22133 | return newV;
|
22134 | }
|
22135 |
|
22136 | function isResizable() {
|
22137 | return panel.resizable && $el.hasClass('panel-resizable');
|
22138 | }
|
22139 |
|
22140 | function handleTouchStart(e) {
|
22141 | if (!isResizable()) return;
|
22142 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
22143 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
22144 | isMoved = false;
|
22145 | isTouched = true;
|
22146 | panelMinWidth = transformCSSWidth($el.css('min-width'));
|
22147 | panelMaxWidth = transformCSSWidth($el.css('max-width'));
|
22148 | visibleByBreakpoint = $el.hasClass('panel-in-breakpoint');
|
22149 | }
|
22150 |
|
22151 | function handleTouchMove(e) {
|
22152 | if (!isTouched) return;
|
22153 | var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
22154 |
|
22155 | if (!isMoved) {
|
22156 | panelWidth = $el[0].offsetWidth;
|
22157 | $el.transition(0);
|
22158 | $el.addClass('panel-resizing');
|
22159 | $htmlEl.css('cursor', 'col-resize');
|
22160 |
|
22161 | if (effect === 'reveal' || visibleByBreakpoint) {
|
22162 | $viewEl = $(panel.getViewEl());
|
22163 |
|
22164 | if (panel.$containerEl && panel.$containerEl.hasClass('page')) {
|
22165 | $viewEl.add(panel.$containerEl.children('.page-content, .tabs, .fab'));
|
22166 | }
|
22167 | }
|
22168 |
|
22169 | if (effect === 'reveal' && !visibleByBreakpoint) {
|
22170 | $backdropEl.transition(0);
|
22171 | $viewEl.transition(0);
|
22172 | }
|
22173 | }
|
22174 |
|
22175 | isMoved = true;
|
22176 | e.preventDefault();
|
22177 | touchesDiff = pageX - touchesStart.x;
|
22178 | var newPanelWidth = side === 'left' ? panelWidth + touchesDiff : panelWidth - touchesDiff;
|
22179 |
|
22180 | if (panelMinWidth && !Number.isNaN(panelMinWidth)) {
|
22181 | newPanelWidth = Math.max(newPanelWidth, panelMinWidth);
|
22182 | }
|
22183 |
|
22184 | if (panelMaxWidth && !Number.isNaN(panelMaxWidth)) {
|
22185 | newPanelWidth = Math.min(newPanelWidth, panelMaxWidth);
|
22186 | }
|
22187 |
|
22188 | newPanelWidth = Math.min(Math.max(newPanelWidth, 0), app.width);
|
22189 | panel.resizableWidth = newPanelWidth;
|
22190 | $el[0].style.width = newPanelWidth + "px";
|
22191 |
|
22192 | if (effect === 'reveal' && !visibleByBreakpoint) {
|
22193 | if ($viewEl) {
|
22194 | $viewEl.transform("translate3d(" + (side === 'left' ? newPanelWidth : -newPanelWidth) + "px, 0, 0)");
|
22195 | }
|
22196 |
|
22197 | if ($backdropEl) {
|
22198 | $backdropEl.transform("translate3d(" + (side === 'left' ? newPanelWidth : -newPanelWidth) + "px, 0, 0)");
|
22199 | }
|
22200 | } else if (visibleByBreakpoint && $viewEl) {
|
22201 | $viewEl.css("margin-" + side, newPanelWidth + "px");
|
22202 | }
|
22203 |
|
22204 | $el.trigger('panel:resize', newPanelWidth);
|
22205 | panel.emit('local::resize panelResize', panel, newPanelWidth);
|
22206 | }
|
22207 |
|
22208 | function handleTouchEnd() {
|
22209 | $('html').css('cursor', '');
|
22210 |
|
22211 | if (!isTouched || !isMoved) {
|
22212 | isTouched = false;
|
22213 | isMoved = false;
|
22214 | return;
|
22215 | }
|
22216 |
|
22217 | isTouched = false;
|
22218 | isMoved = false;
|
22219 | $htmlEl[0].style.setProperty("--f7-panel-" + side + "-width", panel.resizableWidth + "px");
|
22220 | $el[0].style.width = '';
|
22221 |
|
22222 | if (effect === 'reveal' && !visibleByBreakpoint) {
|
22223 | $viewEl.transform('');
|
22224 | $backdropEl.transform('');
|
22225 | }
|
22226 |
|
22227 | $el.removeClass('panel-resizing');
|
22228 | nextFrame$1(function () {
|
22229 | $el.transition('');
|
22230 |
|
22231 | if (effect === 'reveal') {
|
22232 | $backdropEl.transition('');
|
22233 | if ($viewEl) $viewEl.transition('');
|
22234 | }
|
22235 | });
|
22236 | }
|
22237 |
|
22238 | function handleResize() {
|
22239 | if (!panel.opened || !panel.resizableWidth) return;
|
22240 | panelMinWidth = transformCSSWidth($el.css('min-width'));
|
22241 | panelMaxWidth = transformCSSWidth($el.css('max-width'));
|
22242 |
|
22243 | if (panelMinWidth && !Number.isNaN(panelMinWidth) && panel.resizableWidth < panelMinWidth) {
|
22244 | panel.resizableWidth = Math.max(panel.resizableWidth, panelMinWidth);
|
22245 | }
|
22246 |
|
22247 | if (panelMaxWidth && !Number.isNaN(panelMaxWidth) && panel.resizableWidth > panelMaxWidth) {
|
22248 | panel.resizableWidth = Math.min(panel.resizableWidth, panelMaxWidth);
|
22249 | }
|
22250 |
|
22251 | panel.resizableWidth = Math.min(Math.max(panel.resizableWidth, 0), app.width);
|
22252 | $htmlEl[0].style.setProperty("--f7-panel-" + side + "-width", panel.resizableWidth + "px");
|
22253 | }
|
22254 |
|
22255 | if (panel.$el.find('.panel-resize-handler').length === 0) {
|
22256 | panel.$el.append('<div class="panel-resize-handler"></div>');
|
22257 | }
|
22258 |
|
22259 | panel.$resizeHandlerEl = panel.$el.children('.panel-resize-handler');
|
22260 | $el.addClass('panel-resizable');
|
22261 |
|
22262 | var passive = support.passiveListener ? {
|
22263 | passive: true
|
22264 | } : false;
|
22265 | panel.$el.on(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);
|
22266 | app.on('touchmove:active', handleTouchMove);
|
22267 | app.on('touchend:passive', handleTouchEnd);
|
22268 | app.on('resize', handleResize);
|
22269 | panel.on('beforeOpen', handleResize);
|
22270 | panel.once('panelDestroy', function () {
|
22271 | $el.removeClass('panel-resizable');
|
22272 | panel.$resizeHandlerEl.remove();
|
22273 | panel.$el.off(app.touchEvents.start, '.panel-resize-handler', handleTouchStart, passive);
|
22274 | app.off('touchmove:active', handleTouchMove);
|
22275 | app.off('touchend:passive', handleTouchEnd);
|
22276 | app.off('resize', handleResize);
|
22277 | panel.off('beforeOpen', handleResize);
|
22278 | });
|
22279 | }
|
22280 |
|
22281 | var Panel$1 = function (_Framework7Class) {
|
22282 | _inheritsLoose(Panel, _Framework7Class);
|
22283 |
|
22284 | function Panel(app, params) {
|
22285 | var _this;
|
22286 |
|
22287 | if (params === void 0) {
|
22288 | params = {};
|
22289 | }
|
22290 |
|
22291 | var extendedParams = extend$1({
|
22292 | on: {}
|
22293 | }, app.params.panel, params);
|
22294 | _this = _Framework7Class.call(this, extendedParams, [app]) || this;
|
22295 |
|
22296 | var panel = _assertThisInitialized(_this);
|
22297 |
|
22298 | panel.params = extendedParams;
|
22299 | panel.$containerEl = panel.params.containerEl ? $(panel.params.containerEl).eq(0) : app.$el;
|
22300 | panel.containerEl = panel.$containerEl[0];
|
22301 |
|
22302 | if (!panel.containerEl) {
|
22303 | panel.$containerEl = app.$el;
|
22304 | panel.containerEl = app.$el[0];
|
22305 | }
|
22306 |
|
22307 | var $el;
|
22308 |
|
22309 | if (panel.params.el) {
|
22310 | $el = $(panel.params.el).eq(0);
|
22311 | } else if (panel.params.content) {
|
22312 | $el = $(panel.params.content).filter(function (node) {
|
22313 | return node.nodeType === 1;
|
22314 | }).eq(0);
|
22315 | }
|
22316 |
|
22317 | if ($el.length === 0) return panel || _assertThisInitialized(_this);
|
22318 | if ($el[0].f7Panel) return $el[0].f7Panel || _assertThisInitialized(_this);
|
22319 | $el[0].f7Panel = panel;
|
22320 | var _panel$params = panel.params,
|
22321 | side = _panel$params.side,
|
22322 | effect = _panel$params.effect,
|
22323 | resizable = _panel$params.resizable;
|
22324 | if (typeof side === 'undefined') side = $el.hasClass('panel-left') ? 'left' : 'right';
|
22325 | if (typeof effect === 'undefined') effect = $el.hasClass('panel-cover') ? 'cover' : 'reveal';
|
22326 | if (typeof resizable === 'undefined') resizable = $el.hasClass('panel-resizable');
|
22327 | var $backdropEl;
|
22328 |
|
22329 | if (panel.params.backdrop && panel.params.backdropEl) {
|
22330 | $backdropEl = $(panel.params.backdropEl);
|
22331 | } else if (panel.params.backdrop) {
|
22332 | $backdropEl = panel.$containerEl.children('.panel-backdrop');
|
22333 |
|
22334 | if ($backdropEl.length === 0) {
|
22335 | $backdropEl = $('<div class="panel-backdrop"></div>');
|
22336 | panel.$containerEl.prepend($backdropEl);
|
22337 | }
|
22338 | }
|
22339 |
|
22340 | extend$1(panel, {
|
22341 | app: app,
|
22342 | side: side,
|
22343 | effect: effect,
|
22344 | resizable: resizable,
|
22345 | $el: $el,
|
22346 | el: $el[0],
|
22347 | opened: false,
|
22348 | $backdropEl: $backdropEl,
|
22349 | backdropEl: $backdropEl && $backdropEl[0]
|
22350 | });
|
22351 |
|
22352 | panel.useModules();
|
22353 |
|
22354 | panel.init();
|
22355 | return panel || _assertThisInitialized(_this);
|
22356 | }
|
22357 |
|
22358 | var _proto = Panel.prototype;
|
22359 |
|
22360 | _proto.getViewEl = function getViewEl() {
|
22361 | var panel = this;
|
22362 | var viewEl;
|
22363 |
|
22364 | if (panel.$containerEl.children('.views').length > 0) {
|
22365 | viewEl = panel.$containerEl.children('.views')[0];
|
22366 | } else {
|
22367 | viewEl = panel.$containerEl.children('.view')[0];
|
22368 | }
|
22369 |
|
22370 | return viewEl;
|
22371 | };
|
22372 |
|
22373 | _proto.setStateClasses = function setStateClasses(state) {
|
22374 | var panel = this;
|
22375 | var side = panel.side,
|
22376 | el = panel.el;
|
22377 | var viewEl = panel.getViewEl();
|
22378 | var panelInView = viewEl && viewEl.contains(el);
|
22379 | var $targetEl = !viewEl || panelInView ? panel.$containerEl : $('html');
|
22380 |
|
22381 | if (state === 'open') {
|
22382 | $targetEl.addClass("with-panel with-panel-" + panel.side + "-" + panel.effect);
|
22383 | }
|
22384 |
|
22385 | if (state === 'before-closing') {
|
22386 | $targetEl.addClass('with-panel-closing');
|
22387 | }
|
22388 |
|
22389 | if (state === 'closing') {
|
22390 | $targetEl.addClass('with-panel-closing');
|
22391 | $targetEl.removeClass("with-panel with-panel-" + panel.side + "-" + panel.effect);
|
22392 | }
|
22393 |
|
22394 | if (state === 'after-closing') {
|
22395 | $targetEl.removeClass('with-panel-closing');
|
22396 | }
|
22397 |
|
22398 | if (state === 'closed') {
|
22399 | $targetEl.removeClass("with-panel-" + side + "-reveal with-panel-" + side + "-cover with-panel");
|
22400 | }
|
22401 | };
|
22402 |
|
22403 | _proto.enableVisibleBreakpoint = function enableVisibleBreakpoint() {
|
22404 | var panel = this;
|
22405 | panel.visibleBreakpointDisabled = false;
|
22406 | panel.setVisibleBreakpoint();
|
22407 | return panel;
|
22408 | };
|
22409 |
|
22410 | _proto.disableVisibleBreakpoint = function disableVisibleBreakpoint() {
|
22411 | var panel = this;
|
22412 | panel.visibleBreakpointDisabled = true;
|
22413 | panel.setVisibleBreakpoint();
|
22414 | return panel;
|
22415 | };
|
22416 |
|
22417 | _proto.toggleVisibleBreakpoint = function toggleVisibleBreakpoint() {
|
22418 | var panel = this;
|
22419 | panel.visibleBreakpointDisabled = !panel.visibleBreakpointDisabled;
|
22420 | panel.setVisibleBreakpoint();
|
22421 | return panel;
|
22422 | };
|
22423 |
|
22424 | _proto.setVisibleBreakpoint = function setVisibleBreakpoint(emitEvents) {
|
22425 | if (emitEvents === void 0) {
|
22426 | emitEvents = true;
|
22427 | }
|
22428 |
|
22429 | var panel = this;
|
22430 | var app = panel.app;
|
22431 |
|
22432 | if (!panel.visibleBreakpointResizeHandler) {
|
22433 | panel.visibleBreakpointResizeHandler = function visibleBreakpointResizeHandler() {
|
22434 | panel.setVisibleBreakpoint();
|
22435 | };
|
22436 |
|
22437 | app.on('resize', panel.visibleBreakpointResizeHandler);
|
22438 | }
|
22439 |
|
22440 | var side = panel.side,
|
22441 | $el = panel.$el,
|
22442 | $containerEl = panel.$containerEl,
|
22443 | params = panel.params,
|
22444 | visibleBreakpointDisabled = panel.visibleBreakpointDisabled;
|
22445 | var breakpoint = params.visibleBreakpoint;
|
22446 | var $viewEl = $(panel.getViewEl());
|
22447 | var wasVisible = $el.hasClass('panel-in-breakpoint');
|
22448 |
|
22449 | if ($containerEl && $containerEl.hasClass('page')) {
|
22450 | $viewEl.add($containerEl.children('.page-content, .tabs, .fab'));
|
22451 | }
|
22452 |
|
22453 | if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !visibleBreakpointDisabled) {
|
22454 | if (!wasVisible) {
|
22455 | var _$viewEl$css;
|
22456 |
|
22457 | panel.setStateClasses('closed');
|
22458 | $el.addClass('panel-in-breakpoint').removeClass('panel-in panel-in-collapsed');
|
22459 | panel.onOpen(false);
|
22460 | panel.onOpened();
|
22461 | $viewEl.css((_$viewEl$css = {}, _$viewEl$css["margin-" + side] = $el.width() + "px", _$viewEl$css));
|
22462 | app.allowPanelOpen = true;
|
22463 |
|
22464 | if (emitEvents) {
|
22465 | panel.emit('local::breakpoint panelBreakpoint', panel);
|
22466 | panel.$el.trigger('panel:breakpoint');
|
22467 | }
|
22468 | } else {
|
22469 | var _$viewEl$css2;
|
22470 |
|
22471 | $viewEl.css((_$viewEl$css2 = {}, _$viewEl$css2["margin-" + side] = $el.width() + "px", _$viewEl$css2));
|
22472 | }
|
22473 | } else if (wasVisible) {
|
22474 | var _$viewEl$css3;
|
22475 |
|
22476 | $el.removeClass('panel-in-breakpoint panel-in');
|
22477 | panel.onClose();
|
22478 | panel.onClosed();
|
22479 | $viewEl.css((_$viewEl$css3 = {}, _$viewEl$css3["margin-" + side] = '', _$viewEl$css3));
|
22480 |
|
22481 | if (emitEvents) {
|
22482 | panel.emit('local::breakpoint panelBreakpoint', panel);
|
22483 | panel.$el.trigger('panel:breakpoint');
|
22484 | }
|
22485 | }
|
22486 | };
|
22487 |
|
22488 | _proto.enableCollapsedBreakpoint = function enableCollapsedBreakpoint() {
|
22489 | var panel = this;
|
22490 | panel.collapsedBreakpointDisabled = false;
|
22491 | panel.setCollapsedBreakpoint();
|
22492 | return panel;
|
22493 | };
|
22494 |
|
22495 | _proto.disableCollapsedBreakpoint = function disableCollapsedBreakpoint() {
|
22496 | var panel = this;
|
22497 | panel.collapsedBreakpointDisabled = true;
|
22498 | panel.setCollapsedBreakpoint();
|
22499 | return panel;
|
22500 | };
|
22501 |
|
22502 | _proto.toggleCollapsedBreakpoint = function toggleCollapsedBreakpoint() {
|
22503 | var panel = this;
|
22504 | panel.collapsedBreakpointDisabled = !panel.collapsedBreakpointDisabled;
|
22505 | panel.setCollapsedBreakpoint();
|
22506 | return panel;
|
22507 | };
|
22508 |
|
22509 | _proto.setCollapsedBreakpoint = function setCollapsedBreakpoint(emitEvents) {
|
22510 | if (emitEvents === void 0) {
|
22511 | emitEvents = true;
|
22512 | }
|
22513 |
|
22514 | var panel = this;
|
22515 | var app = panel.app;
|
22516 |
|
22517 | if (!panel.collapsedBreakpointResizeHandler) {
|
22518 | panel.collapsedBreakpointResizeHandler = function collapsedBreakpointResizeHandler() {
|
22519 | panel.setCollapsedBreakpoint();
|
22520 | };
|
22521 |
|
22522 | app.on('resize', panel.collapsedBreakpointResizeHandler);
|
22523 | }
|
22524 |
|
22525 | var $el = panel.$el,
|
22526 | params = panel.params,
|
22527 | collapsedBreakpointDisabled = panel.collapsedBreakpointDisabled;
|
22528 | if ($el.hasClass('panel-in-breakpoint')) return;
|
22529 | var breakpoint = params.collapsedBreakpoint;
|
22530 | var wasVisible = $el.hasClass('panel-in-collapsed');
|
22531 |
|
22532 | if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null && !collapsedBreakpointDisabled) {
|
22533 | if (!wasVisible) {
|
22534 | panel.setStateClasses('closed');
|
22535 | $el.addClass('panel-in-collapsed').removeClass('panel-in');
|
22536 | panel.collapsed = true;
|
22537 | app.allowPanelOpen = true;
|
22538 |
|
22539 | if (emitEvents) {
|
22540 | panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);
|
22541 | panel.$el.trigger('panel:collapsedbreakpoint');
|
22542 | }
|
22543 | }
|
22544 | } else if (wasVisible) {
|
22545 | $el.removeClass('panel-in-collapsed panel-in');
|
22546 | panel.collapsed = false;
|
22547 |
|
22548 | if (emitEvents) {
|
22549 | panel.emit('local::collapsedBreakpoint panelCollapsedBreakpoint', panel);
|
22550 | panel.$el.trigger('panel:collapsedbreakpoint');
|
22551 | }
|
22552 | }
|
22553 | };
|
22554 |
|
22555 | _proto.enableResizable = function enableResizable() {
|
22556 | var panel = this;
|
22557 |
|
22558 | if (panel.resizableInitialized) {
|
22559 | panel.resizable = true;
|
22560 | panel.$el.addClass('panel-resizable');
|
22561 | } else {
|
22562 | resizablePanel(panel);
|
22563 | }
|
22564 |
|
22565 | return panel;
|
22566 | };
|
22567 |
|
22568 | _proto.disableResizable = function disableResizable() {
|
22569 | var panel = this;
|
22570 | panel.resizable = false;
|
22571 | panel.$el.removeClass('panel-resizable');
|
22572 | return panel;
|
22573 | };
|
22574 |
|
22575 | _proto.enableSwipe = function enableSwipe() {
|
22576 | var panel = this;
|
22577 |
|
22578 | if (panel.swipeInitialized) {
|
22579 | panel.swipeable = true;
|
22580 | } else {
|
22581 | swipePanel(panel);
|
22582 | }
|
22583 |
|
22584 | return panel;
|
22585 | };
|
22586 |
|
22587 | _proto.disableSwipe = function disableSwipe() {
|
22588 | var panel = this;
|
22589 | panel.swipeable = false;
|
22590 | return panel;
|
22591 | };
|
22592 |
|
22593 | _proto.onOpen = function onOpen(modifyHtmlClasses) {
|
22594 | if (modifyHtmlClasses === void 0) {
|
22595 | modifyHtmlClasses = true;
|
22596 | }
|
22597 |
|
22598 | var panel = this;
|
22599 | var app = panel.app;
|
22600 | panel.opened = true;
|
22601 | app.panel.allowOpen = false;
|
22602 | panel.$el.trigger('panel:beforeopen');
|
22603 | panel.emit('local::beforeOpen panelBeforeOpen', panel);
|
22604 |
|
22605 | if (modifyHtmlClasses) {
|
22606 | panel.setStateClasses('open');
|
22607 | }
|
22608 |
|
22609 | panel.$el.trigger('panel:open');
|
22610 | panel.emit('local::open panelOpen', panel);
|
22611 | };
|
22612 |
|
22613 | _proto.onOpened = function onOpened() {
|
22614 | var panel = this;
|
22615 | var app = panel.app;
|
22616 | app.panel.allowOpen = true;
|
22617 | panel.$el.trigger('panel:opened');
|
22618 | panel.emit('local::opened panelOpened', panel);
|
22619 | };
|
22620 |
|
22621 | _proto.onClose = function onClose() {
|
22622 | var panel = this;
|
22623 | var app = panel.app;
|
22624 | panel.opened = false;
|
22625 | app.panel.allowOpen = false;
|
22626 | panel.$el.trigger('panel:beforeclose');
|
22627 | panel.emit('local::beforeClose panelBeforeClose', panel);
|
22628 | panel.setStateClasses('closing');
|
22629 | panel.$el.trigger('panel:close');
|
22630 | panel.emit('local::close panelClose', panel);
|
22631 | };
|
22632 |
|
22633 | _proto.onClosed = function onClosed() {
|
22634 | var panel = this;
|
22635 | var app = panel.app;
|
22636 | app.panel.allowOpen = true;
|
22637 | panel.setStateClasses('after-closing');
|
22638 | panel.$el.removeClass('panel-out');
|
22639 |
|
22640 | if (panel.$backdropEl) {
|
22641 | var otherPanel = app.panel.get('.panel-in');
|
22642 | var shouldHideBackdrop = !otherPanel || otherPanel && !otherPanel.$backdropEl;
|
22643 |
|
22644 | if (shouldHideBackdrop) {
|
22645 | panel.$backdropEl.removeClass('panel-backdrop-in');
|
22646 | }
|
22647 | }
|
22648 |
|
22649 | panel.$el.trigger('panel:closed');
|
22650 | panel.emit('local::closed panelClosed', panel);
|
22651 | };
|
22652 |
|
22653 | _proto.toggle = function toggle(animate) {
|
22654 | if (animate === void 0) {
|
22655 | animate = true;
|
22656 | }
|
22657 |
|
22658 | var panel = this;
|
22659 | var breakpoint = panel.params.visibleBreakpoint;
|
22660 | var app = panel.app;
|
22661 |
|
22662 | if (app.width >= breakpoint && typeof breakpoint !== 'undefined' && breakpoint !== null) {
|
22663 | return panel.toggleVisibleBreakpoint();
|
22664 | }
|
22665 |
|
22666 | if (panel.opened) panel.close(animate);else panel.open(animate);
|
22667 | return panel;
|
22668 | };
|
22669 |
|
22670 | _proto.insertToRoot = function insertToRoot() {
|
22671 | var panel = this;
|
22672 | var document = getDocument();
|
22673 | var $el = panel.$el,
|
22674 | $backdropEl = panel.$backdropEl,
|
22675 | $containerEl = panel.$containerEl;
|
22676 | var $panelParentEl = $el.parent();
|
22677 | var wasInDom = $el.parents(document).length > 0;
|
22678 |
|
22679 | if (!$panelParentEl.is($containerEl) || $el.prevAll('.views, .view').length) {
|
22680 | var $insertBeforeEl = $containerEl.children('.panel, .views, .view').eq(0);
|
22681 | var $insertAfterEl = $containerEl.children('.panel-backdrop').eq(0);
|
22682 |
|
22683 | if ($insertBeforeEl.length) {
|
22684 | $el.insertBefore($insertBeforeEl);
|
22685 | } else if ($insertAfterEl) {
|
22686 | $el.insertBefore($insertAfterEl);
|
22687 | } else {
|
22688 | $containerEl.prepend($el);
|
22689 | }
|
22690 |
|
22691 | if ($backdropEl && $backdropEl.length && (!$backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0 || $backdropEl.parent().is($containerEl) && $backdropEl.nextAll('.panel').length === 0)) {
|
22692 | $backdropEl.insertBefore($el);
|
22693 | }
|
22694 |
|
22695 | panel.once('panelClosed', function () {
|
22696 | if (wasInDom) {
|
22697 | $panelParentEl.append($el);
|
22698 | } else {
|
22699 | $el.remove();
|
22700 | }
|
22701 | });
|
22702 | }
|
22703 | };
|
22704 |
|
22705 | _proto.open = function open(animate) {
|
22706 | if (animate === void 0) {
|
22707 | animate = true;
|
22708 | }
|
22709 |
|
22710 | var panel = this;
|
22711 | var app = panel.app;
|
22712 | if (!app.panel.allowOpen) return false;
|
22713 | var effect = panel.effect,
|
22714 | $el = panel.$el,
|
22715 | $backdropEl = panel.$backdropEl,
|
22716 | opened = panel.opened,
|
22717 | $containerEl = panel.$containerEl;
|
22718 |
|
22719 | if (!$el || $el.hasClass('panel-in')) {
|
22720 | return panel;
|
22721 | }
|
22722 |
|
22723 | panel.insertToRoot();
|
22724 |
|
22725 | if (opened || $el.hasClass('panel-in-breakpoint') || $el.hasClass('panel-in')) return false;
|
22726 |
|
22727 | var otherOpenedPanel = app.panel.get('.panel-in');
|
22728 |
|
22729 | if (otherOpenedPanel && otherOpenedPanel !== panel) {
|
22730 | otherOpenedPanel.close(animate);
|
22731 | }
|
22732 |
|
22733 | $el[animate ? 'removeClass' : 'addClass']('not-animated');
|
22734 | $el.addClass('panel-in');
|
22735 |
|
22736 | if ($backdropEl) {
|
22737 | $backdropEl.addClass('panel-backdrop-in');
|
22738 | $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
|
22739 | }
|
22740 |
|
22741 | if (panel.effect === 'cover') {
|
22742 |
|
22743 | panel._clientLeft = $el[0].clientLeft;
|
22744 | }
|
22745 |
|
22746 |
|
22747 | var $viewEl = $(panel.getViewEl());
|
22748 |
|
22749 | if ($containerEl && $containerEl.hasClass('page')) {
|
22750 | $viewEl.add($containerEl.children('.page-content, .tabs'));
|
22751 | }
|
22752 |
|
22753 | var transitionEndTarget = effect === 'reveal' ? $viewEl : $el;
|
22754 |
|
22755 | function panelTransitionEnd() {
|
22756 | transitionEndTarget.transitionEnd(function (e) {
|
22757 | if ($(e.target).is(transitionEndTarget)) {
|
22758 | if ($el.hasClass('panel-out')) {
|
22759 | panel.onClosed();
|
22760 | } else {
|
22761 | panel.onOpened();
|
22762 | }
|
22763 | } else panelTransitionEnd();
|
22764 | });
|
22765 | }
|
22766 |
|
22767 | if (animate) {
|
22768 | if ($backdropEl) {
|
22769 | $backdropEl.removeClass('not-animated');
|
22770 | }
|
22771 |
|
22772 | panelTransitionEnd();
|
22773 | $el.removeClass('panel-out not-animated').addClass('panel-in');
|
22774 | panel.onOpen();
|
22775 | } else {
|
22776 | if ($backdropEl) {
|
22777 | $backdropEl.addClass('not-animated');
|
22778 | }
|
22779 |
|
22780 | $el.removeClass('panel-out').addClass('panel-in not-animated');
|
22781 | panel.onOpen();
|
22782 | panel.onOpened();
|
22783 | }
|
22784 |
|
22785 | return true;
|
22786 | };
|
22787 |
|
22788 | _proto.close = function close(animate) {
|
22789 | if (animate === void 0) {
|
22790 | animate = true;
|
22791 | }
|
22792 |
|
22793 | var panel = this;
|
22794 | var effect = panel.effect,
|
22795 | $el = panel.$el,
|
22796 | $backdropEl = panel.$backdropEl,
|
22797 | opened = panel.opened,
|
22798 | $containerEl = panel.$containerEl;
|
22799 | if (!opened || $el.hasClass('panel-in-breakpoint') || !$el.hasClass('panel-in')) return panel;
|
22800 | $el[animate ? 'removeClass' : 'addClass']('not-animated');
|
22801 |
|
22802 | if ($backdropEl) {
|
22803 | $backdropEl[animate ? 'removeClass' : 'addClass']('not-animated');
|
22804 | }
|
22805 |
|
22806 | var $viewEl = $(panel.getViewEl());
|
22807 |
|
22808 | if ($containerEl && $containerEl.hasClass('page')) {
|
22809 | $viewEl.add($containerEl.children('.page-content, .tabs'));
|
22810 | }
|
22811 |
|
22812 | var transitionEndTarget = effect === 'reveal' ? $viewEl : $el;
|
22813 |
|
22814 | function transitionEnd() {
|
22815 | if ($el.hasClass('panel-out')) {
|
22816 | panel.onClosed();
|
22817 | } else if ($el.hasClass('panel-in')) {
|
22818 | panel.onOpened();
|
22819 | }
|
22820 |
|
22821 | panel.setStateClasses('after-closing');
|
22822 | }
|
22823 |
|
22824 | if (animate) {
|
22825 | transitionEndTarget.transitionEnd(function () {
|
22826 | transitionEnd();
|
22827 | });
|
22828 | $el.removeClass('panel-in').addClass('panel-out');
|
22829 |
|
22830 | panel.onClose();
|
22831 | } else {
|
22832 | $el.addClass('not-animated').removeClass('panel-in').addClass('panel-out');
|
22833 |
|
22834 | panel.onClose();
|
22835 | panel.onClosed();
|
22836 | }
|
22837 |
|
22838 | return panel;
|
22839 | };
|
22840 |
|
22841 | _proto.init = function init() {
|
22842 | var panel = this;
|
22843 |
|
22844 | if (typeof panel.params.visibleBreakpoint !== 'undefined') {
|
22845 | panel.setVisibleBreakpoint();
|
22846 | }
|
22847 |
|
22848 | if (typeof panel.params.collapsedBreakpoint !== 'undefined') {
|
22849 | panel.setCollapsedBreakpoint();
|
22850 | }
|
22851 |
|
22852 | if (panel.params.swipe) {
|
22853 | panel.enableSwipe();
|
22854 | }
|
22855 |
|
22856 | if (panel.resizable) {
|
22857 | panel.enableResizable();
|
22858 | }
|
22859 | };
|
22860 |
|
22861 | _proto.destroy = function destroy() {
|
22862 | var panel = this;
|
22863 | var app = panel.app;
|
22864 | var _panel = panel,
|
22865 | $containerEl = _panel.$containerEl;
|
22866 |
|
22867 | if (!panel.$el) {
|
22868 |
|
22869 | return;
|
22870 | }
|
22871 |
|
22872 | panel.emit('local::beforeDestroy panelBeforeDestroy', panel);
|
22873 | panel.$el.trigger('panel:beforedestroy');
|
22874 |
|
22875 | if (panel.visibleBreakpointResizeHandler) {
|
22876 | app.off('resize', panel.visibleBreakpointResizeHandler);
|
22877 | }
|
22878 |
|
22879 | if (panel.collapsedBreakpointResizeHandler) {
|
22880 | app.off('resize', panel.collapsedBreakpointResizeHandler);
|
22881 | }
|
22882 |
|
22883 | if (panel.$el.hasClass('panel-in-breakpoint') || panel.$el.hasClass('panel-in-collapsed')) {
|
22884 | var _$viewEl$css4;
|
22885 |
|
22886 | var $viewEl = $(panel.getViewEl());
|
22887 |
|
22888 | if ($containerEl && $containerEl.hasClass('page')) {
|
22889 | $viewEl.add($containerEl.children('.page-content, .tabs'));
|
22890 | }
|
22891 |
|
22892 | panel.$el.removeClass('panel-in-breakpoint panel-in-collapsed panel-in');
|
22893 | $viewEl.css((_$viewEl$css4 = {}, _$viewEl$css4["margin-" + panel.side] = '', _$viewEl$css4));
|
22894 | panel.emit('local::breakpoint panelBreakpoint', panel);
|
22895 | panel.$el.trigger('panel:breakpoint');
|
22896 | }
|
22897 |
|
22898 | panel.$el.trigger('panel:destroy');
|
22899 | panel.emit('local::destroy panelDestroy', panel);
|
22900 |
|
22901 | if (panel.el) {
|
22902 | panel.el.f7Panel = null;
|
22903 | delete panel.el.f7Panel;
|
22904 | }
|
22905 |
|
22906 | deleteProps$1(panel);
|
22907 | panel = null;
|
22908 | };
|
22909 |
|
22910 | return Panel;
|
22911 | }(Framework7Class);
|
22912 |
|
22913 | var Panel = {
|
22914 | name: 'panel',
|
22915 | params: {
|
22916 | panel: {
|
22917 | opened: undefined,
|
22918 |
|
22919 | side: undefined,
|
22920 |
|
22921 | effect: undefined,
|
22922 |
|
22923 | resizable: undefined,
|
22924 |
|
22925 | backdrop: true,
|
22926 | backdropEl: undefined,
|
22927 | visibleBreakpoint: undefined,
|
22928 | collapsedBreakpoint: undefined,
|
22929 | swipe: false,
|
22930 |
|
22931 | swipeNoFollow: false,
|
22932 |
|
22933 | swipeOnlyClose: false,
|
22934 | swipeActiveArea: 0,
|
22935 | swipeThreshold: 0,
|
22936 | closeByBackdropClick: true,
|
22937 | containerEl: undefined
|
22938 | }
|
22939 | },
|
22940 | static: {
|
22941 | Panel: Panel$1
|
22942 | },
|
22943 | create: function create() {
|
22944 | var app = this;
|
22945 | extend$1(app, {
|
22946 | panel: {
|
22947 | allowOpen: true,
|
22948 | create: function create(params) {
|
22949 | return new Panel$1(app, params);
|
22950 | },
|
22951 | get: function get(el) {
|
22952 | if (el === void 0) {
|
22953 | el = '.panel';
|
22954 | }
|
22955 |
|
22956 | if (el instanceof Panel$1) return el;
|
22957 | if (el === 'left' || el === 'right') el = ".panel-" + el;
|
22958 |
|
22959 | var $el = $(el);
|
22960 | if ($el.length === 0 || $el.length > 1) return undefined;
|
22961 | return $el[0].f7Panel;
|
22962 | },
|
22963 | destroy: function destroy(el) {
|
22964 | if (el === void 0) {
|
22965 | el = '.panel';
|
22966 | }
|
22967 |
|
22968 | var panel = app.panel.get(el);
|
22969 | if (panel && panel.destroy) return panel.destroy();
|
22970 | return undefined;
|
22971 | },
|
22972 | open: function open(el, animate) {
|
22973 | if (el === void 0) {
|
22974 | el = '.panel';
|
22975 | }
|
22976 |
|
22977 | if (el === 'left' || el === 'right') el = ".panel-" + el;
|
22978 |
|
22979 | var panel = app.panel.get(el);
|
22980 | if (panel && panel.open) return panel.open(animate);
|
22981 |
|
22982 | if (!panel) {
|
22983 | panel = app.panel.create({
|
22984 | el: el
|
22985 | });
|
22986 | return panel.open(animate);
|
22987 | }
|
22988 |
|
22989 | return undefined;
|
22990 | },
|
22991 | close: function close(el, animate) {
|
22992 | if (el === void 0) {
|
22993 | el = '.panel-in';
|
22994 | }
|
22995 |
|
22996 | if (el === 'left' || el === 'right') el = ".panel-" + el;
|
22997 |
|
22998 | var panel = app.panel.get(el);
|
22999 | if (panel && panel.open) return panel.close(animate);
|
23000 |
|
23001 | if (!panel) {
|
23002 | panel = app.panel.create({
|
23003 | el: el
|
23004 | });
|
23005 | return panel.close(animate);
|
23006 | }
|
23007 |
|
23008 | return undefined;
|
23009 | },
|
23010 | toggle: function toggle(el, animate) {
|
23011 | if (el === void 0) {
|
23012 | el = '.panel';
|
23013 | }
|
23014 |
|
23015 | if (el === 'left' || el === 'right') el = ".panel-" + el;
|
23016 |
|
23017 | var panel = app.panel.get(el);
|
23018 | if (panel && panel.toggle) return panel.toggle(animate);
|
23019 |
|
23020 | if (!panel) {
|
23021 | panel = app.panel.create({
|
23022 | el: el
|
23023 | });
|
23024 | return panel.toggle(animate);
|
23025 | }
|
23026 |
|
23027 | return undefined;
|
23028 | }
|
23029 | }
|
23030 | });
|
23031 | },
|
23032 | on: {
|
23033 | init: function init() {
|
23034 | var app = this;
|
23035 | $('.panel-init').each(function (panelEl) {
|
23036 | var params = Object.assign({
|
23037 | el: panelEl
|
23038 | }, $(panelEl).dataset() || {});
|
23039 | app.panel.create(params);
|
23040 | });
|
23041 | },
|
23042 | pageInit: function pageInit(page) {
|
23043 | var app = this;
|
23044 | page.$el.find('.panel-init').each(function (panelEl) {
|
23045 | var params = Object.assign({
|
23046 | el: panelEl
|
23047 | }, $(panelEl).dataset() || {});
|
23048 | app.panel.create(params);
|
23049 | });
|
23050 | },
|
23051 | pageBeforeRemove: function pageBeforeRemove(page) {
|
23052 | var app = this;
|
23053 | page.$el.find('.panel-init').each(function (panelEl) {
|
23054 | var panel = app.panel.get(panelEl);
|
23055 | if (panel && panel.destroy) panel.destroy();
|
23056 | });
|
23057 | }
|
23058 | },
|
23059 | vnode: {
|
23060 | 'panel-init': {
|
23061 | insert: function insert(vnode) {
|
23062 | var app = this;
|
23063 | var panelEl = vnode.elm;
|
23064 | var params = Object.assign({
|
23065 | el: panelEl
|
23066 | }, $(panelEl).dataset() || {});
|
23067 | app.panel.create(params);
|
23068 | },
|
23069 | destroy: function destroy(vnode) {
|
23070 | var app = this;
|
23071 | var panelEl = vnode.elm;
|
23072 | var panel = app.panel.get(panelEl);
|
23073 | if (panel && panel.destroy) panel.destroy();
|
23074 | }
|
23075 | }
|
23076 | },
|
23077 | clicks: {
|
23078 | '.panel-open': function open(clickedEl, data) {
|
23079 | if (data === void 0) {
|
23080 | data = {};
|
23081 | }
|
23082 |
|
23083 | var app = this;
|
23084 | app.panel.open(data.panel, data.animate);
|
23085 | },
|
23086 | '.panel-close': function close(clickedEl, data) {
|
23087 | if (data === void 0) {
|
23088 | data = {};
|
23089 | }
|
23090 |
|
23091 | var app = this;
|
23092 | app.panel.close(data.panel, data.animate);
|
23093 | },
|
23094 | '.panel-toggle': function close(clickedEl, data) {
|
23095 | if (data === void 0) {
|
23096 | data = {};
|
23097 | }
|
23098 |
|
23099 | var app = this;
|
23100 | app.panel.toggle(data.panel, data.animate);
|
23101 | },
|
23102 | '.panel-backdrop': function close() {
|
23103 | var app = this;
|
23104 | var $panelEl = $('.panel-in:not(.panel-out)');
|
23105 | if (!$panelEl.length) return;
|
23106 | var instance = $panelEl[0] && $panelEl[0].f7Panel;
|
23107 | $panelEl.trigger('panel:backdrop-click');
|
23108 |
|
23109 | if (instance) {
|
23110 | instance.emit('backdropClick', instance);
|
23111 | }
|
23112 |
|
23113 | app.emit('panelBackdropClick', instance || $panelEl[0]);
|
23114 | if (app.params.panel.closeByBackdropClick) app.panel.close();
|
23115 | }
|
23116 | }
|
23117 | };
|
23118 |
|
23119 |
|
23120 | var CardExpandable = {
|
23121 | open: function open(cardEl, animate) {
|
23122 | if (cardEl === void 0) {
|
23123 | cardEl = '.card-expandable';
|
23124 | }
|
23125 |
|
23126 | if (animate === void 0) {
|
23127 | animate = true;
|
23128 | }
|
23129 |
|
23130 | var app = this;
|
23131 | var device = getDevice$1();
|
23132 | var document = getDocument();
|
23133 | var support = getSupport$1();
|
23134 | var $cardEl = $(cardEl).eq(0);
|
23135 | if (!$cardEl || !$cardEl.length) return;
|
23136 | if ($cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;
|
23137 | var $pageEl = $cardEl.parents('.page').eq(0);
|
23138 | if (!$pageEl.length) return;
|
23139 |
|
23140 | if ($pageEl.find('.card-opened').length) {
|
23141 | return;
|
23142 | }
|
23143 |
|
23144 | var prevented;
|
23145 |
|
23146 | function prevent() {
|
23147 | prevented = true;
|
23148 | }
|
23149 |
|
23150 | $cardEl.trigger('card:beforeopen', {
|
23151 | prevent: prevent
|
23152 | });
|
23153 | app.emit('cardBeforeOpen', $cardEl[0], prevent);
|
23154 | if (prevented) return;
|
23155 | var cardParams = Object.assign({
|
23156 | animate: animate
|
23157 | }, app.params.card, $cardEl.dataset());
|
23158 | var $pageContentEl = $cardEl.parents('.page-content');
|
23159 | var $backdropEl;
|
23160 |
|
23161 | if ($cardEl.attr('data-backdrop-el')) {
|
23162 | $backdropEl = $($cardEl.attr('data-backdrop-el'));
|
23163 | }
|
23164 |
|
23165 | if (!$backdropEl && cardParams.backdrop) {
|
23166 | $backdropEl = $pageContentEl.find('.card-backdrop');
|
23167 |
|
23168 | if (!$backdropEl.length) {
|
23169 | $backdropEl = $('<div class="card-backdrop"></div>');
|
23170 | $pageContentEl.append($backdropEl);
|
23171 | }
|
23172 | }
|
23173 |
|
23174 | var $navbarEl;
|
23175 | var $toolbarEl;
|
23176 |
|
23177 | if (cardParams.hideNavbarOnOpen) {
|
23178 | $navbarEl = $pageEl.children('.navbar');
|
23179 |
|
23180 | if (!$navbarEl.length) {
|
23181 | if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;
|
23182 | }
|
23183 | }
|
23184 |
|
23185 | if (cardParams.hideToolbarOnOpen) {
|
23186 | $toolbarEl = $pageEl.children('.toolbar');
|
23187 |
|
23188 | if (!$toolbarEl.length) {
|
23189 | $toolbarEl = $pageEl.parents('.view').children('.toolbar');
|
23190 | }
|
23191 |
|
23192 | if (!$toolbarEl.length) {
|
23193 | $toolbarEl = $pageEl.parents('.views').children('.toolbar');
|
23194 | }
|
23195 | }
|
23196 |
|
23197 | var currTransform = $cardEl.css('transform');
|
23198 | var hasTransform;
|
23199 |
|
23200 | if (currTransform && currTransform.match(/[2-9]/)) {
|
23201 | hasTransform = true;
|
23202 | }
|
23203 |
|
23204 | var $cardContentEl = $cardEl.children('.card-content');
|
23205 | var $cardSizeEl = $(document.createElement('div')).addClass('card-expandable-size');
|
23206 | $cardEl.append($cardSizeEl);
|
23207 | var cardWidth = $cardEl[0].offsetWidth;
|
23208 | var cardHeight = $cardEl[0].offsetHeight;
|
23209 | var pageWidth = $pageEl[0].offsetWidth;
|
23210 | var pageHeight = $pageEl[0].offsetHeight;
|
23211 | var maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;
|
23212 | var maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;
|
23213 | var statusbarHeight;
|
23214 |
|
23215 | if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {
|
23216 | statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);
|
23217 | if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;
|
23218 | }
|
23219 |
|
23220 | if (statusbarHeight) {
|
23221 | maxHeight -= statusbarHeight;
|
23222 | }
|
23223 |
|
23224 | var scaleX = maxWidth / cardWidth;
|
23225 | var scaleY = maxHeight / cardHeight;
|
23226 | var offset = $cardEl.offset();
|
23227 | var pageOffset = $pageEl.offset();
|
23228 |
|
23229 | if (statusbarHeight) {
|
23230 | pageOffset.top += statusbarHeight / 2;
|
23231 | }
|
23232 |
|
23233 | offset.left -= pageOffset.left;
|
23234 | var cardLeftOffset;
|
23235 | var cardTopOffset;
|
23236 |
|
23237 | if (hasTransform) {
|
23238 | var transformValues = currTransform.replace(/matrix\(|\)/g, '').split(',').map(function (el) {
|
23239 | return el.trim();
|
23240 | });
|
23241 |
|
23242 | if (transformValues && transformValues.length > 1) {
|
23243 | var scale = parseFloat(transformValues[0]);
|
23244 | cardLeftOffset = offset.left - cardWidth * (1 - scale) / 2;
|
23245 | cardTopOffset = offset.top - pageOffset.top - cardHeight * (1 - scale) / 2;
|
23246 | if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
|
23247 | } else {
|
23248 | cardLeftOffset = $cardEl[0].offsetLeft;
|
23249 | cardTopOffset = $cardEl[0].offsetTop - ($pageContentEl.length ? $pageContentEl[0].scrollTop : 0);
|
23250 | }
|
23251 | } else {
|
23252 | cardLeftOffset = offset.left;
|
23253 | cardTopOffset = offset.top - pageOffset.top;
|
23254 | if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
|
23255 | }
|
23256 |
|
23257 | cardLeftOffset -= (pageWidth - maxWidth) / 2;
|
23258 | cardTopOffset -= (pageHeight - maxHeight) / 2;
|
23259 | var cardRightOffset = maxWidth - cardWidth - cardLeftOffset;
|
23260 |
|
23261 | if (app.rtl) {
|
23262 | var _ref = [cardRightOffset, cardLeftOffset];
|
23263 | cardLeftOffset = _ref[0];
|
23264 | cardRightOffset = _ref[1];
|
23265 | }
|
23266 |
|
23267 | var cardBottomOffset = maxHeight - cardHeight - cardTopOffset;
|
23268 | var translateX = (cardRightOffset - cardLeftOffset) / 2;
|
23269 | var translateY = (cardBottomOffset - cardTopOffset) / 2;
|
23270 |
|
23271 | if (cardParams.hideNavbarOnOpen && $navbarEl && $navbarEl.length) {
|
23272 | if ($navbarEl.closest('.navbar-hidden').length) {
|
23273 |
|
23274 | $cardEl[0].f7KeepNavbarOnClose = true;
|
23275 | } else {
|
23276 | delete $cardEl[0].f7KeepNavbarOnClose;
|
23277 | app.navbar.hide($navbarEl, cardParams.animate, cardParams.hideStatusbarOnOpen, true);
|
23278 | }
|
23279 | }
|
23280 |
|
23281 | if (cardParams.hideToolbarOnOpen && $toolbarEl && $toolbarEl.length) {
|
23282 | if ($toolbarEl.closest('.toolbar-hidden').length) {
|
23283 |
|
23284 | $cardEl[0].f7KeepToolbarOnClose = true;
|
23285 | } else {
|
23286 | delete $cardEl[0].f7KeepToolbarOnClose;
|
23287 | app.toolbar.hide($toolbarEl, cardParams.animate);
|
23288 | }
|
23289 | }
|
23290 |
|
23291 | if ($backdropEl) {
|
23292 | $backdropEl.removeClass('card-backdrop-out').addClass('card-backdrop-in');
|
23293 | }
|
23294 |
|
23295 | $cardEl.removeClass('card-transitioning');
|
23296 |
|
23297 | if (cardParams.animate) {
|
23298 | $cardEl.addClass('card-opening');
|
23299 | }
|
23300 |
|
23301 | $cardEl.trigger('card:open');
|
23302 | app.emit('cardOpen', $cardEl[0]);
|
23303 |
|
23304 | function transitionEnd() {
|
23305 | $pageEl.addClass('page-with-card-opened');
|
23306 |
|
23307 | if (device.ios && $pageContentEl.length) {
|
23308 | $pageContentEl.css('height', $pageContentEl[0].offsetHeight + 1 + "px");
|
23309 | setTimeout(function () {
|
23310 | $pageContentEl.css('height', '');
|
23311 | });
|
23312 | }
|
23313 |
|
23314 | $cardEl.addClass('card-opened');
|
23315 | $cardEl.removeClass('card-opening');
|
23316 | $cardEl.trigger('card:opened');
|
23317 | app.emit('cardOpened', $cardEl[0], $pageEl[0]);
|
23318 | }
|
23319 |
|
23320 | $cardContentEl.css({
|
23321 | width: maxWidth + "px",
|
23322 | height: maxHeight + "px"
|
23323 | }).transform("translate3d(" + (app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX) + "px, 0px, 0) scale(" + 1 / scaleX + ", " + 1 / scaleY + ")");
|
23324 | $cardEl.transform("translate3d(" + (app.rtl ? -translateX : translateX) + "px, " + translateY + "px, 0) scale(" + scaleX + ", " + scaleY + ")");
|
23325 |
|
23326 | if (cardParams.animate) {
|
23327 | $cardEl.transitionEnd(function () {
|
23328 | transitionEnd();
|
23329 | });
|
23330 | } else {
|
23331 | transitionEnd();
|
23332 | }
|
23333 |
|
23334 | function onResize() {
|
23335 | $cardEl.removeClass('card-transitioning');
|
23336 | cardWidth = $cardEl[0].offsetWidth;
|
23337 | cardHeight = $cardEl[0].offsetHeight;
|
23338 | pageWidth = $pageEl[0].offsetWidth;
|
23339 | pageHeight = $pageEl[0].offsetHeight;
|
23340 | maxWidth = $cardSizeEl[0].offsetWidth || pageWidth;
|
23341 | maxHeight = $cardSizeEl[0].offsetHeight || pageHeight;
|
23342 | statusbarHeight = 0;
|
23343 |
|
23344 | if ($navbarEl && !cardParams.hideStatusbarOnOpen && maxHeight === pageHeight) {
|
23345 | statusbarHeight = parseInt($navbarEl.css('--f7-safe-area-top'), 10);
|
23346 | if (Number.isNaN(statusbarHeight)) statusbarHeight = 0;
|
23347 | }
|
23348 |
|
23349 | if (statusbarHeight) {
|
23350 | maxHeight -= statusbarHeight;
|
23351 | }
|
23352 |
|
23353 | scaleX = maxWidth / cardWidth;
|
23354 | scaleY = maxHeight / cardHeight;
|
23355 | $cardEl.transform('translate3d(0px, 0px, 0) scale(1)');
|
23356 | offset = $cardEl.offset();
|
23357 | pageOffset = $pageEl.offset();
|
23358 |
|
23359 | if (statusbarHeight) {
|
23360 | pageOffset.top += statusbarHeight / 2;
|
23361 | }
|
23362 |
|
23363 | offset.left -= pageOffset.left;
|
23364 | offset.top -= pageOffset.top;
|
23365 | cardLeftOffset = offset.left - (pageWidth - maxWidth) / 2;
|
23366 | if (app.rtl) cardLeftOffset -= $cardEl[0].scrollLeft;
|
23367 | cardTopOffset = offset.top - (pageHeight - maxHeight) / 2;
|
23368 | cardRightOffset = maxWidth - cardWidth - cardLeftOffset;
|
23369 | cardBottomOffset = maxHeight - cardHeight - cardTopOffset;
|
23370 |
|
23371 | if (app.rtl) {
|
23372 | var _ref2 = [cardRightOffset, cardLeftOffset];
|
23373 | cardLeftOffset = _ref2[0];
|
23374 | cardRightOffset = _ref2[1];
|
23375 | }
|
23376 |
|
23377 | translateX = (cardRightOffset - cardLeftOffset) / 2;
|
23378 | translateY = (cardBottomOffset - cardTopOffset) / 2;
|
23379 | $cardEl.transform("translate3d(" + (app.rtl ? -translateX : translateX) + "px, " + translateY + "px, 0) scale(" + scaleX + ", " + scaleY + ")");
|
23380 | $cardContentEl.css({
|
23381 | width: maxWidth + "px",
|
23382 | height: maxHeight + "px"
|
23383 | }).transform("translate3d(" + (app.rtl ? cardLeftOffset + translateX : -cardLeftOffset - translateX) + "px, 0px, 0) scale(" + 1 / scaleX + ", " + 1 / scaleY + ")");
|
23384 | }
|
23385 |
|
23386 | var cardScrollTop;
|
23387 | var isTouched;
|
23388 | var isMoved;
|
23389 | var touchStartX;
|
23390 | var touchStartY;
|
23391 | var touchEndX;
|
23392 | var touchEndY;
|
23393 | var isScrolling;
|
23394 | var progress;
|
23395 | var isV;
|
23396 | var isH;
|
23397 | var $cardScrollableEl;
|
23398 |
|
23399 | function onTouchStart(e) {
|
23400 | if (!$(e.target).closest($cardEl).length) return;
|
23401 | if (!$cardEl.hasClass('card-opened')) return;
|
23402 | $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);
|
23403 |
|
23404 | if ($cardScrollableEl[0] && $cardScrollableEl[0] !== $cardContentEl[0] && !$cardScrollableEl[0].contains(e.target)) {
|
23405 | cardScrollTop = 0;
|
23406 | } else {
|
23407 | cardScrollTop = $cardScrollableEl.scrollTop();
|
23408 | }
|
23409 |
|
23410 | isTouched = true;
|
23411 | touchStartX = e.targetTouches[0].pageX;
|
23412 | touchStartY = e.targetTouches[0].pageY;
|
23413 | isScrolling = undefined;
|
23414 | isV = false;
|
23415 | isH = false;
|
23416 | }
|
23417 |
|
23418 | function onTouchMove(e) {
|
23419 | if (!isTouched) return;
|
23420 | touchEndX = e.targetTouches[0].pageX;
|
23421 | touchEndY = e.targetTouches[0].pageY;
|
23422 |
|
23423 | if (typeof isScrolling === 'undefined') {
|
23424 | isScrolling = !!(isScrolling || Math.abs(touchEndY - touchStartY) > Math.abs(touchEndX - touchStartX));
|
23425 | }
|
23426 |
|
23427 | if (!isH && !isV) {
|
23428 | if (!isScrolling && e.targetTouches[0].clientX <= 50) {
|
23429 | isH = true;
|
23430 | } else {
|
23431 | isV = true;
|
23432 | }
|
23433 | }
|
23434 |
|
23435 | if (!(isH || isV) || isV && cardScrollTop !== 0) {
|
23436 | isTouched = true;
|
23437 | isMoved = true;
|
23438 | return;
|
23439 | }
|
23440 |
|
23441 | if (!isMoved) {
|
23442 | $cardEl.removeClass('card-transitioning');
|
23443 | }
|
23444 |
|
23445 | isMoved = true;
|
23446 | progress = isV ? Math.max((touchEndY - touchStartY) / 150, 0) : Math.max((touchEndX - touchStartX) / (cardWidth / 2), 0);
|
23447 |
|
23448 | if (progress > 0 && isV || isH) {
|
23449 | if (isV && device.ios && $cardScrollableEl[0] === $cardContentEl[0]) {
|
23450 | $cardScrollableEl.css('-webkit-overflow-scrolling', 'auto');
|
23451 | $cardScrollableEl.scrollTop(0);
|
23452 | }
|
23453 |
|
23454 | e.preventDefault();
|
23455 | }
|
23456 |
|
23457 | if (progress > 1) progress = Math.pow(progress, 0.3);
|
23458 |
|
23459 | if (progress > (isV ? 1.3 : 1.1)) {
|
23460 | isTouched = false;
|
23461 | isMoved = false;
|
23462 | app.card.close($cardEl);
|
23463 | } else {
|
23464 | $cardEl.transform("translate3d(" + (app.rtl ? -translateX : translateX) + "px, " + translateY + "px, 0) scale(" + scaleX * (1 - progress * 0.2) + ", " + scaleY * (1 - progress * 0.2) + ")");
|
23465 | }
|
23466 | }
|
23467 |
|
23468 | function onTouchEnd() {
|
23469 | if (!isTouched || !isMoved) return;
|
23470 | isTouched = false;
|
23471 | isMoved = false;
|
23472 |
|
23473 | if (device.ios) {
|
23474 | $cardScrollableEl.css('-webkit-overflow-scrolling', '');
|
23475 | }
|
23476 |
|
23477 | if (progress >= 0.8) {
|
23478 | app.card.close($cardEl);
|
23479 | } else {
|
23480 | $cardEl.addClass('card-transitioning').transform("translate3d(" + (app.rtl ? -translateX : translateX) + "px, " + translateY + "px, 0) scale(" + scaleX + ", " + scaleY + ")");
|
23481 | }
|
23482 | }
|
23483 |
|
23484 | $cardEl[0].detachEventHandlers = function detachEventHandlers() {
|
23485 | app.off('resize', onResize);
|
23486 |
|
23487 | if (support.touch && cardParams.swipeToClose) {
|
23488 | app.off('touchstart:passive', onTouchStart);
|
23489 | app.off('touchmove:active', onTouchMove);
|
23490 | app.off('touchend:passive', onTouchEnd);
|
23491 | }
|
23492 | };
|
23493 |
|
23494 | app.on('resize', onResize);
|
23495 |
|
23496 | if (support.touch && cardParams.swipeToClose) {
|
23497 | app.on('touchstart:passive', onTouchStart);
|
23498 | app.on('touchmove:active', onTouchMove);
|
23499 | app.on('touchend:passive', onTouchEnd);
|
23500 | }
|
23501 | },
|
23502 | close: function close(cardEl, animate) {
|
23503 | if (cardEl === void 0) {
|
23504 | cardEl = '.card-expandable.card-opened';
|
23505 | }
|
23506 |
|
23507 | if (animate === void 0) {
|
23508 | animate = true;
|
23509 | }
|
23510 |
|
23511 | var app = this;
|
23512 | var device = getDevice$1();
|
23513 | var $cardEl = $(cardEl).eq(0);
|
23514 | if (!$cardEl || !$cardEl.length) return;
|
23515 | if (!$cardEl.hasClass('card-opened') || $cardEl.hasClass('card-opening') || $cardEl.hasClass('card-closing')) return;
|
23516 | var $cardContentEl = $cardEl.children('.card-content');
|
23517 | var $pageContentEl = $cardEl.parents('.page-content');
|
23518 | var $pageEl = $cardEl.parents('.page').eq(0);
|
23519 | if (!$pageEl.length) return;
|
23520 | var cardParams = Object.assign({
|
23521 | animate: animate
|
23522 | }, app.params.card, $cardEl.dataset());
|
23523 | var $cardScrollableEl = $cardEl.find(cardParams.scrollableEl);
|
23524 | var $navbarEl;
|
23525 | var $toolbarEl;
|
23526 | var $backdropEl;
|
23527 |
|
23528 | if ($cardEl.attr('data-backdrop-el')) {
|
23529 | $backdropEl = $($cardEl.attr('data-backdrop-el'));
|
23530 | }
|
23531 |
|
23532 | if (cardParams.backdrop) {
|
23533 | $backdropEl = $cardEl.parents('.page-content').find('.card-backdrop');
|
23534 | }
|
23535 |
|
23536 | if (cardParams.hideNavbarOnOpen) {
|
23537 | $navbarEl = $pageEl.children('.navbar');
|
23538 |
|
23539 | if (!$navbarEl.length) {
|
23540 | if ($pageEl[0].f7Page) $navbarEl = $pageEl[0].f7Page.$navbarEl;
|
23541 | }
|
23542 |
|
23543 | if ($navbarEl && $navbarEl.length && !$cardEl[0].f7KeepNavbarOnClose) {
|
23544 | app.navbar.show($navbarEl, cardParams.animate, true);
|
23545 | }
|
23546 | }
|
23547 |
|
23548 | if (cardParams.hideToolbarOnOpen) {
|
23549 | $toolbarEl = $pageEl.children('.toolbar');
|
23550 |
|
23551 | if (!$toolbarEl.length) {
|
23552 | $toolbarEl = $pageEl.parents('.view').children('.toolbar');
|
23553 | }
|
23554 |
|
23555 | if (!$toolbarEl.length) {
|
23556 | $toolbarEl = $pageEl.parents('.views').children('.toolbar');
|
23557 | }
|
23558 |
|
23559 | if ($toolbarEl && $toolbarEl.length && !$cardEl[0].f7KeepToolbarOnClose) {
|
23560 | app.toolbar.show($toolbarEl, cardParams.animate);
|
23561 | }
|
23562 | }
|
23563 |
|
23564 | $pageEl.removeClass('page-with-card-opened');
|
23565 |
|
23566 | if (device.ios && $pageContentEl.length) {
|
23567 | $pageContentEl.css('height', $pageContentEl[0].offsetHeight + 1 + "px");
|
23568 | setTimeout(function () {
|
23569 | $pageContentEl.css('height', '');
|
23570 | });
|
23571 | }
|
23572 |
|
23573 | if ($backdropEl && $backdropEl.length) {
|
23574 | $backdropEl.removeClass('card-backdrop-in').addClass('card-backdrop-out');
|
23575 | }
|
23576 |
|
23577 | $cardEl.removeClass('card-opened card-transitioning');
|
23578 |
|
23579 | if (cardParams.animate) {
|
23580 | $cardEl.addClass('card-closing');
|
23581 | } else {
|
23582 | $cardEl.addClass('card-no-transition');
|
23583 | }
|
23584 |
|
23585 | $cardEl.transform('');
|
23586 | $cardEl.trigger('card:close');
|
23587 | app.emit('cardClose', $cardEl[0], $pageEl[0]);
|
23588 | var animateWidth = $cardEl.hasClass('card-expandable-animate-width');
|
23589 |
|
23590 | function transitionEnd() {
|
23591 | if (!animateWidth) {
|
23592 | $cardContentEl.css({
|
23593 | width: '',
|
23594 | height: ''
|
23595 | });
|
23596 | }
|
23597 |
|
23598 | if ($backdropEl && $backdropEl.length) {
|
23599 | $backdropEl.removeClass('card-backdrop-in card-backdrop-out');
|
23600 | }
|
23601 |
|
23602 | $cardEl.removeClass('card-closing card-no-transition');
|
23603 | $cardEl.trigger('card:closed');
|
23604 | $cardEl.find('.card-expandable-size').remove();
|
23605 | app.emit('cardClosed', $cardEl[0], $pageEl[0]);
|
23606 | }
|
23607 |
|
23608 | if (animateWidth) {
|
23609 | $cardContentEl.css({
|
23610 | width: '',
|
23611 | height: ''
|
23612 | });
|
23613 | }
|
23614 |
|
23615 | $cardContentEl.transform('').scrollTop(0, animate ? 300 : 0);
|
23616 |
|
23617 | if ($cardScrollableEl.length && $cardScrollableEl[0] !== $cardContentEl[0]) {
|
23618 | $cardScrollableEl.scrollTop(0, animate ? 300 : 0);
|
23619 | }
|
23620 |
|
23621 | if (animate) {
|
23622 | $cardContentEl.transitionEnd(function () {
|
23623 | transitionEnd();
|
23624 | });
|
23625 | } else {
|
23626 | transitionEnd();
|
23627 | }
|
23628 |
|
23629 | if ($cardEl[0].detachEventHandlers) {
|
23630 | $cardEl[0].detachEventHandlers();
|
23631 | delete $cardEl[0].detachEventHandlers;
|
23632 | }
|
23633 | },
|
23634 | toggle: function toggle(cardEl, animate) {
|
23635 | if (cardEl === void 0) {
|
23636 | cardEl = '.card-expandable';
|
23637 | }
|
23638 |
|
23639 | var app = this;
|
23640 | var $cardEl = $(cardEl).eq(0);
|
23641 | if (!$cardEl.length) return;
|
23642 |
|
23643 | if ($cardEl.hasClass('card-opened')) {
|
23644 | app.card.close($cardEl, animate);
|
23645 | } else {
|
23646 | app.card.open($cardEl, animate);
|
23647 | }
|
23648 | }
|
23649 | };
|
23650 | var Card = {
|
23651 | name: 'card',
|
23652 | params: {
|
23653 | card: {
|
23654 | hideNavbarOnOpen: true,
|
23655 | hideStatusbarOnOpen: true,
|
23656 | hideToolbarOnOpen: true,
|
23657 | scrollableEl: '.card-content',
|
23658 | swipeToClose: true,
|
23659 | closeByBackdropClick: true,
|
23660 | backdrop: true
|
23661 | }
|
23662 | },
|
23663 | create: function create() {
|
23664 | var app = this;
|
23665 | bindMethods(app, {
|
23666 | card: CardExpandable
|
23667 | });
|
23668 | },
|
23669 | on: {
|
23670 | pageBeforeIn: function pageBeforeIn(page) {
|
23671 | var app = this;
|
23672 |
|
23673 | if (app.params.card.hideNavbarOnOpen && page.navbarEl && page.$el.find('.card-opened.card-expandable').length) {
|
23674 | app.navbar.hide(page.navbarEl, true, app.params.card.hideStatusbarOnOpen, true);
|
23675 | }
|
23676 |
|
23677 | if (app.params.card.hideToolbarOnOpen && page.$el.find('.card-opened.card-expandable').length) {
|
23678 | var $toolbarEl = page.$el.children('.toolbar');
|
23679 |
|
23680 | if (!$toolbarEl.length) {
|
23681 | $toolbarEl = page.$el.parents('.view').children('.toolbar');
|
23682 | }
|
23683 |
|
23684 | if (!$toolbarEl.length) {
|
23685 | $toolbarEl = page.$el.parents('.views').children('.toolbar');
|
23686 | }
|
23687 |
|
23688 | if ($toolbarEl && $toolbarEl.length) {
|
23689 | app.toolbar.hide($toolbarEl);
|
23690 | }
|
23691 | }
|
23692 | }
|
23693 | },
|
23694 | clicks: {
|
23695 | '.card-close': function closeCard($clickedEl, data) {
|
23696 | var app = this;
|
23697 | app.card.close(data.card, data.animate);
|
23698 | },
|
23699 | '.card-open': function closeCard($clickedEl, data) {
|
23700 | var app = this;
|
23701 | app.card.open(data.card, data.animate);
|
23702 | },
|
23703 | '.card-expandable': function toggleExpandableCard($clickedEl, data, e) {
|
23704 | var app = this;
|
23705 | if ($clickedEl.hasClass('card-opened') || $clickedEl.hasClass('card-opening') || $clickedEl.hasClass('card-closing')) return;
|
23706 | if ($(e.target).closest('.card-prevent-open, .card-close').length) return;
|
23707 | app.card.open($clickedEl);
|
23708 | },
|
23709 | '.card-backdrop-in': function onBackdropClick() {
|
23710 | var app = this;
|
23711 | var needToClose = false;
|
23712 | if (app.params.card.closeByBackdropClick) needToClose = true;
|
23713 | var $openedCardEl = $('.card-opened');
|
23714 | if (!$openedCardEl.length) return;
|
23715 |
|
23716 | if ($openedCardEl.attr('data-close-by-backdrop-click') === 'true') {
|
23717 | needToClose = true;
|
23718 | } else if ($openedCardEl.attr('data-close-by-backdrop-click') === 'false') {
|
23719 | needToClose = false;
|
23720 | }
|
23721 |
|
23722 | if (needToClose) app.card.close($openedCardEl);
|
23723 | }
|
23724 | }
|
23725 | };
|
23726 |
|
23727 | var Chip = {
|
23728 | name: 'chip'
|
23729 | };
|
23730 |
|
23731 | var FormData$1 = {
|
23732 | store: function store(form, data) {
|
23733 | var app = this;
|
23734 | var window = getWindow();
|
23735 | var formId = form;
|
23736 | var $formEl = $(form);
|
23737 |
|
23738 | if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
|
23739 | formId = $formEl.attr('id');
|
23740 | }
|
23741 |
|
23742 |
|
23743 | app.form.data["form-" + formId] = data;
|
23744 |
|
23745 | window.localStorage["f7form-" + formId] = JSON.stringify(data);
|
23746 | },
|
23747 | get: function get(form) {
|
23748 | var app = this;
|
23749 | var window = getWindow();
|
23750 | var formId = form;
|
23751 | var $formEl = $(form);
|
23752 |
|
23753 | if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
|
23754 | formId = $formEl.attr('id');
|
23755 | }
|
23756 |
|
23757 | if (window.localStorage["f7form-" + formId]) {
|
23758 | return JSON.parse(window.localStorage["f7form-" + formId]);
|
23759 | }
|
23760 |
|
23761 | if (app.form.data["form-" + formId]) {
|
23762 | return app.form.data["form-" + formId];
|
23763 | }
|
23764 |
|
23765 | return undefined;
|
23766 | },
|
23767 | remove: function remove(form) {
|
23768 | var app = this;
|
23769 | var window = getWindow();
|
23770 | var formId = form;
|
23771 | var $formEl = $(form);
|
23772 |
|
23773 | if ($formEl.length && $formEl.is('form') && $formEl.attr('id')) {
|
23774 | formId = $formEl.attr('id');
|
23775 | }
|
23776 |
|
23777 |
|
23778 | if (app.form.data["form-" + formId]) {
|
23779 | app.form.data["form-" + formId] = '';
|
23780 | delete app.form.data["form-" + formId];
|
23781 | }
|
23782 |
|
23783 |
|
23784 | if (window.localStorage["f7form-" + formId]) {
|
23785 | window.localStorage["f7form-" + formId] = '';
|
23786 | window.localStorage.removeItem("f7form-" + formId);
|
23787 | }
|
23788 | }
|
23789 | };
|
23790 |
|
23791 | var FormStorage = {
|
23792 | init: function init(formEl) {
|
23793 | var app = this;
|
23794 | var $formEl = $(formEl);
|
23795 | var formId = $formEl.attr('id');
|
23796 | if (!formId) return;
|
23797 | var initialData = app.form.getFormData(formId);
|
23798 |
|
23799 | if (initialData) {
|
23800 | app.form.fillFromData($formEl, initialData);
|
23801 | }
|
23802 |
|
23803 | function store() {
|
23804 | var data = app.form.convertToData($formEl);
|
23805 | if (!data) return;
|
23806 | app.form.storeFormData(formId, data);
|
23807 | $formEl.trigger('form:storedata', data);
|
23808 | app.emit('formStoreData', $formEl[0], data);
|
23809 | }
|
23810 |
|
23811 | $formEl.on('change submit', store);
|
23812 | },
|
23813 | destroy: function destroy(formEl) {
|
23814 | var $formEl = $(formEl);
|
23815 | $formEl.off('change submit');
|
23816 | }
|
23817 | };
|
23818 |
|
23819 | function formToData(formEl) {
|
23820 | var app = this;
|
23821 | var $formEl = $(formEl).eq(0);
|
23822 | if ($formEl.length === 0) return undefined;
|
23823 |
|
23824 | var data = {};
|
23825 |
|
23826 | var skipTypes = ['submit', 'image', 'button', 'file'];
|
23827 | var skipNames = [];
|
23828 | $formEl.find('input, select, textarea').each(function (inputEl) {
|
23829 | var $inputEl = $(inputEl);
|
23830 |
|
23831 | if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {
|
23832 | return;
|
23833 | }
|
23834 |
|
23835 | var name = $inputEl.attr('name');
|
23836 | var type = $inputEl.attr('type');
|
23837 | var tag = inputEl.nodeName.toLowerCase();
|
23838 | if (skipTypes.indexOf(type) >= 0) return;
|
23839 | if (skipNames.indexOf(name) >= 0 || !name) return;
|
23840 |
|
23841 | if (tag === 'select' && $inputEl.prop('multiple')) {
|
23842 | skipNames.push(name);
|
23843 | data[name] = [];
|
23844 | $formEl.find("select[name=\"" + name + "\"] option").each(function (el) {
|
23845 | if (el.selected) data[name].push(el.value);
|
23846 | });
|
23847 | } else {
|
23848 | switch (type) {
|
23849 | case 'checkbox':
|
23850 | skipNames.push(name);
|
23851 | data[name] = [];
|
23852 | $formEl.find("input[name=\"" + name + "\"]").each(function (el) {
|
23853 | if (el.checked) data[name].push(el.value);
|
23854 | });
|
23855 | break;
|
23856 |
|
23857 | case 'radio':
|
23858 | skipNames.push(name);
|
23859 | $formEl.find("input[name=\"" + name + "\"]").each(function (el) {
|
23860 | if (el.checked) data[name] = el.value;
|
23861 | });
|
23862 | break;
|
23863 |
|
23864 | default:
|
23865 | data[name] = $inputEl.val();
|
23866 | break;
|
23867 | }
|
23868 | }
|
23869 | });
|
23870 | $formEl.trigger('form:todata', data);
|
23871 | app.emit('formToData', $formEl[0], data);
|
23872 | return data;
|
23873 | }
|
23874 |
|
23875 | function formFromData(formEl, formData) {
|
23876 | var app = this;
|
23877 | var $formEl = $(formEl).eq(0);
|
23878 | if (!$formEl.length) return;
|
23879 | var data = formData;
|
23880 | var formId = $formEl.attr('id');
|
23881 |
|
23882 | if (!data && formId) {
|
23883 | data = app.form.getFormData(formId);
|
23884 | }
|
23885 |
|
23886 | if (!data) return;
|
23887 |
|
23888 | var skipTypes = ['submit', 'image', 'button', 'file'];
|
23889 | var skipNames = [];
|
23890 | $formEl.find('input, select, textarea').each(function (inputEl) {
|
23891 | var $inputEl = $(inputEl);
|
23892 |
|
23893 | if ($inputEl.hasClass('ignore-store-data') || $inputEl.hasClass('no-store-data')) {
|
23894 | return;
|
23895 | }
|
23896 |
|
23897 | var name = $inputEl.attr('name');
|
23898 | var type = $inputEl.attr('type');
|
23899 | var tag = inputEl.nodeName.toLowerCase();
|
23900 | if (typeof data[name] === 'undefined' || data[name] === null) return;
|
23901 | if (skipTypes.indexOf(type) >= 0) return;
|
23902 | if (skipNames.indexOf(name) >= 0 || !name) return;
|
23903 |
|
23904 | if (tag === 'select' && $inputEl.prop('multiple')) {
|
23905 | skipNames.push(name);
|
23906 | $formEl.find("select[name=\"" + name + "\"] option").each(function (el) {
|
23907 | var selectEl = el;
|
23908 | if (data[name].indexOf(el.value) >= 0) selectEl.selected = true;else selectEl.selected = false;
|
23909 | });
|
23910 | } else {
|
23911 | switch (type) {
|
23912 | case 'checkbox':
|
23913 | skipNames.push(name);
|
23914 | $formEl.find("input[name=\"" + name + "\"]").each(function (el) {
|
23915 | var checkboxEl = el;
|
23916 | if (data[name].indexOf(el.value) >= 0) checkboxEl.checked = true;else checkboxEl.checked = false;
|
23917 | });
|
23918 | break;
|
23919 |
|
23920 | case 'radio':
|
23921 | skipNames.push(name);
|
23922 | $formEl.find("input[name=\"" + name + "\"]").each(function (el) {
|
23923 | var radioEl = el;
|
23924 | if (data[name] === el.value) radioEl.checked = true;else radioEl.checked = false;
|
23925 | });
|
23926 | break;
|
23927 |
|
23928 | default:
|
23929 | $inputEl.val(data[name]);
|
23930 | break;
|
23931 | }
|
23932 | }
|
23933 |
|
23934 | if (tag === 'select' || tag === 'input' || tag === 'textarea') {
|
23935 | $inputEl.trigger('change', 'fromdata');
|
23936 | }
|
23937 | });
|
23938 | $formEl.trigger('form:fromdata', data);
|
23939 | app.emit('formFromData', $formEl[0], data);
|
23940 | }
|
23941 |
|
23942 | function initAjaxForm() {
|
23943 | var app = this;
|
23944 | var window = getWindow();
|
23945 | var document = getDocument();
|
23946 |
|
23947 | function onSubmitChange(e, fromData) {
|
23948 | var $formEl = $(this);
|
23949 | if (e.type === 'change' && !$formEl.hasClass('form-ajax-submit-onchange')) return;
|
23950 | if (e.type === 'submit') e.preventDefault();
|
23951 | if (e.type === 'change' && fromData === 'fromdata') return;
|
23952 | var method = ($formEl.attr('method') || 'GET').toUpperCase();
|
23953 | var contentType = $formEl.prop('enctype') || $formEl.attr('enctype');
|
23954 | var url = $formEl.attr('action');
|
23955 | if (!url) return;
|
23956 | var data;
|
23957 |
|
23958 | if (method === 'POST') {
|
23959 | if (contentType === 'application/x-www-form-urlencoded') {
|
23960 | data = app.form.convertToData($formEl[0]);
|
23961 | } else {
|
23962 | data = new window.FormData($formEl[0]);
|
23963 | }
|
23964 | } else {
|
23965 | data = serializeObject(app.form.convertToData($formEl[0]));
|
23966 | }
|
23967 |
|
23968 | app.request({
|
23969 | method: method,
|
23970 | url: url,
|
23971 | contentType: contentType,
|
23972 | data: data,
|
23973 | beforeSend: function beforeSend(xhr) {
|
23974 | $formEl.trigger('formajax:beforesend', {
|
23975 | data: data,
|
23976 | xhr: xhr
|
23977 | });
|
23978 | app.emit('formAjaxBeforeSend', $formEl[0], data, xhr);
|
23979 | },
|
23980 | error: function error(xhr) {
|
23981 | $formEl.trigger('formajax:error', {
|
23982 | data: data,
|
23983 | xhr: xhr
|
23984 | });
|
23985 | app.emit('formAjaxError', $formEl[0], data, xhr);
|
23986 | },
|
23987 | complete: function complete(xhr) {
|
23988 | $formEl.trigger('formajax:complete', {
|
23989 | data: data,
|
23990 | xhr: xhr
|
23991 | });
|
23992 | app.emit('formAjaxComplete', $formEl[0], data, xhr);
|
23993 | },
|
23994 | success: function success(response, status, xhr) {
|
23995 | $formEl.trigger('formajax:success', {
|
23996 | data: data,
|
23997 | xhr: xhr
|
23998 | });
|
23999 | app.emit('formAjaxSuccess', $formEl[0], data, xhr);
|
24000 | }
|
24001 | });
|
24002 | }
|
24003 |
|
24004 | $(document).on('submit change', 'form.form-ajax-submit, form.form-ajax-submit-onchange', onSubmitChange);
|
24005 | }
|
24006 |
|
24007 | var Form = {
|
24008 | name: 'form',
|
24009 | create: function create() {
|
24010 | var app = this;
|
24011 | extend$1(app, {
|
24012 | form: {
|
24013 | data: {},
|
24014 | storeFormData: FormData$1.store.bind(app),
|
24015 | getFormData: FormData$1.get.bind(app),
|
24016 | removeFormData: FormData$1.remove.bind(app),
|
24017 | convertToData: formToData.bind(app),
|
24018 | fillFromData: formFromData.bind(app),
|
24019 | storage: {
|
24020 | init: FormStorage.init.bind(app),
|
24021 | destroy: FormStorage.destroy.bind(app)
|
24022 | }
|
24023 | }
|
24024 | });
|
24025 | },
|
24026 | on: {
|
24027 | init: function init() {
|
24028 | var app = this;
|
24029 | initAjaxForm.call(app);
|
24030 | },
|
24031 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
24032 | var app = this;
|
24033 | $(tabEl).find('.form-store-data').each(function (formEl) {
|
24034 | app.form.storage.destroy(formEl);
|
24035 | });
|
24036 | },
|
24037 | tabMounted: function tabMounted(tabEl) {
|
24038 | var app = this;
|
24039 | $(tabEl).find('.form-store-data').each(function (formEl) {
|
24040 | app.form.storage.init(formEl);
|
24041 | });
|
24042 | },
|
24043 | pageBeforeRemove: function pageBeforeRemove(page) {
|
24044 | var app = this;
|
24045 | page.$el.find('.form-store-data').each(function (formEl) {
|
24046 | app.form.storage.destroy(formEl);
|
24047 | });
|
24048 | },
|
24049 | pageInit: function pageInit(page) {
|
24050 | var app = this;
|
24051 | page.$el.find('.form-store-data').each(function (formEl) {
|
24052 | app.form.storage.init(formEl);
|
24053 | });
|
24054 | }
|
24055 | }
|
24056 | };
|
24057 |
|
24058 | var Input = {
|
24059 | ignoreTypes: ['checkbox', 'button', 'submit', 'range', 'radio', 'image'],
|
24060 | createTextareaResizableShadow: function createTextareaResizableShadow() {
|
24061 | var document = getDocument();
|
24062 | var $shadowEl = $(document.createElement('textarea'));
|
24063 | $shadowEl.addClass('textarea-resizable-shadow');
|
24064 | $shadowEl.prop({
|
24065 | disabled: true,
|
24066 | readonly: true
|
24067 | });
|
24068 | Input.textareaResizableShadow = $shadowEl;
|
24069 | },
|
24070 | textareaResizableShadow: undefined,
|
24071 | resizeTextarea: function resizeTextarea(textareaEl) {
|
24072 | var app = this;
|
24073 | var window = getWindow();
|
24074 | var $textareaEl = $(textareaEl);
|
24075 |
|
24076 | if (!Input.textareaResizableShadow) {
|
24077 | Input.createTextareaResizableShadow();
|
24078 | }
|
24079 |
|
24080 | var $shadowEl = Input.textareaResizableShadow;
|
24081 | if (!$textareaEl.length) return;
|
24082 | if (!$textareaEl.hasClass('resizable')) return;
|
24083 |
|
24084 | if (Input.textareaResizableShadow.parents().length === 0) {
|
24085 | app.$el.append($shadowEl);
|
24086 | }
|
24087 |
|
24088 | var styles = window.getComputedStyle($textareaEl[0]);
|
24089 | 'padding-top padding-bottom padding-left padding-right margin-left margin-right margin-top margin-bottom width font-size font-family font-style font-weight line-height font-variant text-transform letter-spacing border box-sizing display'.split(' ').forEach(function (style) {
|
24090 | var styleValue = styles[style];
|
24091 |
|
24092 | if ('font-size line-height letter-spacing width'.split(' ').indexOf(style) >= 0) {
|
24093 | styleValue = styleValue.replace(',', '.');
|
24094 | }
|
24095 |
|
24096 | $shadowEl.css(style, styleValue);
|
24097 | });
|
24098 | var currentHeight = $textareaEl[0].clientHeight;
|
24099 | $shadowEl.val('');
|
24100 | var initialHeight = $shadowEl[0].scrollHeight;
|
24101 | $shadowEl.val($textareaEl.val());
|
24102 | $shadowEl.css('height', 0);
|
24103 | var scrollHeight = $shadowEl[0].scrollHeight;
|
24104 |
|
24105 | if (currentHeight !== scrollHeight) {
|
24106 | if (scrollHeight > initialHeight) {
|
24107 | $textareaEl.css('height', scrollHeight + "px");
|
24108 | } else if (scrollHeight < currentHeight) {
|
24109 | $textareaEl.css('height', '');
|
24110 | }
|
24111 |
|
24112 | if (scrollHeight > initialHeight || scrollHeight < currentHeight) {
|
24113 | $textareaEl.trigger('textarea:resize', {
|
24114 | initialHeight: initialHeight,
|
24115 | currentHeight: currentHeight,
|
24116 | scrollHeight: scrollHeight
|
24117 | });
|
24118 | app.emit('textareaResize', {
|
24119 | initialHeight: initialHeight,
|
24120 | currentHeight: currentHeight,
|
24121 | scrollHeight: scrollHeight
|
24122 | });
|
24123 | }
|
24124 | }
|
24125 | },
|
24126 | validate: function validate(inputEl) {
|
24127 | var $inputEl = $(inputEl);
|
24128 | if (!$inputEl.length) return true;
|
24129 | var $itemInputEl = $inputEl.parents('.item-input');
|
24130 | var $inputWrapEl = $inputEl.parents('.input');
|
24131 |
|
24132 | function unsetReadonly() {
|
24133 | if ($inputEl[0].f7ValidateReadonly) {
|
24134 | $inputEl[0].readOnly = false;
|
24135 | }
|
24136 | }
|
24137 |
|
24138 | function setReadonly() {
|
24139 | if ($inputEl[0].f7ValidateReadonly) {
|
24140 | $inputEl[0].readOnly = true;
|
24141 | }
|
24142 | }
|
24143 |
|
24144 | unsetReadonly();
|
24145 | var validity = $inputEl[0].validity;
|
24146 | var validationMessage = $inputEl.dataset().errorMessage || $inputEl[0].validationMessage || '';
|
24147 |
|
24148 | if (!validity) {
|
24149 | setReadonly();
|
24150 | return true;
|
24151 | }
|
24152 |
|
24153 | if (!validity.valid) {
|
24154 | var $errorEl = $inputEl.nextAll('.item-input-error-message, .input-error-message');
|
24155 |
|
24156 | if (validationMessage) {
|
24157 | if ($errorEl.length === 0) {
|
24158 | $errorEl = $("<div class=\"" + ($inputWrapEl.length ? 'input-error-message' : 'item-input-error-message') + "\"></div>");
|
24159 | $errorEl.insertAfter($inputEl);
|
24160 | }
|
24161 |
|
24162 | $errorEl.text(validationMessage);
|
24163 | }
|
24164 |
|
24165 | if ($errorEl.length > 0) {
|
24166 | $itemInputEl.addClass('item-input-with-error-message');
|
24167 | $inputWrapEl.addClass('input-with-error-message');
|
24168 | }
|
24169 |
|
24170 | $itemInputEl.addClass('item-input-invalid');
|
24171 | $inputWrapEl.addClass('input-invalid');
|
24172 | $inputEl.addClass('input-invalid');
|
24173 | setReadonly();
|
24174 | return false;
|
24175 | }
|
24176 |
|
24177 | $itemInputEl.removeClass('item-input-invalid item-input-with-error-message');
|
24178 | $inputWrapEl.removeClass('input-invalid input-with-error-message');
|
24179 | $inputEl.removeClass('input-invalid');
|
24180 | setReadonly();
|
24181 | return true;
|
24182 | },
|
24183 | validateInputs: function validateInputs(el) {
|
24184 | var app = this;
|
24185 | var validates = $(el).find('input, textarea, select').map(function (inputEl) {
|
24186 | return app.input.validate(inputEl);
|
24187 | });
|
24188 | return validates.indexOf(false) < 0;
|
24189 | },
|
24190 | focus: function focus(inputEl) {
|
24191 | var $inputEl = $(inputEl);
|
24192 | var type = $inputEl.attr('type');
|
24193 | if (Input.ignoreTypes.indexOf(type) >= 0) return;
|
24194 | $inputEl.parents('.item-input').addClass('item-input-focused');
|
24195 | $inputEl.parents('.input').addClass('input-focused');
|
24196 | $inputEl.addClass('input-focused');
|
24197 | },
|
24198 | blur: function blur(inputEl) {
|
24199 | var $inputEl = $(inputEl);
|
24200 | $inputEl.parents('.item-input').removeClass('item-input-focused');
|
24201 | $inputEl.parents('.input').removeClass('input-focused');
|
24202 | $inputEl.removeClass('input-focused');
|
24203 | },
|
24204 | checkEmptyState: function checkEmptyState(inputEl) {
|
24205 | var app = this;
|
24206 | var $inputEl = $(inputEl);
|
24207 |
|
24208 | if (!$inputEl.is('input, select, textarea, .item-input [contenteditable]')) {
|
24209 | $inputEl = $inputEl.find('input, select, textarea, .item-input [contenteditable]').eq(0);
|
24210 | }
|
24211 |
|
24212 | if (!$inputEl.length) return;
|
24213 | var isContentEditable = $inputEl[0].hasAttribute('contenteditable');
|
24214 | var value;
|
24215 |
|
24216 | if (isContentEditable) {
|
24217 | if ($inputEl.find('.text-editor-placeholder').length) value = '';else value = $inputEl.html();
|
24218 | } else {
|
24219 | value = $inputEl.val();
|
24220 | }
|
24221 |
|
24222 | var $itemInputEl = $inputEl.parents('.item-input');
|
24223 | var $inputWrapEl = $inputEl.parents('.input');
|
24224 |
|
24225 | if (value && typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0) {
|
24226 | $itemInputEl.addClass('item-input-with-value');
|
24227 | $inputWrapEl.addClass('input-with-value');
|
24228 | $inputEl.addClass('input-with-value');
|
24229 | $inputEl.trigger('input:notempty');
|
24230 | app.emit('inputNotEmpty', $inputEl[0]);
|
24231 | } else {
|
24232 | $itemInputEl.removeClass('item-input-with-value');
|
24233 | $inputWrapEl.removeClass('input-with-value');
|
24234 | $inputEl.removeClass('input-with-value');
|
24235 | $inputEl.trigger('input:empty');
|
24236 | app.emit('inputEmpty', $inputEl[0]);
|
24237 | }
|
24238 | },
|
24239 | scrollIntoView: function scrollIntoView(inputEl, duration, centered, force) {
|
24240 | if (duration === void 0) {
|
24241 | duration = 0;
|
24242 | }
|
24243 |
|
24244 | var $inputEl = $(inputEl);
|
24245 | var $scrollableEl = $inputEl.parents('.page-content, .panel, .card-expandable .card-content').eq(0);
|
24246 |
|
24247 | if (!$scrollableEl.length) {
|
24248 | return false;
|
24249 | }
|
24250 |
|
24251 | var contentHeight = $scrollableEl[0].offsetHeight;
|
24252 | var contentScrollTop = $scrollableEl[0].scrollTop;
|
24253 | var contentPaddingTop = parseInt($scrollableEl.css('padding-top'), 10);
|
24254 | var contentPaddingBottom = parseInt($scrollableEl.css('padding-bottom'), 10);
|
24255 | var contentOffsetTop = $scrollableEl.offset().top - contentScrollTop;
|
24256 | var inputOffsetTop = $inputEl.offset().top - contentOffsetTop;
|
24257 | var inputHeight = $inputEl[0].offsetHeight;
|
24258 | var min = inputOffsetTop + contentScrollTop - contentPaddingTop;
|
24259 | var max = inputOffsetTop + contentScrollTop - contentHeight + contentPaddingBottom + inputHeight;
|
24260 | var centeredPosition = min + (max - min) / 2;
|
24261 |
|
24262 | if (contentScrollTop > min) {
|
24263 | $scrollableEl.scrollTop(centered ? centeredPosition : min, duration);
|
24264 | return true;
|
24265 | }
|
24266 |
|
24267 | if (contentScrollTop < max) {
|
24268 | $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);
|
24269 | return true;
|
24270 | }
|
24271 |
|
24272 | if (force) {
|
24273 | $scrollableEl.scrollTop(centered ? centeredPosition : max, duration);
|
24274 | }
|
24275 |
|
24276 | return false;
|
24277 | },
|
24278 | init: function init() {
|
24279 | var app = this;
|
24280 | var device = getDevice$1();
|
24281 | var window = getWindow();
|
24282 | var document = getDocument();
|
24283 | Input.createTextareaResizableShadow();
|
24284 |
|
24285 | function onFocus() {
|
24286 | var inputEl = this;
|
24287 |
|
24288 | if (app.params.input.scrollIntoViewOnFocus) {
|
24289 | if (device.android) {
|
24290 | $(window).once('resize', function () {
|
24291 | if (document && document.activeElement === inputEl) {
|
24292 | app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);
|
24293 | }
|
24294 | });
|
24295 | } else {
|
24296 | app.input.scrollIntoView(inputEl, app.params.input.scrollIntoViewDuration, app.params.input.scrollIntoViewCentered, app.params.input.scrollIntoViewAlways);
|
24297 | }
|
24298 | }
|
24299 |
|
24300 | app.input.focus(inputEl);
|
24301 | }
|
24302 |
|
24303 | function onBlur() {
|
24304 | var $inputEl = $(this);
|
24305 | var tag = $inputEl[0].nodeName.toLowerCase();
|
24306 | app.input.blur($inputEl);
|
24307 |
|
24308 | if ($inputEl.dataset().validate || $inputEl.attr('validate') !== null || $inputEl.attr('data-validate-on-blur') !== null) {
|
24309 | app.input.validate($inputEl);
|
24310 | }
|
24311 |
|
24312 |
|
24313 | if (tag === 'textarea' && $inputEl.hasClass('resizable')) {
|
24314 | if (Input.textareaResizableShadow) Input.textareaResizableShadow.remove();
|
24315 | }
|
24316 | }
|
24317 |
|
24318 | function onChange() {
|
24319 | var $inputEl = $(this);
|
24320 | var type = $inputEl.attr('type');
|
24321 | var tag = $inputEl[0].nodeName.toLowerCase();
|
24322 | var isContentEditable = $inputEl[0].hasAttribute('contenteditable');
|
24323 | if (Input.ignoreTypes.indexOf(type) >= 0) return;
|
24324 |
|
24325 | app.input.checkEmptyState($inputEl);
|
24326 | if (isContentEditable) return;
|
24327 |
|
24328 | if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {
|
24329 | app.input.validate($inputEl);
|
24330 | }
|
24331 |
|
24332 |
|
24333 | if (tag === 'textarea' && $inputEl.hasClass('resizable')) {
|
24334 | app.input.resizeTextarea($inputEl);
|
24335 | }
|
24336 | }
|
24337 |
|
24338 | function onInvalid(e) {
|
24339 | var $inputEl = $(this);
|
24340 |
|
24341 | if ($inputEl.attr('data-validate-on-blur') === null && ($inputEl.dataset().validate || $inputEl.attr('validate') !== null)) {
|
24342 | e.preventDefault();
|
24343 | app.input.validate($inputEl);
|
24344 | }
|
24345 | }
|
24346 |
|
24347 | function clearInput() {
|
24348 | var $clicked = $(this);
|
24349 | var $inputEl = $clicked.siblings('input, textarea').eq(0);
|
24350 | var previousValue = $inputEl.val();
|
24351 | $inputEl.val('').trigger('input change').focus().trigger('input:clear', previousValue);
|
24352 | app.emit('inputClear', previousValue);
|
24353 | }
|
24354 |
|
24355 | function preventDefault(e) {
|
24356 | e.preventDefault();
|
24357 | }
|
24358 |
|
24359 | $(document).on('click', '.input-clear-button', clearInput);
|
24360 | $(document).on('mousedown', '.input-clear-button', preventDefault);
|
24361 | $(document).on('change input', 'input, textarea, select, .item-input [contenteditable]', onChange, true);
|
24362 | $(document).on('focus', 'input, textarea, select, .item-input [contenteditable]', onFocus, true);
|
24363 | $(document).on('blur', 'input, textarea, select, .item-input [contenteditable]', onBlur, true);
|
24364 | $(document).on('invalid', 'input, textarea, select', onInvalid, true);
|
24365 | }
|
24366 | };
|
24367 | var Input$1 = {
|
24368 | name: 'input',
|
24369 | params: {
|
24370 | input: {
|
24371 | scrollIntoViewOnFocus: undefined,
|
24372 | scrollIntoViewCentered: false,
|
24373 | scrollIntoViewDuration: 0,
|
24374 | scrollIntoViewAlways: false
|
24375 | }
|
24376 | },
|
24377 | create: function create() {
|
24378 | var app = this;
|
24379 |
|
24380 | if (typeof app.params.input.scrollIntoViewOnFocus === 'undefined') {
|
24381 | app.params.input.scrollIntoViewOnFocus = getDevice$1().android;
|
24382 | }
|
24383 |
|
24384 | bindMethods(app, {
|
24385 | input: Input
|
24386 | });
|
24387 | },
|
24388 | on: {
|
24389 | init: function init() {
|
24390 | var app = this;
|
24391 | app.input.init();
|
24392 | },
|
24393 | tabMounted: function tabMounted(tabEl) {
|
24394 | var app = this;
|
24395 | var $tabEl = $(tabEl);
|
24396 | $tabEl.find('.item-input, .input').each(function (itemInputEl) {
|
24397 | var $itemInputEl = $(itemInputEl);
|
24398 | $itemInputEl.find('input, select, textarea, [contenteditable]').each(function (inputEl) {
|
24399 | var $inputEl = $(inputEl);
|
24400 | if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;
|
24401 | app.input.checkEmptyState($inputEl);
|
24402 | });
|
24403 | });
|
24404 | $tabEl.find('textarea.resizable').each(function (textareaEl) {
|
24405 | app.input.resizeTextarea(textareaEl);
|
24406 | });
|
24407 | },
|
24408 | pageInit: function pageInit(page) {
|
24409 | var app = this;
|
24410 | var $pageEl = page.$el;
|
24411 | $pageEl.find('.item-input, .input').each(function (itemInputEl) {
|
24412 | var $itemInputEl = $(itemInputEl);
|
24413 | $itemInputEl.find('input, select, textarea, [contenteditable]').each(function (inputEl) {
|
24414 | var $inputEl = $(inputEl);
|
24415 | if (Input.ignoreTypes.indexOf($inputEl.attr('type')) >= 0) return;
|
24416 | app.input.checkEmptyState($inputEl);
|
24417 | });
|
24418 | });
|
24419 | $pageEl.find('textarea.resizable').each(function (textareaEl) {
|
24420 | app.input.resizeTextarea(textareaEl);
|
24421 | });
|
24422 | },
|
24423 | 'panelBreakpoint panelCollapsedBreakpoint panelResize panelOpen panelSwipeOpen resize viewMasterDetailBreakpoint': function onPanelOpen(instance) {
|
24424 | var app = this;
|
24425 |
|
24426 | if (instance && instance.$el) {
|
24427 | instance.$el.find('textarea.resizable').each(function (textareaEl) {
|
24428 | app.input.resizeTextarea(textareaEl);
|
24429 | });
|
24430 | } else {
|
24431 | $('textarea.resizable').each(function (textareaEl) {
|
24432 | app.input.resizeTextarea(textareaEl);
|
24433 | });
|
24434 | }
|
24435 | }
|
24436 | }
|
24437 | };
|
24438 |
|
24439 | var Checkbox = {
|
24440 | name: 'checkbox'
|
24441 | };
|
24442 |
|
24443 | var Radio = {
|
24444 | name: 'radio'
|
24445 | };
|
24446 |
|
24447 | var Toggle$1 = function (_Framework7Class) {
|
24448 | _inheritsLoose(Toggle, _Framework7Class);
|
24449 |
|
24450 | function Toggle(app, params) {
|
24451 | var _this;
|
24452 |
|
24453 | if (params === void 0) {
|
24454 | params = {};
|
24455 | }
|
24456 |
|
24457 | _this = _Framework7Class.call(this, params, [app]) || this;
|
24458 |
|
24459 | var toggle = _assertThisInitialized(_this);
|
24460 |
|
24461 | var support = getSupport$1();
|
24462 | var defaults = {};
|
24463 |
|
24464 | toggle.useModulesParams(defaults);
|
24465 | toggle.params = extend$1(defaults, params);
|
24466 | var el = toggle.params.el;
|
24467 | if (!el) return toggle || _assertThisInitialized(_this);
|
24468 | var $el = $(el);
|
24469 | if ($el.length === 0) return toggle || _assertThisInitialized(_this);
|
24470 | if ($el[0].f7Toggle) return $el[0].f7Toggle || _assertThisInitialized(_this);
|
24471 | var $inputEl = $el.children('input[type="checkbox"]');
|
24472 | extend$1(toggle, {
|
24473 | app: app,
|
24474 | $el: $el,
|
24475 | el: $el[0],
|
24476 | $inputEl: $inputEl,
|
24477 | inputEl: $inputEl[0],
|
24478 | disabled: $el.hasClass('disabled') || $inputEl.hasClass('disabled') || $inputEl.attr('disabled') || $inputEl[0].disabled
|
24479 | });
|
24480 | Object.defineProperty(toggle, 'checked', {
|
24481 | enumerable: true,
|
24482 | configurable: true,
|
24483 | set: function set(checked) {
|
24484 | if (!toggle || typeof toggle.$inputEl === 'undefined') return;
|
24485 | if (toggle.checked === checked) return;
|
24486 | $inputEl[0].checked = checked;
|
24487 | toggle.$inputEl.trigger('change');
|
24488 | },
|
24489 | get: function get() {
|
24490 | return $inputEl[0].checked;
|
24491 | }
|
24492 | });
|
24493 | $el[0].f7Toggle = toggle;
|
24494 | var isTouched;
|
24495 | var touchesStart = {};
|
24496 | var isScrolling;
|
24497 | var touchesDiff;
|
24498 | var toggleWidth;
|
24499 | var touchStartTime;
|
24500 | var touchStartChecked;
|
24501 |
|
24502 | function handleTouchStart(e) {
|
24503 | if (isTouched || toggle.disabled) return;
|
24504 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
24505 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
24506 | touchesDiff = 0;
|
24507 | isTouched = true;
|
24508 | isScrolling = undefined;
|
24509 | touchStartTime = now$1();
|
24510 | touchStartChecked = toggle.checked;
|
24511 | toggleWidth = $el[0].offsetWidth;
|
24512 | nextTick$1(function () {
|
24513 | if (isTouched) {
|
24514 | $el.addClass('toggle-active-state');
|
24515 | }
|
24516 | });
|
24517 | }
|
24518 |
|
24519 | function handleTouchMove(e) {
|
24520 | if (!isTouched || toggle.disabled) return;
|
24521 | var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
24522 | var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
24523 | var inverter = app.rtl ? -1 : 1;
|
24524 |
|
24525 | if (typeof isScrolling === 'undefined') {
|
24526 | isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
|
24527 | }
|
24528 |
|
24529 | if (isScrolling) {
|
24530 | isTouched = false;
|
24531 | return;
|
24532 | }
|
24533 |
|
24534 | e.preventDefault();
|
24535 | touchesDiff = pageX - touchesStart.x;
|
24536 | var changed;
|
24537 |
|
24538 | if (touchesDiff * inverter < 0 && Math.abs(touchesDiff) > toggleWidth / 3 && touchStartChecked) {
|
24539 | changed = true;
|
24540 | }
|
24541 |
|
24542 | if (touchesDiff * inverter > 0 && Math.abs(touchesDiff) > toggleWidth / 3 && !touchStartChecked) {
|
24543 | changed = true;
|
24544 | }
|
24545 |
|
24546 | if (changed) {
|
24547 | touchesStart.x = pageX;
|
24548 | toggle.checked = !touchStartChecked;
|
24549 | touchStartChecked = !touchStartChecked;
|
24550 | }
|
24551 | }
|
24552 |
|
24553 | function handleTouchEnd() {
|
24554 | if (!isTouched || toggle.disabled) {
|
24555 | if (isScrolling) $el.removeClass('toggle-active-state');
|
24556 | isTouched = false;
|
24557 | return;
|
24558 | }
|
24559 |
|
24560 | var inverter = app.rtl ? -1 : 1;
|
24561 | isTouched = false;
|
24562 | $el.removeClass('toggle-active-state');
|
24563 | var changed;
|
24564 |
|
24565 | if (now$1() - touchStartTime < 300) {
|
24566 | if (touchesDiff * inverter < 0 && touchStartChecked) {
|
24567 | changed = true;
|
24568 | }
|
24569 |
|
24570 | if (touchesDiff * inverter > 0 && !touchStartChecked) {
|
24571 | changed = true;
|
24572 | }
|
24573 |
|
24574 | if (changed) {
|
24575 | toggle.checked = !touchStartChecked;
|
24576 | }
|
24577 | }
|
24578 | }
|
24579 |
|
24580 | function handleInputChange() {
|
24581 | toggle.$el.trigger('toggle:change');
|
24582 | toggle.emit('local::change toggleChange', toggle);
|
24583 | }
|
24584 |
|
24585 | toggle.attachEvents = function attachEvents() {
|
24586 | var passive = support.passiveListener ? {
|
24587 | passive: true
|
24588 | } : false;
|
24589 | $el.on(app.touchEvents.start, handleTouchStart, passive);
|
24590 | app.on('touchmove', handleTouchMove);
|
24591 | app.on('touchend:passive', handleTouchEnd);
|
24592 | toggle.$inputEl.on('change', handleInputChange);
|
24593 | };
|
24594 |
|
24595 | toggle.detachEvents = function detachEvents() {
|
24596 | var passive = support.passiveListener ? {
|
24597 | passive: true
|
24598 | } : false;
|
24599 | $el.off(app.touchEvents.start, handleTouchStart, passive);
|
24600 | app.off('touchmove', handleTouchMove);
|
24601 | app.off('touchend:passive', handleTouchEnd);
|
24602 | toggle.$inputEl.off('change', handleInputChange);
|
24603 | };
|
24604 |
|
24605 |
|
24606 | toggle.useModules();
|
24607 |
|
24608 | toggle.init();
|
24609 | return _this;
|
24610 | }
|
24611 |
|
24612 | var _proto = Toggle.prototype;
|
24613 |
|
24614 | _proto.toggle = function toggle() {
|
24615 | var toggle = this;
|
24616 | toggle.checked = !toggle.checked;
|
24617 | };
|
24618 |
|
24619 | _proto.init = function init() {
|
24620 | var toggle = this;
|
24621 | toggle.attachEvents();
|
24622 | };
|
24623 |
|
24624 | _proto.destroy = function destroy() {
|
24625 | var toggle = this;
|
24626 | toggle.$el.trigger('toggle:beforedestroy');
|
24627 | toggle.emit('local::beforeDestroy toggleBeforeDestroy', toggle);
|
24628 | delete toggle.$el[0].f7Toggle;
|
24629 | toggle.detachEvents();
|
24630 | deleteProps$1(toggle);
|
24631 | toggle = null;
|
24632 | };
|
24633 |
|
24634 | return Toggle;
|
24635 | }(Framework7Class);
|
24636 |
|
24637 | var Toggle = {
|
24638 | name: 'toggle',
|
24639 | create: function create() {
|
24640 | var app = this;
|
24641 | app.toggle = ConstructorMethods({
|
24642 | defaultSelector: '.toggle',
|
24643 | constructor: Toggle$1,
|
24644 | app: app,
|
24645 | domProp: 'f7Toggle'
|
24646 | });
|
24647 | },
|
24648 | static: {
|
24649 | Toggle: Toggle$1
|
24650 | },
|
24651 | on: {
|
24652 | tabMounted: function tabMounted(tabEl) {
|
24653 | var app = this;
|
24654 | $(tabEl).find('.toggle-init').each(function (toggleEl) {
|
24655 | return app.toggle.create({
|
24656 | el: toggleEl
|
24657 | });
|
24658 | });
|
24659 | },
|
24660 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
24661 | $(tabEl).find('.toggle-init').each(function (toggleEl) {
|
24662 | if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();
|
24663 | });
|
24664 | },
|
24665 | pageInit: function pageInit(page) {
|
24666 | var app = this;
|
24667 | page.$el.find('.toggle-init').each(function (toggleEl) {
|
24668 | return app.toggle.create({
|
24669 | el: toggleEl
|
24670 | });
|
24671 | });
|
24672 | },
|
24673 | pageBeforeRemove: function pageBeforeRemove(page) {
|
24674 | page.$el.find('.toggle-init').each(function (toggleEl) {
|
24675 | if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();
|
24676 | });
|
24677 | }
|
24678 | },
|
24679 | vnode: {
|
24680 | 'toggle-init': {
|
24681 | insert: function insert(vnode) {
|
24682 | var app = this;
|
24683 | var toggleEl = vnode.elm;
|
24684 | app.toggle.create({
|
24685 | el: toggleEl
|
24686 | });
|
24687 | },
|
24688 | destroy: function destroy(vnode) {
|
24689 | var toggleEl = vnode.elm;
|
24690 | if (toggleEl.f7Toggle) toggleEl.f7Toggle.destroy();
|
24691 | }
|
24692 | }
|
24693 | }
|
24694 | };
|
24695 |
|
24696 | var Range$1 = function (_Framework7Class) {
|
24697 | _inheritsLoose(Range, _Framework7Class);
|
24698 |
|
24699 | function Range(app, params) {
|
24700 | var _this;
|
24701 |
|
24702 | _this = _Framework7Class.call(this, params, [app]) || this;
|
24703 |
|
24704 | var range = _assertThisInitialized(_this);
|
24705 |
|
24706 | var support = getSupport$1();
|
24707 | var defaults = {
|
24708 | el: null,
|
24709 | inputEl: null,
|
24710 | dual: false,
|
24711 | step: 1,
|
24712 | label: false,
|
24713 | min: 0,
|
24714 | max: 100,
|
24715 | value: 0,
|
24716 | draggableBar: true,
|
24717 | vertical: false,
|
24718 | verticalReversed: false,
|
24719 | formatLabel: null,
|
24720 | scale: false,
|
24721 | scaleSteps: 5,
|
24722 | scaleSubSteps: 0,
|
24723 | formatScaleLabel: null,
|
24724 | limitKnobPosition: app.theme === 'ios'
|
24725 | };
|
24726 |
|
24727 | range.useModulesParams(defaults);
|
24728 | range.params = extend$1(defaults, params);
|
24729 | var el = range.params.el;
|
24730 | if (!el) return range || _assertThisInitialized(_this);
|
24731 | var $el = $(el);
|
24732 | if ($el.length === 0) return range || _assertThisInitialized(_this);
|
24733 | if ($el[0].f7Range) return $el[0].f7Range || _assertThisInitialized(_this);
|
24734 | var dataset = $el.dataset();
|
24735 | 'step min max value scaleSteps scaleSubSteps'.split(' ').forEach(function (paramName) {
|
24736 | if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {
|
24737 | range.params[paramName] = parseFloat(dataset[paramName]);
|
24738 | }
|
24739 | });
|
24740 | 'dual label vertical verticalReversed scale'.split(' ').forEach(function (paramName) {
|
24741 | if (typeof params[paramName] === 'undefined' && typeof dataset[paramName] !== 'undefined') {
|
24742 | range.params[paramName] = dataset[paramName];
|
24743 | }
|
24744 | });
|
24745 |
|
24746 | if (!range.params.value) {
|
24747 | if (typeof dataset.value !== 'undefined') range.params.value = dataset.value;
|
24748 |
|
24749 | if (typeof dataset.valueLeft !== 'undefined' && typeof dataset.valueRight !== 'undefined') {
|
24750 | range.params.value = [parseFloat(dataset.valueLeft), parseFloat(dataset.valueRight)];
|
24751 | }
|
24752 | }
|
24753 |
|
24754 | var $inputEl;
|
24755 |
|
24756 | if (!range.params.dual) {
|
24757 | if (range.params.inputEl) {
|
24758 | $inputEl = $(range.params.inputEl);
|
24759 | } else if ($el.find('input[type="range"]').length) {
|
24760 | $inputEl = $el.find('input[type="range"]').eq(0);
|
24761 | }
|
24762 | }
|
24763 |
|
24764 | var _range$params = range.params,
|
24765 | dual = _range$params.dual,
|
24766 | step = _range$params.step,
|
24767 | label = _range$params.label,
|
24768 | min = _range$params.min,
|
24769 | max = _range$params.max,
|
24770 | value = _range$params.value,
|
24771 | vertical = _range$params.vertical,
|
24772 | verticalReversed = _range$params.verticalReversed,
|
24773 | scale = _range$params.scale,
|
24774 | scaleSteps = _range$params.scaleSteps,
|
24775 | scaleSubSteps = _range$params.scaleSubSteps,
|
24776 | limitKnobPosition = _range$params.limitKnobPosition;
|
24777 | extend$1(range, {
|
24778 | app: app,
|
24779 | $el: $el,
|
24780 | el: $el[0],
|
24781 | $inputEl: $inputEl,
|
24782 | inputEl: $inputEl ? $inputEl[0] : undefined,
|
24783 | dual: dual,
|
24784 | step: step,
|
24785 | label: label,
|
24786 | min: min,
|
24787 | max: max,
|
24788 | value: value,
|
24789 | previousValue: value,
|
24790 | vertical: vertical,
|
24791 | verticalReversed: verticalReversed,
|
24792 | scale: scale,
|
24793 | scaleSteps: scaleSteps,
|
24794 | scaleSubSteps: scaleSubSteps,
|
24795 | limitKnobPosition: limitKnobPosition
|
24796 | });
|
24797 |
|
24798 | if ($inputEl) {
|
24799 | 'step min max'.split(' ').forEach(function (paramName) {
|
24800 | if (!params[paramName] && $inputEl.attr(paramName)) {
|
24801 | range.params[paramName] = parseFloat($inputEl.attr(paramName));
|
24802 | range[paramName] = parseFloat($inputEl.attr(paramName));
|
24803 | }
|
24804 | });
|
24805 |
|
24806 | if (typeof $inputEl.val() !== 'undefined') {
|
24807 | range.params.value = parseFloat($inputEl.val());
|
24808 | range.value = parseFloat($inputEl.val());
|
24809 | }
|
24810 | }
|
24811 |
|
24812 |
|
24813 | if (range.dual) {
|
24814 | $el.addClass('range-slider-dual');
|
24815 | }
|
24816 |
|
24817 | if (range.label) {
|
24818 | $el.addClass('range-slider-label');
|
24819 | }
|
24820 |
|
24821 |
|
24822 | if (range.vertical) {
|
24823 | $el.addClass('range-slider-vertical');
|
24824 |
|
24825 | if (range.verticalReversed) {
|
24826 | $el.addClass('range-slider-vertical-reversed');
|
24827 | }
|
24828 | } else {
|
24829 | $el.addClass('range-slider-horizontal');
|
24830 | }
|
24831 |
|
24832 |
|
24833 | var $barEl = $('<div class="range-bar"></div>');
|
24834 | var $barActiveEl = $('<div class="range-bar-active"></div>');
|
24835 | $barEl.append($barActiveEl);
|
24836 |
|
24837 |
|
24838 | var knobHTML = "\n <div class=\"range-knob-wrap\">\n <div class=\"range-knob\"></div>\n " + (range.label ? '<div class="range-knob-label"></div>' : '') + "\n </div>\n ";
|
24839 | var knobs = [$(knobHTML)];
|
24840 |
|
24841 | if (range.dual) {
|
24842 | knobs.push($(knobHTML));
|
24843 | }
|
24844 |
|
24845 | $el.append($barEl);
|
24846 | knobs.forEach(function ($knobEl) {
|
24847 | $el.append($knobEl);
|
24848 | });
|
24849 |
|
24850 | var labels = [];
|
24851 |
|
24852 | if (range.label) {
|
24853 | labels.push(knobs[0].find('.range-knob-label'));
|
24854 |
|
24855 | if (range.dual) {
|
24856 | labels.push(knobs[1].find('.range-knob-label'));
|
24857 | }
|
24858 | }
|
24859 |
|
24860 |
|
24861 | var $scaleEl;
|
24862 |
|
24863 | if (range.scale && range.scaleSteps >= 1) {
|
24864 | $scaleEl = $("\n <div class=\"range-scale\">\n " + range.renderScale() + "\n </div>\n ");
|
24865 | $el.append($scaleEl);
|
24866 | }
|
24867 |
|
24868 | extend$1(range, {
|
24869 | knobs: knobs,
|
24870 | labels: labels,
|
24871 | $barEl: $barEl,
|
24872 | $barActiveEl: $barActiveEl,
|
24873 | $scaleEl: $scaleEl
|
24874 | });
|
24875 | $el[0].f7Range = range;
|
24876 |
|
24877 | var isTouched;
|
24878 | var touchesStart = {};
|
24879 | var isScrolling;
|
24880 | var rangeOffset;
|
24881 | var rangeOffsetLeft;
|
24882 | var rangeOffsetTop;
|
24883 | var $touchedKnobEl;
|
24884 | var dualValueIndex;
|
24885 | var valueChangedByTouch;
|
24886 | var targetTouchIdentifier;
|
24887 |
|
24888 | function onTouchChange() {
|
24889 | valueChangedByTouch = true;
|
24890 | }
|
24891 |
|
24892 | function handleTouchStart(e) {
|
24893 | if (isTouched) return;
|
24894 |
|
24895 | if (!range.params.draggableBar) {
|
24896 | if ($(e.target).closest('.range-knob').length === 0) {
|
24897 | return;
|
24898 | }
|
24899 | }
|
24900 |
|
24901 | valueChangedByTouch = false;
|
24902 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
24903 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
24904 |
|
24905 | if (e.type === 'touchstart') {
|
24906 | targetTouchIdentifier = e.targetTouches[0].identifier;
|
24907 | }
|
24908 |
|
24909 | isTouched = true;
|
24910 | isScrolling = undefined;
|
24911 | rangeOffset = $el.offset();
|
24912 | rangeOffsetLeft = rangeOffset.left;
|
24913 | rangeOffsetTop = rangeOffset.top;
|
24914 | var progress;
|
24915 |
|
24916 | if (range.vertical) {
|
24917 | progress = (touchesStart.y - rangeOffsetTop) / range.rangeHeight;
|
24918 | if (!range.verticalReversed) progress = 1 - progress;
|
24919 | } else if (range.app.rtl) {
|
24920 | progress = (rangeOffsetLeft + range.rangeWidth - touchesStart.x) / range.rangeWidth;
|
24921 | } else {
|
24922 | progress = (touchesStart.x - rangeOffsetLeft) / range.rangeWidth;
|
24923 | }
|
24924 |
|
24925 | var newValue = progress * (range.max - range.min) + range.min;
|
24926 |
|
24927 | if (range.dual) {
|
24928 | if (Math.abs(range.value[0] - newValue) < Math.abs(range.value[1] - newValue)) {
|
24929 | dualValueIndex = 0;
|
24930 | $touchedKnobEl = range.knobs[0];
|
24931 | newValue = [newValue, range.value[1]];
|
24932 | } else {
|
24933 | dualValueIndex = 1;
|
24934 | $touchedKnobEl = range.knobs[1];
|
24935 | newValue = [range.value[0], newValue];
|
24936 | }
|
24937 | } else {
|
24938 | $touchedKnobEl = range.knobs[0];
|
24939 | newValue = progress * (range.max - range.min) + range.min;
|
24940 | }
|
24941 |
|
24942 | nextTick$1(function () {
|
24943 | if (isTouched) $touchedKnobEl.addClass('range-knob-active-state');
|
24944 | }, 70);
|
24945 | range.on('change', onTouchChange);
|
24946 | range.setValue(newValue, true);
|
24947 | }
|
24948 |
|
24949 | function handleTouchMove(e) {
|
24950 | if (!isTouched) return;
|
24951 | var pageX;
|
24952 | var pageY;
|
24953 |
|
24954 | if (e.type === 'touchmove') {
|
24955 | for (var i = 0; i < e.targetTouches.length; i += 1) {
|
24956 | if (e.targetTouches[i].identifier === targetTouchIdentifier) {
|
24957 | pageX = e.targetTouches[i].pageX;
|
24958 | pageY = e.targetTouches[i].pageY;
|
24959 | }
|
24960 | }
|
24961 | } else {
|
24962 | pageX = e.pageX;
|
24963 | pageY = e.pageY;
|
24964 | }
|
24965 |
|
24966 | if (typeof pageX === 'undefined' && typeof pageY === 'undefined') return;
|
24967 |
|
24968 | if (typeof isScrolling === 'undefined' && !range.vertical) {
|
24969 | isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
|
24970 | }
|
24971 |
|
24972 | if (isScrolling) {
|
24973 | isTouched = false;
|
24974 | return;
|
24975 | }
|
24976 |
|
24977 | e.preventDefault();
|
24978 | var progress;
|
24979 |
|
24980 | if (range.vertical) {
|
24981 | progress = (pageY - rangeOffsetTop) / range.rangeHeight;
|
24982 | if (!range.verticalReversed) progress = 1 - progress;
|
24983 | } else if (range.app.rtl) {
|
24984 | progress = (rangeOffsetLeft + range.rangeWidth - pageX) / range.rangeWidth;
|
24985 | } else {
|
24986 | progress = (pageX - rangeOffsetLeft) / range.rangeWidth;
|
24987 | }
|
24988 |
|
24989 | var newValue = progress * (range.max - range.min) + range.min;
|
24990 |
|
24991 | if (range.dual) {
|
24992 | var leftValue;
|
24993 | var rightValue;
|
24994 |
|
24995 | if (dualValueIndex === 0) {
|
24996 | leftValue = newValue;
|
24997 | rightValue = range.value[1];
|
24998 |
|
24999 | if (leftValue > rightValue) {
|
25000 | rightValue = leftValue;
|
25001 | }
|
25002 | } else {
|
25003 | leftValue = range.value[0];
|
25004 | rightValue = newValue;
|
25005 |
|
25006 | if (rightValue < leftValue) {
|
25007 | leftValue = rightValue;
|
25008 | }
|
25009 | }
|
25010 |
|
25011 | newValue = [leftValue, rightValue];
|
25012 | }
|
25013 |
|
25014 | range.setValue(newValue, true);
|
25015 | }
|
25016 |
|
25017 | function handleTouchEnd(e) {
|
25018 | if (e.type === 'touchend') {
|
25019 | var touchEnded;
|
25020 |
|
25021 | for (var i = 0; i < e.changedTouches.length; i += 1) {
|
25022 | if (e.changedTouches[i].identifier === targetTouchIdentifier) touchEnded = true;
|
25023 | }
|
25024 |
|
25025 | if (!touchEnded) return;
|
25026 | }
|
25027 |
|
25028 | if (!isTouched) {
|
25029 | if (isScrolling) $touchedKnobEl.removeClass('range-knob-active-state');
|
25030 | isTouched = false;
|
25031 | return;
|
25032 | }
|
25033 |
|
25034 | range.off('change', onTouchChange);
|
25035 | isTouched = false;
|
25036 | $touchedKnobEl.removeClass('range-knob-active-state');
|
25037 |
|
25038 | if (valueChangedByTouch && range.$inputEl && !range.dual) {
|
25039 | range.$inputEl.trigger('change');
|
25040 | }
|
25041 |
|
25042 | valueChangedByTouch = false;
|
25043 |
|
25044 | if (typeof range.previousValue !== 'undefined') {
|
25045 | if (range.dual && (range.previousValue[0] !== range.value[0] || range.previousValue[1] !== range.value[1]) || !range.dual && range.previousValue !== range.value) {
|
25046 | range.$el.trigger('range:changed', range.value);
|
25047 | range.emit('local::changed rangeChanged', range, range.value);
|
25048 | }
|
25049 | }
|
25050 | }
|
25051 |
|
25052 | function handleResize() {
|
25053 | range.calcSize();
|
25054 | range.layout();
|
25055 | }
|
25056 |
|
25057 | var parentModals;
|
25058 | var parentPanel;
|
25059 | var parentPage;
|
25060 |
|
25061 | range.attachEvents = function attachEvents() {
|
25062 | var passive = support.passiveListener ? {
|
25063 | passive: true
|
25064 | } : false;
|
25065 | range.$el.on(app.touchEvents.start, handleTouchStart, passive);
|
25066 | app.on('touchmove', handleTouchMove);
|
25067 | app.on('touchend:passive', handleTouchEnd);
|
25068 | app.on('tabShow', handleResize);
|
25069 | app.on('resize', handleResize);
|
25070 | parentModals = range.$el.parents('.sheet-modal, .actions-modal, .popup, .popover, .login-screen, .dialog, .toast');
|
25071 | parentModals.on('modal:open', handleResize);
|
25072 | parentPanel = range.$el.parents('.panel');
|
25073 | parentPanel.on('panel:open panel:resize', handleResize);
|
25074 | parentPage = range.$el.parents('.page').eq(0);
|
25075 | parentPage.on('page:reinit', handleResize);
|
25076 | };
|
25077 |
|
25078 | range.detachEvents = function detachEvents() {
|
25079 | var passive = support.passiveListener ? {
|
25080 | passive: true
|
25081 | } : false;
|
25082 | range.$el.off(app.touchEvents.start, handleTouchStart, passive);
|
25083 | app.off('touchmove', handleTouchMove);
|
25084 | app.off('touchend:passive', handleTouchEnd);
|
25085 | app.off('tabShow', handleResize);
|
25086 | app.off('resize', handleResize);
|
25087 |
|
25088 | if (parentModals) {
|
25089 | parentModals.off('modal:open', handleResize);
|
25090 | }
|
25091 |
|
25092 | if (parentPanel) {
|
25093 | parentPanel.off('panel:open panel:resize', handleResize);
|
25094 | }
|
25095 |
|
25096 | if (parentPage) {
|
25097 | parentPage.off('page:reinit', handleResize);
|
25098 | }
|
25099 |
|
25100 | parentModals = null;
|
25101 | parentPanel = null;
|
25102 | parentPage = null;
|
25103 | };
|
25104 |
|
25105 |
|
25106 | range.useModules();
|
25107 |
|
25108 | range.init();
|
25109 | return range || _assertThisInitialized(_this);
|
25110 | }
|
25111 |
|
25112 | var _proto = Range.prototype;
|
25113 |
|
25114 | _proto.calcSize = function calcSize() {
|
25115 | var range = this;
|
25116 |
|
25117 | if (range.vertical) {
|
25118 | var height = range.$el.outerHeight();
|
25119 | if (height === 0) return;
|
25120 | range.rangeHeight = height;
|
25121 | range.knobHeight = range.knobs[0].outerHeight();
|
25122 | } else {
|
25123 | var width = range.$el.outerWidth();
|
25124 | if (width === 0) return;
|
25125 | range.rangeWidth = width;
|
25126 | range.knobWidth = range.knobs[0].outerWidth();
|
25127 | }
|
25128 | };
|
25129 |
|
25130 | _proto.layout = function layout() {
|
25131 | var range = this;
|
25132 | var app = range.app,
|
25133 | knobWidth = range.knobWidth,
|
25134 | knobHeight = range.knobHeight,
|
25135 | rangeWidth = range.rangeWidth,
|
25136 | rangeHeight = range.rangeHeight,
|
25137 | min = range.min,
|
25138 | max = range.max,
|
25139 | knobs = range.knobs,
|
25140 | $barActiveEl = range.$barActiveEl,
|
25141 | value = range.value,
|
25142 | label = range.label,
|
25143 | labels = range.labels,
|
25144 | vertical = range.vertical,
|
25145 | verticalReversed = range.verticalReversed,
|
25146 | limitKnobPosition = range.limitKnobPosition;
|
25147 | var knobSize = vertical ? knobHeight : knobWidth;
|
25148 | var rangeSize = vertical ? rangeHeight : rangeWidth;
|
25149 |
|
25150 | var positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';
|
25151 |
|
25152 | if (range.dual) {
|
25153 | var _$barActiveEl$css;
|
25154 |
|
25155 | var progress = [(value[0] - min) / (max - min), (value[1] - min) / (max - min)];
|
25156 | $barActiveEl.css((_$barActiveEl$css = {}, _$barActiveEl$css[positionProperty] = progress[0] * 100 + "%", _$barActiveEl$css[vertical ? 'height' : 'width'] = (progress[1] - progress[0]) * 100 + "%", _$barActiveEl$css));
|
25157 | knobs.forEach(function ($knobEl, knobIndex) {
|
25158 | var startPos = rangeSize * progress[knobIndex];
|
25159 |
|
25160 | if (limitKnobPosition) {
|
25161 | var realStartPos = rangeSize * progress[knobIndex] - knobSize / 2;
|
25162 | if (realStartPos < 0) startPos = knobSize / 2;
|
25163 | if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;
|
25164 | }
|
25165 |
|
25166 | $knobEl.css(positionProperty, startPos + "px");
|
25167 | if (label) labels[knobIndex].text(range.formatLabel(value[knobIndex], labels[knobIndex][0]));
|
25168 | });
|
25169 | } else {
|
25170 | var _progress = (value - min) / (max - min);
|
25171 |
|
25172 | $barActiveEl.css(vertical ? 'height' : 'width', _progress * 100 + "%");
|
25173 | var startPos = rangeSize * _progress;
|
25174 |
|
25175 | if (limitKnobPosition) {
|
25176 | var realStartPos = rangeSize * _progress - knobSize / 2;
|
25177 | if (realStartPos < 0) startPos = knobSize / 2;
|
25178 | if (realStartPos + knobSize > rangeSize) startPos = rangeSize - knobSize / 2;
|
25179 | }
|
25180 |
|
25181 | knobs[0].css(positionProperty, startPos + "px");
|
25182 | if (label) labels[0].text(range.formatLabel(value, labels[0][0]));
|
25183 | }
|
25184 |
|
25185 | if (range.dual && value.indexOf(min) >= 0 || !range.dual && value === min) {
|
25186 | range.$el.addClass('range-slider-min');
|
25187 | } else {
|
25188 | range.$el.removeClass('range-slider-min');
|
25189 | }
|
25190 |
|
25191 | if (range.dual && value.indexOf(max) >= 0 || !range.dual && value === max) {
|
25192 | range.$el.addClass('range-slider-max');
|
25193 | } else {
|
25194 | range.$el.removeClass('range-slider-max');
|
25195 | }
|
25196 | };
|
25197 |
|
25198 | _proto.setValue = function setValue(newValue, byTouchMove) {
|
25199 | var range = this;
|
25200 | var step = range.step,
|
25201 | min = range.min,
|
25202 | max = range.max;
|
25203 | var valueChanged;
|
25204 | var oldValue;
|
25205 |
|
25206 | if (range.dual) {
|
25207 | oldValue = [range.value[0], range.value[1]];
|
25208 | var newValues = newValue;
|
25209 | if (!Array.isArray(newValues)) newValues = [newValue, newValue];
|
25210 |
|
25211 | if (newValue[0] > newValue[1]) {
|
25212 | newValues = [newValues[0], newValues[0]];
|
25213 | }
|
25214 |
|
25215 | newValues = newValues.map(function (value) {
|
25216 | return Math.max(Math.min(Math.round(value / step) * step, max), min);
|
25217 | });
|
25218 |
|
25219 | if (newValues[0] === range.value[0] && newValues[1] === range.value[1]) {
|
25220 | return range;
|
25221 | }
|
25222 |
|
25223 | newValues.forEach(function (value, valueIndex) {
|
25224 | range.value[valueIndex] = value;
|
25225 | });
|
25226 | valueChanged = oldValue[0] !== newValues[0] || oldValue[1] !== newValues[1];
|
25227 | range.layout();
|
25228 | } else {
|
25229 | oldValue = range.value;
|
25230 | var value = Math.max(Math.min(Math.round(newValue / step) * step, max), min);
|
25231 | range.value = value;
|
25232 | range.layout();
|
25233 | valueChanged = oldValue !== value;
|
25234 | }
|
25235 |
|
25236 | if (valueChanged) {
|
25237 | range.previousValue = oldValue;
|
25238 | }
|
25239 |
|
25240 |
|
25241 | if (!valueChanged) return range;
|
25242 | range.$el.trigger('range:change', range.value);
|
25243 |
|
25244 | if (range.$inputEl && !range.dual) {
|
25245 | range.$inputEl.val(range.value);
|
25246 |
|
25247 | if (!byTouchMove) {
|
25248 | range.$inputEl.trigger('input change');
|
25249 | } else {
|
25250 | range.$inputEl.trigger('input');
|
25251 | }
|
25252 | }
|
25253 |
|
25254 | if (!byTouchMove) {
|
25255 | range.$el.trigger('range:changed', range.value);
|
25256 | range.emit('local::changed rangeChanged', range, range.value);
|
25257 | }
|
25258 |
|
25259 | range.emit('local::change rangeChange', range, range.value);
|
25260 | return range;
|
25261 | };
|
25262 |
|
25263 | _proto.getValue = function getValue() {
|
25264 | return this.value;
|
25265 | };
|
25266 |
|
25267 | _proto.formatLabel = function formatLabel(value, labelEl) {
|
25268 | var range = this;
|
25269 | if (range.params.formatLabel) return range.params.formatLabel.call(range, value, labelEl);
|
25270 | return value;
|
25271 | };
|
25272 |
|
25273 | _proto.formatScaleLabel = function formatScaleLabel(value) {
|
25274 | var range = this;
|
25275 | if (range.params.formatScaleLabel) return range.params.formatScaleLabel.call(range, value);
|
25276 | return value;
|
25277 | };
|
25278 |
|
25279 | _proto.renderScale = function renderScale() {
|
25280 | var range = this;
|
25281 | var app = range.app,
|
25282 | verticalReversed = range.verticalReversed,
|
25283 | vertical = range.vertical;
|
25284 |
|
25285 | var positionProperty = vertical ? verticalReversed ? 'top' : 'bottom' : app.rtl ? 'right' : 'left';
|
25286 | var html = '';
|
25287 | Array.from({
|
25288 | length: range.scaleSteps + 1
|
25289 | }).forEach(function (scaleEl, index) {
|
25290 | var scaleStepValue = (range.max - range.min) / range.scaleSteps;
|
25291 | var scaleValue = range.min + scaleStepValue * index;
|
25292 | var progress = (scaleValue - range.min) / (range.max - range.min);
|
25293 | html += "<div class=\"range-scale-step\" style=\"" + positionProperty + ": " + progress * 100 + "%\">" + range.formatScaleLabel(scaleValue) + "</div>";
|
25294 |
|
25295 | if (range.scaleSubSteps && range.scaleSubSteps > 1 && index < range.scaleSteps) {
|
25296 | Array.from({
|
25297 | length: range.scaleSubSteps - 1
|
25298 | }).forEach(function (subStepEl, subIndex) {
|
25299 | var subStep = scaleStepValue / range.scaleSubSteps;
|
25300 | var scaleSubValue = scaleValue + subStep * (subIndex + 1);
|
25301 | var subProgress = (scaleSubValue - range.min) / (range.max - range.min);
|
25302 | html += "<div class=\"range-scale-step range-scale-substep\" style=\"" + positionProperty + ": " + subProgress * 100 + "%\"></div>";
|
25303 | });
|
25304 | }
|
25305 | });
|
25306 | return html;
|
25307 | };
|
25308 |
|
25309 | _proto.updateScale = function updateScale() {
|
25310 | var range = this;
|
25311 |
|
25312 | if (!range.scale || range.scaleSteps < 1) {
|
25313 | if (range.$scaleEl) range.$scaleEl.remove();
|
25314 | delete range.$scaleEl;
|
25315 | return;
|
25316 | }
|
25317 |
|
25318 | if (!range.$scaleEl) {
|
25319 | range.$scaleEl = $('<div class="range-scale"></div>');
|
25320 | range.$el.append(range.$scaleEl);
|
25321 | }
|
25322 |
|
25323 | range.$scaleEl.html(range.renderScale());
|
25324 | };
|
25325 |
|
25326 | _proto.init = function init() {
|
25327 | var range = this;
|
25328 | range.calcSize();
|
25329 | range.layout();
|
25330 | range.attachEvents();
|
25331 | return range;
|
25332 | };
|
25333 |
|
25334 | _proto.destroy = function destroy() {
|
25335 | var range = this;
|
25336 | range.$el.trigger('range:beforedestroy');
|
25337 | range.emit('local::beforeDestroy rangeBeforeDestroy', range);
|
25338 | delete range.$el[0].f7Range;
|
25339 | range.detachEvents();
|
25340 | deleteProps$1(range);
|
25341 | range = null;
|
25342 | };
|
25343 |
|
25344 | return Range;
|
25345 | }(Framework7Class);
|
25346 |
|
25347 | var Range = {
|
25348 | name: 'range',
|
25349 | create: function create() {
|
25350 | var app = this;
|
25351 | app.range = extend$1(ConstructorMethods({
|
25352 | defaultSelector: '.range-slider',
|
25353 | constructor: Range$1,
|
25354 | app: app,
|
25355 | domProp: 'f7Range'
|
25356 | }), {
|
25357 | getValue: function getValue(el) {
|
25358 | if (el === void 0) {
|
25359 | el = '.range-slider';
|
25360 | }
|
25361 |
|
25362 | var range = app.range.get(el);
|
25363 | if (range) return range.getValue();
|
25364 | return undefined;
|
25365 | },
|
25366 | setValue: function setValue(el, value) {
|
25367 | if (el === void 0) {
|
25368 | el = '.range-slider';
|
25369 | }
|
25370 |
|
25371 | var range = app.range.get(el);
|
25372 | if (range) return range.setValue(value);
|
25373 | return undefined;
|
25374 | }
|
25375 | });
|
25376 | },
|
25377 | static: {
|
25378 | Range: Range$1
|
25379 | },
|
25380 | on: {
|
25381 | tabMounted: function tabMounted(tabEl) {
|
25382 | var app = this;
|
25383 | $(tabEl).find('.range-slider-init').each(function (rangeEl) {
|
25384 | return new Range$1(app, {
|
25385 | el: rangeEl
|
25386 | });
|
25387 | });
|
25388 | },
|
25389 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
25390 | $(tabEl).find('.range-slider-init').each(function (rangeEl) {
|
25391 | if (rangeEl.f7Range) rangeEl.f7Range.destroy();
|
25392 | });
|
25393 | },
|
25394 | pageInit: function pageInit(page) {
|
25395 | var app = this;
|
25396 | page.$el.find('.range-slider-init').each(function (rangeEl) {
|
25397 | return new Range$1(app, {
|
25398 | el: rangeEl
|
25399 | });
|
25400 | });
|
25401 | },
|
25402 | pageBeforeRemove: function pageBeforeRemove(page) {
|
25403 | page.$el.find('.range-slider-init').each(function (rangeEl) {
|
25404 | if (rangeEl.f7Range) rangeEl.f7Range.destroy();
|
25405 | });
|
25406 | }
|
25407 | },
|
25408 | vnode: {
|
25409 | 'range-slider-init': {
|
25410 | insert: function insert(vnode) {
|
25411 | var rangeEl = vnode.elm;
|
25412 | var app = this;
|
25413 | app.range.create({
|
25414 | el: rangeEl
|
25415 | });
|
25416 | },
|
25417 | destroy: function destroy(vnode) {
|
25418 | var rangeEl = vnode.elm;
|
25419 | if (rangeEl.f7Range) rangeEl.f7Range.destroy();
|
25420 | }
|
25421 | }
|
25422 | }
|
25423 | };
|
25424 |
|
25425 | var Stepper$1 = function (_Framework7Class) {
|
25426 | _inheritsLoose(Stepper, _Framework7Class);
|
25427 |
|
25428 | function Stepper(app, params) {
|
25429 | var _this;
|
25430 |
|
25431 | _this = _Framework7Class.call(this, params, [app]) || this;
|
25432 |
|
25433 | var stepper = _assertThisInitialized(_this);
|
25434 |
|
25435 | var defaults = {
|
25436 | el: null,
|
25437 | inputEl: null,
|
25438 | valueEl: null,
|
25439 | value: 0,
|
25440 | formatValue: null,
|
25441 | step: 1,
|
25442 | min: 0,
|
25443 | max: 100,
|
25444 | watchInput: true,
|
25445 | autorepeat: false,
|
25446 | autorepeatDynamic: false,
|
25447 | wraps: false,
|
25448 | manualInputMode: false,
|
25449 | decimalPoint: 4,
|
25450 | buttonsEndInputMode: true
|
25451 | };
|
25452 |
|
25453 | stepper.useModulesParams(defaults);
|
25454 | stepper.params = extend$1(defaults, params);
|
25455 |
|
25456 | if (stepper.params.value < stepper.params.min) {
|
25457 | stepper.params.value = stepper.params.min;
|
25458 | }
|
25459 |
|
25460 | if (stepper.params.value > stepper.params.max) {
|
25461 | stepper.params.value = stepper.params.max;
|
25462 | }
|
25463 |
|
25464 | var el = stepper.params.el;
|
25465 | if (!el) return stepper || _assertThisInitialized(_this);
|
25466 | var $el = $(el);
|
25467 | if ($el.length === 0) return stepper || _assertThisInitialized(_this);
|
25468 | if ($el[0].f7Stepper) return $el[0].f7Stepper || _assertThisInitialized(_this);
|
25469 | var $inputEl;
|
25470 |
|
25471 | if (stepper.params.inputEl) {
|
25472 | $inputEl = $(stepper.params.inputEl);
|
25473 | } else if ($el.find('.stepper-input-wrap').find('input, textarea').length) {
|
25474 | $inputEl = $el.find('.stepper-input-wrap').find('input, textarea').eq(0);
|
25475 | }
|
25476 |
|
25477 | if ($inputEl && $inputEl.length) {
|
25478 | 'step min max'.split(' ').forEach(function (paramName) {
|
25479 | if (!params[paramName] && $inputEl.attr(paramName)) {
|
25480 | stepper.params[paramName] = parseFloat($inputEl.attr(paramName));
|
25481 | }
|
25482 | });
|
25483 |
|
25484 | var _decimalPoint = parseInt(stepper.params.decimalPoint, 10);
|
25485 |
|
25486 | if (Number.isNaN(_decimalPoint)) {
|
25487 | stepper.params.decimalPoint = 0;
|
25488 | } else {
|
25489 | stepper.params.decimalPoint = _decimalPoint;
|
25490 | }
|
25491 |
|
25492 | var inputValue = parseFloat($inputEl.val());
|
25493 |
|
25494 | if (typeof params.value === 'undefined' && !Number.isNaN(inputValue) && (inputValue || inputValue === 0)) {
|
25495 | stepper.params.value = inputValue;
|
25496 | }
|
25497 | }
|
25498 |
|
25499 | var $valueEl;
|
25500 |
|
25501 | if (stepper.params.valueEl) {
|
25502 | $valueEl = $(stepper.params.valueEl);
|
25503 | } else if ($el.find('.stepper-value').length) {
|
25504 | $valueEl = $el.find('.stepper-value').eq(0);
|
25505 | }
|
25506 |
|
25507 | var $buttonPlusEl = $el.find('.stepper-button-plus');
|
25508 | var $buttonMinusEl = $el.find('.stepper-button-minus');
|
25509 | var _stepper$params = stepper.params,
|
25510 | step = _stepper$params.step,
|
25511 | min = _stepper$params.min,
|
25512 | max = _stepper$params.max,
|
25513 | value = _stepper$params.value,
|
25514 | decimalPoint = _stepper$params.decimalPoint;
|
25515 | extend$1(stepper, {
|
25516 | app: app,
|
25517 | $el: $el,
|
25518 | el: $el[0],
|
25519 | $buttonPlusEl: $buttonPlusEl,
|
25520 | buttonPlusEl: $buttonPlusEl[0],
|
25521 | $buttonMinusEl: $buttonMinusEl,
|
25522 | buttonMinusEl: $buttonMinusEl[0],
|
25523 | $inputEl: $inputEl,
|
25524 | inputEl: $inputEl ? $inputEl[0] : undefined,
|
25525 | $valueEl: $valueEl,
|
25526 | valueEl: $valueEl ? $valueEl[0] : undefined,
|
25527 | step: step,
|
25528 | min: min,
|
25529 | max: max,
|
25530 | value: value,
|
25531 | decimalPoint: decimalPoint,
|
25532 | typeModeChanged: false
|
25533 | });
|
25534 | $el[0].f7Stepper = stepper;
|
25535 |
|
25536 | var touchesStart = {};
|
25537 | var isTouched;
|
25538 | var isScrolling;
|
25539 | var preventButtonClick;
|
25540 | var intervalId;
|
25541 | var timeoutId;
|
25542 | var autorepeatAction = null;
|
25543 | var autorepeatInAction = false;
|
25544 | var manualInput = false;
|
25545 |
|
25546 | function dynamicRepeat(current, progressions, startsIn, progressionStep, repeatEvery, action) {
|
25547 | clearTimeout(timeoutId);
|
25548 | timeoutId = setTimeout(function () {
|
25549 | if (current === 1) {
|
25550 | preventButtonClick = true;
|
25551 | autorepeatInAction = true;
|
25552 | }
|
25553 |
|
25554 | clearInterval(intervalId);
|
25555 | action();
|
25556 | intervalId = setInterval(function () {
|
25557 | action();
|
25558 | }, repeatEvery);
|
25559 |
|
25560 | if (current < progressions) {
|
25561 | dynamicRepeat(current + 1, progressions, startsIn, progressionStep, repeatEvery / 2, action);
|
25562 | }
|
25563 | }, current === 1 ? startsIn : progressionStep);
|
25564 | }
|
25565 |
|
25566 | function onTouchStart(e) {
|
25567 | if (isTouched) return;
|
25568 |
|
25569 | if (manualInput) {
|
25570 | return;
|
25571 | }
|
25572 |
|
25573 | if ($(e.target).closest($buttonPlusEl).length) {
|
25574 | autorepeatAction = 'increment';
|
25575 | } else if ($(e.target).closest($buttonMinusEl).length) {
|
25576 | autorepeatAction = 'decrement';
|
25577 | }
|
25578 |
|
25579 | if (!autorepeatAction) return;
|
25580 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
25581 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
25582 | isTouched = true;
|
25583 | isScrolling = undefined;
|
25584 | var progressions = stepper.params.autorepeatDynamic ? 4 : 1;
|
25585 | dynamicRepeat(1, progressions, 500, 1000, 300, function () {
|
25586 | stepper[autorepeatAction]();
|
25587 | });
|
25588 | }
|
25589 |
|
25590 | function onTouchMove(e) {
|
25591 | if (!isTouched) return;
|
25592 |
|
25593 | if (manualInput) {
|
25594 | return;
|
25595 | }
|
25596 |
|
25597 | var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
25598 | var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
25599 |
|
25600 | if (typeof isScrolling === 'undefined' && !autorepeatInAction) {
|
25601 | isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
|
25602 | }
|
25603 |
|
25604 | var distance = Math.pow(Math.pow(pageX - touchesStart.x, 2) + Math.pow(pageY - touchesStart.y, 2), 0.5);
|
25605 |
|
25606 | if (isScrolling || distance > 20) {
|
25607 | isTouched = false;
|
25608 | clearTimeout(timeoutId);
|
25609 | clearInterval(intervalId);
|
25610 | }
|
25611 | }
|
25612 |
|
25613 | function onTouchEnd() {
|
25614 | clearTimeout(timeoutId);
|
25615 | clearInterval(intervalId);
|
25616 | autorepeatAction = null;
|
25617 | autorepeatInAction = false;
|
25618 | isTouched = false;
|
25619 | }
|
25620 |
|
25621 | function onMinusClick() {
|
25622 | if (manualInput) {
|
25623 | if (stepper.params.buttonsEndInputMode) {
|
25624 | manualInput = false;
|
25625 | stepper.endTypeMode(true);
|
25626 | }
|
25627 |
|
25628 | return;
|
25629 | }
|
25630 |
|
25631 | if (preventButtonClick) {
|
25632 | preventButtonClick = false;
|
25633 | return;
|
25634 | }
|
25635 |
|
25636 | stepper.decrement(true);
|
25637 | }
|
25638 |
|
25639 | function onPlusClick() {
|
25640 | if (manualInput) {
|
25641 | if (stepper.params.buttonsEndInputMode) {
|
25642 | manualInput = false;
|
25643 | stepper.endTypeMode(true);
|
25644 | }
|
25645 |
|
25646 | return;
|
25647 | }
|
25648 |
|
25649 | if (preventButtonClick) {
|
25650 | preventButtonClick = false;
|
25651 | return;
|
25652 | }
|
25653 |
|
25654 | stepper.increment(true);
|
25655 | }
|
25656 |
|
25657 | function onInputClick(e) {
|
25658 | if (!e.target.readOnly && stepper.params.manualInputMode) {
|
25659 | manualInput = true;
|
25660 |
|
25661 | if (typeof e.target.selectionStart === 'number') {
|
25662 | e.target.selectionStart = e.target.value.length;
|
25663 | e.target.selectionEnd = e.target.value.length;
|
25664 | }
|
25665 | }
|
25666 | }
|
25667 |
|
25668 | function onInputKey(e) {
|
25669 | if (e.keyCode === 13 || e.which === 13) {
|
25670 | e.preventDefault();
|
25671 | manualInput = false;
|
25672 | stepper.endTypeMode();
|
25673 | }
|
25674 | }
|
25675 |
|
25676 | function onInputBlur() {
|
25677 | manualInput = false;
|
25678 | stepper.endTypeMode(true);
|
25679 | }
|
25680 |
|
25681 | function onInput(e) {
|
25682 | if (manualInput) {
|
25683 | stepper.typeValue(e.target.value);
|
25684 | return;
|
25685 | }
|
25686 |
|
25687 | if (e.detail && e.detail.sentByF7Stepper) return;
|
25688 | stepper.setValue(e.target.value, true);
|
25689 | }
|
25690 |
|
25691 | stepper.attachEvents = function attachEvents() {
|
25692 | $buttonMinusEl.on('click', onMinusClick);
|
25693 | $buttonPlusEl.on('click', onPlusClick);
|
25694 |
|
25695 | if (stepper.params.watchInput && $inputEl && $inputEl.length) {
|
25696 | $inputEl.on('input', onInput);
|
25697 | $inputEl.on('click', onInputClick);
|
25698 | $inputEl.on('blur', onInputBlur);
|
25699 | $inputEl.on('keyup', onInputKey);
|
25700 | }
|
25701 |
|
25702 | if (stepper.params.autorepeat) {
|
25703 | app.on('touchstart:passive', onTouchStart);
|
25704 | app.on('touchmove:active', onTouchMove);
|
25705 | app.on('touchend:passive', onTouchEnd);
|
25706 | }
|
25707 | };
|
25708 |
|
25709 | stepper.detachEvents = function detachEvents() {
|
25710 | $buttonMinusEl.off('click', onMinusClick);
|
25711 | $buttonPlusEl.off('click', onPlusClick);
|
25712 |
|
25713 | if (stepper.params.watchInput && $inputEl && $inputEl.length) {
|
25714 | $inputEl.off('input', onInput);
|
25715 | $inputEl.off('click', onInputClick);
|
25716 | $inputEl.off('blur', onInputBlur);
|
25717 | $inputEl.off('keyup', onInputKey);
|
25718 | }
|
25719 | };
|
25720 |
|
25721 |
|
25722 | stepper.useModules();
|
25723 |
|
25724 | stepper.init();
|
25725 | return stepper || _assertThisInitialized(_this);
|
25726 | }
|
25727 |
|
25728 | var _proto = Stepper.prototype;
|
25729 |
|
25730 | _proto.minus = function minus() {
|
25731 | return this.decrement();
|
25732 | };
|
25733 |
|
25734 | _proto.plus = function plus() {
|
25735 | return this.increment();
|
25736 | };
|
25737 |
|
25738 | _proto.decrement = function decrement() {
|
25739 | var stepper = this;
|
25740 | return stepper.setValue(stepper.value - stepper.step, false, true);
|
25741 | };
|
25742 |
|
25743 | _proto.increment = function increment() {
|
25744 | var stepper = this;
|
25745 | return stepper.setValue(stepper.value + stepper.step, false, true);
|
25746 | };
|
25747 |
|
25748 | _proto.setValue = function setValue(newValue, forceUpdate, withWraps) {
|
25749 | var stepper = this;
|
25750 | var step = stepper.step,
|
25751 | min = stepper.min,
|
25752 | max = stepper.max;
|
25753 | var oldValue = stepper.value;
|
25754 | var value = Math.round(newValue / step) * step;
|
25755 |
|
25756 | if (stepper.params.wraps && withWraps) {
|
25757 | if (value > max) value = min;
|
25758 | if (value < min) value = max;
|
25759 | } else {
|
25760 | value = Math.max(Math.min(value, max), min);
|
25761 | }
|
25762 |
|
25763 | if (Number.isNaN(value)) {
|
25764 | value = oldValue;
|
25765 | }
|
25766 |
|
25767 | stepper.value = value;
|
25768 | var valueChanged = oldValue !== value;
|
25769 |
|
25770 | if (!valueChanged && !forceUpdate) return stepper;
|
25771 | stepper.$el.trigger('stepper:change', stepper.value);
|
25772 | var formattedValue = stepper.formatValue(stepper.value);
|
25773 |
|
25774 | if (stepper.$inputEl && stepper.$inputEl.length) {
|
25775 | stepper.$inputEl.val(formattedValue);
|
25776 | stepper.$inputEl.trigger('input change', {
|
25777 | sentByF7Stepper: true
|
25778 | });
|
25779 | }
|
25780 |
|
25781 | if (stepper.$valueEl && stepper.$valueEl.length) {
|
25782 | stepper.$valueEl.html(formattedValue);
|
25783 | }
|
25784 |
|
25785 | stepper.emit('local::change stepperChange', stepper, stepper.value);
|
25786 | return stepper;
|
25787 | };
|
25788 |
|
25789 | _proto.endTypeMode = function endTypeMode(noBlur) {
|
25790 | var stepper = this;
|
25791 | var min = stepper.min,
|
25792 | max = stepper.max;
|
25793 | var value = parseFloat(stepper.value);
|
25794 | if (Number.isNaN(value)) value = 0;
|
25795 | value = Math.max(Math.min(value, max), min);
|
25796 | stepper.value = value;
|
25797 |
|
25798 | if (!stepper.typeModeChanged) {
|
25799 | if (stepper.$inputEl && stepper.$inputEl.length && !noBlur) {
|
25800 | stepper.$inputEl.blur();
|
25801 | }
|
25802 |
|
25803 | return stepper;
|
25804 | }
|
25805 |
|
25806 | stepper.typeModeChanged = false;
|
25807 | stepper.$el.trigger('stepper:change', stepper.value);
|
25808 | var formattedValue = stepper.formatValue(stepper.value);
|
25809 |
|
25810 | if (stepper.$inputEl && stepper.$inputEl.length) {
|
25811 | stepper.$inputEl.val(formattedValue);
|
25812 | stepper.$inputEl.trigger('input change', {
|
25813 | sentByF7Stepper: true
|
25814 | });
|
25815 | if (!noBlur) stepper.$inputEl.blur();
|
25816 | }
|
25817 |
|
25818 | if (stepper.$valueEl && stepper.$valueEl.length) {
|
25819 | stepper.$valueEl.html(formattedValue);
|
25820 | }
|
25821 |
|
25822 | stepper.emit('local::change stepperChange', stepper, stepper.value);
|
25823 | return stepper;
|
25824 | };
|
25825 |
|
25826 | _proto.typeValue = function typeValue(value) {
|
25827 | var stepper = this;
|
25828 | stepper.typeModeChanged = true;
|
25829 | var inputTxt = String(value);
|
25830 |
|
25831 | if (inputTxt.lastIndexOf('.') + 1 === inputTxt.length || inputTxt.lastIndexOf(',') + 1 === inputTxt.length) {
|
25832 | if (inputTxt.lastIndexOf('.') !== inputTxt.indexOf('.') || inputTxt.lastIndexOf(',') !== inputTxt.indexOf(',')) {
|
25833 | inputTxt = inputTxt.slice(0, -1);
|
25834 | stepper.value = inputTxt;
|
25835 | stepper.$inputEl.val(stepper.value);
|
25836 | return stepper;
|
25837 | }
|
25838 | } else {
|
25839 | var newValue = parseFloat(inputTxt.replace(',', '.'));
|
25840 |
|
25841 | if (newValue === 0) {
|
25842 | stepper.value = inputTxt.replace(',', '.');
|
25843 | stepper.$inputEl.val(stepper.value);
|
25844 | return stepper;
|
25845 | }
|
25846 |
|
25847 | if (Number.isNaN(newValue)) {
|
25848 | stepper.value = 0;
|
25849 | stepper.$inputEl.val(stepper.value);
|
25850 | return stepper;
|
25851 | }
|
25852 |
|
25853 | var powVal = Math.pow(10, stepper.params.decimalPoint);
|
25854 | newValue = Math.round(newValue * powVal).toFixed(stepper.params.decimalPoint + 1) / powVal;
|
25855 | stepper.value = parseFloat(String(newValue).replace(',', '.'));
|
25856 | stepper.$inputEl.val(stepper.value);
|
25857 | return stepper;
|
25858 | }
|
25859 |
|
25860 | stepper.value = inputTxt;
|
25861 | stepper.$inputEl.val(inputTxt);
|
25862 | return stepper;
|
25863 | };
|
25864 |
|
25865 | _proto.getValue = function getValue() {
|
25866 | return this.value;
|
25867 | };
|
25868 |
|
25869 | _proto.formatValue = function formatValue(value) {
|
25870 | var stepper = this;
|
25871 | if (!stepper.params.formatValue) return value;
|
25872 | return stepper.params.formatValue.call(stepper, value);
|
25873 | };
|
25874 |
|
25875 | _proto.init = function init() {
|
25876 | var stepper = this;
|
25877 | stepper.attachEvents();
|
25878 |
|
25879 | if (stepper.$valueEl && stepper.$valueEl.length) {
|
25880 | var formattedValue = stepper.formatValue(stepper.value);
|
25881 | stepper.$valueEl.html(formattedValue);
|
25882 | }
|
25883 |
|
25884 | return stepper;
|
25885 | };
|
25886 |
|
25887 | _proto.destroy = function destroy() {
|
25888 | var stepper = this;
|
25889 | stepper.$el.trigger('stepper:beforedestroy');
|
25890 | stepper.emit('local::beforeDestroy stepperBeforeDestroy', stepper);
|
25891 | delete stepper.$el[0].f7Stepper;
|
25892 | stepper.detachEvents();
|
25893 | deleteProps$1(stepper);
|
25894 | stepper = null;
|
25895 | };
|
25896 |
|
25897 | return Stepper;
|
25898 | }(Framework7Class);
|
25899 |
|
25900 | var Stepper = {
|
25901 | name: 'stepper',
|
25902 | create: function create() {
|
25903 | var app = this;
|
25904 | app.stepper = extend$1(ConstructorMethods({
|
25905 | defaultSelector: '.stepper',
|
25906 | constructor: Stepper$1,
|
25907 | app: app,
|
25908 | domProp: 'f7Stepper'
|
25909 | }), {
|
25910 | getValue: function getValue(el) {
|
25911 | if (el === void 0) {
|
25912 | el = '.stepper';
|
25913 | }
|
25914 |
|
25915 | var stepper = app.stepper.get(el);
|
25916 | if (stepper) return stepper.getValue();
|
25917 | return undefined;
|
25918 | },
|
25919 | setValue: function setValue(el, value) {
|
25920 | if (el === void 0) {
|
25921 | el = '.stepper';
|
25922 | }
|
25923 |
|
25924 | var stepper = app.stepper.get(el);
|
25925 | if (stepper) return stepper.setValue(value);
|
25926 | return undefined;
|
25927 | }
|
25928 | });
|
25929 | },
|
25930 | static: {
|
25931 | Stepper: Stepper$1
|
25932 | },
|
25933 | on: {
|
25934 | tabMounted: function tabMounted(tabEl) {
|
25935 | var app = this;
|
25936 | $(tabEl).find('.stepper-init').each(function (stepperEl) {
|
25937 | var dataset = $(stepperEl).dataset();
|
25938 | app.stepper.create(extend$1({
|
25939 | el: stepperEl
|
25940 | }, dataset || {}));
|
25941 | });
|
25942 | },
|
25943 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
25944 | $(tabEl).find('.stepper-init').each(function (stepperEl) {
|
25945 | if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();
|
25946 | });
|
25947 | },
|
25948 | pageInit: function pageInit(page) {
|
25949 | var app = this;
|
25950 | page.$el.find('.stepper-init').each(function (stepperEl) {
|
25951 | var dataset = $(stepperEl).dataset();
|
25952 | app.stepper.create(extend$1({
|
25953 | el: stepperEl
|
25954 | }, dataset || {}));
|
25955 | });
|
25956 | },
|
25957 | pageBeforeRemove: function pageBeforeRemove(page) {
|
25958 | page.$el.find('.stepper-init').each(function (stepperEl) {
|
25959 | if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();
|
25960 | });
|
25961 | }
|
25962 | },
|
25963 | vnode: {
|
25964 | 'stepper-init': {
|
25965 | insert: function insert(vnode) {
|
25966 | var app = this;
|
25967 | var stepperEl = vnode.elm;
|
25968 | var dataset = $(stepperEl).dataset();
|
25969 | app.stepper.create(extend$1({
|
25970 | el: stepperEl
|
25971 | }, dataset || {}));
|
25972 | },
|
25973 | destroy: function destroy(vnode) {
|
25974 | var stepperEl = vnode.elm;
|
25975 | if (stepperEl.f7Stepper) stepperEl.f7Stepper.destroy();
|
25976 | }
|
25977 | }
|
25978 | }
|
25979 | };
|
25980 |
|
25981 | var SmartSelect$1 = function (_Framework7Class) {
|
25982 | _inheritsLoose(SmartSelect, _Framework7Class);
|
25983 |
|
25984 | function SmartSelect(app, params) {
|
25985 | var _this;
|
25986 |
|
25987 | if (params === void 0) {
|
25988 | params = {};
|
25989 | }
|
25990 |
|
25991 | _this = _Framework7Class.call(this, params, [app]) || this;
|
25992 |
|
25993 | var ss = _assertThisInitialized(_this);
|
25994 |
|
25995 | var defaults = extend$1({
|
25996 | on: {}
|
25997 | }, app.params.smartSelect);
|
25998 |
|
25999 | if (typeof defaults.searchbarDisableButton === 'undefined') {
|
26000 | defaults.searchbarDisableButton = app.theme !== 'aurora';
|
26001 | }
|
26002 |
|
26003 |
|
26004 | ss.useModulesParams(defaults);
|
26005 | ss.params = extend$1({}, defaults, params);
|
26006 | ss.app = app;
|
26007 | var $el = $(ss.params.el).eq(0);
|
26008 | if ($el.length === 0) return ss || _assertThisInitialized(_this);
|
26009 | if ($el[0].f7SmartSelect) return $el[0].f7SmartSelect || _assertThisInitialized(_this);
|
26010 | var $selectEl = $el.find('select').eq(0);
|
26011 | if ($selectEl.length === 0) return ss || _assertThisInitialized(_this);
|
26012 | var $valueEl;
|
26013 |
|
26014 | if (ss.params.setValueText) {
|
26015 | $valueEl = $(ss.params.valueEl);
|
26016 |
|
26017 | if ($valueEl.length === 0) {
|
26018 | $valueEl = $el.find('.item-after');
|
26019 | }
|
26020 |
|
26021 | if ($valueEl.length === 0) {
|
26022 | $valueEl = $('<div class="item-after"></div>');
|
26023 | $valueEl.insertAfter($el.find('.item-title'));
|
26024 | }
|
26025 | }
|
26026 |
|
26027 |
|
26028 | var url = params.url;
|
26029 |
|
26030 | if (!url) {
|
26031 | if ($el.attr('href') && $el.attr('href') !== '#') url = $el.attr('href');else if ($selectEl.attr('name')) url = $selectEl.attr('name').toLowerCase() + "-select/";
|
26032 | }
|
26033 |
|
26034 | if (!url) url = ss.params.url;
|
26035 | var multiple = $selectEl[0].multiple;
|
26036 | var inputType = multiple ? 'checkbox' : 'radio';
|
26037 | var selectId = id();
|
26038 | extend$1(ss, {
|
26039 | $el: $el,
|
26040 | el: $el[0],
|
26041 | $selectEl: $selectEl,
|
26042 | selectEl: $selectEl[0],
|
26043 | $valueEl: $valueEl,
|
26044 | valueEl: $valueEl && $valueEl[0],
|
26045 | url: url,
|
26046 | multiple: multiple,
|
26047 | inputType: inputType,
|
26048 | id: selectId,
|
26049 | inputName: inputType + "-" + selectId,
|
26050 | selectName: $selectEl.attr('name'),
|
26051 | maxLength: $selectEl.attr('maxlength') || params.maxLength
|
26052 | });
|
26053 | $el[0].f7SmartSelect = ss;
|
26054 |
|
26055 | function onClick() {
|
26056 | ss.open();
|
26057 | }
|
26058 |
|
26059 | function onChange() {
|
26060 | var value = ss.$selectEl.val();
|
26061 | ss.$el.trigger('smartselect:change', value);
|
26062 | ss.emit('local::change smartSelectChange', ss, value);
|
26063 |
|
26064 | if (ss.vl) {
|
26065 | ss.vl.clearCache();
|
26066 | }
|
26067 |
|
26068 | ss.setValueText();
|
26069 | }
|
26070 |
|
26071 | ss.attachEvents = function attachEvents() {
|
26072 | $el.on('click', onClick);
|
26073 | $el.on('change', 'select', onChange);
|
26074 | };
|
26075 |
|
26076 | ss.detachEvents = function detachEvents() {
|
26077 | $el.off('click', onClick);
|
26078 | $el.off('change', 'select', onChange);
|
26079 | };
|
26080 |
|
26081 | function handleInputChange() {
|
26082 | var optionEl;
|
26083 | var text;
|
26084 | var inputEl = this;
|
26085 | var value = inputEl.value;
|
26086 | var optionText = [];
|
26087 | var displayAs;
|
26088 |
|
26089 | if (inputEl.type === 'checkbox') {
|
26090 | for (var i = 0; i < ss.selectEl.options.length; i += 1) {
|
26091 | optionEl = ss.selectEl.options[i];
|
26092 |
|
26093 | if (optionEl.value === value) {
|
26094 | optionEl.selected = inputEl.checked;
|
26095 | }
|
26096 |
|
26097 | if (optionEl.selected) {
|
26098 | displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');
|
26099 | text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;
|
26100 | optionText.push(text.trim());
|
26101 | }
|
26102 | }
|
26103 |
|
26104 | if (ss.maxLength) {
|
26105 | ss.checkMaxLength();
|
26106 | }
|
26107 | } else {
|
26108 | optionEl = ss.$selectEl.find("option[value=\"" + value + "\"]")[0];
|
26109 |
|
26110 | if (!optionEl) {
|
26111 | optionEl = ss.$selectEl.find('option').filter(function (optEl) {
|
26112 | return optEl.value === value;
|
26113 | })[0];
|
26114 | }
|
26115 |
|
26116 | displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');
|
26117 | text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;
|
26118 | optionText = [text];
|
26119 | ss.selectEl.value = value;
|
26120 | }
|
26121 |
|
26122 | ss.$selectEl.trigger('change');
|
26123 |
|
26124 | if (ss.params.setValueText) {
|
26125 | ss.$valueEl.text(ss.formatValueText(optionText));
|
26126 | }
|
26127 |
|
26128 | if (ss.params.closeOnSelect && ss.inputType === 'radio') {
|
26129 | ss.close();
|
26130 | }
|
26131 | }
|
26132 |
|
26133 | ss.attachInputsEvents = function attachInputsEvents() {
|
26134 | ss.$containerEl.on('change', 'input[type="checkbox"], input[type="radio"]', handleInputChange);
|
26135 | };
|
26136 |
|
26137 | ss.detachInputsEvents = function detachInputsEvents() {
|
26138 | ss.$containerEl.off('change', 'input[type="checkbox"], input[type="radio"]', handleInputChange);
|
26139 | };
|
26140 |
|
26141 |
|
26142 | ss.useModules();
|
26143 |
|
26144 | ss.init();
|
26145 | return ss || _assertThisInitialized(_this);
|
26146 | }
|
26147 |
|
26148 | var _proto = SmartSelect.prototype;
|
26149 |
|
26150 | _proto.setValue = function setValue(value) {
|
26151 | var ss = this;
|
26152 | var newValue = value;
|
26153 | var optionText = [];
|
26154 | var optionEl;
|
26155 | var displayAs;
|
26156 | var text;
|
26157 |
|
26158 | if (ss.multiple) {
|
26159 | if (!Array.isArray(newValue)) newValue = [newValue];
|
26160 |
|
26161 | for (var i = 0; i < ss.selectEl.options.length; i += 1) {
|
26162 | optionEl = ss.selectEl.options[i];
|
26163 |
|
26164 | if (newValue.indexOf(optionEl.value) >= 0) {
|
26165 | optionEl.selected = true;
|
26166 | } else {
|
26167 | optionEl.selected = false;
|
26168 | }
|
26169 |
|
26170 | if (optionEl.selected) {
|
26171 | displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-value-as');
|
26172 | text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;
|
26173 | optionText.push(text.trim());
|
26174 | }
|
26175 | }
|
26176 | } else {
|
26177 | optionEl = ss.$selectEl.find("option[value=\"" + newValue + "\"]")[0];
|
26178 |
|
26179 | if (optionEl) {
|
26180 | displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $(optionEl).data('display-as');
|
26181 | text = displayAs && typeof displayAs !== 'undefined' ? displayAs : optionEl.textContent;
|
26182 | optionText = [text];
|
26183 | }
|
26184 |
|
26185 | ss.selectEl.value = newValue;
|
26186 | }
|
26187 |
|
26188 | if (ss.params.setValueText) {
|
26189 | ss.$valueEl.text(ss.formatValueText(optionText));
|
26190 | }
|
26191 |
|
26192 | ss.$selectEl.trigger('change');
|
26193 | return ss;
|
26194 | };
|
26195 |
|
26196 | _proto.unsetValue = function unsetValue() {
|
26197 | var ss = this;
|
26198 |
|
26199 | if (ss.params.setValueText) {
|
26200 | ss.$valueEl.text(ss.formatValueText([]));
|
26201 | }
|
26202 |
|
26203 | ss.$selectEl.find('option').each(function (optionEl) {
|
26204 | optionEl.selected = false;
|
26205 | optionEl.checked = false;
|
26206 | });
|
26207 | ss.$selectEl[0].value = null;
|
26208 |
|
26209 | if (ss.$containerEl) {
|
26210 | ss.$containerEl.find("input[name=\"" + ss.inputName + "\"][type=\"checkbox\"], input[name=\"" + ss.inputName + "\"][type=\"radio\"]").prop('checked', false);
|
26211 | }
|
26212 |
|
26213 | ss.$selectEl.trigger('change');
|
26214 | };
|
26215 |
|
26216 | _proto.getValue = function getValue() {
|
26217 | var ss = this;
|
26218 | return ss.$selectEl.val();
|
26219 | };
|
26220 |
|
26221 | _proto.checkMaxLength = function checkMaxLength() {
|
26222 | var ss = this;
|
26223 | var $containerEl = ss.$containerEl;
|
26224 |
|
26225 | if (ss.selectEl.selectedOptions.length >= ss.maxLength) {
|
26226 | $containerEl.find('input[type="checkbox"]').each(function (inputEl) {
|
26227 | if (!inputEl.checked) {
|
26228 | $(inputEl).parents('li').addClass('disabled');
|
26229 | } else {
|
26230 | $(inputEl).parents('li').removeClass('disabled');
|
26231 | }
|
26232 | });
|
26233 | } else {
|
26234 | $containerEl.find('.disabled').removeClass('disabled');
|
26235 | }
|
26236 | };
|
26237 |
|
26238 | _proto.formatValueText = function formatValueText(values) {
|
26239 | var ss = this;
|
26240 | var textValue;
|
26241 |
|
26242 | if (ss.params.formatValueText) {
|
26243 | textValue = ss.params.formatValueText.call(ss, values, ss);
|
26244 | } else {
|
26245 | textValue = values.join(', ');
|
26246 | }
|
26247 |
|
26248 | return textValue;
|
26249 | };
|
26250 |
|
26251 | _proto.setValueText = function setValueText(value) {
|
26252 | var ss = this;
|
26253 | var valueArray = [];
|
26254 |
|
26255 | if (typeof value !== 'undefined') {
|
26256 | if (Array.isArray(value)) {
|
26257 | valueArray = value;
|
26258 | } else {
|
26259 | valueArray = [value];
|
26260 | }
|
26261 | } else {
|
26262 | ss.$selectEl.find('option').each(function (optionEl) {
|
26263 | var $optionEl = $(optionEl);
|
26264 |
|
26265 | if (optionEl.selected) {
|
26266 | var displayAs = optionEl.dataset ? optionEl.dataset.displayAs : $optionEl.data('display-value-as');
|
26267 |
|
26268 | if (displayAs && typeof displayAs !== 'undefined') {
|
26269 | valueArray.push(displayAs);
|
26270 | } else {
|
26271 | valueArray.push(optionEl.textContent.trim());
|
26272 | }
|
26273 | }
|
26274 | });
|
26275 | }
|
26276 |
|
26277 | if (ss.params.setValueText) {
|
26278 | ss.$valueEl.text(ss.formatValueText(valueArray));
|
26279 | }
|
26280 | };
|
26281 |
|
26282 | _proto.getItemsData = function getItemsData() {
|
26283 | var ss = this;
|
26284 | var theme = ss.app.theme;
|
26285 | var items = [];
|
26286 | var previousGroupEl;
|
26287 | ss.$selectEl.find('option').each(function (optionEl) {
|
26288 | var $optionEl = $(optionEl);
|
26289 | var optionData = $optionEl.dataset();
|
26290 | var optionImage = optionData.optionImage || ss.params.optionImage;
|
26291 | var optionIcon = optionData.optionIcon || ss.params.optionIcon;
|
26292 | var optionIconIos = theme === 'ios' && (optionData.optionIconIos || ss.params.optionIconIos);
|
26293 | var optionIconMd = theme === 'md' && (optionData.optionIconMd || ss.params.optionIconMd);
|
26294 | var optionIconAurora = theme === 'aurora' && (optionData.optionIconAurora || ss.params.optionIconAurora);
|
26295 | var optionHasMedia = optionImage || optionIcon || optionIconIos || optionIconMd || optionIconAurora;
|
26296 | var optionColor = optionData.optionColor;
|
26297 | var optionClassName = optionData.optionClass || '';
|
26298 | if ($optionEl[0].disabled) optionClassName += ' disabled';
|
26299 | var optionGroupEl = $optionEl.parent('optgroup')[0];
|
26300 | var optionGroupLabel = optionGroupEl && optionGroupEl.label;
|
26301 | var optionIsLabel = false;
|
26302 |
|
26303 | if (optionGroupEl && optionGroupEl !== previousGroupEl) {
|
26304 | optionIsLabel = true;
|
26305 | previousGroupEl = optionGroupEl;
|
26306 | items.push({
|
26307 | groupLabel: optionGroupLabel,
|
26308 | isLabel: optionIsLabel
|
26309 | });
|
26310 | }
|
26311 |
|
26312 | items.push({
|
26313 | value: $optionEl[0].value,
|
26314 | text: $optionEl[0].textContent.trim(),
|
26315 | selected: $optionEl[0].selected,
|
26316 | groupEl: optionGroupEl,
|
26317 | groupLabel: optionGroupLabel,
|
26318 | image: optionImage,
|
26319 | icon: optionIcon,
|
26320 | iconIos: optionIconIos,
|
26321 | iconMd: optionIconMd,
|
26322 | iconAurora: optionIconAurora,
|
26323 | color: optionColor,
|
26324 | className: optionClassName,
|
26325 | disabled: $optionEl[0].disabled,
|
26326 | id: ss.id,
|
26327 | hasMedia: optionHasMedia,
|
26328 | checkbox: ss.inputType === 'checkbox',
|
26329 | radio: ss.inputType === 'radio',
|
26330 | inputName: ss.inputName,
|
26331 | inputType: ss.inputType
|
26332 | });
|
26333 | });
|
26334 | ss.items = items;
|
26335 | return items;
|
26336 | };
|
26337 |
|
26338 | _proto.renderSearchbar = function renderSearchbar() {
|
26339 | var ss = this;
|
26340 | if (ss.params.renderSearchbar) return ss.params.renderSearchbar.call(ss);
|
26341 | return $jsx("form", {
|
26342 | class: "searchbar"
|
26343 | }, $jsx("div", {
|
26344 | class: "searchbar-inner"
|
26345 | }, $jsx("div", {
|
26346 | class: "searchbar-input-wrap"
|
26347 | }, $jsx("input", {
|
26348 | type: "search",
|
26349 | spellcheck: ss.params.searchbarSpellcheck || 'false',
|
26350 | placeholder: ss.params.searchbarPlaceholder
|
26351 | }), $jsx("i", {
|
26352 | class: "searchbar-icon"
|
26353 | }), $jsx("span", {
|
26354 | class: "input-clear-button"
|
26355 | })), ss.params.searchbarDisableButton && $jsx("span", {
|
26356 | class: "searchbar-disable-button"
|
26357 | }, ss.params.searchbarDisableText)));
|
26358 | };
|
26359 |
|
26360 | _proto.renderItem = function renderItem(item, index) {
|
26361 | var ss = this;
|
26362 | if (ss.params.renderItem) return ss.params.renderItem.call(ss, item, index);
|
26363 |
|
26364 | function getIconContent(iconValue) {
|
26365 | if (iconValue === void 0) {
|
26366 | iconValue = '';
|
26367 | }
|
26368 |
|
26369 | if (iconValue.indexOf(':') >= 0) {
|
26370 | return iconValue.split(':')[1];
|
26371 | }
|
26372 |
|
26373 | return '';
|
26374 | }
|
26375 |
|
26376 | function getIconClass(iconValue) {
|
26377 | if (iconValue === void 0) {
|
26378 | iconValue = '';
|
26379 | }
|
26380 |
|
26381 | if (iconValue.indexOf(':') >= 0) {
|
26382 | var className = iconValue.split(':')[0];
|
26383 | if (className === 'f7') className = 'f7-icons';
|
26384 | if (className === 'material') className = 'material-icons';
|
26385 | return className;
|
26386 | }
|
26387 |
|
26388 | return iconValue;
|
26389 | }
|
26390 |
|
26391 | var itemHtml;
|
26392 |
|
26393 | if (item.isLabel) {
|
26394 | itemHtml = "<li class=\"item-divider\">" + item.groupLabel + "</li>";
|
26395 | } else {
|
26396 | var selected = item.selected;
|
26397 | var disabled;
|
26398 |
|
26399 | if (ss.params.virtualList) {
|
26400 | var ssValue = ss.getValue();
|
26401 | selected = ss.multiple ? ssValue.indexOf(item.value) >= 0 : ssValue === item.value;
|
26402 |
|
26403 | if (ss.multiple) {
|
26404 | disabled = ss.multiple && !selected && ssValue.length === parseInt(ss.maxLength, 10);
|
26405 | }
|
26406 | }
|
26407 |
|
26408 | var icon = item.icon,
|
26409 | iconIos = item.iconIos,
|
26410 | iconMd = item.iconMd,
|
26411 | iconAurora = item.iconAurora;
|
26412 | var hasIcon = icon || iconIos || iconMd || iconAurora;
|
26413 | var iconContent = getIconContent(icon || iconIos || iconMd || iconAurora || '');
|
26414 | var iconClass = getIconClass(icon || iconIos || iconMd || iconAurora || '');
|
26415 | itemHtml = $jsx("li", {
|
26416 | class: "" + (item.className || '') + (disabled ? ' disabled' : '')
|
26417 | }, $jsx("label", {
|
26418 | class: "item-" + item.inputType + " item-content"
|
26419 | }, $jsx("input", {
|
26420 | type: item.inputType,
|
26421 | name: item.inputName,
|
26422 | value: item.value,
|
26423 | _checked: selected
|
26424 | }), $jsx("i", {
|
26425 | class: "icon icon-" + item.inputType
|
26426 | }), item.hasMedia && $jsx("div", {
|
26427 | class: "item-media"
|
26428 | }, hasIcon && $jsx("i", {
|
26429 | class: "icon " + iconClass
|
26430 | }, iconContent), item.image && $jsx("img", {
|
26431 | src: item.image
|
26432 | })), $jsx("div", {
|
26433 | class: "item-inner"
|
26434 | }, $jsx("div", {
|
26435 | class: "item-title" + (item.color ? " text-color-" + item.color : '')
|
26436 | }, item.text))));
|
26437 | }
|
26438 |
|
26439 | return itemHtml;
|
26440 | };
|
26441 |
|
26442 | _proto.renderItems = function renderItems() {
|
26443 | var ss = this;
|
26444 | if (ss.params.renderItems) return ss.params.renderItems.call(ss, ss.items);
|
26445 | var itemsHtml = "\n " + ss.items.map(function (item, index) {
|
26446 | return "" + ss.renderItem(item, index);
|
26447 | }).join('') + "\n ";
|
26448 | return itemsHtml;
|
26449 | };
|
26450 |
|
26451 | _proto.renderPage = function renderPage() {
|
26452 | var ss = this;
|
26453 | if (ss.params.renderPage) return ss.params.renderPage.call(ss, ss.items);
|
26454 | var pageTitle = ss.params.pageTitle;
|
26455 |
|
26456 | if (typeof pageTitle === 'undefined') {
|
26457 | var $itemTitleEl = ss.$el.find('.item-title');
|
26458 | pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';
|
26459 | }
|
26460 |
|
26461 | var cssClass = ss.params.cssClass;
|
26462 | return $jsx("div", {
|
26463 | class: "page smart-select-page " + cssClass,
|
26464 | "data-name": "smart-select-page",
|
26465 | "data-select-name": ss.selectName
|
26466 | }, $jsx("div", {
|
26467 | class: "navbar " + (ss.params.navbarColorTheme ? "color-" + ss.params.navbarColorTheme : '')
|
26468 | }, $jsx("div", {
|
26469 | class: "navbar-bg"
|
26470 | }), $jsx("div", {
|
26471 | class: "navbar-inner sliding " + (ss.params.navbarColorTheme ? "color-" + ss.params.navbarColorTheme : '')
|
26472 | }, $jsx("div", {
|
26473 | class: "left"
|
26474 | }, $jsx("a", {
|
26475 | class: "link back"
|
26476 | }, $jsx("i", {
|
26477 | class: "icon icon-back"
|
26478 | }), $jsx("span", {
|
26479 | class: "if-not-md"
|
26480 | }, ss.params.pageBackLinkText))), pageTitle && $jsx("div", {
|
26481 | class: "title"
|
26482 | }, pageTitle), ss.params.searchbar && $jsx("div", {
|
26483 | class: "subnavbar"
|
26484 | }, ss.renderSearchbar()))), ss.params.searchbar && $jsx("div", {
|
26485 | class: "searchbar-backdrop"
|
26486 | }), $jsx("div", {
|
26487 | class: "page-content"
|
26488 | }, $jsx("div", {
|
26489 | class: "list smart-select-list-" + ss.id + " " + (ss.params.virtualList ? ' virtual-list' : '') + " " + (ss.params.formColorTheme ? "color-" + ss.params.formColorTheme : '')
|
26490 | }, $jsx("ul", null, !ss.params.virtualList && ss.renderItems(ss.items)))));
|
26491 | };
|
26492 |
|
26493 | _proto.renderPopup = function renderPopup() {
|
26494 | var ss = this;
|
26495 | if (ss.params.renderPopup) return ss.params.renderPopup.call(ss, ss.items);
|
26496 | var pageTitle = ss.params.pageTitle;
|
26497 |
|
26498 | if (typeof pageTitle === 'undefined') {
|
26499 | var $itemTitleEl = ss.$el.find('.item-title');
|
26500 | pageTitle = $itemTitleEl.length ? $itemTitleEl.text().trim() : '';
|
26501 | }
|
26502 |
|
26503 | var cssClass = ss.params.cssClass || '';
|
26504 | return $jsx("div", {
|
26505 | class: "popup smart-select-popup " + cssClass + " " + (ss.params.popupTabletFullscreen ? 'popup-tablet-fullscreen' : ''),
|
26506 | "data-select-name": ss.selectName
|
26507 | }, $jsx("div", {
|
26508 | class: "view"
|
26509 | }, $jsx("div", {
|
26510 | class: "page smart-select-page " + (ss.params.searchbar ? 'page-with-subnavbar' : ''),
|
26511 | "data-name": "smart-select-page"
|
26512 | }, $jsx("div", {
|
26513 | class: "navbar " + (ss.params.navbarColorTheme ? "color-" + ss.params.navbarColorTheme : '')
|
26514 | }, $jsx("div", {
|
26515 | class: "navbar-bg"
|
26516 | }), $jsx("div", {
|
26517 | class: "navbar-inner sliding"
|
26518 | }, pageTitle && $jsx("div", {
|
26519 | class: "title"
|
26520 | }, pageTitle), $jsx("div", {
|
26521 | class: "right"
|
26522 | }, $jsx("a", {
|
26523 | class: "link popup-close",
|
26524 | "data-popup": ".smart-select-popup[data-select-name='" + ss.selectName + "']"
|
26525 | }, ss.params.popupCloseLinkText)), ss.params.searchbar && $jsx("div", {
|
26526 | class: "subnavbar"
|
26527 | }, ss.renderSearchbar()))), ss.params.searchbar && $jsx("div", {
|
26528 | class: "searchbar-backdrop"
|
26529 | }), $jsx("div", {
|
26530 | class: "page-content"
|
26531 | }, $jsx("div", {
|
26532 | class: "list smart-select-list-" + ss.id + " " + (ss.params.virtualList ? ' virtual-list' : '') + " " + (ss.params.formColorTheme ? "color-" + ss.params.formColorTheme : '')
|
26533 | }, $jsx("ul", null, !ss.params.virtualList && ss.renderItems(ss.items)))))));
|
26534 | };
|
26535 |
|
26536 | _proto.renderSheet = function renderSheet() {
|
26537 | var ss = this;
|
26538 | if (ss.params.renderSheet) return ss.params.renderSheet.call(ss, ss.items);
|
26539 | var cssClass = ss.params.cssClass;
|
26540 |
|
26541 | return $jsx("div", {
|
26542 | class: "sheet-modal smart-select-sheet " + cssClass,
|
26543 | "data-select-name": ss.selectName
|
26544 | }, $jsx("div", {
|
26545 | class: "toolbar toolbar-top " + (ss.params.toolbarColorTheme ? "color-" + ss.params.toolbarColorTheme : '')
|
26546 | }, $jsx("div", {
|
26547 | class: "toolbar-inner"
|
26548 | }, $jsx("div", {
|
26549 | class: "left"
|
26550 | }), $jsx("div", {
|
26551 | class: "right"
|
26552 | }, $jsx("a", {
|
26553 | class: "link sheet-close"
|
26554 | }, ss.params.sheetCloseLinkText)))), $jsx("div", {
|
26555 | class: "sheet-modal-inner"
|
26556 | }, $jsx("div", {
|
26557 | class: "page-content"
|
26558 | }, $jsx("div", {
|
26559 | class: "list smart-select-list-" + ss.id + " " + (ss.params.virtualList ? ' virtual-list' : '') + " " + (ss.params.formColorTheme ? "color-" + ss.params.formColorTheme : '')
|
26560 | }, $jsx("ul", null, !ss.params.virtualList && ss.renderItems(ss.items))))));
|
26561 | };
|
26562 |
|
26563 | _proto.renderPopover = function renderPopover() {
|
26564 | var ss = this;
|
26565 | if (ss.params.renderPopover) return ss.params.renderPopover.call(ss, ss.items);
|
26566 | var cssClass = ss.params.cssClass;
|
26567 |
|
26568 | return $jsx("div", {
|
26569 | class: "popover smart-select-popover " + cssClass,
|
26570 | "data-select-name": ss.selectName
|
26571 | }, $jsx("div", {
|
26572 | class: "popover-inner"
|
26573 | }, $jsx("div", {
|
26574 | class: "list smart-select-list-" + ss.id + " " + (ss.params.virtualList ? ' virtual-list' : '') + " " + (ss.params.formColorTheme ? "color-" + ss.params.formColorTheme : '')
|
26575 | }, $jsx("ul", null, !ss.params.virtualList && ss.renderItems(ss.items)))));
|
26576 | };
|
26577 |
|
26578 | _proto.scrollToSelectedItem = function scrollToSelectedItem() {
|
26579 | var ss = this;
|
26580 | var params = ss.params,
|
26581 | $containerEl = ss.$containerEl;
|
26582 | if (!ss.opened) return ss;
|
26583 |
|
26584 | if (params.virtualList) {
|
26585 | var selectedIndex;
|
26586 | ss.vl.items.forEach(function (item, index) {
|
26587 | if (typeof selectedIndex === 'undefined' && item.selected) {
|
26588 | selectedIndex = index;
|
26589 | }
|
26590 | });
|
26591 |
|
26592 | if (typeof selectedIndex !== 'undefined') {
|
26593 | ss.vl.scrollToItem(selectedIndex);
|
26594 | }
|
26595 | } else {
|
26596 | var $selectedItemEl = $containerEl.find('input:checked').parents('li');
|
26597 | if (!$selectedItemEl.length) return ss;
|
26598 | var $pageContentEl = $containerEl.find('.page-content');
|
26599 | $pageContentEl.scrollTop($selectedItemEl.offset().top - $pageContentEl.offset().top - parseInt($pageContentEl.css('padding-top'), 10));
|
26600 | }
|
26601 |
|
26602 | return ss;
|
26603 | };
|
26604 |
|
26605 | _proto.onOpen = function onOpen(type, containerEl) {
|
26606 | var ss = this;
|
26607 | var app = ss.app;
|
26608 | var $containerEl = $(containerEl);
|
26609 | ss.$containerEl = $containerEl;
|
26610 | ss.openedIn = type;
|
26611 | ss.opened = true;
|
26612 |
|
26613 | if (ss.params.virtualList) {
|
26614 | ss.vl = app.virtualList.create({
|
26615 | el: $containerEl.find('.virtual-list'),
|
26616 | items: ss.items,
|
26617 | renderItem: ss.renderItem.bind(ss),
|
26618 | height: ss.params.virtualListHeight,
|
26619 | searchByItem: function searchByItem(query, item) {
|
26620 | if (item.text && item.text.toLowerCase().indexOf(query.trim().toLowerCase()) >= 0) return true;
|
26621 | return false;
|
26622 | }
|
26623 | });
|
26624 | }
|
26625 |
|
26626 | if (ss.params.scrollToSelectedItem) {
|
26627 | ss.scrollToSelectedItem();
|
26628 | }
|
26629 |
|
26630 |
|
26631 | if (ss.params.searchbar) {
|
26632 | var $searchbarEl = $containerEl.find('.searchbar');
|
26633 |
|
26634 | if (type === 'page' && app.theme === 'ios') {
|
26635 | $searchbarEl = $(app.navbar.getElByPage($containerEl)).find('.searchbar');
|
26636 | }
|
26637 |
|
26638 | if (ss.params.appendSearchbarNotFound && (type === 'page' || type === 'popup')) {
|
26639 | var $notFoundEl = null;
|
26640 |
|
26641 | if (typeof ss.params.appendSearchbarNotFound === 'string') {
|
26642 | $notFoundEl = $("<div class=\"block searchbar-not-found\">" + ss.params.appendSearchbarNotFound + "</div>");
|
26643 | } else if (typeof ss.params.appendSearchbarNotFound === 'boolean') {
|
26644 | $notFoundEl = $('<div class="block searchbar-not-found">Nothing found</div>');
|
26645 | } else {
|
26646 | $notFoundEl = ss.params.appendSearchbarNotFound;
|
26647 | }
|
26648 |
|
26649 | if ($notFoundEl) {
|
26650 | $containerEl.find('.page-content').append($notFoundEl[0]);
|
26651 | }
|
26652 | }
|
26653 |
|
26654 | var searchbarParams = extend$1({
|
26655 | el: $searchbarEl,
|
26656 | backdropEl: $containerEl.find('.searchbar-backdrop'),
|
26657 | searchContainer: ".smart-select-list-" + ss.id,
|
26658 | searchIn: '.item-title'
|
26659 | }, typeof ss.params.searchbar === 'object' ? ss.params.searchbar : {});
|
26660 | ss.searchbar = app.searchbar.create(searchbarParams);
|
26661 | }
|
26662 |
|
26663 |
|
26664 | if (ss.maxLength) {
|
26665 | ss.checkMaxLength();
|
26666 | }
|
26667 |
|
26668 |
|
26669 | if (ss.params.closeOnSelect) {
|
26670 | ss.$containerEl.find("input[type=\"radio\"][name=\"" + ss.inputName + "\"]:checked").parents('label').once('click', function () {
|
26671 | ss.close();
|
26672 | });
|
26673 | }
|
26674 |
|
26675 |
|
26676 | ss.attachInputsEvents();
|
26677 | ss.$el.trigger('smartselect:open');
|
26678 | ss.emit('local::open smartSelectOpen', ss);
|
26679 | };
|
26680 |
|
26681 | _proto.onOpened = function onOpened() {
|
26682 | var ss = this;
|
26683 | ss.$el.trigger('smartselect:opened');
|
26684 | ss.emit('local::opened smartSelectOpened', ss);
|
26685 | };
|
26686 |
|
26687 | _proto.onClose = function onClose() {
|
26688 | var ss = this;
|
26689 | if (ss.destroyed) return;
|
26690 |
|
26691 | if (ss.vl && ss.vl.destroy) {
|
26692 | ss.vl.destroy();
|
26693 | ss.vl = null;
|
26694 | delete ss.vl;
|
26695 | }
|
26696 |
|
26697 |
|
26698 | if (ss.searchbar && ss.searchbar.destroy) {
|
26699 | ss.searchbar.destroy();
|
26700 | ss.searchbar = null;
|
26701 | delete ss.searchbar;
|
26702 | }
|
26703 |
|
26704 |
|
26705 | ss.detachInputsEvents();
|
26706 | ss.$el.trigger('smartselect:close');
|
26707 | ss.emit('local::close smartSelectClose', ss);
|
26708 | };
|
26709 |
|
26710 | _proto.onClosed = function onClosed() {
|
26711 | var ss = this;
|
26712 | if (ss.destroyed) return;
|
26713 | ss.opened = false;
|
26714 | ss.$containerEl = null;
|
26715 | delete ss.$containerEl;
|
26716 | ss.$el.trigger('smartselect:closed');
|
26717 | ss.emit('local::closed smartSelectClosed', ss);
|
26718 | };
|
26719 |
|
26720 | _proto.openPage = function openPage() {
|
26721 | var ss = this;
|
26722 | if (ss.opened) return ss;
|
26723 | ss.getItemsData();
|
26724 | var pageHtml = ss.renderPage(ss.items);
|
26725 | ss.view.router.navigate({
|
26726 | url: ss.url,
|
26727 | route: {
|
26728 | content: pageHtml,
|
26729 | path: ss.url,
|
26730 | on: {
|
26731 | pageBeforeIn: function pageBeforeIn(e, page) {
|
26732 | ss.onOpen('page', page.el);
|
26733 | },
|
26734 | pageAfterIn: function pageAfterIn(e, page) {
|
26735 | ss.onOpened('page', page.el);
|
26736 | },
|
26737 | pageBeforeOut: function pageBeforeOut(e, page) {
|
26738 | ss.onClose('page', page.el);
|
26739 | },
|
26740 | pageAfterOut: function pageAfterOut(e, page) {
|
26741 | ss.onClosed('page', page.el);
|
26742 | }
|
26743 | }
|
26744 | }
|
26745 | });
|
26746 | return ss;
|
26747 | };
|
26748 |
|
26749 | _proto.openPopup = function openPopup() {
|
26750 | var ss = this;
|
26751 | if (ss.opened) return ss;
|
26752 | ss.getItemsData();
|
26753 | var popupHtml = ss.renderPopup(ss.items);
|
26754 | var popupParams = {
|
26755 | content: popupHtml,
|
26756 | push: ss.params.popupPush,
|
26757 | swipeToClose: ss.params.popupSwipeToClose,
|
26758 | on: {
|
26759 | popupOpen: function popupOpen(popup) {
|
26760 | ss.onOpen('popup', popup.el);
|
26761 | },
|
26762 | popupOpened: function popupOpened(popup) {
|
26763 | ss.onOpened('popup', popup.el);
|
26764 | },
|
26765 | popupClose: function popupClose(popup) {
|
26766 | ss.onClose('popup', popup.el);
|
26767 | },
|
26768 | popupClosed: function popupClosed(popup) {
|
26769 | ss.onClosed('popup', popup.el);
|
26770 | }
|
26771 | }
|
26772 | };
|
26773 |
|
26774 | if (ss.params.routableModals && ss.view) {
|
26775 | ss.view.router.navigate({
|
26776 | url: ss.url,
|
26777 | route: {
|
26778 | path: ss.url,
|
26779 | popup: popupParams
|
26780 | }
|
26781 | });
|
26782 | } else {
|
26783 | ss.modal = ss.app.popup.create(popupParams).open();
|
26784 | }
|
26785 |
|
26786 | return ss;
|
26787 | };
|
26788 |
|
26789 | _proto.openSheet = function openSheet() {
|
26790 | var ss = this;
|
26791 | if (ss.opened) return ss;
|
26792 | ss.getItemsData();
|
26793 | var sheetHtml = ss.renderSheet(ss.items);
|
26794 | var sheetParams = {
|
26795 | content: sheetHtml,
|
26796 | backdrop: ss.params.sheetBackdrop,
|
26797 | scrollToEl: ss.$el,
|
26798 | closeByOutsideClick: true,
|
26799 | push: ss.params.sheetPush,
|
26800 | swipeToClose: ss.params.sheetSwipeToClose,
|
26801 | on: {
|
26802 | sheetOpen: function sheetOpen(sheet) {
|
26803 | ss.onOpen('sheet', sheet.el);
|
26804 | },
|
26805 | sheetOpened: function sheetOpened(sheet) {
|
26806 | ss.onOpened('sheet', sheet.el);
|
26807 | },
|
26808 | sheetClose: function sheetClose(sheet) {
|
26809 | ss.onClose('sheet', sheet.el);
|
26810 | },
|
26811 | sheetClosed: function sheetClosed(sheet) {
|
26812 | ss.onClosed('sheet', sheet.el);
|
26813 | }
|
26814 | }
|
26815 | };
|
26816 |
|
26817 | if (ss.params.routableModals && ss.view) {
|
26818 | ss.view.router.navigate({
|
26819 | url: ss.url,
|
26820 | route: {
|
26821 | path: ss.url,
|
26822 | sheet: sheetParams
|
26823 | }
|
26824 | });
|
26825 | } else {
|
26826 | ss.modal = ss.app.sheet.create(sheetParams).open();
|
26827 | }
|
26828 |
|
26829 | return ss;
|
26830 | };
|
26831 |
|
26832 | _proto.openPopover = function openPopover() {
|
26833 | var ss = this;
|
26834 | if (ss.opened) return ss;
|
26835 | ss.getItemsData();
|
26836 | var popoverHtml = ss.renderPopover(ss.items);
|
26837 | var popoverParams = {
|
26838 | content: popoverHtml,
|
26839 | targetEl: ss.$el,
|
26840 | on: {
|
26841 | popoverOpen: function popoverOpen(popover) {
|
26842 | ss.onOpen('popover', popover.el);
|
26843 | },
|
26844 | popoverOpened: function popoverOpened(popover) {
|
26845 | ss.onOpened('popover', popover.el);
|
26846 | },
|
26847 | popoverClose: function popoverClose(popover) {
|
26848 | ss.onClose('popover', popover.el);
|
26849 | },
|
26850 | popoverClosed: function popoverClosed(popover) {
|
26851 | ss.onClosed('popover', popover.el);
|
26852 | }
|
26853 | }
|
26854 | };
|
26855 |
|
26856 | if (ss.params.routableModals && ss.view) {
|
26857 | ss.view.router.navigate({
|
26858 | url: ss.url,
|
26859 | route: {
|
26860 | path: ss.url,
|
26861 | popover: popoverParams
|
26862 | }
|
26863 | });
|
26864 | } else {
|
26865 | ss.modal = ss.app.popover.create(popoverParams).open();
|
26866 | }
|
26867 |
|
26868 | return ss;
|
26869 | };
|
26870 |
|
26871 | _proto.open = function open(type) {
|
26872 | var ss = this;
|
26873 | if (ss.opened) return ss;
|
26874 | var prevented = false;
|
26875 |
|
26876 | function prevent() {
|
26877 | prevented = true;
|
26878 | }
|
26879 |
|
26880 | if (ss.$el) {
|
26881 | ss.$el.trigger('smartselect:beforeopen', {
|
26882 | prevent: prevent
|
26883 | });
|
26884 | }
|
26885 |
|
26886 | ss.emit('local::beforeOpen smartSelectBeforeOpen', ss, prevent);
|
26887 | if (prevented) return ss;
|
26888 | var openIn = type || ss.params.openIn;
|
26889 | ss["open" + openIn.split('').map(function (el, index) {
|
26890 | if (index === 0) return el.toUpperCase();
|
26891 | return el;
|
26892 | }).join('')]();
|
26893 | return ss;
|
26894 | };
|
26895 |
|
26896 | _proto.close = function close() {
|
26897 | var ss = this;
|
26898 | if (!ss.opened) return ss;
|
26899 |
|
26900 | if (ss.params.routableModals && ss.view || ss.openedIn === 'page') {
|
26901 | ss.view.router.back();
|
26902 | } else {
|
26903 | ss.modal.once('modalClosed', function () {
|
26904 | nextTick$1(function () {
|
26905 | if (ss.destroyed) return;
|
26906 | ss.modal.destroy();
|
26907 | delete ss.modal;
|
26908 | });
|
26909 | });
|
26910 | ss.modal.close();
|
26911 | }
|
26912 |
|
26913 | return ss;
|
26914 | };
|
26915 |
|
26916 | _proto.init = function init() {
|
26917 | var ss = this;
|
26918 | ss.attachEvents();
|
26919 | ss.setValueText();
|
26920 | };
|
26921 |
|
26922 | _proto.destroy = function destroy() {
|
26923 | var ss = this;
|
26924 | ss.emit('local::beforeDestroy smartSelectBeforeDestroy', ss);
|
26925 | ss.$el.trigger('smartselect:beforedestroy');
|
26926 | ss.detachEvents();
|
26927 | delete ss.$el[0].f7SmartSelect;
|
26928 | deleteProps$1(ss);
|
26929 | ss.destroyed = true;
|
26930 | };
|
26931 |
|
26932 | _createClass$1(SmartSelect, [{
|
26933 | key: "view",
|
26934 | get: function get() {
|
26935 | var params = this.params,
|
26936 | $el = this.$el;
|
26937 | var view;
|
26938 |
|
26939 | if (params.view) {
|
26940 | view = params.view;
|
26941 | }
|
26942 |
|
26943 | if (!view) {
|
26944 | view = $el.parents('.view').length && $el.parents('.view')[0].f7View;
|
26945 | }
|
26946 |
|
26947 | if (!view && params.openIn === 'page') {
|
26948 | throw Error('Smart Select requires initialized View');
|
26949 | }
|
26950 |
|
26951 | return view;
|
26952 | }
|
26953 | }]);
|
26954 |
|
26955 | return SmartSelect;
|
26956 | }(Framework7Class);
|
26957 |
|
26958 | var SmartSelect = {
|
26959 | name: 'smartSelect',
|
26960 | params: {
|
26961 | smartSelect: {
|
26962 | el: undefined,
|
26963 | valueEl: undefined,
|
26964 | setValueText: true,
|
26965 | formatValueText: null,
|
26966 | openIn: 'page',
|
26967 |
|
26968 | popupPush: false,
|
26969 | popupSwipeToClose: undefined,
|
26970 |
|
26971 | sheetPush: false,
|
26972 | sheetSwipeToClose: undefined,
|
26973 |
|
26974 | sheetBackdrop: false,
|
26975 | pageTitle: undefined,
|
26976 | pageBackLinkText: 'Back',
|
26977 | popupCloseLinkText: 'Close',
|
26978 | popupTabletFullscreen: false,
|
26979 | sheetCloseLinkText: 'Done',
|
26980 | searchbar: false,
|
26981 | searchbarPlaceholder: 'Search',
|
26982 | searchbarDisableText: 'Cancel',
|
26983 | searchbarDisableButton: undefined,
|
26984 | searchbarSpellcheck: false,
|
26985 | closeOnSelect: false,
|
26986 | virtualList: false,
|
26987 | virtualListHeight: undefined,
|
26988 | scrollToSelectedItem: false,
|
26989 | formColorTheme: undefined,
|
26990 | navbarColorTheme: undefined,
|
26991 | routableModals: false,
|
26992 | url: 'select/',
|
26993 | cssClass: '',
|
26994 |
|
26995 | |
26996 |
|
26997 |
|
26998 | renderPage: undefined,
|
26999 | renderPopup: undefined,
|
27000 | renderSheet: undefined,
|
27001 | renderPopover: undefined,
|
27002 | renderItems: undefined,
|
27003 | renderItem: undefined,
|
27004 | renderSearchbar: undefined
|
27005 | }
|
27006 | },
|
27007 | static: {
|
27008 | SmartSelect: SmartSelect$1
|
27009 | },
|
27010 | create: function create() {
|
27011 | var app = this;
|
27012 | app.smartSelect = extend$1(ConstructorMethods({
|
27013 | defaultSelector: '.smart-select',
|
27014 | constructor: SmartSelect$1,
|
27015 | app: app,
|
27016 | domProp: 'f7SmartSelect'
|
27017 | }), {
|
27018 | open: function open(smartSelectEl) {
|
27019 | var ss = app.smartSelect.get(smartSelectEl);
|
27020 | if (ss && ss.open) return ss.open();
|
27021 | return undefined;
|
27022 | },
|
27023 | close: function close(smartSelectEl) {
|
27024 | var ss = app.smartSelect.get(smartSelectEl);
|
27025 | if (ss && ss.close) return ss.close();
|
27026 | return undefined;
|
27027 | }
|
27028 | });
|
27029 | },
|
27030 | on: {
|
27031 | tabMounted: function tabMounted(tabEl) {
|
27032 | var app = this;
|
27033 | $(tabEl).find('.smart-select-init').each(function (smartSelectEl) {
|
27034 | app.smartSelect.create(extend$1({
|
27035 | el: smartSelectEl
|
27036 | }, $(smartSelectEl).dataset()));
|
27037 | });
|
27038 | },
|
27039 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
27040 | $(tabEl).find('.smart-select-init').each(function (smartSelectEl) {
|
27041 | if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {
|
27042 | smartSelectEl.f7SmartSelect.destroy();
|
27043 | }
|
27044 | });
|
27045 | },
|
27046 | pageInit: function pageInit(page) {
|
27047 | var app = this;
|
27048 | page.$el.find('.smart-select-init').each(function (smartSelectEl) {
|
27049 | app.smartSelect.create(extend$1({
|
27050 | el: smartSelectEl
|
27051 | }, $(smartSelectEl).dataset()));
|
27052 | });
|
27053 | },
|
27054 | pageBeforeRemove: function pageBeforeRemove(page) {
|
27055 | page.$el.find('.smart-select-init').each(function (smartSelectEl) {
|
27056 | if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {
|
27057 | smartSelectEl.f7SmartSelect.destroy();
|
27058 | }
|
27059 | });
|
27060 | }
|
27061 | },
|
27062 | clicks: {
|
27063 | '.smart-select': function open($clickedEl, data) {
|
27064 | var app = this;
|
27065 |
|
27066 | if (!$clickedEl[0].f7SmartSelect) {
|
27067 | var ss = app.smartSelect.create(extend$1({
|
27068 | el: $clickedEl
|
27069 | }, data));
|
27070 | ss.open();
|
27071 | }
|
27072 | }
|
27073 | },
|
27074 | vnode: {
|
27075 | 'smart-select-init': {
|
27076 | insert: function insert(vnode) {
|
27077 | var app = this;
|
27078 | var smartSelectEl = vnode.elm;
|
27079 | app.smartSelect.create(extend$1({
|
27080 | el: smartSelectEl
|
27081 | }, $(smartSelectEl).dataset()));
|
27082 | },
|
27083 | destroy: function destroy(vnode) {
|
27084 | var smartSelectEl = vnode.elm;
|
27085 |
|
27086 | if (smartSelectEl.f7SmartSelect && smartSelectEl.f7SmartSelect.destroy) {
|
27087 | smartSelectEl.f7SmartSelect.destroy();
|
27088 | }
|
27089 | }
|
27090 | }
|
27091 | }
|
27092 | };
|
27093 |
|
27094 | function getElMinSize(dimension, $el) {
|
27095 | var minSize = $el.css("min-" + dimension);
|
27096 |
|
27097 | if (minSize === 'auto' || minSize === 'none') {
|
27098 | minSize = 0;
|
27099 | } else if (minSize.indexOf('px') >= 0) {
|
27100 | minSize = parseFloat(minSize);
|
27101 | } else if (minSize.indexOf('%') >= 0) {
|
27102 | minSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(minSize) / 100;
|
27103 | }
|
27104 |
|
27105 | return minSize;
|
27106 | }
|
27107 |
|
27108 | function getElMaxSize(dimension, $el) {
|
27109 | var maxSize = $el.css("max-" + dimension);
|
27110 |
|
27111 | if (maxSize === 'auto' || maxSize === 'none') {
|
27112 | maxSize = null;
|
27113 | } else if (maxSize.indexOf('px') >= 0) {
|
27114 | maxSize = parseFloat(maxSize);
|
27115 | } else if (maxSize.indexOf('%') >= 0) {
|
27116 | maxSize = $el.parent()[0][dimension === 'height' ? 'offsetHeight' : 'offsetWidth'] * parseFloat(maxSize) / 100;
|
27117 | }
|
27118 |
|
27119 | return maxSize;
|
27120 | }
|
27121 |
|
27122 | var Grid = {
|
27123 | init: function init() {
|
27124 | var app = this;
|
27125 | var isTouched;
|
27126 | var isMoved;
|
27127 | var touchStartX;
|
27128 | var touchStartY;
|
27129 | var $resizeHandlerEl;
|
27130 | var $prevResizableEl;
|
27131 | var $nextResizableEl;
|
27132 | var prevElSize;
|
27133 | var prevElMinSize;
|
27134 | var prevElMaxSize;
|
27135 | var nextElSize;
|
27136 | var nextElMinSize;
|
27137 | var nextElMaxSize;
|
27138 | var parentSize;
|
27139 | var itemsInFlow;
|
27140 | var gapSize;
|
27141 | var isScrolling;
|
27142 |
|
27143 | function handleTouchStart(e) {
|
27144 | if (isTouched || isMoved) return;
|
27145 | $resizeHandlerEl = $(e.target).closest('.resize-handler');
|
27146 | touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
27147 | touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
27148 | isTouched = true;
|
27149 | $prevResizableEl = undefined;
|
27150 | $nextResizableEl = undefined;
|
27151 | isScrolling = undefined;
|
27152 | }
|
27153 |
|
27154 | function handleTouchMove(e) {
|
27155 | if (!isTouched) return;
|
27156 | var isRow = $resizeHandlerEl.parent('.row').length === 1;
|
27157 | var sizeProp = isRow ? 'height' : 'width';
|
27158 | var getSizeProp = isRow ? 'offsetHeight' : 'offsetWidth';
|
27159 |
|
27160 | if (!isMoved) {
|
27161 | $prevResizableEl = $resizeHandlerEl.parent(isRow ? '.row' : '.col');
|
27162 |
|
27163 | if ($prevResizableEl.length && (!$prevResizableEl.hasClass('resizable') || $prevResizableEl.hasClass('resizable-fixed'))) {
|
27164 | $prevResizableEl = $prevResizableEl.prevAll('.resizable:not(.resizable-fixed)').eq(0);
|
27165 | }
|
27166 |
|
27167 | $nextResizableEl = $prevResizableEl.next(isRow ? '.row' : '.col');
|
27168 |
|
27169 | if ($nextResizableEl.length && (!$nextResizableEl.hasClass('resizable') || $nextResizableEl.hasClass('resizable-fixed'))) {
|
27170 | $nextResizableEl = $nextResizableEl.nextAll('.resizable:not(.resizable-fixed)').eq(0);
|
27171 | }
|
27172 |
|
27173 | if ($prevResizableEl.length) {
|
27174 | prevElSize = $prevResizableEl[0][getSizeProp];
|
27175 | prevElMinSize = getElMinSize(sizeProp, $prevResizableEl);
|
27176 | prevElMaxSize = getElMaxSize(sizeProp, $prevResizableEl);
|
27177 | parentSize = $prevResizableEl.parent()[0][getSizeProp];
|
27178 | itemsInFlow = $prevResizableEl.parent().children(isRow ? '.row' : '[class*="col-"], .col').length;
|
27179 | gapSize = parseFloat($prevResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));
|
27180 | }
|
27181 |
|
27182 | if ($nextResizableEl.length) {
|
27183 | nextElSize = $nextResizableEl[0][getSizeProp];
|
27184 | nextElMinSize = getElMinSize(sizeProp, $nextResizableEl);
|
27185 | nextElMaxSize = getElMaxSize(sizeProp, $nextResizableEl);
|
27186 |
|
27187 | if (!$prevResizableEl.length) {
|
27188 | parentSize = $nextResizableEl.parent()[0][getSizeProp];
|
27189 | itemsInFlow = $nextResizableEl.parent().children(isRow ? '.row' : '[class*="col-"], .col').length;
|
27190 | gapSize = parseFloat($nextResizableEl.css(isRow ? '--f7-grid-row-gap' : '--f7-grid-gap'));
|
27191 | }
|
27192 | }
|
27193 | }
|
27194 |
|
27195 | isMoved = true;
|
27196 | var touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
27197 | var touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
27198 |
|
27199 | if (typeof isScrolling === 'undefined' && !isRow) {
|
27200 | isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));
|
27201 | }
|
27202 |
|
27203 | if (isScrolling) {
|
27204 | isTouched = false;
|
27205 | isMoved = false;
|
27206 | return;
|
27207 | }
|
27208 |
|
27209 | var isAbsolute = $prevResizableEl.hasClass('resizable-absolute') || $nextResizableEl.hasClass('resizable-absolute');
|
27210 | var resizeNextEl = !isRow || isRow && !isAbsolute;
|
27211 |
|
27212 | if (resizeNextEl && !$nextResizableEl.length || !$prevResizableEl.length) {
|
27213 | isTouched = false;
|
27214 | isMoved = false;
|
27215 | return;
|
27216 | }
|
27217 |
|
27218 | e.preventDefault();
|
27219 | var diff = isRow ? touchCurrentY - touchStartY : touchCurrentX - touchStartX;
|
27220 | var prevElNewSize;
|
27221 | var nextElNewSize;
|
27222 |
|
27223 | if ($prevResizableEl.length) {
|
27224 | prevElNewSize = prevElSize + diff;
|
27225 |
|
27226 | if (prevElNewSize < prevElMinSize) {
|
27227 | prevElNewSize = prevElMinSize;
|
27228 | diff = prevElNewSize - prevElSize;
|
27229 | }
|
27230 |
|
27231 | if (prevElMaxSize && prevElNewSize > prevElMaxSize) {
|
27232 | prevElNewSize = prevElMaxSize;
|
27233 | diff = prevElNewSize - prevElSize;
|
27234 | }
|
27235 | }
|
27236 |
|
27237 | if ($nextResizableEl.length && resizeNextEl) {
|
27238 | nextElNewSize = nextElSize - diff;
|
27239 |
|
27240 | if (nextElNewSize < nextElMinSize) {
|
27241 | nextElNewSize = nextElMinSize;
|
27242 | diff = nextElSize - nextElNewSize;
|
27243 | prevElNewSize = prevElSize + diff;
|
27244 | }
|
27245 |
|
27246 | if (nextElMaxSize && nextElNewSize > nextElMaxSize) {
|
27247 | nextElNewSize = nextElMaxSize;
|
27248 | diff = nextElSize - nextElNewSize;
|
27249 | prevElNewSize = prevElSize + diff;
|
27250 | }
|
27251 | }
|
27252 |
|
27253 | if (isAbsolute) {
|
27254 | $prevResizableEl[0].style[sizeProp] = prevElNewSize + "px";
|
27255 |
|
27256 | if (resizeNextEl) {
|
27257 | $nextResizableEl[0].style[sizeProp] = nextElNewSize + "px";
|
27258 | }
|
27259 |
|
27260 | $prevResizableEl.trigger('grid:resize');
|
27261 | $nextResizableEl.trigger('grid:resize');
|
27262 | app.emit('gridResize', $prevResizableEl[0]);
|
27263 | app.emit('gridResize', $nextResizableEl[0]);
|
27264 | return;
|
27265 | }
|
27266 |
|
27267 | var gapAddSize = (itemsInFlow - 1) * gapSize / itemsInFlow;
|
27268 | var gapAddSizeCSS = isRow ? itemsInFlow - 1 + " * var(--f7-grid-row-gap) / " + itemsInFlow : '(var(--f7-cols-per-row) - 1) * var(--f7-grid-gap) / var(--f7-cols-per-row)';
|
27269 | var prevElNewSizeNormalized = prevElNewSize + gapAddSize;
|
27270 | var nextElNewSizeNormalized = nextElNewSize + gapAddSize;
|
27271 | $prevResizableEl[0].style[sizeProp] = "calc(" + prevElNewSizeNormalized / parentSize * 100 + "% - " + gapAddSizeCSS + ")";
|
27272 | $nextResizableEl[0].style[sizeProp] = "calc(" + nextElNewSizeNormalized / parentSize * 100 + "% - " + gapAddSizeCSS + ")";
|
27273 | $prevResizableEl.trigger('grid:resize');
|
27274 | $nextResizableEl.trigger('grid:resize');
|
27275 | app.emit('gridResize', $prevResizableEl[0]);
|
27276 | app.emit('gridResize', $nextResizableEl[0]);
|
27277 | }
|
27278 |
|
27279 | function handleTouchEnd() {
|
27280 | if (!isTouched) return;
|
27281 |
|
27282 | if (!isMoved) {
|
27283 | isTouched = false;
|
27284 | }
|
27285 |
|
27286 | isTouched = false;
|
27287 | isMoved = false;
|
27288 | }
|
27289 |
|
27290 | var document = getDocument();
|
27291 | $(document).on(app.touchEvents.start, '.col > .resize-handler, .row > .resize-handler', handleTouchStart);
|
27292 | app.on('touchmove', handleTouchMove);
|
27293 | app.on('touchend', handleTouchEnd);
|
27294 | }
|
27295 | };
|
27296 | var Grid$1 = {
|
27297 | name: 'grid',
|
27298 | create: function create() {
|
27299 | var app = this;
|
27300 | extend$1(app, {
|
27301 | grid: {
|
27302 | init: Grid.init.bind(app)
|
27303 | }
|
27304 | });
|
27305 | },
|
27306 | on: {
|
27307 | init: function init() {
|
27308 | var app = this;
|
27309 | app.grid.init();
|
27310 | }
|
27311 | }
|
27312 | };
|
27313 |
|
27314 | var Calendar$1 = function (_Framework7Class) {
|
27315 | _inheritsLoose(Calendar, _Framework7Class);
|
27316 |
|
27317 | function Calendar(app, params) {
|
27318 | var _this;
|
27319 |
|
27320 | if (params === void 0) {
|
27321 | params = {};
|
27322 | }
|
27323 |
|
27324 | _this = _Framework7Class.call(this, params, [app]) || this;
|
27325 |
|
27326 | var calendar = _assertThisInitialized(_this);
|
27327 |
|
27328 | calendar.params = extend$1({}, app.params.calendar, params);
|
27329 | var $containerEl;
|
27330 |
|
27331 | if (calendar.params.containerEl) {
|
27332 | $containerEl = $(calendar.params.containerEl);
|
27333 | if ($containerEl.length === 0) return calendar || _assertThisInitialized(_this);
|
27334 | }
|
27335 |
|
27336 | var $inputEl;
|
27337 |
|
27338 | if (calendar.params.inputEl) {
|
27339 | $inputEl = $(calendar.params.inputEl);
|
27340 | }
|
27341 |
|
27342 | var isHorizontal = calendar.params.direction === 'horizontal';
|
27343 | var inverter = 1;
|
27344 |
|
27345 | if (isHorizontal) {
|
27346 | inverter = app.rtl ? -1 : 1;
|
27347 | }
|
27348 |
|
27349 | extend$1(calendar, {
|
27350 | app: app,
|
27351 | $containerEl: $containerEl,
|
27352 | containerEl: $containerEl && $containerEl[0],
|
27353 | inline: $containerEl && $containerEl.length > 0,
|
27354 | $inputEl: $inputEl,
|
27355 | inputEl: $inputEl && $inputEl[0],
|
27356 | initialized: false,
|
27357 | opened: false,
|
27358 | url: calendar.params.url,
|
27359 | isHorizontal: isHorizontal,
|
27360 | inverter: inverter,
|
27361 | animating: false,
|
27362 | allowTouchMove: true,
|
27363 | hasTimePicker: calendar.params.timePicker && !calendar.params.rangePicker && !calendar.params.multiple
|
27364 | });
|
27365 | calendar.dayFormatter = new Intl.DateTimeFormat(calendar.params.locale, {
|
27366 | day: 'numeric'
|
27367 | });
|
27368 | calendar.monthFormatter = new Intl.DateTimeFormat(calendar.params.locale, {
|
27369 | month: 'long'
|
27370 | });
|
27371 | calendar.yearFormatter = new Intl.DateTimeFormat(calendar.params.locale, {
|
27372 | year: 'numeric'
|
27373 | });
|
27374 | calendar.timeSelectorFormatter = new Intl.DateTimeFormat(calendar.params.locale, calendar.params.timePickerFormat);
|
27375 | var timeFormatCheckDate = calendar.timeSelectorFormatter.format(new Date()).toLowerCase();
|
27376 | calendar.is12HoursFormat = timeFormatCheckDate.indexOf('pm') >= 0 || timeFormatCheckDate.indexOf('am') >= 0;
|
27377 |
|
27378 | var _calendar$params = calendar.params,
|
27379 | monthNames = _calendar$params.monthNames,
|
27380 | monthNamesShort = _calendar$params.monthNamesShort,
|
27381 | dayNames = _calendar$params.dayNames,
|
27382 | dayNamesShort = _calendar$params.dayNamesShort;
|
27383 |
|
27384 | var _calendar$getIntlName = calendar.getIntlNames(),
|
27385 | monthNamesIntl = _calendar$getIntlName.monthNamesIntl,
|
27386 | monthNamesShortIntl = _calendar$getIntlName.monthNamesShortIntl,
|
27387 | dayNamesIntl = _calendar$getIntlName.dayNamesIntl,
|
27388 | dayNamesShortIntl = _calendar$getIntlName.dayNamesShortIntl;
|
27389 |
|
27390 | if (monthNames === 'auto') monthNames = monthNamesIntl;
|
27391 | if (monthNamesShort === 'auto') monthNamesShort = monthNamesShortIntl;
|
27392 | if (dayNames === 'auto') dayNames = dayNamesIntl;
|
27393 | if (dayNamesShort === 'auto') dayNamesShort = dayNamesShortIntl;
|
27394 | extend$1(calendar, {
|
27395 | monthNames: monthNames,
|
27396 | monthNamesShort: monthNamesShort,
|
27397 | dayNames: dayNames,
|
27398 | dayNamesShort: dayNamesShort
|
27399 | });
|
27400 |
|
27401 | function onInputClick() {
|
27402 | calendar.open();
|
27403 | }
|
27404 |
|
27405 | function onInputFocus(e) {
|
27406 | e.preventDefault();
|
27407 | }
|
27408 |
|
27409 | function onInputClear() {
|
27410 | calendar.setValue([]);
|
27411 |
|
27412 | if (calendar.opened) {
|
27413 | calendar.update();
|
27414 | }
|
27415 | }
|
27416 |
|
27417 | function onHtmlClick(e) {
|
27418 | var $targetEl = $(e.target);
|
27419 | if (calendar.destroyed || !calendar.params) return;
|
27420 | if (calendar.isPopover()) return;
|
27421 | if (!calendar.opened || calendar.closing) return;
|
27422 | if ($targetEl.closest('[class*="backdrop"]').length) return;
|
27423 |
|
27424 | if ($inputEl && $inputEl.length > 0) {
|
27425 | if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal, .calendar-modal').length === 0) {
|
27426 | calendar.close();
|
27427 | }
|
27428 | } else if ($(e.target).closest('.sheet-modal, .calendar-modal').length === 0) {
|
27429 | calendar.close();
|
27430 | }
|
27431 | }
|
27432 |
|
27433 |
|
27434 | extend$1(calendar, {
|
27435 | attachInputEvents: function attachInputEvents() {
|
27436 | calendar.$inputEl.on('click', onInputClick);
|
27437 | calendar.$inputEl.on('input:clear', onInputClear);
|
27438 |
|
27439 | if (calendar.params.inputReadOnly) {
|
27440 | calendar.$inputEl.on('focus mousedown', onInputFocus);
|
27441 |
|
27442 | if (calendar.$inputEl[0]) {
|
27443 | calendar.$inputEl[0].f7ValidateReadonly = true;
|
27444 | }
|
27445 | }
|
27446 | },
|
27447 | detachInputEvents: function detachInputEvents() {
|
27448 | calendar.$inputEl.off('click', onInputClick);
|
27449 | calendar.$inputEl.off('input:clear', onInputClear);
|
27450 |
|
27451 | if (calendar.params.inputReadOnly) {
|
27452 | calendar.$inputEl.off('focus mousedown', onInputFocus);
|
27453 |
|
27454 | if (calendar.$inputEl[0]) {
|
27455 | delete calendar.$inputEl[0].f7ValidateReadonly;
|
27456 | }
|
27457 | }
|
27458 | },
|
27459 | attachHtmlEvents: function attachHtmlEvents() {
|
27460 | app.on('click', onHtmlClick);
|
27461 | },
|
27462 | detachHtmlEvents: function detachHtmlEvents() {
|
27463 | app.off('click', onHtmlClick);
|
27464 | }
|
27465 | });
|
27466 |
|
27467 | calendar.attachCalendarEvents = function attachCalendarEvents() {
|
27468 | var allowItemClick = true;
|
27469 | var isTouched;
|
27470 | var isMoved;
|
27471 | var touchStartX;
|
27472 | var touchStartY;
|
27473 | var touchCurrentX;
|
27474 | var touchCurrentY;
|
27475 | var touchStartTime;
|
27476 | var touchEndTime;
|
27477 | var currentTranslate;
|
27478 | var wrapperWidth;
|
27479 | var wrapperHeight;
|
27480 | var percentage;
|
27481 | var touchesDiff;
|
27482 | var isScrolling;
|
27483 | var $el = calendar.$el,
|
27484 | $wrapperEl = calendar.$wrapperEl;
|
27485 |
|
27486 | function handleTouchStart(e) {
|
27487 | if (isMoved || isTouched) return;
|
27488 | isTouched = true;
|
27489 | touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
27490 | touchCurrentX = touchStartX;
|
27491 | touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
27492 | touchCurrentY = touchStartY;
|
27493 | touchStartTime = new Date().getTime();
|
27494 | percentage = 0;
|
27495 | allowItemClick = true;
|
27496 | isScrolling = undefined;
|
27497 | currentTranslate = calendar.monthsTranslate;
|
27498 | }
|
27499 |
|
27500 | function handleTouchMove(e) {
|
27501 | if (!isTouched) return;
|
27502 | var isH = calendar.isHorizontal;
|
27503 | touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
27504 | touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
27505 |
|
27506 | if (typeof isScrolling === 'undefined') {
|
27507 | isScrolling = !!(isScrolling || Math.abs(touchCurrentY - touchStartY) > Math.abs(touchCurrentX - touchStartX));
|
27508 | }
|
27509 |
|
27510 | if (isH && isScrolling || !calendar.allowTouchMove) {
|
27511 | isTouched = false;
|
27512 | return;
|
27513 | }
|
27514 |
|
27515 | e.preventDefault();
|
27516 |
|
27517 | if (calendar.animating) {
|
27518 | isTouched = false;
|
27519 | return;
|
27520 | }
|
27521 |
|
27522 | allowItemClick = false;
|
27523 |
|
27524 | if (!isMoved) {
|
27525 |
|
27526 | isMoved = true;
|
27527 | wrapperWidth = $wrapperEl[0].offsetWidth;
|
27528 | wrapperHeight = $wrapperEl[0].offsetHeight;
|
27529 | $wrapperEl.transition(0);
|
27530 | }
|
27531 |
|
27532 | touchesDiff = isH ? touchCurrentX - touchStartX : touchCurrentY - touchStartY;
|
27533 | percentage = touchesDiff / (isH ? wrapperWidth : wrapperHeight);
|
27534 | currentTranslate = (calendar.monthsTranslate * calendar.inverter + percentage) * 100;
|
27535 |
|
27536 | $wrapperEl.transform("translate3d(" + (isH ? currentTranslate : 0) + "%, " + (isH ? 0 : currentTranslate) + "%, 0)");
|
27537 | }
|
27538 |
|
27539 | function handleTouchEnd() {
|
27540 | if (!isTouched || !isMoved) {
|
27541 | isTouched = false;
|
27542 | isMoved = false;
|
27543 | return;
|
27544 | }
|
27545 |
|
27546 | isTouched = false;
|
27547 | isMoved = false;
|
27548 | touchEndTime = new Date().getTime();
|
27549 |
|
27550 | if (touchEndTime - touchStartTime < 300) {
|
27551 | if (Math.abs(touchesDiff) < 10) {
|
27552 | calendar.resetMonth();
|
27553 | } else if (touchesDiff >= 10) {
|
27554 | if (app.rtl) calendar.nextMonth();else calendar.prevMonth();
|
27555 | } else if (app.rtl) calendar.prevMonth();else calendar.nextMonth();
|
27556 | } else if (percentage <= -0.5) {
|
27557 | if (app.rtl) calendar.prevMonth();else calendar.nextMonth();
|
27558 | } else if (percentage >= 0.5) {
|
27559 | if (app.rtl) calendar.nextMonth();else calendar.prevMonth();
|
27560 | } else {
|
27561 | calendar.resetMonth();
|
27562 | }
|
27563 |
|
27564 |
|
27565 | setTimeout(function () {
|
27566 | allowItemClick = true;
|
27567 | }, 100);
|
27568 | }
|
27569 |
|
27570 | function handleDayClick(e) {
|
27571 | if (!allowItemClick) return;
|
27572 | var $dayEl = $(e.target).parents('.calendar-day');
|
27573 |
|
27574 | if ($dayEl.length === 0 && $(e.target).hasClass('calendar-day')) {
|
27575 | $dayEl = $(e.target);
|
27576 | }
|
27577 |
|
27578 | if ($dayEl.length === 0) return;
|
27579 | if ($dayEl.hasClass('calendar-day-disabled')) return;
|
27580 |
|
27581 | if (!calendar.params.rangePicker) {
|
27582 | if ($dayEl.hasClass('calendar-day-next')) calendar.nextMonth();
|
27583 | if ($dayEl.hasClass('calendar-day-prev')) calendar.prevMonth();
|
27584 | }
|
27585 |
|
27586 | var dateYear = parseInt($dayEl.attr('data-year'), 10);
|
27587 | var dateMonth = parseInt($dayEl.attr('data-month'), 10);
|
27588 | var dateDay = parseInt($dayEl.attr('data-day'), 10);
|
27589 | calendar.emit('local::dayClick calendarDayClick', calendar, $dayEl[0], dateYear, dateMonth, dateDay);
|
27590 |
|
27591 | if (!$dayEl.hasClass('calendar-day-selected') || calendar.params.multiple || calendar.params.rangePicker) {
|
27592 | var valueToAdd = new Date(dateYear, dateMonth, dateDay, 0, 0, 0);
|
27593 |
|
27594 | if (calendar.hasTimePicker) {
|
27595 | if (calendar.value && calendar.value[0]) {
|
27596 | valueToAdd.setHours(calendar.value[0].getHours(), calendar.value[0].getMinutes());
|
27597 | } else {
|
27598 | valueToAdd.setHours(new Date().getHours(), new Date().getMinutes());
|
27599 | }
|
27600 | }
|
27601 |
|
27602 | calendar.addValue(valueToAdd);
|
27603 | }
|
27604 |
|
27605 | if (calendar.params.closeOnSelect) {
|
27606 | if (calendar.params.rangePicker && calendar.value.length === 2 || !calendar.params.rangePicker) {
|
27607 | calendar.close();
|
27608 | }
|
27609 | }
|
27610 | }
|
27611 |
|
27612 | function onNextMonthClick() {
|
27613 | calendar.nextMonth();
|
27614 | }
|
27615 |
|
27616 | function onPrevMonthClick() {
|
27617 | calendar.prevMonth();
|
27618 | }
|
27619 |
|
27620 | function onNextYearClick() {
|
27621 | calendar.nextYear();
|
27622 | }
|
27623 |
|
27624 | function onPrevYearClick() {
|
27625 | calendar.prevYear();
|
27626 | }
|
27627 |
|
27628 | function onMonthSelectorClick() {
|
27629 | $el.append(calendar.renderMonthPicker());
|
27630 | }
|
27631 |
|
27632 | function onMonthSelectorItemClick() {
|
27633 | var $clickedEl = $(this);
|
27634 |
|
27635 | if ($clickedEl.hasClass('calendar-month-picker-item-current')) {
|
27636 | $el.find('.calendar-month-picker').remove();
|
27637 | return;
|
27638 | }
|
27639 |
|
27640 | $el.find('.calendar-month-picker-item-current').add($clickedEl).toggleClass('calendar-month-picker-item-current');
|
27641 | var index = $clickedEl.index();
|
27642 | var localeMonthIndex = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
|
27643 | var monthIndex = calendar.currentMonth;
|
27644 | var diff = localeMonthIndex - monthIndex;
|
27645 | var diffIndex = index - diff;
|
27646 | calendar.setYearMonth(calendar.currentYear, diffIndex, 0);
|
27647 | setTimeout(function () {
|
27648 | $el.find('.calendar-month-picker').remove();
|
27649 | }, 200);
|
27650 | }
|
27651 |
|
27652 | function onYearSelectorClick() {
|
27653 | $el.append(calendar.renderYearPicker());
|
27654 | var $currentEl = $el.find('.calendar-year-picker-item-current');
|
27655 | var $yearPickerEl = $el.find('.calendar-year-picker');
|
27656 | if (!$currentEl || !$currentEl.length) return;
|
27657 | $yearPickerEl.scrollTop($currentEl[0].offsetTop - $yearPickerEl[0].offsetHeight / 2 + $currentEl[0].offsetHeight / 2);
|
27658 | }
|
27659 |
|
27660 | function onYearSelectorItemClick() {
|
27661 | var $clickedEl = $(this);
|
27662 |
|
27663 | if ($clickedEl.hasClass('calendar-year-picker-item-current')) {
|
27664 | $el.find('.calendar-year-picker').remove();
|
27665 | return;
|
27666 | }
|
27667 |
|
27668 | $el.find('.calendar-year-picker-item-current').add($clickedEl).toggleClass('calendar-year-picker-item-current');
|
27669 | var year = parseInt($clickedEl.attr('data-year'), 10);
|
27670 | calendar.setYearMonth(year, undefined, 0);
|
27671 | setTimeout(function () {
|
27672 | $el.find('.calendar-year-picker').remove();
|
27673 | }, 200);
|
27674 | }
|
27675 |
|
27676 | function onTimeSelectorClick() {
|
27677 | calendar.openTimePicker();
|
27678 | }
|
27679 |
|
27680 | function onTimePickerCloseClick() {
|
27681 | calendar.closeTimePicker();
|
27682 | }
|
27683 |
|
27684 | var passiveListener = app.touchEvents.start === 'touchstart' && getSupport$1().passiveListener ? {
|
27685 | passive: true,
|
27686 | capture: false
|
27687 | } : false;
|
27688 |
|
27689 | $el.find('.calendar-prev-month-button').on('click', onPrevMonthClick);
|
27690 | $el.find('.calendar-next-month-button').on('click', onNextMonthClick);
|
27691 | $el.find('.calendar-prev-year-button').on('click', onPrevYearClick);
|
27692 | $el.find('.calendar-next-year-button').on('click', onNextYearClick);
|
27693 |
|
27694 | if (calendar.params.monthPicker) {
|
27695 | $el.find('.current-month-value').on('click', onMonthSelectorClick);
|
27696 | $el.on('click', '.calendar-month-picker-item', onMonthSelectorItemClick);
|
27697 | }
|
27698 |
|
27699 | if (calendar.params.yearPicker) {
|
27700 | $el.find('.current-year-value').on('click', onYearSelectorClick);
|
27701 | $el.on('click', '.calendar-year-picker-item', onYearSelectorItemClick);
|
27702 | }
|
27703 |
|
27704 | if (calendar.hasTimePicker) {
|
27705 | $el.find('.calendar-time-selector a').on('click', onTimeSelectorClick);
|
27706 | $el.on('click', '.calendar-time-picker-close', onTimePickerCloseClick);
|
27707 | }
|
27708 |
|
27709 |
|
27710 | $wrapperEl.on('click', handleDayClick);
|
27711 |
|
27712 | if (calendar.params.touchMove) {
|
27713 | $wrapperEl.on(app.touchEvents.start, handleTouchStart, passiveListener);
|
27714 | app.on('touchmove:active', handleTouchMove);
|
27715 | app.on('touchend:passive', handleTouchEnd);
|
27716 | }
|
27717 |
|
27718 | calendar.detachCalendarEvents = function detachCalendarEvents() {
|
27719 | $el.find('.calendar-prev-month-button').off('click', onPrevMonthClick);
|
27720 | $el.find('.calendar-next-month-button').off('click', onNextMonthClick);
|
27721 | $el.find('.calendar-prev-year-button').off('click', onPrevYearClick);
|
27722 | $el.find('.calendar-next-year-button').off('click', onNextYearClick);
|
27723 |
|
27724 | if (calendar.params.monthPicker) {
|
27725 | $el.find('.current-month-value').off('click', onMonthSelectorClick);
|
27726 | $el.off('click', '.calendar-month-picker-item', onMonthSelectorItemClick);
|
27727 | }
|
27728 |
|
27729 | if (calendar.params.yearPicker) {
|
27730 | $el.find('.current-year-value').off('click', onYearSelectorClick);
|
27731 | $el.off('click', '.calendar-year-picker-item', onYearSelectorItemClick);
|
27732 | }
|
27733 |
|
27734 | if (calendar.hasTimePicker) {
|
27735 | $el.find('.calendar-time-selector a').off('click', onTimeSelectorClick);
|
27736 | $el.off('click', '.calendar-time-picker-close', onTimePickerCloseClick);
|
27737 | }
|
27738 |
|
27739 | $wrapperEl.off('click', handleDayClick);
|
27740 |
|
27741 | if (calendar.params.touchMove) {
|
27742 | $wrapperEl.off(app.touchEvents.start, handleTouchStart, passiveListener);
|
27743 | app.off('touchmove:active', handleTouchMove);
|
27744 | app.off('touchend:passive', handleTouchEnd);
|
27745 | }
|
27746 | };
|
27747 | };
|
27748 |
|
27749 | calendar.init();
|
27750 | return calendar || _assertThisInitialized(_this);
|
27751 | }
|
27752 |
|
27753 | var _proto = Calendar.prototype;
|
27754 |
|
27755 | _proto.getIntlNames = function getIntlNames() {
|
27756 | var calendar = this;
|
27757 | var locale = calendar.params.locale;
|
27758 | var monthNamesIntl = [];
|
27759 | var monthNamesShortIntl = [];
|
27760 | var dayNamesIntl = [];
|
27761 | var dayNamesShortIntl = [];
|
27762 | var formatterMonthNames = new Intl.DateTimeFormat(locale, {
|
27763 | month: 'long'
|
27764 | });
|
27765 | var formatterMonthNamesShort = new Intl.DateTimeFormat(locale, {
|
27766 | month: 'short'
|
27767 | });
|
27768 | var formatterDayNames = new Intl.DateTimeFormat(locale, {
|
27769 | weekday: 'long'
|
27770 | });
|
27771 | var formatterDayNamesShort = new Intl.DateTimeFormat(locale, {
|
27772 | weekday: 'short'
|
27773 | });
|
27774 | var year;
|
27775 | var yearStarted;
|
27776 | var yearEnded;
|
27777 |
|
27778 | for (var i = 0; i < 24; i += 1) {
|
27779 | var date = new Date().setMonth(i, 1);
|
27780 | var currentYear = calendar.yearFormatter.format(date);
|
27781 |
|
27782 | if (year && currentYear !== year) {
|
27783 | if (yearStarted) yearEnded = true;
|
27784 | yearStarted = true;
|
27785 | year = currentYear;
|
27786 | }
|
27787 |
|
27788 | if (!year) {
|
27789 | year = currentYear;
|
27790 | }
|
27791 |
|
27792 | if (yearStarted && year === currentYear && !yearEnded) {
|
27793 | monthNamesIntl.push(formatterMonthNames.format(date));
|
27794 | monthNamesShortIntl.push(formatterMonthNamesShort.format(date));
|
27795 | }
|
27796 | }
|
27797 |
|
27798 | var weekDay = new Date().getDay();
|
27799 |
|
27800 | for (var _i = 0; _i < 7; _i += 1) {
|
27801 | var _date = new Date().getTime() + (_i - weekDay) * 24 * 60 * 60 * 1000;
|
27802 |
|
27803 | dayNamesIntl.push(formatterDayNames.format(_date));
|
27804 | dayNamesShortIntl.push(formatterDayNamesShort.format(_date));
|
27805 | }
|
27806 |
|
27807 | return {
|
27808 | monthNamesIntl: monthNamesIntl,
|
27809 | monthNamesShortIntl: monthNamesShortIntl,
|
27810 | dayNamesIntl: dayNamesIntl,
|
27811 | dayNamesShortIntl: dayNamesShortIntl
|
27812 | };
|
27813 | };
|
27814 |
|
27815 | _proto.normalizeDate = function normalizeDate(date) {
|
27816 | var calendar = this;
|
27817 | var d = new Date(date);
|
27818 |
|
27819 | if (calendar.hasTimePicker) {
|
27820 | return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());
|
27821 | }
|
27822 |
|
27823 | return new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
27824 | };
|
27825 |
|
27826 | _proto.normalizeValues = function normalizeValues(values) {
|
27827 | var calendar = this;
|
27828 | var newValues = [];
|
27829 |
|
27830 | if (values && Array.isArray(values)) {
|
27831 | newValues = values.map(function (val) {
|
27832 | return calendar.normalizeDate(val);
|
27833 | });
|
27834 | }
|
27835 |
|
27836 | return newValues;
|
27837 | };
|
27838 |
|
27839 | _proto.initInput = function initInput() {
|
27840 | var calendar = this;
|
27841 | if (!calendar.$inputEl) return;
|
27842 | if (calendar.params.inputReadOnly) calendar.$inputEl.prop('readOnly', true);
|
27843 | };
|
27844 |
|
27845 | _proto.isPopover = function isPopover() {
|
27846 | var calendar = this;
|
27847 | var app = calendar.app,
|
27848 | modal = calendar.modal,
|
27849 | params = calendar.params;
|
27850 | var device = getDevice$1();
|
27851 | if (params.openIn === 'sheet') return false;
|
27852 | if (modal && modal.type !== 'popover') return false;
|
27853 |
|
27854 | if (!calendar.inline && calendar.inputEl) {
|
27855 | if (params.openIn === 'popover') return true;
|
27856 |
|
27857 | if (device.ios) {
|
27858 | return !!device.ipad;
|
27859 | }
|
27860 |
|
27861 | if (app.width >= 768) {
|
27862 | return true;
|
27863 | }
|
27864 |
|
27865 | if (device.desktop && app.theme === 'aurora') {
|
27866 | return true;
|
27867 | }
|
27868 | }
|
27869 |
|
27870 | return false;
|
27871 | };
|
27872 |
|
27873 | _proto.formatDate = function formatDate(d) {
|
27874 | var calendar = this;
|
27875 | var date = new Date(d);
|
27876 | var year = date.getFullYear();
|
27877 | var month = date.getMonth();
|
27878 | var month1 = month + 1;
|
27879 | var day = date.getDate();
|
27880 | var weekDay = date.getDay();
|
27881 | var monthNames = calendar.monthNames,
|
27882 | monthNamesShort = calendar.monthNamesShort,
|
27883 | dayNames = calendar.dayNames,
|
27884 | dayNamesShort = calendar.dayNamesShort;
|
27885 | var _calendar$params2 = calendar.params,
|
27886 | dateFormat = _calendar$params2.dateFormat,
|
27887 | locale = _calendar$params2.locale;
|
27888 |
|
27889 | function twoDigits(number) {
|
27890 | return number < 10 ? "0" + number : number;
|
27891 | }
|
27892 |
|
27893 | if (typeof dateFormat === 'string') {
|
27894 | var tokens = {
|
27895 | yyyy: year,
|
27896 | yy: String(year).substring(2),
|
27897 | mm: twoDigits(month1),
|
27898 | m: month1,
|
27899 | MM: monthNames[month],
|
27900 | M: monthNamesShort[month],
|
27901 | dd: twoDigits(day),
|
27902 | d: day,
|
27903 | DD: dayNames[weekDay],
|
27904 | D: dayNamesShort[weekDay]
|
27905 | };
|
27906 |
|
27907 | if (calendar.params.timePicker) {
|
27908 | var hours = date.getHours();
|
27909 | var minutes = date.getMinutes();
|
27910 | var seconds = date.getSeconds();
|
27911 | var hours12 = hours;
|
27912 | if (hours > 12) hours12 = hours - 12;
|
27913 | if (hours === 0) hours12 = 12;
|
27914 | var a = hours >= 12 && hours !== 0 ? 'pm' : 'am';
|
27915 | Object.assign(tokens, {
|
27916 | HH: twoDigits(hours),
|
27917 | H: hours,
|
27918 | hh: twoDigits(hours12),
|
27919 | h: hours12,
|
27920 | ss: twoDigits(seconds),
|
27921 | s: seconds,
|
27922 | ':mm': twoDigits(minutes),
|
27923 | ':m': minutes,
|
27924 | a: a,
|
27925 | A: a.toUpperCase()
|
27926 | });
|
27927 | }
|
27928 |
|
27929 | var regexp = new RegExp(Object.keys(tokens).map(function (t) {
|
27930 | return "(" + t + ")";
|
27931 | }).join('|'), 'g');
|
27932 | return dateFormat.replace(regexp, function (token) {
|
27933 | if (token in tokens) return tokens[token];
|
27934 | return token;
|
27935 | });
|
27936 | }
|
27937 |
|
27938 | if (typeof dateFormat === 'function') {
|
27939 | return dateFormat(date);
|
27940 | }
|
27941 |
|
27942 |
|
27943 | var formatter = new Intl.DateTimeFormat(locale, dateFormat);
|
27944 | return formatter.format(date);
|
27945 | };
|
27946 |
|
27947 | _proto.formatValue = function formatValue() {
|
27948 | var calendar = this;
|
27949 | var value = calendar.value;
|
27950 |
|
27951 | if (calendar.params.formatValue) {
|
27952 | return calendar.params.formatValue.call(calendar, value);
|
27953 | }
|
27954 |
|
27955 | return value.map(function (v) {
|
27956 | return calendar.formatDate(v);
|
27957 | }).join(calendar.params.rangePicker ? ' - ' : ', ');
|
27958 | };
|
27959 |
|
27960 | _proto.addValue = function addValue(newValue) {
|
27961 | var calendar = this;
|
27962 | var _calendar$params3 = calendar.params,
|
27963 | multiple = _calendar$params3.multiple,
|
27964 | rangePicker = _calendar$params3.rangePicker,
|
27965 | rangePickerMinDays = _calendar$params3.rangePickerMinDays,
|
27966 | rangePickerMaxDays = _calendar$params3.rangePickerMaxDays;
|
27967 |
|
27968 | if (multiple) {
|
27969 | if (!calendar.value) calendar.value = [];
|
27970 | var inValuesIndex;
|
27971 |
|
27972 | for (var i = 0; i < calendar.value.length; i += 1) {
|
27973 | if (new Date(newValue).getTime() === new Date(calendar.value[i]).getTime()) {
|
27974 | inValuesIndex = i;
|
27975 | }
|
27976 | }
|
27977 |
|
27978 | if (typeof inValuesIndex === 'undefined') {
|
27979 | calendar.value.push(newValue);
|
27980 | } else {
|
27981 | calendar.value.splice(inValuesIndex, 1);
|
27982 | }
|
27983 |
|
27984 | calendar.updateValue();
|
27985 | } else if (rangePicker) {
|
27986 | if (!calendar.value) calendar.value = [];
|
27987 |
|
27988 | if (calendar.value.length === 2 || calendar.value.length === 0) {
|
27989 | calendar.value = [];
|
27990 | }
|
27991 |
|
27992 | if (calendar.value.length === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) >= (rangePickerMinDays - 1) * 60 * 60 * 24 * 1000 && (rangePickerMaxDays === 0 || Math.abs(calendar.value[0].getTime() - newValue.getTime()) <= (rangePickerMaxDays - 1) * 60 * 60 * 24 * 1000)) calendar.value.push(newValue);else calendar.value = [];
|
27993 | calendar.value.sort(function (a, b) {
|
27994 | return a - b;
|
27995 | });
|
27996 | calendar.updateValue();
|
27997 | } else {
|
27998 | calendar.value = [newValue];
|
27999 | calendar.updateValue();
|
28000 | }
|
28001 | };
|
28002 |
|
28003 | _proto.setValue = function setValue(values) {
|
28004 | var calendar = this;
|
28005 | var currentValue = calendar.value;
|
28006 |
|
28007 | if (Array.isArray(currentValue) && Array.isArray(values) && currentValue.length === values.length) {
|
28008 | var equal = true;
|
28009 | currentValue.forEach(function (v, index) {
|
28010 | if (v !== values[index]) equal = false;
|
28011 | });
|
28012 | if (equal) return;
|
28013 | }
|
28014 |
|
28015 | calendar.value = values;
|
28016 | calendar.updateValue();
|
28017 | };
|
28018 |
|
28019 | _proto.getValue = function getValue() {
|
28020 | var calendar = this;
|
28021 | return calendar.value;
|
28022 | };
|
28023 |
|
28024 | _proto.updateValue = function updateValue(onlyHeader) {
|
28025 | var calendar = this;
|
28026 | var $el = calendar.$el,
|
28027 | $wrapperEl = calendar.$wrapperEl,
|
28028 | $inputEl = calendar.$inputEl,
|
28029 | value = calendar.value,
|
28030 | params = calendar.params;
|
28031 | var i;
|
28032 |
|
28033 | if ($el && $el.length > 0) {
|
28034 | $wrapperEl.find('.calendar-day-selected').removeClass('calendar-day-selected calendar-day-selected-range calendar-day-selected-left calendar-day-selected-right');
|
28035 | var valueDate;
|
28036 |
|
28037 | if (params.rangePicker && value.length === 2) {
|
28038 | var leftDate = new Date(value[0]).getTime();
|
28039 | var rightDate = new Date(value[1]).getTime();
|
28040 |
|
28041 | for (i = leftDate; i <= rightDate; i += 24 * 60 * 60 * 1000) {
|
28042 | valueDate = new Date(i);
|
28043 | var addClass = 'calendar-day-selected';
|
28044 |
|
28045 | if (leftDate !== rightDate) {
|
28046 | if (i !== leftDate && i !== rightDate) {
|
28047 | addClass += ' calendar-day-selected-range';
|
28048 | }
|
28049 |
|
28050 | if (i === leftDate) {
|
28051 | addClass += ' calendar-day-selected-left';
|
28052 | }
|
28053 |
|
28054 | if (i === rightDate) {
|
28055 | addClass += ' calendar-day-selected-right';
|
28056 | }
|
28057 | }
|
28058 |
|
28059 | $wrapperEl.find(".calendar-day[data-date=\"" + valueDate.getFullYear() + "-" + valueDate.getMonth() + "-" + valueDate.getDate() + "\"]").addClass(addClass);
|
28060 | }
|
28061 |
|
28062 | valueDate = new Date(leftDate);
|
28063 | $wrapperEl.find(".calendar-day[data-date=\"" + valueDate.getFullYear() + "-" + valueDate.getMonth() + "-" + valueDate.getDate() + "\"]").removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-left');
|
28064 | valueDate = new Date(rightDate);
|
28065 | $wrapperEl.find(".calendar-day[data-date=\"" + valueDate.getFullYear() + "-" + valueDate.getMonth() + "-" + valueDate.getDate() + "\"]").removeClass('calendar-day-selected-range').addClass('calendar-day-selected calendar-day-selected-right');
|
28066 | } else {
|
28067 | for (i = 0; i < calendar.value.length; i += 1) {
|
28068 | valueDate = new Date(value[i]);
|
28069 | $wrapperEl.find(".calendar-day[data-date=\"" + valueDate.getFullYear() + "-" + valueDate.getMonth() + "-" + valueDate.getDate() + "\"]").addClass('calendar-day-selected');
|
28070 | }
|
28071 | }
|
28072 | }
|
28073 |
|
28074 | if (!onlyHeader) {
|
28075 | calendar.emit('local::change calendarChange', calendar, value);
|
28076 | }
|
28077 |
|
28078 | if ($el && $el.length > 0 && calendar.hasTimePicker) {
|
28079 | $el.find('.calendar-time-selector a').text(value && value.length ? calendar.timeSelectorFormatter.format(value[0]) : calendar.params.timePickerPlaceholder);
|
28080 | }
|
28081 |
|
28082 | if ($inputEl && $inputEl.length || params.header) {
|
28083 | var inputValue = calendar.formatValue(value);
|
28084 |
|
28085 | if (params.header && $el && $el.length) {
|
28086 | $el.find('.calendar-selected-date').text(inputValue);
|
28087 | }
|
28088 |
|
28089 | if ($inputEl && $inputEl.length && !onlyHeader) {
|
28090 | $inputEl.val(inputValue);
|
28091 | $inputEl.trigger('change');
|
28092 | }
|
28093 | }
|
28094 | };
|
28095 |
|
28096 | _proto.updateCurrentMonthYear = function updateCurrentMonthYear(dir) {
|
28097 | var calendar = this;
|
28098 | var $months = calendar.$months,
|
28099 | $el = calendar.$el,
|
28100 | monthNames = calendar.monthNames;
|
28101 | var currentLocaleMonth;
|
28102 | var currentLocaleYear;
|
28103 |
|
28104 | if (typeof dir === 'undefined') {
|
28105 | calendar.currentMonth = parseInt($months.eq(1).attr('data-month'), 10);
|
28106 | calendar.currentYear = parseInt($months.eq(1).attr('data-year'), 10);
|
28107 | currentLocaleMonth = $months.eq(1).attr('data-locale-month');
|
28108 | currentLocaleYear = $months.eq(1).attr('data-locale-year');
|
28109 | } else {
|
28110 | calendar.currentMonth = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-month'), 10);
|
28111 | calendar.currentYear = parseInt($months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-year'), 10);
|
28112 | currentLocaleMonth = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-month');
|
28113 | currentLocaleYear = $months.eq(dir === 'next' ? $months.length - 1 : 0).attr('data-locale-year');
|
28114 | }
|
28115 |
|
28116 | $el.find('.current-month-value').text(monthNames[currentLocaleMonth]);
|
28117 | $el.find('.current-year-value').text(currentLocaleYear);
|
28118 | };
|
28119 |
|
28120 | _proto.update = function update() {
|
28121 | var calendar = this;
|
28122 | var currentYear = calendar.currentYear,
|
28123 | currentMonth = calendar.currentMonth,
|
28124 | $wrapperEl = calendar.$wrapperEl;
|
28125 | var currentDate = new Date(currentYear, currentMonth);
|
28126 | var prevMonthHtml = calendar.renderMonth(currentDate, 'prev');
|
28127 | var currentMonthHtml = calendar.renderMonth(currentDate);
|
28128 | var nextMonthHtml = calendar.renderMonth(currentDate, 'next');
|
28129 | $wrapperEl.transition(0).html("" + prevMonthHtml + currentMonthHtml + nextMonthHtml).transform('translate3d(0,0,0)');
|
28130 | calendar.$months = $wrapperEl.find('.calendar-month');
|
28131 | calendar.monthsTranslate = 0;
|
28132 | calendar.setMonthsTranslate();
|
28133 | calendar.$months.each(function (monthEl) {
|
28134 | calendar.emit('local::monthAdd calendarMonthAdd', monthEl);
|
28135 | });
|
28136 | };
|
28137 |
|
28138 | _proto.onMonthChangeStart = function onMonthChangeStart(dir) {
|
28139 | var calendar = this;
|
28140 | var $months = calendar.$months,
|
28141 | currentYear = calendar.currentYear,
|
28142 | currentMonth = calendar.currentMonth;
|
28143 | calendar.updateCurrentMonthYear(dir);
|
28144 | $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');
|
28145 | var currentIndex = dir === 'next' ? $months.length - 1 : 0;
|
28146 | $months.eq(currentIndex).addClass('calendar-month-current');
|
28147 | $months.eq(dir === 'next' ? currentIndex - 1 : currentIndex + 1).addClass(dir === 'next' ? 'calendar-month-prev' : 'calendar-month-next');
|
28148 | calendar.emit('local::monthYearChangeStart calendarMonthYearChangeStart', calendar, currentYear, currentMonth);
|
28149 | };
|
28150 |
|
28151 | _proto.onMonthChangeEnd = function onMonthChangeEnd(dir, rebuildBoth) {
|
28152 | var calendar = this;
|
28153 | var currentYear = calendar.currentYear,
|
28154 | currentMonth = calendar.currentMonth,
|
28155 | $wrapperEl = calendar.$wrapperEl,
|
28156 | monthsTranslate = calendar.monthsTranslate;
|
28157 | calendar.animating = false;
|
28158 | var nextMonthHtml;
|
28159 | var prevMonthHtml;
|
28160 | var currentMonthHtml;
|
28161 | $wrapperEl.find('.calendar-month:not(.calendar-month-prev):not(.calendar-month-current):not(.calendar-month-next)').remove();
|
28162 |
|
28163 | if (typeof dir === 'undefined') {
|
28164 | dir = 'next';
|
28165 |
|
28166 | rebuildBoth = true;
|
28167 | }
|
28168 |
|
28169 | if (!rebuildBoth) {
|
28170 | currentMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), dir);
|
28171 | } else {
|
28172 | $wrapperEl.find('.calendar-month-next, .calendar-month-prev').remove();
|
28173 | prevMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'prev');
|
28174 | nextMonthHtml = calendar.renderMonth(new Date(currentYear, currentMonth), 'next');
|
28175 | }
|
28176 |
|
28177 | if (dir === 'next' || rebuildBoth) {
|
28178 | $wrapperEl.append(currentMonthHtml || nextMonthHtml);
|
28179 | }
|
28180 |
|
28181 | if (dir === 'prev' || rebuildBoth) {
|
28182 | $wrapperEl.prepend(currentMonthHtml || prevMonthHtml);
|
28183 | }
|
28184 |
|
28185 | var $months = $wrapperEl.find('.calendar-month');
|
28186 | calendar.$months = $months;
|
28187 | calendar.setMonthsTranslate(monthsTranslate);
|
28188 | calendar.emit('local::monthAdd calendarMonthAdd', calendar, dir === 'next' ? $months.eq($months.length - 1)[0] : $months.eq(0)[0]);
|
28189 | calendar.emit('local::monthYearChangeEnd calendarMonthYearChangeEnd', calendar, currentYear, currentMonth);
|
28190 | };
|
28191 |
|
28192 | _proto.setMonthsTranslate = function setMonthsTranslate(translate) {
|
28193 | var calendar = this;
|
28194 | var $months = calendar.$months,
|
28195 | isH = calendar.isHorizontal,
|
28196 | inverter = calendar.inverter;
|
28197 |
|
28198 | translate = translate || calendar.monthsTranslate || 0;
|
28199 |
|
28200 | if (typeof calendar.monthsTranslate === 'undefined') {
|
28201 | calendar.monthsTranslate = translate;
|
28202 | }
|
28203 |
|
28204 | $months.removeClass('calendar-month-current calendar-month-prev calendar-month-next');
|
28205 | var prevMonthTranslate = -(translate + 1) * 100 * inverter;
|
28206 | var currentMonthTranslate = -translate * 100 * inverter;
|
28207 | var nextMonthTranslate = -(translate - 1) * 100 * inverter;
|
28208 | $months.eq(0).transform("translate3d(" + (isH ? prevMonthTranslate : 0) + "%, " + (isH ? 0 : prevMonthTranslate) + "%, 0)").addClass('calendar-month-prev');
|
28209 | $months.eq(1).transform("translate3d(" + (isH ? currentMonthTranslate : 0) + "%, " + (isH ? 0 : currentMonthTranslate) + "%, 0)").addClass('calendar-month-current');
|
28210 | $months.eq(2).transform("translate3d(" + (isH ? nextMonthTranslate : 0) + "%, " + (isH ? 0 : nextMonthTranslate) + "%, 0)").addClass('calendar-month-next');
|
28211 | };
|
28212 |
|
28213 | _proto.nextMonth = function nextMonth(transition) {
|
28214 | var calendar = this;
|
28215 | var params = calendar.params,
|
28216 | $wrapperEl = calendar.$wrapperEl,
|
28217 | inverter = calendar.inverter,
|
28218 | isH = calendar.isHorizontal;
|
28219 |
|
28220 | if (typeof transition === 'undefined' || typeof transition === 'object') {
|
28221 | transition = '';
|
28222 |
|
28223 | if (!params.animate) transition = 0;
|
28224 | }
|
28225 |
|
28226 | var nextMonth = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-month'), 10);
|
28227 | var nextYear = parseInt(calendar.$months.eq(calendar.$months.length - 1).attr('data-year'), 10);
|
28228 | var nextDate = new Date(nextYear, nextMonth);
|
28229 | var nextDateTime = nextDate.getTime();
|
28230 | var transitionEndCallback = !calendar.animating;
|
28231 |
|
28232 | if (params.maxDate) {
|
28233 | if (nextDateTime > new Date(params.maxDate).getTime()) {
|
28234 | calendar.resetMonth();
|
28235 | return;
|
28236 | }
|
28237 | }
|
28238 |
|
28239 | calendar.monthsTranslate -= 1;
|
28240 |
|
28241 | if (nextMonth === calendar.currentMonth) {
|
28242 | var nextMonthTranslate = -calendar.monthsTranslate * 100 * inverter;
|
28243 | var nextMonthHtml = $(calendar.renderMonth(nextDateTime, 'next')).transform("translate3d(" + (isH ? nextMonthTranslate : 0) + "%, " + (isH ? 0 : nextMonthTranslate) + "%, 0)").addClass('calendar-month-next');
|
28244 | $wrapperEl.append(nextMonthHtml[0]);
|
28245 | calendar.$months = $wrapperEl.find('.calendar-month');
|
28246 | calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(calendar.$months.length - 1)[0]);
|
28247 | }
|
28248 |
|
28249 | calendar.animating = true;
|
28250 | calendar.onMonthChangeStart('next');
|
28251 | var translate = calendar.monthsTranslate * 100 * inverter;
|
28252 | $wrapperEl.transition(transition).transform("translate3d(" + (isH ? translate : 0) + "%, " + (isH ? 0 : translate) + "%, 0)");
|
28253 |
|
28254 | if (transitionEndCallback) {
|
28255 | $wrapperEl.transitionEnd(function () {
|
28256 | calendar.onMonthChangeEnd('next');
|
28257 | });
|
28258 | }
|
28259 |
|
28260 | if (!params.animate) {
|
28261 | calendar.onMonthChangeEnd('next');
|
28262 | }
|
28263 | };
|
28264 |
|
28265 | _proto.prevMonth = function prevMonth(transition) {
|
28266 | var calendar = this;
|
28267 | var params = calendar.params,
|
28268 | $wrapperEl = calendar.$wrapperEl,
|
28269 | inverter = calendar.inverter,
|
28270 | isH = calendar.isHorizontal;
|
28271 |
|
28272 | if (typeof transition === 'undefined' || typeof transition === 'object') {
|
28273 | transition = '';
|
28274 |
|
28275 | if (!params.animate) transition = 0;
|
28276 | }
|
28277 |
|
28278 | var prevMonth = parseInt(calendar.$months.eq(0).attr('data-month'), 10);
|
28279 | var prevYear = parseInt(calendar.$months.eq(0).attr('data-year'), 10);
|
28280 | var prevDate = new Date(prevYear, prevMonth + 1, -1);
|
28281 | var prevDateTime = prevDate.getTime();
|
28282 | var transitionEndCallback = !calendar.animating;
|
28283 |
|
28284 | if (params.minDate) {
|
28285 | var minDate = new Date(params.minDate);
|
28286 | minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);
|
28287 |
|
28288 | if (prevDateTime < minDate.getTime()) {
|
28289 | calendar.resetMonth();
|
28290 | return;
|
28291 | }
|
28292 | }
|
28293 |
|
28294 | calendar.monthsTranslate += 1;
|
28295 |
|
28296 | if (prevMonth === calendar.currentMonth) {
|
28297 | var prevMonthTranslate = -calendar.monthsTranslate * 100 * inverter;
|
28298 | var prevMonthHtml = $(calendar.renderMonth(prevDateTime, 'prev')).transform("translate3d(" + (isH ? prevMonthTranslate : 0) + "%, " + (isH ? 0 : prevMonthTranslate) + "%, 0)").addClass('calendar-month-prev');
|
28299 | $wrapperEl.prepend(prevMonthHtml[0]);
|
28300 | calendar.$months = $wrapperEl.find('.calendar-month');
|
28301 | calendar.emit('local::monthAdd calendarMonthAdd', calendar.$months.eq(0)[0]);
|
28302 | }
|
28303 |
|
28304 | calendar.animating = true;
|
28305 | calendar.onMonthChangeStart('prev');
|
28306 | var translate = calendar.monthsTranslate * 100 * inverter;
|
28307 | $wrapperEl.transition(transition).transform("translate3d(" + (isH ? translate : 0) + "%, " + (isH ? 0 : translate) + "%, 0)");
|
28308 |
|
28309 | if (transitionEndCallback) {
|
28310 | $wrapperEl.transitionEnd(function () {
|
28311 | calendar.onMonthChangeEnd('prev');
|
28312 | });
|
28313 | }
|
28314 |
|
28315 | if (!params.animate) {
|
28316 | calendar.onMonthChangeEnd('prev');
|
28317 | }
|
28318 | };
|
28319 |
|
28320 | _proto.resetMonth = function resetMonth(transition) {
|
28321 | if (transition === void 0) {
|
28322 | transition = '';
|
28323 | }
|
28324 |
|
28325 | var calendar = this;
|
28326 | var $wrapperEl = calendar.$wrapperEl,
|
28327 | inverter = calendar.inverter,
|
28328 | isH = calendar.isHorizontal,
|
28329 | monthsTranslate = calendar.monthsTranslate;
|
28330 | var translate = monthsTranslate * 100 * inverter;
|
28331 | $wrapperEl.transition(transition).transform("translate3d(" + (isH ? translate : 0) + "%, " + (isH ? 0 : translate) + "%, 0)");
|
28332 | }
|
28333 | ;
|
28334 |
|
28335 | _proto.setYearMonth = function setYearMonth(year, month, transition) {
|
28336 | var calendar = this;
|
28337 | var params = calendar.params,
|
28338 | isH = calendar.isHorizontal,
|
28339 | $wrapperEl = calendar.$wrapperEl,
|
28340 | inverter = calendar.inverter;
|
28341 |
|
28342 | if (typeof year === 'undefined') year = calendar.currentYear;
|
28343 |
|
28344 | if (typeof month === 'undefined') month = calendar.currentMonth;
|
28345 |
|
28346 | if (typeof transition === 'undefined' || typeof transition === 'object') {
|
28347 |
|
28348 | transition = '';
|
28349 |
|
28350 | if (!params.animate) transition = 0;
|
28351 | }
|
28352 |
|
28353 | var targetDate;
|
28354 |
|
28355 | if (year < calendar.currentYear) {
|
28356 | targetDate = new Date(year, month + 1, -1).getTime();
|
28357 | } else {
|
28358 | targetDate = new Date(year, month).getTime();
|
28359 | }
|
28360 |
|
28361 | if (params.maxDate && targetDate > new Date(params.maxDate).getTime()) {
|
28362 | return false;
|
28363 | }
|
28364 |
|
28365 | if (params.minDate) {
|
28366 | var minDate = new Date(params.minDate);
|
28367 | minDate = new Date(minDate.getFullYear(), minDate.getMonth(), 1);
|
28368 |
|
28369 | if (targetDate < minDate.getTime()) {
|
28370 | return false;
|
28371 | }
|
28372 | }
|
28373 |
|
28374 | var currentDate = new Date(calendar.currentYear, calendar.currentMonth).getTime();
|
28375 | var dir = targetDate > currentDate ? 'next' : 'prev';
|
28376 | var newMonthHTML = calendar.renderMonth(new Date(year, month));
|
28377 | calendar.monthsTranslate = calendar.monthsTranslate || 0;
|
28378 | var prevTranslate = calendar.monthsTranslate;
|
28379 | var monthTranslate;
|
28380 | var transitionEndCallback = !calendar.animating && transition !== 0;
|
28381 |
|
28382 | if (targetDate > currentDate) {
|
28383 |
|
28384 | calendar.monthsTranslate -= 1;
|
28385 | if (!calendar.animating) calendar.$months.eq(calendar.$months.length - 1).remove();
|
28386 | $wrapperEl.append(newMonthHTML);
|
28387 | calendar.$months = $wrapperEl.find('.calendar-month');
|
28388 | monthTranslate = -(prevTranslate - 1) * 100 * inverter;
|
28389 | calendar.$months.eq(calendar.$months.length - 1).transform("translate3d(" + (isH ? monthTranslate : 0) + "%, " + (isH ? 0 : monthTranslate) + "%, 0)").addClass('calendar-month-next');
|
28390 | } else {
|
28391 |
|
28392 | calendar.monthsTranslate += 1;
|
28393 | if (!calendar.animating) calendar.$months.eq(0).remove();
|
28394 | $wrapperEl.prepend(newMonthHTML);
|
28395 | calendar.$months = $wrapperEl.find('.calendar-month');
|
28396 | monthTranslate = -(prevTranslate + 1) * 100 * inverter;
|
28397 | calendar.$months.eq(0).transform("translate3d(" + (isH ? monthTranslate : 0) + "%, " + (isH ? 0 : monthTranslate) + "%, 0)").addClass('calendar-month-prev');
|
28398 | }
|
28399 |
|
28400 | calendar.emit('local::monthAdd calendarMonthAdd', dir === 'next' ? calendar.$months.eq(calendar.$months.length - 1)[0] : calendar.$months.eq(0)[0]);
|
28401 | calendar.animating = true;
|
28402 | calendar.onMonthChangeStart(dir);
|
28403 | var wrapperTranslate = calendar.monthsTranslate * 100 * inverter;
|
28404 | $wrapperEl.transition(transition).transform("translate3d(" + (isH ? wrapperTranslate : 0) + "%, " + (isH ? 0 : wrapperTranslate) + "%, 0)");
|
28405 |
|
28406 | if (transitionEndCallback) {
|
28407 | $wrapperEl.transitionEnd(function () {
|
28408 | calendar.onMonthChangeEnd(dir, true);
|
28409 | });
|
28410 | }
|
28411 |
|
28412 | if (!params.animate || transition === 0) {
|
28413 | calendar.onMonthChangeEnd(dir, true);
|
28414 | }
|
28415 | };
|
28416 |
|
28417 | _proto.nextYear = function nextYear() {
|
28418 | var calendar = this;
|
28419 | calendar.setYearMonth(calendar.currentYear + 1);
|
28420 | };
|
28421 |
|
28422 | _proto.prevYear = function prevYear() {
|
28423 | var calendar = this;
|
28424 | calendar.setYearMonth(calendar.currentYear - 1);
|
28425 | }
|
28426 | ;
|
28427 |
|
28428 | _proto.dateInRange = function dateInRange(dayDate, range) {
|
28429 | var match = false;
|
28430 | var i;
|
28431 | if (!range) return false;
|
28432 |
|
28433 | if (Array.isArray(range)) {
|
28434 | for (i = 0; i < range.length; i += 1) {
|
28435 | if (range[i].from || range[i].to) {
|
28436 | if (range[i].from && range[i].to) {
|
28437 | if (dayDate <= new Date(range[i].to).getTime() && dayDate >= new Date(range[i].from).getTime()) {
|
28438 | match = true;
|
28439 | }
|
28440 | } else if (range[i].from) {
|
28441 | if (dayDate >= new Date(range[i].from).getTime()) {
|
28442 | match = true;
|
28443 | }
|
28444 | } else if (range[i].to) {
|
28445 | if (dayDate <= new Date(range[i].to).getTime()) {
|
28446 | match = true;
|
28447 | }
|
28448 | }
|
28449 | } else if (range[i].date) {
|
28450 | if (dayDate === new Date(range[i].date).getTime()) {
|
28451 | match = true;
|
28452 | }
|
28453 | } else if (dayDate === new Date(range[i]).getTime()) {
|
28454 | match = true;
|
28455 | }
|
28456 | }
|
28457 | } else if (range.from || range.to) {
|
28458 | if (range.from && range.to) {
|
28459 | if (dayDate <= new Date(range.to).getTime() && dayDate >= new Date(range.from).getTime()) {
|
28460 | match = true;
|
28461 | }
|
28462 | } else if (range.from) {
|
28463 | if (dayDate >= new Date(range.from).getTime()) {
|
28464 | match = true;
|
28465 | }
|
28466 | } else if (range.to) {
|
28467 | if (dayDate <= new Date(range.to).getTime()) {
|
28468 | match = true;
|
28469 | }
|
28470 | }
|
28471 | } else if (range.date) {
|
28472 | match = dayDate === new Date(range.date).getTime();
|
28473 | } else if (typeof range === 'function') {
|
28474 | match = range(new Date(dayDate));
|
28475 | }
|
28476 |
|
28477 | return match;
|
28478 | }
|
28479 | ;
|
28480 |
|
28481 | _proto.daysInMonth = function daysInMonth(date) {
|
28482 | var d = new Date(date);
|
28483 | return new Date(d.getFullYear(), d.getMonth() + 1, 0).getDate();
|
28484 | };
|
28485 |
|
28486 | _proto.renderMonths = function renderMonths(date) {
|
28487 | var calendar = this;
|
28488 |
|
28489 | if (calendar.params.renderMonths) {
|
28490 | return calendar.params.renderMonths.call(calendar, date);
|
28491 | }
|
28492 |
|
28493 | return $jsx("div", {
|
28494 | class: "calendar-months-wrapper"
|
28495 | }, calendar.renderMonth(date, 'prev'), calendar.renderMonth(date), calendar.renderMonth(date, 'next'));
|
28496 | };
|
28497 |
|
28498 | _proto.renderMonth = function renderMonth(d, offset) {
|
28499 | var calendar = this;
|
28500 | var params = calendar.params,
|
28501 | value = calendar.value;
|
28502 |
|
28503 | if (params.renderMonth) {
|
28504 | return params.renderMonth.call(calendar, d, offset);
|
28505 | }
|
28506 |
|
28507 | var date = new Date(d);
|
28508 | var year = date.getFullYear();
|
28509 | var month = date.getMonth();
|
28510 | var localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));
|
28511 | if (localeMonth < 0) localeMonth = month;
|
28512 | var localeYear = calendar.yearFormatter.format(date);
|
28513 |
|
28514 | if (offset === 'next') {
|
28515 | if (month === 11) date = new Date(year + 1, 0);else date = new Date(year, month + 1, 1);
|
28516 | }
|
28517 |
|
28518 | if (offset === 'prev') {
|
28519 | if (month === 0) date = new Date(year - 1, 11);else date = new Date(year, month - 1, 1);
|
28520 | }
|
28521 |
|
28522 | if (offset === 'next' || offset === 'prev') {
|
28523 | month = date.getMonth();
|
28524 | year = date.getFullYear();
|
28525 | localeMonth = calendar.monthNames.indexOf(calendar.monthFormatter.format(date));
|
28526 | if (localeMonth < 0) localeMonth = month;
|
28527 | localeYear = calendar.yearFormatter.format(date);
|
28528 | }
|
28529 |
|
28530 | var currentValues = [];
|
28531 | var today = new Date().setHours(0, 0, 0, 0);
|
28532 | var minDate = params.minDate ? new Date(params.minDate).getTime() : null;
|
28533 | var maxDate = params.maxDate ? new Date(params.maxDate).getTime() : null;
|
28534 | var rows = 6;
|
28535 | var cols = 7;
|
28536 | var daysInPrevMonth = calendar.daysInMonth(new Date(date.getFullYear(), date.getMonth()).getTime() - 10 * 24 * 60 * 60 * 1000);
|
28537 | var daysInMonth = calendar.daysInMonth(date);
|
28538 | var minDayNumber = params.firstDay === 6 ? 0 : 1;
|
28539 | var monthHtml = '';
|
28540 | var dayIndex = 0 + (params.firstDay - 1);
|
28541 | var disabled;
|
28542 | var hasEvents;
|
28543 | var firstDayOfMonthIndex = new Date(date.getFullYear(), date.getMonth()).getDay();
|
28544 | if (firstDayOfMonthIndex === 0) firstDayOfMonthIndex = 7;
|
28545 |
|
28546 | if (value && value.length) {
|
28547 | for (var i = 0; i < value.length; i += 1) {
|
28548 | currentValues.push(new Date(value[i]).setHours(0, 0, 0, 0));
|
28549 | }
|
28550 | }
|
28551 |
|
28552 | for (var row = 1; row <= rows; row += 1) {
|
28553 | var rowHtml = '';
|
28554 |
|
28555 | var _loop = function _loop(col) {
|
28556 | dayIndex += 1;
|
28557 | var dayDate = void 0;
|
28558 | var dayNumber = dayIndex - firstDayOfMonthIndex;
|
28559 | var addClass = '';
|
28560 |
|
28561 | if (row === 1 && col === 1 && dayNumber > minDayNumber && params.firstDay !== 1) {
|
28562 | dayIndex -= 7;
|
28563 | dayNumber = dayIndex - firstDayOfMonthIndex;
|
28564 | }
|
28565 |
|
28566 | var weekDayIndex = col - 1 + params.firstDay > 6 ? col - 1 - 7 + params.firstDay : col - 1 + params.firstDay;
|
28567 |
|
28568 | if (dayNumber < 0) {
|
28569 | dayNumber = daysInPrevMonth + dayNumber + 1;
|
28570 | addClass += ' calendar-day-prev';
|
28571 | dayDate = new Date(month - 1 < 0 ? year - 1 : year, month - 1 < 0 ? 11 : month - 1, dayNumber).getTime();
|
28572 | } else {
|
28573 | dayNumber += 1;
|
28574 |
|
28575 | if (dayNumber > daysInMonth) {
|
28576 | dayNumber -= daysInMonth;
|
28577 | addClass += ' calendar-day-next';
|
28578 | dayDate = new Date(month + 1 > 11 ? year + 1 : year, month + 1 > 11 ? 0 : month + 1, dayNumber).getTime();
|
28579 | } else {
|
28580 | dayDate = new Date(year, month, dayNumber).getTime();
|
28581 | }
|
28582 | }
|
28583 |
|
28584 |
|
28585 | if (dayDate === today) addClass += ' calendar-day-today';
|
28586 |
|
28587 | if (params.rangePicker && currentValues.length === 2) {
|
28588 | if (dayDate >= currentValues[0] && dayDate <= currentValues[1]) {
|
28589 | addClass += ' calendar-day-selected';
|
28590 | }
|
28591 |
|
28592 | if (currentValues[0] !== currentValues[1]) {
|
28593 | if (dayDate > currentValues[0] && dayDate < currentValues[1]) {
|
28594 | addClass += ' calendar-day-selected-range';
|
28595 | }
|
28596 |
|
28597 | if (dayDate === currentValues[0]) {
|
28598 | addClass += ' calendar-day-selected-left';
|
28599 | }
|
28600 |
|
28601 | if (dayDate === currentValues[1]) {
|
28602 | addClass += ' calendar-day-selected-right';
|
28603 | }
|
28604 | }
|
28605 | } else if (currentValues.indexOf(dayDate) >= 0) addClass += ' calendar-day-selected';
|
28606 |
|
28607 |
|
28608 | if (params.weekendDays.indexOf(weekDayIndex) >= 0) {
|
28609 | addClass += ' calendar-day-weekend';
|
28610 | }
|
28611 |
|
28612 |
|
28613 | var eventsHtml = '';
|
28614 | hasEvents = false;
|
28615 |
|
28616 | if (params.events) {
|
28617 | if (calendar.dateInRange(dayDate, params.events)) {
|
28618 | hasEvents = true;
|
28619 | }
|
28620 | }
|
28621 |
|
28622 | if (hasEvents) {
|
28623 | addClass += ' calendar-day-has-events';
|
28624 |
|
28625 | eventsHtml = "\n <span class=\"calendar-day-events\">\n <span class=\"calendar-day-event\"></span>\n </span>\n ";
|
28626 |
|
28627 | if (Array.isArray(params.events)) {
|
28628 | var eventDots = [];
|
28629 | params.events.forEach(function (ev) {
|
28630 | var color = ev.color || '';
|
28631 |
|
28632 | if (eventDots.indexOf(color) < 0 && calendar.dateInRange(dayDate, ev)) {
|
28633 | eventDots.push(color);
|
28634 | }
|
28635 | });
|
28636 |
|
28637 | eventsHtml = "\n <span class=\"calendar-day-events\">\n " + eventDots.map(function (color) {
|
28638 | return ("\n <span class=\"calendar-day-event\" style=\"" + (color ? "background-color: " + color : '') + "\"></span>\n ").trim();
|
28639 | }).join('') + "\n </span>\n ";
|
28640 | }
|
28641 | }
|
28642 |
|
28643 |
|
28644 | if (params.rangesClasses) {
|
28645 | for (var k = 0; k < params.rangesClasses.length; k += 1) {
|
28646 | if (calendar.dateInRange(dayDate, params.rangesClasses[k].range)) {
|
28647 | addClass += " " + params.rangesClasses[k].cssClass;
|
28648 | }
|
28649 | }
|
28650 | }
|
28651 |
|
28652 |
|
28653 | disabled = false;
|
28654 |
|
28655 | if (minDate && dayDate < minDate || maxDate && dayDate > maxDate) {
|
28656 | disabled = true;
|
28657 | }
|
28658 |
|
28659 | if (params.disabled) {
|
28660 | if (calendar.dateInRange(dayDate, params.disabled)) {
|
28661 | disabled = true;
|
28662 | }
|
28663 | }
|
28664 |
|
28665 | if (disabled) {
|
28666 | addClass += ' calendar-day-disabled';
|
28667 | }
|
28668 |
|
28669 | dayDate = new Date(dayDate);
|
28670 | var dayYear = dayDate.getFullYear();
|
28671 | var dayMonth = dayDate.getMonth();
|
28672 | var dayNumberDisplay = calendar.dayFormatter.format(dayDate);
|
28673 |
|
28674 | rowHtml += ("\n <div data-year=\"" + dayYear + "\" data-month=\"" + dayMonth + "\" data-day=\"" + dayNumber + "\" class=\"calendar-day" + addClass + "\" data-date=\"" + dayYear + "-" + dayMonth + "-" + dayNumber + "\">\n <span class=\"calendar-day-number\">" + dayNumberDisplay + eventsHtml + "</span>\n </div>").trim();
|
28675 | };
|
28676 |
|
28677 | for (var col = 1; col <= cols; col += 1) {
|
28678 | _loop(col);
|
28679 | }
|
28680 |
|
28681 | monthHtml += "<div class=\"calendar-row\">" + rowHtml + "</div>";
|
28682 | }
|
28683 |
|
28684 | monthHtml = "<div class=\"calendar-month\" data-year=\"" + year + "\" data-month=\"" + month + "\" data-locale-year=\"" + localeYear + "\" data-locale-month=\"" + localeMonth + "\">" + monthHtml + "</div>";
|
28685 | return monthHtml;
|
28686 | };
|
28687 |
|
28688 | _proto.renderWeekHeader = function renderWeekHeader() {
|
28689 | var calendar = this;
|
28690 |
|
28691 | if (calendar.params.renderWeekHeader) {
|
28692 | return calendar.params.renderWeekHeader.call(calendar);
|
28693 | }
|
28694 |
|
28695 | var params = calendar.params;
|
28696 | var weekDaysHtml = '';
|
28697 |
|
28698 | for (var i = 0; i < 7; i += 1) {
|
28699 | var dayIndex = i + params.firstDay > 6 ? i - 7 + params.firstDay : i + params.firstDay;
|
28700 | var dayName = calendar.dayNamesShort[dayIndex];
|
28701 | weekDaysHtml += "<div class=\"calendar-week-day\">" + dayName + "</div>";
|
28702 | }
|
28703 |
|
28704 | return $jsx("div", {
|
28705 | class: "calendar-week-header"
|
28706 | }, weekDaysHtml);
|
28707 | };
|
28708 |
|
28709 | _proto.renderMonthSelector = function renderMonthSelector() {
|
28710 | var calendar = this;
|
28711 |
|
28712 | if (calendar.params.renderMonthSelector) {
|
28713 | return calendar.params.renderMonthSelector.call(calendar);
|
28714 | }
|
28715 |
|
28716 | return $jsx("div", {
|
28717 | class: "calendar-month-selector"
|
28718 | }, $jsx("a", {
|
28719 | class: "link icon-only calendar-prev-month-button"
|
28720 | }, $jsx("i", {
|
28721 | class: "icon icon-prev"
|
28722 | })), calendar.params.monthPicker ? $jsx("a", {
|
28723 | class: "current-month-value link"
|
28724 | }) : $jsx("span", {
|
28725 | class: "current-month-value"
|
28726 | }), $jsx("a", {
|
28727 | class: "link icon-only calendar-next-month-button"
|
28728 | }, $jsx("i", {
|
28729 | class: "icon icon-next"
|
28730 | })));
|
28731 | };
|
28732 |
|
28733 | _proto.renderMonthPicker = function renderMonthPicker() {
|
28734 | var calendar = this;
|
28735 | var localeMonth = parseInt(calendar.$el.find('.calendar-month-current').attr('data-locale-month'), 10);
|
28736 | return $jsx("div", {
|
28737 | class: "calendar-month-picker"
|
28738 | }, calendar.monthNames.map(function (m, index) {
|
28739 | return $jsx("div", {
|
28740 | class: "calendar-month-picker-item " + (localeMonth === index ? 'calendar-month-picker-item-current' : '')
|
28741 | }, $jsx("span", null, m));
|
28742 | }));
|
28743 | };
|
28744 |
|
28745 | _proto.renderYearSelector = function renderYearSelector() {
|
28746 | var calendar = this;
|
28747 |
|
28748 | if (calendar.params.renderYearSelector) {
|
28749 | return calendar.params.renderYearSelector.call(calendar);
|
28750 | }
|
28751 |
|
28752 | return $jsx("div", {
|
28753 | class: "calendar-year-selector"
|
28754 | }, $jsx("a", {
|
28755 | class: "link icon-only calendar-prev-year-button"
|
28756 | }, $jsx("i", {
|
28757 | class: "icon icon-prev"
|
28758 | })), calendar.params.yearPicker ? $jsx("a", {
|
28759 | class: "current-year-value link"
|
28760 | }) : $jsx("span", {
|
28761 | class: "current-year-value"
|
28762 | }), $jsx("a", {
|
28763 | class: "link icon-only calendar-next-year-button"
|
28764 | }, $jsx("i", {
|
28765 | class: "icon icon-next"
|
28766 | })));
|
28767 | };
|
28768 |
|
28769 | _proto.renderYearPicker = function renderYearPicker() {
|
28770 | var calendar = this;
|
28771 | var currentYear = calendar.currentYear;
|
28772 | var yearMin = calendar.params.yearPickerMin || new Date().getFullYear() - 100;
|
28773 |
|
28774 | if (calendar.params.minDate) {
|
28775 | yearMin = Math.max(yearMin, new Date(calendar.params.minDate).getFullYear());
|
28776 | }
|
28777 |
|
28778 | var yearMax = calendar.params.yearPickerMax || new Date().getFullYear() + 100;
|
28779 |
|
28780 | if (calendar.params.maxDate) {
|
28781 | yearMax = Math.min(yearMax, new Date(calendar.params.maxDate).getFullYear());
|
28782 | }
|
28783 |
|
28784 | var years = [];
|
28785 |
|
28786 | for (var i = yearMin; i <= yearMax; i += 1) {
|
28787 | years.push(i);
|
28788 | }
|
28789 |
|
28790 | return $jsx("div", {
|
28791 | class: "calendar-year-picker"
|
28792 | }, years.map(function (year) {
|
28793 | return $jsx("div", {
|
28794 | "data-year": year,
|
28795 | class: "calendar-year-picker-item " + (year === currentYear ? 'calendar-year-picker-item-current' : '')
|
28796 | }, $jsx("span", null, calendar.yearFormatter.format(new Date().setFullYear(year))));
|
28797 | }));
|
28798 | }
|
28799 | ;
|
28800 |
|
28801 | _proto.renderTimeSelector = function renderTimeSelector() {
|
28802 | var calendar = this;
|
28803 | var value = calendar.value && calendar.value[0];
|
28804 | var timeString;
|
28805 | if (value) timeString = calendar.timeSelectorFormatter.format(value);
|
28806 | return $jsx("div", {
|
28807 | class: "calendar-time-selector"
|
28808 | }, $jsx("a", {
|
28809 | class: "link"
|
28810 | }, timeString || calendar.params.timePickerPlaceholder));
|
28811 | };
|
28812 |
|
28813 | _proto.renderHeader = function renderHeader() {
|
28814 | var calendar = this;
|
28815 |
|
28816 | if (calendar.params.renderHeader) {
|
28817 | return calendar.params.renderHeader.call(calendar);
|
28818 | }
|
28819 |
|
28820 | return $jsx("div", {
|
28821 | class: "calendar-header"
|
28822 | }, $jsx("div", {
|
28823 | class: "calendar-selected-date"
|
28824 | }, calendar.params.headerPlaceholder));
|
28825 | };
|
28826 |
|
28827 | _proto.renderFooter = function renderFooter() {
|
28828 | var calendar = this;
|
28829 | var app = calendar.app;
|
28830 |
|
28831 | if (calendar.params.renderFooter) {
|
28832 | return calendar.params.renderFooter.call(calendar);
|
28833 | }
|
28834 |
|
28835 | return $jsx("div", {
|
28836 | class: "calendar-footer"
|
28837 | }, $jsx("a", {
|
28838 | class: (app.theme === 'md' ? 'button' : 'link') + " calendar-close sheet-close popover-close"
|
28839 | }, calendar.params.toolbarCloseText));
|
28840 | };
|
28841 |
|
28842 | _proto.renderToolbar = function renderToolbar() {
|
28843 | var calendar = this;
|
28844 |
|
28845 | if (calendar.params.renderToolbar) {
|
28846 | return calendar.params.renderToolbar.call(calendar, calendar);
|
28847 | }
|
28848 |
|
28849 |
|
28850 | return $jsx("div", {
|
28851 | class: "toolbar toolbar-top no-shadow"
|
28852 | }, $jsx("div", {
|
28853 | class: "toolbar-inner"
|
28854 | }, calendar.params.monthSelector ? calendar.renderMonthSelector() : '', calendar.params.yearSelector ? calendar.renderYearSelector() : ''));
|
28855 | }
|
28856 | ;
|
28857 |
|
28858 | _proto.renderInline = function renderInline() {
|
28859 | var calendar = this;
|
28860 | var _calendar$params4 = calendar.params,
|
28861 | cssClass = _calendar$params4.cssClass,
|
28862 | toolbar = _calendar$params4.toolbar,
|
28863 | header = _calendar$params4.header,
|
28864 | footer = _calendar$params4.footer,
|
28865 | rangePicker = _calendar$params4.rangePicker,
|
28866 | weekHeader = _calendar$params4.weekHeader;
|
28867 | var value = calendar.value,
|
28868 | hasTimePicker = calendar.hasTimePicker;
|
28869 | var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);
|
28870 | return $jsx("div", {
|
28871 | class: "calendar calendar-inline " + (rangePicker ? 'calendar-range' : '') + " " + (cssClass || '')
|
28872 | }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx("div", {
|
28873 | class: "calendar-months"
|
28874 | }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());
|
28875 | };
|
28876 |
|
28877 | _proto.renderCustomModal = function renderCustomModal() {
|
28878 | var calendar = this;
|
28879 | var _calendar$params5 = calendar.params,
|
28880 | cssClass = _calendar$params5.cssClass,
|
28881 | toolbar = _calendar$params5.toolbar,
|
28882 | header = _calendar$params5.header,
|
28883 | footer = _calendar$params5.footer,
|
28884 | rangePicker = _calendar$params5.rangePicker,
|
28885 | weekHeader = _calendar$params5.weekHeader;
|
28886 | var value = calendar.value,
|
28887 | hasTimePicker = calendar.hasTimePicker;
|
28888 | var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);
|
28889 | return $jsx("div", {
|
28890 | class: "calendar calendar-modal " + (rangePicker ? 'calendar-range' : '') + " " + (cssClass || '')
|
28891 | }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx("div", {
|
28892 | class: "calendar-months"
|
28893 | }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());
|
28894 | };
|
28895 |
|
28896 | _proto.renderSheet = function renderSheet() {
|
28897 | var calendar = this;
|
28898 | var _calendar$params6 = calendar.params,
|
28899 | cssClass = _calendar$params6.cssClass,
|
28900 | toolbar = _calendar$params6.toolbar,
|
28901 | header = _calendar$params6.header,
|
28902 | footer = _calendar$params6.footer,
|
28903 | rangePicker = _calendar$params6.rangePicker,
|
28904 | weekHeader = _calendar$params6.weekHeader;
|
28905 | var value = calendar.value,
|
28906 | hasTimePicker = calendar.hasTimePicker;
|
28907 | var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);
|
28908 | return $jsx("div", {
|
28909 | class: "sheet-modal calendar calendar-sheet " + (rangePicker ? 'calendar-range' : '') + " " + (cssClass || '')
|
28910 | }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx("div", {
|
28911 | class: "sheet-modal-inner calendar-months"
|
28912 | }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter());
|
28913 | };
|
28914 |
|
28915 | _proto.renderPopover = function renderPopover() {
|
28916 | var calendar = this;
|
28917 | var _calendar$params7 = calendar.params,
|
28918 | cssClass = _calendar$params7.cssClass,
|
28919 | toolbar = _calendar$params7.toolbar,
|
28920 | header = _calendar$params7.header,
|
28921 | footer = _calendar$params7.footer,
|
28922 | rangePicker = _calendar$params7.rangePicker,
|
28923 | weekHeader = _calendar$params7.weekHeader;
|
28924 | var value = calendar.value,
|
28925 | hasTimePicker = calendar.hasTimePicker;
|
28926 | var date = value && value.length ? value[0] : new Date().setHours(0, 0, 0);
|
28927 | return $jsx("div", {
|
28928 | class: "popover calendar-popover"
|
28929 | }, $jsx("div", {
|
28930 | class: "popover-inner"
|
28931 | }, $jsx("div", {
|
28932 | class: "calendar " + (rangePicker ? 'calendar-range' : '') + " " + (cssClass || '')
|
28933 | }, header && calendar.renderHeader(), toolbar && calendar.renderToolbar(), weekHeader && calendar.renderWeekHeader(), $jsx("div", {
|
28934 | class: "calendar-months"
|
28935 | }, calendar.renderMonths(date)), hasTimePicker && calendar.renderTimeSelector(), footer && calendar.renderFooter())));
|
28936 | };
|
28937 |
|
28938 | _proto.render = function render() {
|
28939 | var calendar = this;
|
28940 | var params = calendar.params;
|
28941 | if (params.render) return params.render.call(calendar);
|
28942 |
|
28943 | if (!calendar.inline) {
|
28944 | var modalType = params.openIn;
|
28945 | if (modalType === 'auto') modalType = calendar.isPopover() ? 'popover' : 'sheet';
|
28946 | if (modalType === 'popover') return calendar.renderPopover();
|
28947 | if (modalType === 'sheet') return calendar.renderSheet();
|
28948 | return calendar.renderCustomModal();
|
28949 | }
|
28950 |
|
28951 | return calendar.renderInline();
|
28952 | };
|
28953 |
|
28954 | _proto.openTimePicker = function openTimePicker() {
|
28955 | var calendar = this;
|
28956 | var $el = calendar.$el,
|
28957 | app = calendar.app,
|
28958 | is12HoursFormat = calendar.is12HoursFormat;
|
28959 | if (!$el || !$el.length) return;
|
28960 | $el.append('<div class="calendar-time-picker"></div>');
|
28961 | var hoursArr = [];
|
28962 | var minutesArr = [];
|
28963 | var hoursMin = is12HoursFormat ? 1 : 0;
|
28964 | var hoursMax = is12HoursFormat ? 12 : 23;
|
28965 |
|
28966 | for (var i = hoursMin; i <= hoursMax; i += 1) {
|
28967 | hoursArr.push(i);
|
28968 | }
|
28969 |
|
28970 | for (var _i2 = 0; _i2 <= 59; _i2 += 1) {
|
28971 | minutesArr.push(_i2);
|
28972 | }
|
28973 |
|
28974 | var value;
|
28975 |
|
28976 | if (calendar.value && calendar.value.length) {
|
28977 | value = [calendar.value[0].getHours(), calendar.value[0].getMinutes()];
|
28978 | } else {
|
28979 | value = [new Date().getHours(), new Date().getMinutes()];
|
28980 | }
|
28981 |
|
28982 | if (is12HoursFormat) {
|
28983 | value.push(value[0] < 12 ? 'AM' : 'PM');
|
28984 | if (value[0] > 12) value[0] -= 12;
|
28985 | if (value[0] === 0) value[0] = 12;
|
28986 | }
|
28987 |
|
28988 | calendar.timePickerInstance = app.picker.create({
|
28989 | containerEl: $el.find('.calendar-time-picker'),
|
28990 | value: value,
|
28991 | toolbar: true,
|
28992 | rotateEffect: false,
|
28993 | toolbarCloseText: calendar.params.toolbarCloseText,
|
28994 | cols: [{
|
28995 | values: hoursArr
|
28996 | }, {
|
28997 | divider: true,
|
28998 | content: ':'
|
28999 | }, {
|
29000 | values: minutesArr,
|
29001 | displayValues: minutesArr.map(function (m) {
|
29002 | return m < 10 ? "0" + m : m;
|
29003 | })
|
29004 | }].concat(is12HoursFormat ? [{
|
29005 | values: ['AM', 'PM']
|
29006 | }] : [])
|
29007 | });
|
29008 | calendar.timePickerInstance.$el.find('.toolbar a').removeClass('sheet-close popover-close').addClass('calendar-time-picker-close');
|
29009 | };
|
29010 |
|
29011 | _proto.closeTimePicker = function closeTimePicker() {
|
29012 | var calendar = this;
|
29013 | var is12HoursFormat = calendar.is12HoursFormat;
|
29014 |
|
29015 | if (calendar.timePickerInstance) {
|
29016 | var timePickerValue = calendar.timePickerInstance.value;
|
29017 | var hours = parseInt(timePickerValue[0], 10);
|
29018 | var minutes = parseInt(timePickerValue[1], 10);
|
29019 | var period = calendar.timePickerInstance.value[2];
|
29020 |
|
29021 | if (is12HoursFormat) {
|
29022 | if (period === 'AM' && hours === 12) {
|
29023 | hours = 0;
|
29024 | } else if (period === 'PM' && hours !== 12) {
|
29025 | hours += 12;
|
29026 | }
|
29027 | }
|
29028 |
|
29029 | var value = calendar.value && calendar.value.length && calendar.value[0];
|
29030 |
|
29031 | if (!value) {
|
29032 | value = new Date();
|
29033 | value.setHours(hours, minutes, 0, 0);
|
29034 | } else {
|
29035 | value = new Date(value);
|
29036 | value.setHours(hours, minutes);
|
29037 | }
|
29038 |
|
29039 | calendar.setValue([value]);
|
29040 | calendar.timePickerInstance.close();
|
29041 | calendar.timePickerInstance.destroy();
|
29042 | delete calendar.timePickerInstance;
|
29043 | }
|
29044 |
|
29045 | if (calendar.$el && calendar.$el.length) {
|
29046 | calendar.$el.find('.calendar-time-picker').remove();
|
29047 | }
|
29048 | };
|
29049 |
|
29050 | _proto.onOpen = function onOpen() {
|
29051 | var calendar = this;
|
29052 | var initialized = calendar.initialized,
|
29053 | $el = calendar.$el,
|
29054 | app = calendar.app,
|
29055 | $inputEl = calendar.$inputEl,
|
29056 | inline = calendar.inline,
|
29057 | value = calendar.value,
|
29058 | params = calendar.params;
|
29059 | calendar.closing = false;
|
29060 | calendar.opened = true;
|
29061 | calendar.opening = true;
|
29062 |
|
29063 | calendar.attachCalendarEvents();
|
29064 | var updateValue = !value && params.value;
|
29065 |
|
29066 | if (!initialized) {
|
29067 | if (value) calendar.setValue(value, 0);else if (params.value) {
|
29068 | calendar.setValue(calendar.normalizeValues(params.value), 0);
|
29069 | }
|
29070 | } else if (value) {
|
29071 | calendar.setValue(value, 0);
|
29072 | }
|
29073 |
|
29074 |
|
29075 | calendar.updateCurrentMonthYear();
|
29076 |
|
29077 | calendar.monthsTranslate = 0;
|
29078 | calendar.setMonthsTranslate();
|
29079 |
|
29080 | if (updateValue) calendar.updateValue();else if (params.header && value) {
|
29081 | calendar.updateValue(true);
|
29082 | }
|
29083 |
|
29084 | if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {
|
29085 | $inputEl.trigger('focus');
|
29086 | }
|
29087 |
|
29088 | calendar.initialized = true;
|
29089 | calendar.$months.each(function (monthEl) {
|
29090 | calendar.emit('local::monthAdd calendarMonthAdd', monthEl);
|
29091 | });
|
29092 |
|
29093 | if ($el) {
|
29094 | $el.trigger('calendar:open');
|
29095 | }
|
29096 |
|
29097 | if ($inputEl) {
|
29098 | $inputEl.trigger('calendar:open');
|
29099 | }
|
29100 |
|
29101 | calendar.emit('local::open calendarOpen', calendar);
|
29102 | };
|
29103 |
|
29104 | _proto.onOpened = function onOpened() {
|
29105 | var calendar = this;
|
29106 | calendar.opening = false;
|
29107 |
|
29108 | if (calendar.$el) {
|
29109 | calendar.$el.trigger('calendar:opened');
|
29110 | }
|
29111 |
|
29112 | if (calendar.$inputEl) {
|
29113 | calendar.$inputEl.trigger('calendar:opened');
|
29114 | }
|
29115 |
|
29116 | calendar.emit('local::opened calendarOpened', calendar);
|
29117 | };
|
29118 |
|
29119 | _proto.onClose = function onClose() {
|
29120 | var calendar = this;
|
29121 | var app = calendar.app;
|
29122 | calendar.opening = false;
|
29123 | calendar.closing = true;
|
29124 |
|
29125 | if (calendar.$inputEl) {
|
29126 | if (app.theme === 'md') {
|
29127 | calendar.$inputEl.trigger('blur');
|
29128 | } else {
|
29129 | var validate = calendar.$inputEl.attr('validate');
|
29130 | var required = calendar.$inputEl.attr('required');
|
29131 |
|
29132 | if (validate && required) {
|
29133 | app.input.validate(calendar.$inputEl);
|
29134 | }
|
29135 | }
|
29136 | }
|
29137 |
|
29138 | if (calendar.detachCalendarEvents) {
|
29139 | calendar.detachCalendarEvents();
|
29140 | }
|
29141 |
|
29142 | if (calendar.$el) {
|
29143 | calendar.$el.trigger('calendar:close');
|
29144 | }
|
29145 |
|
29146 | if (calendar.$inputEl) {
|
29147 | calendar.$inputEl.trigger('calendar:close');
|
29148 | }
|
29149 |
|
29150 | calendar.emit('local::close calendarClose', calendar);
|
29151 | };
|
29152 |
|
29153 | _proto.onClosed = function onClosed() {
|
29154 | var calendar = this;
|
29155 | calendar.opened = false;
|
29156 | calendar.closing = false;
|
29157 |
|
29158 | if (!calendar.inline) {
|
29159 | nextTick$1(function () {
|
29160 | if (calendar.modal && calendar.modal.el && calendar.modal.destroy) {
|
29161 | if (!calendar.params.routableModals) {
|
29162 | calendar.modal.destroy();
|
29163 | }
|
29164 | }
|
29165 |
|
29166 | delete calendar.modal;
|
29167 | });
|
29168 | }
|
29169 |
|
29170 | if (calendar.timePickerInstance) {
|
29171 | if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();
|
29172 | delete calendar.timePickerInstance;
|
29173 | }
|
29174 |
|
29175 | if (calendar.$el) {
|
29176 | calendar.$el.trigger('calendar:closed');
|
29177 | }
|
29178 |
|
29179 | if (calendar.$inputEl) {
|
29180 | calendar.$inputEl.trigger('calendar:closed');
|
29181 | }
|
29182 |
|
29183 | calendar.emit('local::closed calendarClosed', calendar);
|
29184 | };
|
29185 |
|
29186 | _proto.open = function open() {
|
29187 | var calendar = this;
|
29188 | var app = calendar.app,
|
29189 | opened = calendar.opened,
|
29190 | inline = calendar.inline,
|
29191 | $inputEl = calendar.$inputEl,
|
29192 | params = calendar.params;
|
29193 | if (opened) return;
|
29194 |
|
29195 | if (inline) {
|
29196 | calendar.$el = $(calendar.render());
|
29197 | calendar.$el[0].f7Calendar = calendar;
|
29198 | calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');
|
29199 | calendar.$months = calendar.$wrapperEl.find('.calendar-month');
|
29200 | calendar.$containerEl.append(calendar.$el);
|
29201 | calendar.onOpen();
|
29202 | calendar.onOpened();
|
29203 | return;
|
29204 | }
|
29205 |
|
29206 | var modalType = params.openIn;
|
29207 |
|
29208 | if (modalType === 'auto') {
|
29209 | modalType = calendar.isPopover() ? 'popover' : 'sheet';
|
29210 | }
|
29211 |
|
29212 | var modalContent = calendar.render();
|
29213 | var modalParams = {
|
29214 | targetEl: $inputEl,
|
29215 | scrollToEl: params.scrollToInput ? $inputEl : undefined,
|
29216 | content: modalContent,
|
29217 | backdrop: params.backdrop === true || modalType === 'popover' && app.params.popover.backdrop !== false && params.backdrop !== false,
|
29218 | closeByBackdropClick: params.closeByBackdropClick,
|
29219 | on: {
|
29220 | open: function open() {
|
29221 | var modal = this;
|
29222 | calendar.modal = modal;
|
29223 | calendar.$el = modalType === 'popover' ? modal.$el.find('.calendar') : modal.$el;
|
29224 | calendar.$wrapperEl = calendar.$el.find('.calendar-months-wrapper');
|
29225 | calendar.$months = calendar.$wrapperEl.find('.calendar-month');
|
29226 | calendar.$el[0].f7Calendar = calendar;
|
29227 |
|
29228 | if (modalType === 'customModal') {
|
29229 | $(calendar.$el).find('.calendar-close').once('click', function () {
|
29230 | calendar.close();
|
29231 | });
|
29232 | }
|
29233 |
|
29234 | calendar.onOpen();
|
29235 | },
|
29236 | opened: function opened() {
|
29237 | calendar.onOpened();
|
29238 | },
|
29239 | close: function close() {
|
29240 | calendar.onClose();
|
29241 | },
|
29242 | closed: function closed() {
|
29243 | calendar.onClosed();
|
29244 | }
|
29245 | }
|
29246 | };
|
29247 |
|
29248 | if (modalType === 'sheet') {
|
29249 | modalParams.push = params.sheetPush;
|
29250 | modalParams.swipeToClose = params.sheetSwipeToClose;
|
29251 | }
|
29252 |
|
29253 | if (params.routableModals && calendar.view) {
|
29254 | var _route;
|
29255 |
|
29256 | calendar.view.router.navigate({
|
29257 | url: calendar.url,
|
29258 | route: (_route = {
|
29259 | path: calendar.url
|
29260 | }, _route[modalType] = modalParams, _route)
|
29261 | });
|
29262 | } else {
|
29263 | calendar.modal = app[modalType].create(modalParams);
|
29264 | calendar.modal.open();
|
29265 | }
|
29266 | };
|
29267 |
|
29268 | _proto.close = function close() {
|
29269 | var calendar = this;
|
29270 | var opened = calendar.opened,
|
29271 | inline = calendar.inline;
|
29272 | if (!opened) return;
|
29273 |
|
29274 | if (inline) {
|
29275 | calendar.onClose();
|
29276 | calendar.onClosed();
|
29277 | return;
|
29278 | }
|
29279 |
|
29280 | if (calendar.params.routableModals && calendar.view) {
|
29281 | calendar.view.router.back();
|
29282 | } else {
|
29283 | calendar.modal.close();
|
29284 | }
|
29285 | };
|
29286 |
|
29287 | _proto.init = function init() {
|
29288 | var calendar = this;
|
29289 | calendar.initInput();
|
29290 |
|
29291 | if (calendar.inline) {
|
29292 | calendar.open();
|
29293 | calendar.emit('local::init calendarInit', calendar);
|
29294 | return;
|
29295 | }
|
29296 |
|
29297 | if (!calendar.initialized && calendar.params.value) {
|
29298 | calendar.setValue(calendar.normalizeValues(calendar.params.value));
|
29299 | }
|
29300 |
|
29301 |
|
29302 | if (calendar.$inputEl) {
|
29303 | calendar.attachInputEvents();
|
29304 | }
|
29305 |
|
29306 | if (calendar.params.closeByOutsideClick) {
|
29307 | calendar.attachHtmlEvents();
|
29308 | }
|
29309 |
|
29310 | calendar.emit('local::init calendarInit', calendar);
|
29311 | };
|
29312 |
|
29313 | _proto.destroy = function destroy() {
|
29314 | var calendar = this;
|
29315 | if (calendar.destroyed) return;
|
29316 | var $el = calendar.$el;
|
29317 | calendar.emit('local::beforeDestroy calendarBeforeDestroy', calendar);
|
29318 | if ($el) $el.trigger('calendar:beforedestroy');
|
29319 | calendar.close();
|
29320 |
|
29321 | if (calendar.$inputEl) {
|
29322 | calendar.detachInputEvents();
|
29323 | }
|
29324 |
|
29325 | if (calendar.params.closeByOutsideClick) {
|
29326 | calendar.detachHtmlEvents();
|
29327 | }
|
29328 |
|
29329 | if (calendar.timePickerInstance) {
|
29330 | if (calendar.timePickerInstance.destroy) calendar.timePickerInstance.destroy();
|
29331 | delete calendar.timePickerInstance;
|
29332 | }
|
29333 |
|
29334 | if ($el && $el.length) delete calendar.$el[0].f7Calendar;
|
29335 | deleteProps$1(calendar);
|
29336 | calendar.destroyed = true;
|
29337 | };
|
29338 |
|
29339 | _createClass$1(Calendar, [{
|
29340 | key: "view",
|
29341 | get: function get() {
|
29342 | var $inputEl = this.$inputEl,
|
29343 | app = this.app,
|
29344 | params = this.params;
|
29345 | var view;
|
29346 |
|
29347 | if (params.view) {
|
29348 | view = params.view;
|
29349 | } else if ($inputEl) {
|
29350 | view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;
|
29351 | }
|
29352 |
|
29353 | if (!view) view = app.views.main;
|
29354 | return view;
|
29355 | }
|
29356 | }]);
|
29357 |
|
29358 | return Calendar;
|
29359 | }(Framework7Class);
|
29360 |
|
29361 | var Calendar = {
|
29362 | name: 'calendar',
|
29363 | static: {
|
29364 | Calendar: Calendar$1
|
29365 | },
|
29366 | create: function create() {
|
29367 | var app = this;
|
29368 | app.calendar = ConstructorMethods({
|
29369 | defaultSelector: '.calendar',
|
29370 | constructor: Calendar$1,
|
29371 | app: app,
|
29372 | domProp: 'f7Calendar'
|
29373 | });
|
29374 |
|
29375 | app.calendar.close = function close(el) {
|
29376 | if (el === void 0) {
|
29377 | el = '.calendar';
|
29378 | }
|
29379 |
|
29380 | var $el = $(el);
|
29381 | if ($el.length === 0) return;
|
29382 | var calendar = $el[0].f7Calendar;
|
29383 | if (!calendar || calendar && !calendar.opened) return;
|
29384 | calendar.close();
|
29385 | };
|
29386 | },
|
29387 | params: {
|
29388 | calendar: {
|
29389 |
|
29390 | dateFormat: undefined,
|
29391 | monthNames: 'auto',
|
29392 | monthNamesShort: 'auto',
|
29393 | dayNames: 'auto',
|
29394 | dayNamesShort: 'auto',
|
29395 | locale: undefined,
|
29396 | firstDay: 1,
|
29397 |
|
29398 | weekendDays: [0, 6],
|
29399 |
|
29400 | multiple: false,
|
29401 | rangePicker: false,
|
29402 | rangePickerMinDays: 1,
|
29403 |
|
29404 | rangePickerMaxDays: 0,
|
29405 |
|
29406 | direction: 'horizontal',
|
29407 |
|
29408 | minDate: null,
|
29409 | maxDate: null,
|
29410 | disabled: null,
|
29411 |
|
29412 | events: null,
|
29413 |
|
29414 | rangesClasses: null,
|
29415 |
|
29416 | touchMove: true,
|
29417 | animate: true,
|
29418 | closeOnSelect: false,
|
29419 | monthSelector: true,
|
29420 | monthPicker: true,
|
29421 | yearSelector: true,
|
29422 | yearPicker: true,
|
29423 | yearPickerMin: undefined,
|
29424 | yearPickerMax: undefined,
|
29425 | timePicker: false,
|
29426 | timePickerFormat: {
|
29427 | hour: 'numeric',
|
29428 | minute: 'numeric'
|
29429 | },
|
29430 | timePickerPlaceholder: 'Select time',
|
29431 | weekHeader: true,
|
29432 | value: null,
|
29433 |
|
29434 | containerEl: null,
|
29435 | openIn: 'auto',
|
29436 |
|
29437 | sheetPush: false,
|
29438 | sheetSwipeToClose: undefined,
|
29439 | formatValue: null,
|
29440 | inputEl: null,
|
29441 | inputReadOnly: true,
|
29442 | closeByOutsideClick: true,
|
29443 | scrollToInput: true,
|
29444 | header: false,
|
29445 | headerPlaceholder: 'Select date',
|
29446 | toolbar: true,
|
29447 | toolbarCloseText: 'Done',
|
29448 | footer: false,
|
29449 | cssClass: null,
|
29450 | routableModals: false,
|
29451 | view: null,
|
29452 | url: 'date/',
|
29453 | backdrop: null,
|
29454 | closeByBackdropClick: true,
|
29455 |
|
29456 | renderWeekHeader: null,
|
29457 | renderMonths: null,
|
29458 | renderMonth: null,
|
29459 | renderMonthSelector: null,
|
29460 | renderYearSelector: null,
|
29461 | renderHeader: null,
|
29462 | renderFooter: null,
|
29463 | renderToolbar: null,
|
29464 | renderInline: null,
|
29465 | renderPopover: null,
|
29466 | renderSheet: null,
|
29467 | render: null
|
29468 | }
|
29469 | }
|
29470 | };
|
29471 |
|
29472 | function pickerColumn(colEl, updateItems) {
|
29473 | var picker = this;
|
29474 | var app = picker.app;
|
29475 | var $colEl = $(colEl);
|
29476 | var colIndex = $colEl.index();
|
29477 | var col = picker.cols[colIndex];
|
29478 | if (col.divider) return;
|
29479 | col.$el = $colEl;
|
29480 | col.el = $colEl[0];
|
29481 | col.$itemsEl = col.$el.find('.picker-items');
|
29482 | col.items = col.$itemsEl.find('.picker-item');
|
29483 | var itemHeight;
|
29484 | var itemsHeight;
|
29485 | var minTranslate;
|
29486 | var maxTranslate;
|
29487 | var animationFrameId;
|
29488 |
|
29489 | function updateDuringScroll() {
|
29490 | animationFrameId = requestAnimationFrame(function () {
|
29491 | col.updateItems(undefined, undefined, 0);
|
29492 | updateDuringScroll();
|
29493 | });
|
29494 | }
|
29495 |
|
29496 | col.replaceValues = function replaceColValues(values, displayValues) {
|
29497 | col.detachEvents();
|
29498 | col.values = values;
|
29499 | col.displayValues = displayValues;
|
29500 | col.$itemsEl.html(picker.renderColumn(col, true));
|
29501 | col.items = col.$itemsEl.find('.picker-item');
|
29502 | col.calcSize();
|
29503 | col.setValue(col.values[0], 0, true);
|
29504 | col.attachEvents();
|
29505 | };
|
29506 |
|
29507 | col.calcSize = function calcColSize() {
|
29508 | if (picker.params.rotateEffect) {
|
29509 | col.$el.removeClass('picker-column-absolute');
|
29510 | if (!col.width) col.$el.css({
|
29511 | width: ''
|
29512 | });
|
29513 | }
|
29514 |
|
29515 | var colWidth = 0;
|
29516 | var colHeight = col.$el[0].offsetHeight;
|
29517 | itemHeight = col.items[0].offsetHeight;
|
29518 | itemsHeight = itemHeight * col.items.length;
|
29519 | minTranslate = colHeight / 2 - itemsHeight + itemHeight / 2;
|
29520 | maxTranslate = colHeight / 2 - itemHeight / 2;
|
29521 |
|
29522 | if (col.width) {
|
29523 | colWidth = col.width;
|
29524 | if (parseInt(colWidth, 10) === colWidth) colWidth += 'px';
|
29525 | col.$el.css({
|
29526 | width: colWidth
|
29527 | });
|
29528 | }
|
29529 |
|
29530 | if (picker.params.rotateEffect) {
|
29531 | if (!col.width) {
|
29532 | col.items.each(function (itemEl) {
|
29533 | var item = $(itemEl).children('span');
|
29534 | colWidth = Math.max(colWidth, item[0].offsetWidth);
|
29535 | });
|
29536 | col.$el.css({
|
29537 | width: colWidth + 2 + "px"
|
29538 | });
|
29539 | }
|
29540 |
|
29541 | col.$el.addClass('picker-column-absolute');
|
29542 | }
|
29543 | };
|
29544 |
|
29545 | col.setValue = function setColValue(newValue, transition, valueCallbacks) {
|
29546 | if (transition === void 0) {
|
29547 | transition = '';
|
29548 | }
|
29549 |
|
29550 | var newActiveIndex = col.$itemsEl.find(".picker-item[data-picker-value=\"" + newValue + "\"]").index();
|
29551 |
|
29552 | if (typeof newActiveIndex === 'undefined' || newActiveIndex === -1) {
|
29553 | return;
|
29554 | }
|
29555 |
|
29556 | var newTranslate = -newActiveIndex * itemHeight + maxTranslate;
|
29557 |
|
29558 | col.$itemsEl.transition(transition);
|
29559 | col.$itemsEl.transform("translate3d(0," + newTranslate + "px,0)");
|
29560 |
|
29561 | if (picker.params.updateValuesOnMomentum && col.activeIndex && col.activeIndex !== newActiveIndex) {
|
29562 | cancelAnimationFrame(animationFrameId);
|
29563 | col.$itemsEl.transitionEnd(function () {
|
29564 | cancelAnimationFrame(animationFrameId);
|
29565 | });
|
29566 | updateDuringScroll();
|
29567 | }
|
29568 |
|
29569 |
|
29570 | col.updateItems(newActiveIndex, newTranslate, transition, valueCallbacks);
|
29571 | };
|
29572 |
|
29573 | col.updateItems = function updateColItems(activeIndex, translate, transition, valueCallbacks) {
|
29574 | if (typeof translate === 'undefined') {
|
29575 |
|
29576 | translate = getTranslate$1(col.$itemsEl[0], 'y');
|
29577 | }
|
29578 |
|
29579 | if (typeof activeIndex === 'undefined')
|
29580 | activeIndex = -Math.round((translate - maxTranslate) / itemHeight);
|
29581 |
|
29582 | if (activeIndex < 0) activeIndex = 0;
|
29583 |
|
29584 | if (activeIndex >= col.items.length) activeIndex = col.items.length - 1;
|
29585 | var previousActiveIndex = col.activeIndex;
|
29586 | col.activeIndex = activeIndex;
|
29587 | col.$itemsEl.find('.picker-item-selected').removeClass('picker-item-selected');
|
29588 | col.items.transition(transition);
|
29589 | var selectedItem = col.items.eq(activeIndex).addClass('picker-item-selected').transform('');
|
29590 |
|
29591 | if (picker.params.rotateEffect) {
|
29592 | col.items.each(function (itemEl) {
|
29593 | var $itemEl = $(itemEl);
|
29594 | var itemOffsetTop = $itemEl.index() * itemHeight;
|
29595 | var translateOffset = maxTranslate - translate;
|
29596 | var itemOffset = itemOffsetTop - translateOffset;
|
29597 | var percentage = itemOffset / itemHeight;
|
29598 | var itemsFit = Math.ceil(col.height / itemHeight / 2) + 1;
|
29599 | var angle = -18 * percentage;
|
29600 | if (angle > 180) angle = 180;
|
29601 | if (angle < -180) angle = -180;
|
29602 |
|
29603 | if (Math.abs(percentage) > itemsFit) {
|
29604 | $itemEl.addClass('picker-item-far');
|
29605 | } else {
|
29606 | $itemEl.removeClass('picker-item-far');
|
29607 | }
|
29608 |
|
29609 | $itemEl.transform("translate3d(0, " + (-translate + maxTranslate) + "px, " + (picker.needsOriginFix ? -110 : 0) + "px) rotateX(" + angle + "deg)");
|
29610 | });
|
29611 | }
|
29612 |
|
29613 | if (valueCallbacks || typeof valueCallbacks === 'undefined') {
|
29614 |
|
29615 | col.value = selectedItem.attr('data-picker-value');
|
29616 | col.displayValue = col.displayValues ? col.displayValues[activeIndex] : col.value;
|
29617 |
|
29618 | if (previousActiveIndex !== activeIndex) {
|
29619 | if (col.onChange) {
|
29620 | col.onChange(picker, col.value, col.displayValue);
|
29621 | }
|
29622 |
|
29623 | picker.updateValue();
|
29624 | }
|
29625 | }
|
29626 | };
|
29627 |
|
29628 | var allowItemClick = true;
|
29629 | var isTouched;
|
29630 | var isMoved;
|
29631 | var touchStartY;
|
29632 | var touchCurrentY;
|
29633 | var touchStartTime;
|
29634 | var touchEndTime;
|
29635 | var startTranslate;
|
29636 | var returnTo;
|
29637 | var currentTranslate;
|
29638 | var prevTranslate;
|
29639 | var velocityTranslate;
|
29640 |
|
29641 | function handleTouchStart(e) {
|
29642 | if (isMoved || isTouched) return;
|
29643 | e.preventDefault();
|
29644 | isTouched = true;
|
29645 | touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
29646 | touchCurrentY = touchStartY;
|
29647 | touchStartTime = new Date().getTime();
|
29648 | allowItemClick = true;
|
29649 | startTranslate = getTranslate$1(col.$itemsEl[0], 'y');
|
29650 | currentTranslate = startTranslate;
|
29651 | }
|
29652 |
|
29653 | function handleTouchMove(e) {
|
29654 | if (!isTouched) return;
|
29655 | e.preventDefault();
|
29656 | allowItemClick = false;
|
29657 | touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
29658 |
|
29659 | if (!isMoved) {
|
29660 |
|
29661 | cancelAnimationFrame(animationFrameId);
|
29662 | isMoved = true;
|
29663 | startTranslate = getTranslate$1(col.$itemsEl[0], 'y');
|
29664 | currentTranslate = startTranslate;
|
29665 | col.$itemsEl.transition(0);
|
29666 | }
|
29667 |
|
29668 | var diff = touchCurrentY - touchStartY;
|
29669 | currentTranslate = startTranslate + diff;
|
29670 | returnTo = undefined;
|
29671 |
|
29672 | if (currentTranslate < minTranslate) {
|
29673 | currentTranslate = minTranslate - Math.pow(minTranslate - currentTranslate, 0.8);
|
29674 | returnTo = 'min';
|
29675 | }
|
29676 |
|
29677 | if (currentTranslate > maxTranslate) {
|
29678 | currentTranslate = maxTranslate + Math.pow(currentTranslate - maxTranslate, 0.8);
|
29679 | returnTo = 'max';
|
29680 | }
|
29681 |
|
29682 |
|
29683 | col.$itemsEl.transform("translate3d(0," + currentTranslate + "px,0)");
|
29684 |
|
29685 | col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnTouchmove);
|
29686 |
|
29687 | velocityTranslate = currentTranslate - prevTranslate || currentTranslate;
|
29688 | prevTranslate = currentTranslate;
|
29689 | }
|
29690 |
|
29691 | function handleTouchEnd() {
|
29692 | if (!isTouched || !isMoved) {
|
29693 | isTouched = false;
|
29694 | isMoved = false;
|
29695 | return;
|
29696 | }
|
29697 |
|
29698 | isTouched = false;
|
29699 | isMoved = false;
|
29700 | col.$itemsEl.transition('');
|
29701 |
|
29702 | if (returnTo) {
|
29703 | if (returnTo === 'min') {
|
29704 | col.$itemsEl.transform("translate3d(0," + minTranslate + "px,0)");
|
29705 | } else {
|
29706 | col.$itemsEl.transform("translate3d(0," + maxTranslate + "px,0)");
|
29707 | }
|
29708 | }
|
29709 |
|
29710 | touchEndTime = new Date().getTime();
|
29711 | var newTranslate;
|
29712 |
|
29713 | if (touchEndTime - touchStartTime > 300) {
|
29714 | newTranslate = currentTranslate;
|
29715 | } else {
|
29716 | newTranslate = currentTranslate + velocityTranslate * picker.params.momentumRatio;
|
29717 | }
|
29718 |
|
29719 | newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);
|
29720 |
|
29721 | var activeIndex = Math.round(Math.abs((newTranslate - maxTranslate) / itemHeight));
|
29722 |
|
29723 | if (!picker.params.freeMode) newTranslate = -activeIndex * itemHeight + maxTranslate;
|
29724 |
|
29725 | col.$itemsEl.transform("translate3d(0," + parseInt(newTranslate, 10) + "px,0)");
|
29726 |
|
29727 | col.updateItems(activeIndex, newTranslate, '', true);
|
29728 |
|
29729 | if (picker.params.updateValuesOnMomentum) {
|
29730 | updateDuringScroll();
|
29731 | col.$itemsEl.transitionEnd(function () {
|
29732 | cancelAnimationFrame(animationFrameId);
|
29733 | });
|
29734 | }
|
29735 |
|
29736 |
|
29737 | setTimeout(function () {
|
29738 | allowItemClick = true;
|
29739 | }, 100);
|
29740 | }
|
29741 |
|
29742 | var mousewheelTimeout;
|
29743 |
|
29744 | function handleMouseWheel(e) {
|
29745 | var deltaX = e.deltaX,
|
29746 | deltaY = e.deltaY;
|
29747 | if (Math.abs(deltaX) > Math.abs(deltaY)) return;
|
29748 | clearTimeout(mousewheelTimeout);
|
29749 | e.preventDefault();
|
29750 | cancelAnimationFrame(animationFrameId);
|
29751 | startTranslate = getTranslate$1(col.$itemsEl[0], 'y');
|
29752 | col.$itemsEl.transition(0);
|
29753 | currentTranslate = startTranslate - deltaY;
|
29754 | returnTo = undefined;
|
29755 |
|
29756 | if (currentTranslate < minTranslate) {
|
29757 | currentTranslate = minTranslate;
|
29758 | returnTo = 'min';
|
29759 | }
|
29760 |
|
29761 | if (currentTranslate > maxTranslate) {
|
29762 | currentTranslate = maxTranslate;
|
29763 | returnTo = 'max';
|
29764 | }
|
29765 |
|
29766 |
|
29767 | col.$itemsEl.transform("translate3d(0," + currentTranslate + "px,0)");
|
29768 |
|
29769 | col.updateItems(undefined, currentTranslate, 0, picker.params.updateValuesOnMousewheel);
|
29770 |
|
29771 | mousewheelTimeout = setTimeout(function () {
|
29772 | col.$itemsEl.transition('');
|
29773 |
|
29774 | if (returnTo) {
|
29775 | if (returnTo === 'min') {
|
29776 | col.$itemsEl.transform("translate3d(0," + minTranslate + "px,0)");
|
29777 | } else {
|
29778 | col.$itemsEl.transform("translate3d(0," + maxTranslate + "px,0)");
|
29779 | }
|
29780 | }
|
29781 |
|
29782 | touchEndTime = new Date().getTime();
|
29783 | var newTranslate = currentTranslate;
|
29784 | newTranslate = Math.max(Math.min(newTranslate, maxTranslate), minTranslate);
|
29785 |
|
29786 | var activeIndex = Math.round(Math.abs((newTranslate - maxTranslate) / itemHeight));
|
29787 |
|
29788 | if (!picker.params.freeMode) newTranslate = -activeIndex * itemHeight + maxTranslate;
|
29789 |
|
29790 | col.$itemsEl.transform("translate3d(0," + parseInt(newTranslate, 10) + "px,0)");
|
29791 |
|
29792 | col.updateItems(activeIndex, newTranslate, '', true);
|
29793 | }, 200);
|
29794 | }
|
29795 |
|
29796 | function handleClick() {
|
29797 | if (!allowItemClick) return;
|
29798 | cancelAnimationFrame(animationFrameId);
|
29799 | var value = $(this).attr('data-picker-value');
|
29800 | col.setValue(value);
|
29801 | }
|
29802 |
|
29803 | var activeListener = getSupport$1().passiveListener ? {
|
29804 | passive: false,
|
29805 | capture: false
|
29806 | } : false;
|
29807 |
|
29808 | col.attachEvents = function attachColEvents() {
|
29809 | col.$el.on(app.touchEvents.start, handleTouchStart, activeListener);
|
29810 | app.on('touchmove:active', handleTouchMove);
|
29811 | app.on('touchend:passive', handleTouchEnd);
|
29812 |
|
29813 | if (picker.params.mousewheel) {
|
29814 | col.$el.on('wheel', handleMouseWheel);
|
29815 | }
|
29816 |
|
29817 | col.items.on('click', handleClick);
|
29818 | };
|
29819 |
|
29820 | col.detachEvents = function detachColEvents() {
|
29821 | col.$el.off(app.touchEvents.start, handleTouchStart, activeListener);
|
29822 | app.off('touchmove:active', handleTouchMove);
|
29823 | app.off('touchend:passive', handleTouchEnd);
|
29824 |
|
29825 | if (picker.params.mousewheel) {
|
29826 | col.$el.off('wheel', handleMouseWheel);
|
29827 | }
|
29828 |
|
29829 | col.items.off('click', handleClick);
|
29830 | };
|
29831 |
|
29832 | col.init = function initCol() {
|
29833 | col.calcSize();
|
29834 | col.$itemsEl.transform("translate3d(0," + maxTranslate + "px,0)").transition(0);
|
29835 | if (colIndex === 0) col.$el.addClass('picker-column-first');
|
29836 | if (colIndex === picker.cols.length - 1) col.$el.addClass('picker-column-last');
|
29837 |
|
29838 | if (updateItems) col.updateItems(0, maxTranslate, 0);
|
29839 | col.attachEvents();
|
29840 | };
|
29841 |
|
29842 | col.destroy = function destroyCol() {
|
29843 | col.detachEvents();
|
29844 | };
|
29845 |
|
29846 | col.init();
|
29847 | }
|
29848 |
|
29849 | var Picker$1 = function (_Framework7Class) {
|
29850 | _inheritsLoose(Picker, _Framework7Class);
|
29851 |
|
29852 | function Picker(app, params) {
|
29853 | var _this;
|
29854 |
|
29855 | if (params === void 0) {
|
29856 | params = {};
|
29857 | }
|
29858 |
|
29859 | _this = _Framework7Class.call(this, params, [app]) || this;
|
29860 |
|
29861 | var picker = _assertThisInitialized(_this);
|
29862 |
|
29863 | var device = getDevice$1();
|
29864 | var window = getWindow();
|
29865 | picker.params = extend$1({}, app.params.picker, params);
|
29866 | var $containerEl;
|
29867 |
|
29868 | if (picker.params.containerEl) {
|
29869 | $containerEl = $(picker.params.containerEl);
|
29870 | if ($containerEl.length === 0) return picker || _assertThisInitialized(_this);
|
29871 | }
|
29872 |
|
29873 | var $inputEl;
|
29874 |
|
29875 | if (picker.params.inputEl) {
|
29876 | $inputEl = $(picker.params.inputEl);
|
29877 | }
|
29878 |
|
29879 | var $scrollToEl = picker.params.scrollToInput ? $inputEl : undefined;
|
29880 |
|
29881 | if (picker.params.scrollToEl) {
|
29882 | var scrollToEl = $(picker.params.scrollToEl);
|
29883 |
|
29884 | if (scrollToEl.length > 0) {
|
29885 | $scrollToEl = scrollToEl;
|
29886 | }
|
29887 | }
|
29888 |
|
29889 | extend$1(picker, {
|
29890 | app: app,
|
29891 | $containerEl: $containerEl,
|
29892 | containerEl: $containerEl && $containerEl[0],
|
29893 | inline: $containerEl && $containerEl.length > 0,
|
29894 | needsOriginFix: device.ios || window.navigator.userAgent.toLowerCase().indexOf('safari') >= 0 && window.navigator.userAgent.toLowerCase().indexOf('chrome') < 0 && !device.android,
|
29895 | cols: [],
|
29896 | $inputEl: $inputEl,
|
29897 | inputEl: $inputEl && $inputEl[0],
|
29898 | $scrollToEl: $scrollToEl,
|
29899 | initialized: false,
|
29900 | opened: false,
|
29901 | url: picker.params.url
|
29902 | });
|
29903 |
|
29904 | function onResize() {
|
29905 | picker.resizeCols();
|
29906 | }
|
29907 |
|
29908 | function onInputClick() {
|
29909 | picker.open();
|
29910 | }
|
29911 |
|
29912 | function onInputFocus(e) {
|
29913 | e.preventDefault();
|
29914 | }
|
29915 |
|
29916 | function onHtmlClick(e) {
|
29917 | if (picker.destroyed || !picker.params) return;
|
29918 | var $targetEl = $(e.target);
|
29919 | if (picker.isPopover()) return;
|
29920 | if (!picker.opened || picker.closing) return;
|
29921 | if ($targetEl.closest('[class*="backdrop"]').length) return;
|
29922 |
|
29923 | if ($inputEl && $inputEl.length > 0) {
|
29924 | if ($targetEl[0] !== $inputEl[0] && $targetEl.closest('.sheet-modal').length === 0) {
|
29925 | picker.close();
|
29926 | }
|
29927 | } else if ($(e.target).closest('.sheet-modal').length === 0) {
|
29928 | picker.close();
|
29929 | }
|
29930 | }
|
29931 |
|
29932 |
|
29933 | extend$1(picker, {
|
29934 | attachResizeEvent: function attachResizeEvent() {
|
29935 | app.on('resize', onResize);
|
29936 | },
|
29937 | detachResizeEvent: function detachResizeEvent() {
|
29938 | app.off('resize', onResize);
|
29939 | },
|
29940 | attachInputEvents: function attachInputEvents() {
|
29941 | picker.$inputEl.on('click', onInputClick);
|
29942 |
|
29943 | if (picker.params.inputReadOnly) {
|
29944 | picker.$inputEl.on('focus mousedown', onInputFocus);
|
29945 |
|
29946 | if (picker.$inputEl[0]) {
|
29947 | picker.$inputEl[0].f7ValidateReadonly = true;
|
29948 | }
|
29949 | }
|
29950 | },
|
29951 | detachInputEvents: function detachInputEvents() {
|
29952 | picker.$inputEl.off('click', onInputClick);
|
29953 |
|
29954 | if (picker.params.inputReadOnly) {
|
29955 | picker.$inputEl.off('focus mousedown', onInputFocus);
|
29956 |
|
29957 | if (picker.$inputEl[0]) {
|
29958 | delete picker.$inputEl[0].f7ValidateReadonly;
|
29959 | }
|
29960 | }
|
29961 | },
|
29962 | attachHtmlEvents: function attachHtmlEvents() {
|
29963 | app.on('click', onHtmlClick);
|
29964 | },
|
29965 | detachHtmlEvents: function detachHtmlEvents() {
|
29966 | app.off('click', onHtmlClick);
|
29967 | }
|
29968 | });
|
29969 | picker.init();
|
29970 | return picker || _assertThisInitialized(_this);
|
29971 | }
|
29972 |
|
29973 | var _proto = Picker.prototype;
|
29974 |
|
29975 | _proto.initInput = function initInput() {
|
29976 | var picker = this;
|
29977 | if (!picker.$inputEl) return;
|
29978 | if (picker.params.inputReadOnly) picker.$inputEl.prop('readOnly', true);
|
29979 | };
|
29980 |
|
29981 | _proto.resizeCols = function resizeCols() {
|
29982 | var picker = this;
|
29983 | if (!picker.opened) return;
|
29984 |
|
29985 | for (var i = 0; i < picker.cols.length; i += 1) {
|
29986 | if (!picker.cols[i].divider) {
|
29987 | picker.cols[i].calcSize();
|
29988 | picker.cols[i].setValue(picker.cols[i].value, 0, false);
|
29989 | }
|
29990 | }
|
29991 | };
|
29992 |
|
29993 | _proto.isPopover = function isPopover() {
|
29994 | var picker = this;
|
29995 | var app = picker.app,
|
29996 | modal = picker.modal,
|
29997 | params = picker.params;
|
29998 | var device = getDevice$1();
|
29999 | if (params.openIn === 'sheet') return false;
|
30000 | if (modal && modal.type !== 'popover') return false;
|
30001 |
|
30002 | if (!picker.inline && picker.inputEl) {
|
30003 | if (params.openIn === 'popover') return true;
|
30004 |
|
30005 | if (device.ios) {
|
30006 | return !!device.ipad;
|
30007 | }
|
30008 |
|
30009 | if (app.width >= 768) {
|
30010 | return true;
|
30011 | }
|
30012 |
|
30013 | if (device.desktop && app.theme === 'aurora') {
|
30014 | return true;
|
30015 | }
|
30016 | }
|
30017 |
|
30018 | return false;
|
30019 | };
|
30020 |
|
30021 | _proto.formatValue = function formatValue() {
|
30022 | var picker = this;
|
30023 | var value = picker.value,
|
30024 | displayValue = picker.displayValue;
|
30025 |
|
30026 | if (picker.params.formatValue) {
|
30027 | return picker.params.formatValue.call(picker, value, displayValue);
|
30028 | }
|
30029 |
|
30030 | return value.join(' ');
|
30031 | };
|
30032 |
|
30033 | _proto.setValue = function setValue(values, transition) {
|
30034 | var picker = this;
|
30035 | var valueIndex = 0;
|
30036 |
|
30037 | if (picker.cols.length === 0) {
|
30038 | picker.value = values;
|
30039 | picker.updateValue(values);
|
30040 | return;
|
30041 | }
|
30042 |
|
30043 | for (var i = 0; i < picker.cols.length; i += 1) {
|
30044 | if (picker.cols[i] && !picker.cols[i].divider) {
|
30045 | picker.cols[i].setValue(values[valueIndex], transition);
|
30046 | valueIndex += 1;
|
30047 | }
|
30048 | }
|
30049 | };
|
30050 |
|
30051 | _proto.getValue = function getValue() {
|
30052 | var picker = this;
|
30053 | return picker.value;
|
30054 | };
|
30055 |
|
30056 | _proto.updateValue = function updateValue(forceValues) {
|
30057 | var picker = this;
|
30058 | var newValue = forceValues || [];
|
30059 | var newDisplayValue = [];
|
30060 | var column;
|
30061 |
|
30062 | if (picker.cols.length === 0) {
|
30063 | var noDividerColumns = picker.params.cols.filter(function (c) {
|
30064 | return !c.divider;
|
30065 | });
|
30066 |
|
30067 | for (var i = 0; i < noDividerColumns.length; i += 1) {
|
30068 | column = noDividerColumns[i];
|
30069 |
|
30070 | if (column.displayValues !== undefined && column.values !== undefined && column.values.indexOf(newValue[i]) !== -1) {
|
30071 | newDisplayValue.push(column.displayValues[column.values.indexOf(newValue[i])]);
|
30072 | } else {
|
30073 | newDisplayValue.push(newValue[i]);
|
30074 | }
|
30075 | }
|
30076 | } else {
|
30077 | for (var _i = 0; _i < picker.cols.length; _i += 1) {
|
30078 | if (!picker.cols[_i].divider) {
|
30079 | newValue.push(picker.cols[_i].value);
|
30080 | newDisplayValue.push(picker.cols[_i].displayValue);
|
30081 | }
|
30082 | }
|
30083 | }
|
30084 |
|
30085 | if (newValue.indexOf(undefined) >= 0) {
|
30086 | return;
|
30087 | }
|
30088 |
|
30089 | picker.value = newValue;
|
30090 | picker.displayValue = newDisplayValue;
|
30091 | picker.emit('local::change pickerChange', picker, picker.value, picker.displayValue);
|
30092 |
|
30093 | if (picker.inputEl) {
|
30094 | picker.$inputEl.val(picker.formatValue());
|
30095 | picker.$inputEl.trigger('change');
|
30096 | }
|
30097 | };
|
30098 |
|
30099 | _proto.initColumn = function initColumn(colEl, updateItems) {
|
30100 | var picker = this;
|
30101 | pickerColumn.call(picker, colEl, updateItems);
|
30102 | }
|
30103 | ;
|
30104 |
|
30105 | _proto.destroyColumn = function destroyColumn(colEl) {
|
30106 | var picker = this;
|
30107 | var $colEl = $(colEl);
|
30108 | var index = $colEl.index();
|
30109 |
|
30110 | if (picker.cols[index] && picker.cols[index].destroy) {
|
30111 | picker.cols[index].destroy();
|
30112 | }
|
30113 | };
|
30114 |
|
30115 | _proto.renderToolbar = function renderToolbar() {
|
30116 | var picker = this;
|
30117 | if (picker.params.renderToolbar) return picker.params.renderToolbar.call(picker, picker);
|
30118 | return $jsx("div", {
|
30119 | class: "toolbar toolbar-top no-shadow"
|
30120 | }, $jsx("div", {
|
30121 | class: "toolbar-inner"
|
30122 | }, $jsx("div", {
|
30123 | class: "left"
|
30124 | }), $jsx("div", {
|
30125 | class: "right"
|
30126 | }, $jsx("a", {
|
30127 | class: "link sheet-close popover-close"
|
30128 | }, picker.params.toolbarCloseText))));
|
30129 | }
|
30130 | ;
|
30131 |
|
30132 | _proto.renderColumn = function renderColumn(col, onlyItems) {
|
30133 | var colClasses = "picker-column " + (col.textAlign ? "picker-column-" + col.textAlign : '') + " " + (col.cssClass || '');
|
30134 | var columnHtml;
|
30135 | var columnItemsHtml;
|
30136 |
|
30137 | if (col.divider) {
|
30138 |
|
30139 | columnHtml = "\n <div class=\"" + colClasses + " picker-column-divider\">" + col.content + "</div>\n ";
|
30140 | } else {
|
30141 |
|
30142 | columnItemsHtml = col.values.map(function (value, index) {
|
30143 | return "\n <div class=\"picker-item\" data-picker-value=\"" + value + "\">\n <span>" + (col.displayValues ? col.displayValues[index] : value) + "</span>\n </div>\n ";
|
30144 | }).join('');
|
30145 |
|
30146 | columnHtml = "\n <div class=\"" + colClasses + "\">\n <div class=\"picker-items\">" + columnItemsHtml + "</div>\n </div>\n ";
|
30147 | }
|
30148 |
|
30149 | return onlyItems ? columnItemsHtml.trim() : columnHtml.trim();
|
30150 | };
|
30151 |
|
30152 | _proto.renderInline = function renderInline() {
|
30153 | var picker = this;
|
30154 | var _picker$params = picker.params,
|
30155 | rotateEffect = _picker$params.rotateEffect,
|
30156 | cssClass = _picker$params.cssClass,
|
30157 | toolbar = _picker$params.toolbar;
|
30158 | var inlineHtml = $jsx("div", {
|
30159 | class: "picker picker-inline " + (rotateEffect ? 'picker-3d' : '') + " " + (cssClass || '')
|
30160 | }, toolbar && picker.renderToolbar(), $jsx("div", {
|
30161 | class: "picker-columns"
|
30162 | }, picker.cols.map(function (col) {
|
30163 | return picker.renderColumn(col);
|
30164 | }), $jsx("div", {
|
30165 | class: "picker-center-highlight"
|
30166 | })));
|
30167 | return inlineHtml;
|
30168 | };
|
30169 |
|
30170 | _proto.renderSheet = function renderSheet() {
|
30171 | var picker = this;
|
30172 | var _picker$params2 = picker.params,
|
30173 | rotateEffect = _picker$params2.rotateEffect,
|
30174 | cssClass = _picker$params2.cssClass,
|
30175 | toolbar = _picker$params2.toolbar;
|
30176 | var sheetHtml = $jsx("div", {
|
30177 | class: "sheet-modal picker picker-sheet " + (rotateEffect ? 'picker-3d' : '') + " " + (cssClass || '')
|
30178 | }, toolbar && picker.renderToolbar(), $jsx("div", {
|
30179 | class: "sheet-modal-inner picker-columns"
|
30180 | }, picker.cols.map(function (col) {
|
30181 | return picker.renderColumn(col);
|
30182 | }), $jsx("div", {
|
30183 | class: "picker-center-highlight"
|
30184 | })));
|
30185 | return sheetHtml;
|
30186 | };
|
30187 |
|
30188 | _proto.renderPopover = function renderPopover() {
|
30189 | var picker = this;
|
30190 | var _picker$params3 = picker.params,
|
30191 | rotateEffect = _picker$params3.rotateEffect,
|
30192 | cssClass = _picker$params3.cssClass,
|
30193 | toolbar = _picker$params3.toolbar;
|
30194 | var popoverHtml = $jsx("div", {
|
30195 | class: "popover picker-popover"
|
30196 | }, $jsx("div", {
|
30197 | class: "popover-inner"
|
30198 | }, $jsx("div", {
|
30199 | class: "picker " + (rotateEffect ? 'picker-3d' : '') + " " + (cssClass || '')
|
30200 | }, toolbar && picker.renderToolbar(), $jsx("div", {
|
30201 | class: "picker-columns"
|
30202 | }, picker.cols.map(function (col) {
|
30203 | return picker.renderColumn(col);
|
30204 | }), $jsx("div", {
|
30205 | class: "picker-center-highlight"
|
30206 | })))));
|
30207 | return popoverHtml;
|
30208 | };
|
30209 |
|
30210 | _proto.render = function render() {
|
30211 | var picker = this;
|
30212 | if (picker.params.render) return picker.params.render.call(picker);
|
30213 |
|
30214 | if (!picker.inline) {
|
30215 | if (picker.isPopover()) return picker.renderPopover();
|
30216 | return picker.renderSheet();
|
30217 | }
|
30218 |
|
30219 | return picker.renderInline();
|
30220 | };
|
30221 |
|
30222 | _proto.onOpen = function onOpen() {
|
30223 | var picker = this;
|
30224 | var initialized = picker.initialized,
|
30225 | $el = picker.$el,
|
30226 | app = picker.app,
|
30227 | $inputEl = picker.$inputEl,
|
30228 | inline = picker.inline,
|
30229 | value = picker.value,
|
30230 | params = picker.params;
|
30231 | picker.opened = true;
|
30232 | picker.closing = false;
|
30233 | picker.opening = true;
|
30234 |
|
30235 | picker.attachResizeEvent();
|
30236 |
|
30237 | $el.find('.picker-column').each(function (colEl) {
|
30238 | var updateItems = true;
|
30239 |
|
30240 | if (!initialized && params.value || initialized && value) {
|
30241 | updateItems = false;
|
30242 | }
|
30243 |
|
30244 | picker.initColumn(colEl, updateItems);
|
30245 | });
|
30246 |
|
30247 | if (!initialized) {
|
30248 | if (value) picker.setValue(value, 0);else if (params.value) {
|
30249 | picker.setValue(params.value, 0);
|
30250 | }
|
30251 | } else if (value) {
|
30252 | picker.setValue(value, 0);
|
30253 | }
|
30254 |
|
30255 |
|
30256 | if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {
|
30257 | $inputEl.trigger('focus');
|
30258 | }
|
30259 |
|
30260 | picker.initialized = true;
|
30261 |
|
30262 | if ($el) {
|
30263 | $el.trigger('picker:open');
|
30264 | }
|
30265 |
|
30266 | if ($inputEl) {
|
30267 | $inputEl.trigger('picker:open');
|
30268 | }
|
30269 |
|
30270 | picker.emit('local::open pickerOpen', picker);
|
30271 | };
|
30272 |
|
30273 | _proto.onOpened = function onOpened() {
|
30274 | var picker = this;
|
30275 | picker.opening = false;
|
30276 |
|
30277 | if (picker.$el) {
|
30278 | picker.$el.trigger('picker:opened');
|
30279 | }
|
30280 |
|
30281 | if (picker.$inputEl) {
|
30282 | picker.$inputEl.trigger('picker:opened');
|
30283 | }
|
30284 |
|
30285 | picker.emit('local::opened pickerOpened', picker);
|
30286 | };
|
30287 |
|
30288 | _proto.onClose = function onClose() {
|
30289 | var picker = this;
|
30290 | var app = picker.app;
|
30291 | picker.opening = false;
|
30292 | picker.closing = true;
|
30293 |
|
30294 | picker.detachResizeEvent();
|
30295 | picker.cols.forEach(function (col) {
|
30296 | if (col.destroy) col.destroy();
|
30297 | });
|
30298 |
|
30299 | if (picker.$inputEl) {
|
30300 | if (app.theme === 'md') {
|
30301 | picker.$inputEl.trigger('blur');
|
30302 | } else {
|
30303 | var validate = picker.$inputEl.attr('validate');
|
30304 | var required = picker.$inputEl.attr('required');
|
30305 |
|
30306 | if (validate && required) {
|
30307 | app.input.validate(picker.$inputEl);
|
30308 | }
|
30309 | }
|
30310 | }
|
30311 |
|
30312 | if (picker.$el) {
|
30313 | picker.$el.trigger('picker:close');
|
30314 | }
|
30315 |
|
30316 | if (picker.$inputEl) {
|
30317 | picker.$inputEl.trigger('picker:close');
|
30318 | }
|
30319 |
|
30320 | picker.emit('local::close pickerClose', picker);
|
30321 | };
|
30322 |
|
30323 | _proto.onClosed = function onClosed() {
|
30324 | var picker = this;
|
30325 | picker.opened = false;
|
30326 | picker.closing = false;
|
30327 |
|
30328 | if (!picker.inline) {
|
30329 | nextTick$1(function () {
|
30330 | if (picker.modal && picker.modal.el && picker.modal.destroy) {
|
30331 | if (!picker.params.routableModals) {
|
30332 | picker.modal.destroy();
|
30333 | }
|
30334 | }
|
30335 |
|
30336 | delete picker.modal;
|
30337 | });
|
30338 | }
|
30339 |
|
30340 | if (picker.$el) {
|
30341 | picker.$el.trigger('picker:closed');
|
30342 | }
|
30343 |
|
30344 | if (picker.$inputEl) {
|
30345 | picker.$inputEl.trigger('picker:closed');
|
30346 | }
|
30347 |
|
30348 | picker.emit('local::closed pickerClosed', picker);
|
30349 | };
|
30350 |
|
30351 | _proto.open = function open() {
|
30352 | var picker = this;
|
30353 | var app = picker.app,
|
30354 | opened = picker.opened,
|
30355 | inline = picker.inline,
|
30356 | $inputEl = picker.$inputEl,
|
30357 | $scrollToEl = picker.$scrollToEl,
|
30358 | params = picker.params;
|
30359 | if (opened) return;
|
30360 |
|
30361 | if (picker.cols.length === 0 && params.cols.length) {
|
30362 | params.cols.forEach(function (col) {
|
30363 | picker.cols.push(col);
|
30364 | });
|
30365 | }
|
30366 |
|
30367 | if (inline) {
|
30368 | picker.$el = $(picker.render());
|
30369 | picker.$el[0].f7Picker = picker;
|
30370 | picker.$containerEl.append(picker.$el);
|
30371 | picker.onOpen();
|
30372 | picker.onOpened();
|
30373 | return;
|
30374 | }
|
30375 |
|
30376 | var isPopover = picker.isPopover();
|
30377 | var modalType = isPopover ? 'popover' : 'sheet';
|
30378 | var modalParams = {
|
30379 | targetEl: $inputEl,
|
30380 | scrollToEl: $scrollToEl,
|
30381 | content: picker.render(),
|
30382 | backdrop: typeof params.backdrop !== 'undefined' ? params.backdrop : isPopover,
|
30383 | on: {
|
30384 | open: function open() {
|
30385 | var modal = this;
|
30386 | picker.modal = modal;
|
30387 | picker.$el = isPopover ? modal.$el.find('.picker') : modal.$el;
|
30388 | picker.$el[0].f7Picker = picker;
|
30389 | picker.onOpen();
|
30390 | },
|
30391 | opened: function opened() {
|
30392 | picker.onOpened();
|
30393 | },
|
30394 | close: function close() {
|
30395 | picker.onClose();
|
30396 | },
|
30397 | closed: function closed() {
|
30398 | picker.onClosed();
|
30399 | }
|
30400 | }
|
30401 | };
|
30402 |
|
30403 | if (modalType === 'sheet') {
|
30404 | modalParams.push = params.sheetPush;
|
30405 | modalParams.swipeToClose = params.sheetSwipeToClose;
|
30406 | }
|
30407 |
|
30408 | if (params.routableModals && picker.view) {
|
30409 | var _route;
|
30410 |
|
30411 | picker.view.router.navigate({
|
30412 | url: picker.url,
|
30413 | route: (_route = {
|
30414 | path: picker.url
|
30415 | }, _route[modalType] = modalParams, _route)
|
30416 | });
|
30417 | } else {
|
30418 | picker.modal = app[modalType].create(modalParams);
|
30419 | picker.modal.open();
|
30420 | }
|
30421 | };
|
30422 |
|
30423 | _proto.close = function close() {
|
30424 | var picker = this;
|
30425 | var opened = picker.opened,
|
30426 | inline = picker.inline;
|
30427 | if (!opened) return;
|
30428 |
|
30429 | if (inline) {
|
30430 | picker.onClose();
|
30431 | picker.onClosed();
|
30432 | return;
|
30433 | }
|
30434 |
|
30435 | if (picker.params.routableModals && picker.view) {
|
30436 | picker.view.router.back();
|
30437 | } else {
|
30438 | picker.modal.close();
|
30439 | }
|
30440 | };
|
30441 |
|
30442 | _proto.init = function init() {
|
30443 | var picker = this;
|
30444 | picker.initInput();
|
30445 |
|
30446 | if (picker.inline) {
|
30447 | picker.open();
|
30448 | picker.emit('local::init pickerInit', picker);
|
30449 | return;
|
30450 | }
|
30451 |
|
30452 | if (!picker.initialized && picker.params.value) {
|
30453 | picker.setValue(picker.params.value);
|
30454 | }
|
30455 |
|
30456 |
|
30457 | if (picker.$inputEl) {
|
30458 | picker.attachInputEvents();
|
30459 | }
|
30460 |
|
30461 | if (picker.params.closeByOutsideClick) {
|
30462 | picker.attachHtmlEvents();
|
30463 | }
|
30464 |
|
30465 | picker.emit('local::init pickerInit', picker);
|
30466 | };
|
30467 |
|
30468 | _proto.destroy = function destroy() {
|
30469 | var picker = this;
|
30470 | if (picker.destroyed) return;
|
30471 | var $el = picker.$el;
|
30472 | picker.emit('local::beforeDestroy pickerBeforeDestroy', picker);
|
30473 | if ($el) $el.trigger('picker:beforedestroy');
|
30474 | picker.close();
|
30475 |
|
30476 | if (picker.$inputEl) {
|
30477 | picker.detachInputEvents();
|
30478 | }
|
30479 |
|
30480 | if (picker.params.closeByOutsideClick) {
|
30481 | picker.detachHtmlEvents();
|
30482 | }
|
30483 |
|
30484 | if ($el && $el.length) delete picker.$el[0].f7Picker;
|
30485 | deleteProps$1(picker);
|
30486 | picker.destroyed = true;
|
30487 | };
|
30488 |
|
30489 | _createClass$1(Picker, [{
|
30490 | key: "view",
|
30491 | get: function get() {
|
30492 | var app = this.app,
|
30493 | params = this.params,
|
30494 | $inputEl = this.$inputEl;
|
30495 | var view;
|
30496 |
|
30497 | if (params.view) {
|
30498 | view = params.view;
|
30499 | } else if ($inputEl) {
|
30500 | view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;
|
30501 | }
|
30502 |
|
30503 | if (!view) view = app.views.main;
|
30504 | return view;
|
30505 | }
|
30506 | }]);
|
30507 |
|
30508 | return Picker;
|
30509 | }(Framework7Class);
|
30510 |
|
30511 | var Picker = {
|
30512 | name: 'picker',
|
30513 | static: {
|
30514 | Picker: Picker$1
|
30515 | },
|
30516 | create: function create() {
|
30517 | var app = this;
|
30518 | app.picker = ConstructorMethods({
|
30519 | defaultSelector: '.picker',
|
30520 | constructor: Picker$1,
|
30521 | app: app,
|
30522 | domProp: 'f7Picker'
|
30523 | });
|
30524 |
|
30525 | app.picker.close = function close(el) {
|
30526 | if (el === void 0) {
|
30527 | el = '.picker';
|
30528 | }
|
30529 |
|
30530 | var $el = $(el);
|
30531 | if ($el.length === 0) return;
|
30532 | var picker = $el[0].f7Picker;
|
30533 | if (!picker || picker && !picker.opened) return;
|
30534 | picker.close();
|
30535 | };
|
30536 | },
|
30537 | params: {
|
30538 | picker: {
|
30539 |
|
30540 | updateValuesOnMomentum: false,
|
30541 | updateValuesOnTouchmove: true,
|
30542 | updateValuesOnMousewheel: true,
|
30543 | mousewheel: true,
|
30544 | rotateEffect: false,
|
30545 | momentumRatio: 7,
|
30546 | freeMode: false,
|
30547 | cols: [],
|
30548 |
|
30549 | containerEl: null,
|
30550 | openIn: 'auto',
|
30551 |
|
30552 | sheetPush: false,
|
30553 | sheetSwipeToClose: undefined,
|
30554 | backdrop: undefined,
|
30555 |
|
30556 | formatValue: null,
|
30557 | inputEl: null,
|
30558 | inputReadOnly: true,
|
30559 | closeByOutsideClick: true,
|
30560 | scrollToInput: true,
|
30561 | scrollToEl: undefined,
|
30562 | toolbar: true,
|
30563 | toolbarCloseText: 'Done',
|
30564 | cssClass: null,
|
30565 | routableModals: false,
|
30566 | view: null,
|
30567 | url: 'select/',
|
30568 |
|
30569 | renderToolbar: null,
|
30570 | render: null
|
30571 | }
|
30572 | }
|
30573 | };
|
30574 |
|
30575 | var InfiniteScroll = {
|
30576 | handle: function handle(el, e) {
|
30577 | var app = this;
|
30578 | var $el = $(el);
|
30579 | var scrollTop = $el[0].scrollTop;
|
30580 | var scrollHeight = $el[0].scrollHeight;
|
30581 | var height = $el[0].offsetHeight;
|
30582 | var distance = $el[0].getAttribute('data-infinite-distance');
|
30583 | var virtualListContainer = $el.find('.virtual-list');
|
30584 | var virtualList;
|
30585 | var onTop = $el.hasClass('infinite-scroll-top');
|
30586 | if (!distance) distance = 50;
|
30587 |
|
30588 | if (typeof distance === 'string' && distance.indexOf('%') >= 0) {
|
30589 | distance = parseInt(distance, 10) / 100 * height;
|
30590 | }
|
30591 |
|
30592 | if (distance > height) distance = height;
|
30593 |
|
30594 | if (onTop) {
|
30595 | if (scrollTop < distance) {
|
30596 | $el.trigger('infinite', e);
|
30597 | app.emit('infinite', $el[0], e);
|
30598 | }
|
30599 | } else if (scrollTop + height >= scrollHeight - distance) {
|
30600 | if (virtualListContainer.length > 0) {
|
30601 | virtualList = virtualListContainer.eq(-1)[0].f7VirtualList;
|
30602 |
|
30603 | if (virtualList && !virtualList.reachEnd && !virtualList.params.updatableScroll) {
|
30604 | return;
|
30605 | }
|
30606 | }
|
30607 |
|
30608 | $el.trigger('infinite', e);
|
30609 | app.emit('infinite', $el[0], e);
|
30610 | }
|
30611 | },
|
30612 | create: function create(el) {
|
30613 | var $el = $(el);
|
30614 | var app = this;
|
30615 |
|
30616 | function scrollHandler(e) {
|
30617 | app.infiniteScroll.handle(this, e);
|
30618 | }
|
30619 |
|
30620 | $el.each(function (element) {
|
30621 | element.f7InfiniteScrollHandler = scrollHandler;
|
30622 | element.addEventListener('scroll', element.f7InfiniteScrollHandler);
|
30623 | });
|
30624 | },
|
30625 | destroy: function destroy(el) {
|
30626 | var $el = $(el);
|
30627 | $el.each(function (element) {
|
30628 | element.removeEventListener('scroll', element.f7InfiniteScrollHandler);
|
30629 | delete element.f7InfiniteScrollHandler;
|
30630 | });
|
30631 | }
|
30632 | };
|
30633 | var InfiniteScroll$1 = {
|
30634 | name: 'infiniteScroll',
|
30635 | create: function create() {
|
30636 | var app = this;
|
30637 | bindMethods(app, {
|
30638 | infiniteScroll: InfiniteScroll
|
30639 | });
|
30640 | },
|
30641 | on: {
|
30642 | tabMounted: function tabMounted(tabEl) {
|
30643 | var app = this;
|
30644 | var $tabEl = $(tabEl);
|
30645 | var $isEls = $tabEl.find('.infinite-scroll-content');
|
30646 | if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);
|
30647 | $isEls.each(function (el) {
|
30648 | app.infiniteScroll.create(el);
|
30649 | });
|
30650 | },
|
30651 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
30652 | var $tabEl = $(tabEl);
|
30653 | var app = this;
|
30654 | var $isEls = $tabEl.find('.infinite-scroll-content');
|
30655 | if ($tabEl.is('.infinite-scroll-content')) $isEls.add($tabEl);
|
30656 | $isEls.each(function (el) {
|
30657 | app.infiniteScroll.destroy(el);
|
30658 | });
|
30659 | },
|
30660 | pageInit: function pageInit(page) {
|
30661 | var app = this;
|
30662 | page.$el.find('.infinite-scroll-content').each(function (el) {
|
30663 | app.infiniteScroll.create(el);
|
30664 | });
|
30665 | },
|
30666 | pageBeforeRemove: function pageBeforeRemove(page) {
|
30667 | var app = this;
|
30668 | page.$el.find('.infinite-scroll-content').each(function (el) {
|
30669 | app.infiniteScroll.destroy(el);
|
30670 | });
|
30671 | }
|
30672 | }
|
30673 | };
|
30674 |
|
30675 | var PullToRefresh$1 = function (_Framework7Class) {
|
30676 | _inheritsLoose(PullToRefresh, _Framework7Class);
|
30677 |
|
30678 | function PullToRefresh(app, el) {
|
30679 | var _this;
|
30680 |
|
30681 | _this = _Framework7Class.call(this, {}, [app]) || this;
|
30682 |
|
30683 | var ptr = _assertThisInitialized(_this);
|
30684 |
|
30685 | var device = getDevice$1();
|
30686 | var support = getSupport$1();
|
30687 | var $el = $(el);
|
30688 | var $preloaderEl = $el.find('.ptr-preloader');
|
30689 | ptr.$el = $el;
|
30690 | ptr.el = $el[0];
|
30691 | ptr.app = app;
|
30692 | ptr.bottom = ptr.$el.hasClass('ptr-bottom');
|
30693 |
|
30694 | ptr.useModulesParams({});
|
30695 | var isMaterial = app.theme === 'md';
|
30696 | var isIos = app.theme === 'ios';
|
30697 | var isAurora = app.theme === 'aurora';
|
30698 |
|
30699 | ptr.done = function done() {
|
30700 | var $transitionTarget = isMaterial ? $preloaderEl : $el;
|
30701 | $transitionTarget.transitionEnd(function () {
|
30702 | $el.removeClass('ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing');
|
30703 | $el.trigger('ptr:done');
|
30704 | ptr.emit('local::done ptrDone', $el[0]);
|
30705 | });
|
30706 | $el.removeClass('ptr-refreshing').addClass('ptr-transitioning ptr-closing');
|
30707 | return ptr;
|
30708 | };
|
30709 |
|
30710 | ptr.refresh = function refresh() {
|
30711 | if ($el.hasClass('ptr-refreshing')) return ptr;
|
30712 | $el.addClass('ptr-transitioning ptr-refreshing');
|
30713 | $el.trigger('ptr:refresh', ptr.done);
|
30714 | ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);
|
30715 | return ptr;
|
30716 | };
|
30717 |
|
30718 |
|
30719 | ptr.mousewheel = $el.attr('data-ptr-mousewheel') === 'true';
|
30720 |
|
30721 | var touchId;
|
30722 | var isTouched;
|
30723 | var isMoved;
|
30724 | var touchesStart = {};
|
30725 | var isScrolling;
|
30726 | var touchesDiff;
|
30727 | var refresh = false;
|
30728 | var useTranslate = false;
|
30729 | var forceUseTranslate = false;
|
30730 | var startTranslate = 0;
|
30731 | var translate;
|
30732 | var scrollTop;
|
30733 | var wasScrolled;
|
30734 | var triggerDistance;
|
30735 | var dynamicTriggerDistance;
|
30736 | var pullStarted;
|
30737 | var hasNavbar = false;
|
30738 | var scrollHeight;
|
30739 | var offsetHeight;
|
30740 | var maxScrollTop;
|
30741 | var $pageEl = $el.parents('.page');
|
30742 | if ($pageEl.find('.navbar').length > 0 || $pageEl.parents('.view').children('.navbars').length > 0) hasNavbar = true;
|
30743 | if ($pageEl.hasClass('no-navbar')) hasNavbar = false;
|
30744 |
|
30745 | if (!ptr.bottom) {
|
30746 | var pageNavbarEl = app.navbar.getElByPage($pageEl[0]);
|
30747 |
|
30748 | if (pageNavbarEl) {
|
30749 | var $pageNavbarEl = $(pageNavbarEl);
|
30750 | var isLargeTransparent = $pageNavbarEl.hasClass('navbar-large-transparent') || $pageNavbarEl.hasClass('navbar-large') && $pageNavbarEl.hasClass('navbar-transparent');
|
30751 | var isTransparent = $pageNavbarEl.hasClass('navbar-transparent') && !$pageNavbarEl.hasClass('navbar-large');
|
30752 |
|
30753 | if (isLargeTransparent) {
|
30754 | $el.addClass('ptr-with-navbar-large-transparent');
|
30755 | } else if (isTransparent) {
|
30756 | $el.addClass('ptr-with-navbar-transparent');
|
30757 | }
|
30758 | }
|
30759 | }
|
30760 |
|
30761 | if (!hasNavbar && !ptr.bottom) $el.addClass('ptr-no-navbar');
|
30762 |
|
30763 | if ($el.attr('data-ptr-distance')) {
|
30764 | dynamicTriggerDistance = true;
|
30765 | } else if (isMaterial) {
|
30766 | triggerDistance = 66;
|
30767 | } else if (isIos) {
|
30768 | triggerDistance = 44;
|
30769 | } else if (isAurora) {
|
30770 | triggerDistance = 38;
|
30771 | }
|
30772 |
|
30773 | function handleTouchStart(e) {
|
30774 | if (isTouched) {
|
30775 | if (device.os === 'android') {
|
30776 | if ('targetTouches' in e && e.targetTouches.length > 1) return;
|
30777 | } else return;
|
30778 | }
|
30779 |
|
30780 | if ($el.hasClass('ptr-refreshing')) {
|
30781 | return;
|
30782 | }
|
30783 |
|
30784 | if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;
|
30785 | isMoved = false;
|
30786 | pullStarted = false;
|
30787 | isTouched = true;
|
30788 | isScrolling = undefined;
|
30789 | wasScrolled = undefined;
|
30790 | if (e.type === 'touchstart') touchId = e.targetTouches[0].identifier;
|
30791 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
30792 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
30793 | }
|
30794 |
|
30795 | function handleTouchMove(e) {
|
30796 | if (!isTouched) return;
|
30797 | var pageX;
|
30798 | var pageY;
|
30799 | var touch;
|
30800 |
|
30801 | if (e.type === 'touchmove') {
|
30802 | if (touchId && e.touches) {
|
30803 | for (var i = 0; i < e.touches.length; i += 1) {
|
30804 | if (e.touches[i].identifier === touchId) {
|
30805 | touch = e.touches[i];
|
30806 | }
|
30807 | }
|
30808 | }
|
30809 |
|
30810 | if (!touch) touch = e.targetTouches[0];
|
30811 | pageX = touch.pageX;
|
30812 | pageY = touch.pageY;
|
30813 | } else {
|
30814 | pageX = e.pageX;
|
30815 | pageY = e.pageY;
|
30816 | }
|
30817 |
|
30818 | if (!pageX || !pageY) return;
|
30819 |
|
30820 | if (typeof isScrolling === 'undefined') {
|
30821 | isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) > Math.abs(pageX - touchesStart.x));
|
30822 | }
|
30823 |
|
30824 | if (!isScrolling) {
|
30825 | isTouched = false;
|
30826 | return;
|
30827 | }
|
30828 |
|
30829 | scrollTop = $el[0].scrollTop;
|
30830 |
|
30831 | if (!isMoved) {
|
30832 | $el.removeClass('ptr-transitioning');
|
30833 | var targetIsScrollable;
|
30834 | scrollHeight = $el[0].scrollHeight;
|
30835 | offsetHeight = $el[0].offsetHeight;
|
30836 |
|
30837 | if (ptr.bottom) {
|
30838 | maxScrollTop = scrollHeight - offsetHeight;
|
30839 | }
|
30840 |
|
30841 | if (scrollTop > scrollHeight) {
|
30842 | isTouched = false;
|
30843 | return;
|
30844 | }
|
30845 |
|
30846 | var $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');
|
30847 |
|
30848 | if ($ptrWatchScrollable.length) {
|
30849 | $ptrWatchScrollable.each(function (ptrScrollableEl) {
|
30850 | if (ptrScrollableEl === el) return;
|
30851 |
|
30852 | if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {
|
30853 | targetIsScrollable = true;
|
30854 | }
|
30855 | });
|
30856 | }
|
30857 |
|
30858 | if (targetIsScrollable) {
|
30859 | isTouched = false;
|
30860 | return;
|
30861 | }
|
30862 |
|
30863 | if (dynamicTriggerDistance) {
|
30864 | triggerDistance = $el.attr('data-ptr-distance');
|
30865 | if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;
|
30866 | }
|
30867 |
|
30868 | startTranslate = $el.hasClass('ptr-refreshing') ? triggerDistance : 0;
|
30869 |
|
30870 | if (scrollHeight === offsetHeight || device.os !== 'ios' || isMaterial) {
|
30871 | useTranslate = true;
|
30872 | } else {
|
30873 | useTranslate = false;
|
30874 | }
|
30875 |
|
30876 | forceUseTranslate = false;
|
30877 | }
|
30878 |
|
30879 | isMoved = true;
|
30880 | touchesDiff = pageY - touchesStart.y;
|
30881 | if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;
|
30882 | var ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;
|
30883 |
|
30884 | if (ptrStarted) {
|
30885 |
|
30886 | if (device.os === 'ios' && parseInt(device.osVersion.split('.')[0], 10) > 7) {
|
30887 | if (!ptr.bottom && scrollTop === 0 && !wasScrolled) useTranslate = true;
|
30888 | if (ptr.bottom && scrollTop === maxScrollTop && !wasScrolled) useTranslate = true;
|
30889 | }
|
30890 |
|
30891 | if (!useTranslate && ptr.bottom && !isMaterial) {
|
30892 | $el.css('-webkit-overflow-scrolling', 'auto');
|
30893 | $el.scrollTop(maxScrollTop);
|
30894 | forceUseTranslate = true;
|
30895 | }
|
30896 |
|
30897 | if (useTranslate || forceUseTranslate) {
|
30898 | if (e.cancelable) {
|
30899 | e.preventDefault();
|
30900 | }
|
30901 |
|
30902 | translate = (ptr.bottom ? -1 * Math.pow(Math.abs(touchesDiff), 0.85) : Math.pow(touchesDiff, 0.85)) + startTranslate;
|
30903 |
|
30904 | if (isMaterial) {
|
30905 | $preloaderEl.transform("translate3d(0," + translate + "px,0)").find('.ptr-arrow').transform("rotate(" + (180 * (Math.abs(touchesDiff) / 66) + 100) + "deg)");
|
30906 | } else {
|
30907 |
|
30908 | if (ptr.bottom) {
|
30909 | $el.children().transform("translate3d(0," + translate + "px,0)");
|
30910 | } else {
|
30911 | $el.transform("translate3d(0," + translate + "px,0)");
|
30912 | }
|
30913 | }
|
30914 | }
|
30915 |
|
30916 | if ((useTranslate || forceUseTranslate) && Math.pow(Math.abs(touchesDiff), 0.85) > triggerDistance || !useTranslate && Math.abs(touchesDiff) >= triggerDistance * 2) {
|
30917 | refresh = true;
|
30918 | $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');
|
30919 | } else {
|
30920 | refresh = false;
|
30921 | $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');
|
30922 | }
|
30923 |
|
30924 | if (!pullStarted) {
|
30925 | $el.trigger('ptr:pullstart');
|
30926 | ptr.emit('local::pullStart ptrPullStart', $el[0]);
|
30927 | pullStarted = true;
|
30928 | }
|
30929 |
|
30930 | $el.trigger('ptr:pullmove', {
|
30931 | event: e,
|
30932 | scrollTop: scrollTop,
|
30933 | translate: translate,
|
30934 | touchesDiff: touchesDiff
|
30935 | });
|
30936 | ptr.emit('local::pullMove ptrPullMove', $el[0], {
|
30937 | event: e,
|
30938 | scrollTop: scrollTop,
|
30939 | translate: translate,
|
30940 | touchesDiff: touchesDiff
|
30941 | });
|
30942 | } else {
|
30943 | pullStarted = false;
|
30944 | $el.removeClass('ptr-pull-up ptr-pull-down');
|
30945 | refresh = false;
|
30946 | }
|
30947 | }
|
30948 |
|
30949 | function handleTouchEnd(e) {
|
30950 | if (e.type === 'touchend' && e.changedTouches && e.changedTouches.length > 0 && touchId) {
|
30951 | if (e.changedTouches[0].identifier !== touchId) {
|
30952 | isTouched = false;
|
30953 | isScrolling = false;
|
30954 | isMoved = false;
|
30955 | touchId = null;
|
30956 | return;
|
30957 | }
|
30958 | }
|
30959 |
|
30960 | if (!isTouched || !isMoved) {
|
30961 | isTouched = false;
|
30962 | isMoved = false;
|
30963 | return;
|
30964 | }
|
30965 |
|
30966 | if (translate) {
|
30967 | $el.addClass('ptr-transitioning');
|
30968 | translate = 0;
|
30969 | }
|
30970 |
|
30971 | if (isMaterial) {
|
30972 | $preloaderEl.transform('').find('.ptr-arrow').transform('');
|
30973 | } else {
|
30974 |
|
30975 | if (ptr.bottom) {
|
30976 | $el.children().transform('');
|
30977 | } else {
|
30978 | $el.transform('');
|
30979 | }
|
30980 | }
|
30981 |
|
30982 | if (!useTranslate && ptr.bottom && !isMaterial) {
|
30983 | $el.css('-webkit-overflow-scrolling', '');
|
30984 | }
|
30985 |
|
30986 | if (refresh) {
|
30987 | $el.addClass('ptr-refreshing');
|
30988 | $el.trigger('ptr:refresh', ptr.done);
|
30989 | ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);
|
30990 | } else {
|
30991 | $el.removeClass('ptr-pull-down');
|
30992 | }
|
30993 |
|
30994 | isTouched = false;
|
30995 | isMoved = false;
|
30996 |
|
30997 | if (pullStarted) {
|
30998 | $el.trigger('ptr:pullend');
|
30999 | ptr.emit('local::pullEnd ptrPullEnd', $el[0]);
|
31000 | }
|
31001 | }
|
31002 |
|
31003 | var mousewheelTimeout;
|
31004 | var mousewheelMoved;
|
31005 | var mousewheelAllow = true;
|
31006 | var mousewheelTranslate = 0;
|
31007 |
|
31008 | function handleMouseWheelRelease() {
|
31009 | mousewheelAllow = true;
|
31010 | mousewheelMoved = false;
|
31011 | mousewheelTranslate = 0;
|
31012 |
|
31013 | if (translate) {
|
31014 | $el.addClass('ptr-transitioning');
|
31015 | translate = 0;
|
31016 | }
|
31017 |
|
31018 | if (isMaterial) {
|
31019 | $preloaderEl.transform('').find('.ptr-arrow').transform('');
|
31020 | } else {
|
31021 |
|
31022 | if (ptr.bottom) {
|
31023 | $el.children().transform('');
|
31024 | } else {
|
31025 | $el.transform('');
|
31026 | }
|
31027 | }
|
31028 |
|
31029 | if (refresh) {
|
31030 | $el.addClass('ptr-refreshing');
|
31031 | $el.trigger('ptr:refresh', ptr.done);
|
31032 | ptr.emit('local::refresh ptrRefresh', $el[0], ptr.done);
|
31033 | } else {
|
31034 | $el.removeClass('ptr-pull-down');
|
31035 | }
|
31036 |
|
31037 | if (pullStarted) {
|
31038 | $el.trigger('ptr:pullend');
|
31039 | ptr.emit('local::pullEnd ptrPullEnd', $el[0]);
|
31040 | }
|
31041 | }
|
31042 |
|
31043 | function handleMouseWheel(e) {
|
31044 | if (!mousewheelAllow) return;
|
31045 | var deltaX = e.deltaX,
|
31046 | deltaY = e.deltaY;
|
31047 | if (Math.abs(deltaX) > Math.abs(deltaY)) return;
|
31048 |
|
31049 | if ($el.hasClass('ptr-refreshing')) {
|
31050 | return;
|
31051 | }
|
31052 |
|
31053 | if ($(e.target).closest('.sortable-handler, .ptr-ignore, .card-expandable.card-opened').length) return;
|
31054 | clearTimeout(mousewheelTimeout);
|
31055 | scrollTop = $el[0].scrollTop;
|
31056 |
|
31057 | if (!mousewheelMoved) {
|
31058 | $el.removeClass('ptr-transitioning');
|
31059 | var targetIsScrollable;
|
31060 | scrollHeight = $el[0].scrollHeight;
|
31061 | offsetHeight = $el[0].offsetHeight;
|
31062 |
|
31063 | if (ptr.bottom) {
|
31064 | maxScrollTop = scrollHeight - offsetHeight;
|
31065 | }
|
31066 |
|
31067 | if (scrollTop > scrollHeight) {
|
31068 | mousewheelAllow = false;
|
31069 | return;
|
31070 | }
|
31071 |
|
31072 | var $ptrWatchScrollable = $(e.target).closest('.ptr-watch-scroll');
|
31073 |
|
31074 | if ($ptrWatchScrollable.length) {
|
31075 | $ptrWatchScrollable.each(function (ptrScrollableEl) {
|
31076 | if (ptrScrollableEl === el) return;
|
31077 |
|
31078 | if (ptrScrollableEl.scrollHeight > ptrScrollableEl.offsetHeight && $(ptrScrollableEl).css('overflow') === 'auto' && (!ptr.bottom && ptrScrollableEl.scrollTop > 0 || ptr.bottom && ptrScrollableEl.scrollTop < ptrScrollableEl.scrollHeight - ptrScrollableEl.offsetHeight)) {
|
31079 | targetIsScrollable = true;
|
31080 | }
|
31081 | });
|
31082 | }
|
31083 |
|
31084 | if (targetIsScrollable) {
|
31085 | mousewheelAllow = false;
|
31086 | return;
|
31087 | }
|
31088 |
|
31089 | if (dynamicTriggerDistance) {
|
31090 | triggerDistance = $el.attr('data-ptr-distance');
|
31091 | if (triggerDistance.indexOf('%') >= 0) triggerDistance = scrollHeight * parseInt(triggerDistance, 10) / 100;
|
31092 | }
|
31093 | }
|
31094 |
|
31095 | isMoved = true;
|
31096 | mousewheelTranslate -= deltaY;
|
31097 | touchesDiff = mousewheelTranslate;
|
31098 |
|
31099 | if (typeof wasScrolled === 'undefined' && (ptr.bottom ? scrollTop !== maxScrollTop : scrollTop !== 0)) wasScrolled = true;
|
31100 | var ptrStarted = ptr.bottom ? touchesDiff < 0 && scrollTop >= maxScrollTop || scrollTop > maxScrollTop : touchesDiff > 0 && scrollTop <= 0 || scrollTop < 0;
|
31101 |
|
31102 | if (ptrStarted) {
|
31103 | if (e.cancelable) {
|
31104 | e.preventDefault();
|
31105 | }
|
31106 |
|
31107 | translate = touchesDiff;
|
31108 |
|
31109 | if (Math.abs(translate) > triggerDistance) {
|
31110 | translate = triggerDistance + Math.pow(Math.abs(translate) - triggerDistance, 0.7);
|
31111 | if (ptr.bottom) translate = -translate;
|
31112 | }
|
31113 |
|
31114 | if (isMaterial) {
|
31115 | $preloaderEl.transform("translate3d(0," + translate + "px,0)").find('.ptr-arrow').transform("rotate(" + (180 * (Math.abs(touchesDiff) / 66) + 100) + "deg)");
|
31116 | } else {
|
31117 |
|
31118 | if (ptr.bottom) {
|
31119 | $el.children().transform("translate3d(0," + translate + "px,0)");
|
31120 | } else {
|
31121 | $el.transform("translate3d(0," + translate + "px,0)");
|
31122 | }
|
31123 | }
|
31124 |
|
31125 | if (Math.abs(translate) > triggerDistance) {
|
31126 | refresh = true;
|
31127 | $el.addClass('ptr-pull-up').removeClass('ptr-pull-down');
|
31128 | } else {
|
31129 | refresh = false;
|
31130 | $el.removeClass('ptr-pull-up').addClass('ptr-pull-down');
|
31131 | }
|
31132 |
|
31133 | if (!pullStarted) {
|
31134 | $el.trigger('ptr:pullstart');
|
31135 | ptr.emit('local::pullStart ptrPullStart', $el[0]);
|
31136 | pullStarted = true;
|
31137 | }
|
31138 |
|
31139 | $el.trigger('ptr:pullmove', {
|
31140 | event: e,
|
31141 | scrollTop: scrollTop,
|
31142 | translate: translate,
|
31143 | touchesDiff: touchesDiff
|
31144 | });
|
31145 | ptr.emit('local::pullMove ptrPullMove', $el[0], {
|
31146 | event: e,
|
31147 | scrollTop: scrollTop,
|
31148 | translate: translate,
|
31149 | touchesDiff: touchesDiff
|
31150 | });
|
31151 | } else {
|
31152 | pullStarted = false;
|
31153 | $el.removeClass('ptr-pull-up ptr-pull-down');
|
31154 | refresh = false;
|
31155 | }
|
31156 |
|
31157 | mousewheelTimeout = setTimeout(handleMouseWheelRelease, 300);
|
31158 | }
|
31159 |
|
31160 | if (!$pageEl.length || !$el.length) return ptr || _assertThisInitialized(_this);
|
31161 | $el[0].f7PullToRefresh = ptr;
|
31162 |
|
31163 | ptr.attachEvents = function attachEvents() {
|
31164 | var passive = support.passiveListener ? {
|
31165 | passive: true
|
31166 | } : false;
|
31167 | $el.on(app.touchEvents.start, handleTouchStart, passive);
|
31168 | app.on('touchmove:active', handleTouchMove);
|
31169 | app.on('touchend:passive', handleTouchEnd);
|
31170 |
|
31171 | if (ptr.mousewheel && !ptr.bottom) {
|
31172 | $el.on('wheel', handleMouseWheel);
|
31173 | }
|
31174 | };
|
31175 |
|
31176 | ptr.detachEvents = function detachEvents() {
|
31177 | var passive = support.passiveListener ? {
|
31178 | passive: true
|
31179 | } : false;
|
31180 | $el.off(app.touchEvents.start, handleTouchStart, passive);
|
31181 | app.off('touchmove:active', handleTouchMove);
|
31182 | app.off('touchend:passive', handleTouchEnd);
|
31183 |
|
31184 | if (ptr.mousewheel && !ptr.bottom) {
|
31185 | $el.off('wheel', handleMouseWheel);
|
31186 | }
|
31187 | };
|
31188 |
|
31189 |
|
31190 | ptr.useModules();
|
31191 |
|
31192 | ptr.init();
|
31193 | return ptr || _assertThisInitialized(_this);
|
31194 | }
|
31195 |
|
31196 | var _proto = PullToRefresh.prototype;
|
31197 |
|
31198 | _proto.init = function init() {
|
31199 | var ptr = this;
|
31200 | ptr.attachEvents();
|
31201 | };
|
31202 |
|
31203 | _proto.destroy = function destroy() {
|
31204 | var ptr = this;
|
31205 | ptr.emit('local::beforeDestroy ptrBeforeDestroy', ptr);
|
31206 | ptr.$el.trigger('ptr:beforedestroy');
|
31207 | delete ptr.el.f7PullToRefresh;
|
31208 | ptr.detachEvents();
|
31209 | deleteProps$1(ptr);
|
31210 | ptr = null;
|
31211 | };
|
31212 |
|
31213 | return PullToRefresh;
|
31214 | }(Framework7Class);
|
31215 |
|
31216 | var PullToRefresh = {
|
31217 | name: 'pullToRefresh',
|
31218 | create: function create() {
|
31219 | var app = this;
|
31220 | app.ptr = extend$1(ConstructorMethods({
|
31221 | defaultSelector: '.ptr-content',
|
31222 | constructor: PullToRefresh$1,
|
31223 | app: app,
|
31224 | domProp: 'f7PullToRefresh'
|
31225 | }), {
|
31226 | done: function done(el) {
|
31227 | var ptr = app.ptr.get(el);
|
31228 | if (ptr) return ptr.done();
|
31229 | return undefined;
|
31230 | },
|
31231 | refresh: function refresh(el) {
|
31232 | var ptr = app.ptr.get(el);
|
31233 | if (ptr) return ptr.refresh();
|
31234 | return undefined;
|
31235 | }
|
31236 | });
|
31237 | },
|
31238 | static: {
|
31239 | PullToRefresh: PullToRefresh$1
|
31240 | },
|
31241 | on: {
|
31242 | tabMounted: function tabMounted(tabEl) {
|
31243 | var app = this;
|
31244 | var $tabEl = $(tabEl);
|
31245 | var $ptrEls = $tabEl.find('.ptr-content');
|
31246 | if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);
|
31247 | $ptrEls.each(function (el) {
|
31248 | app.ptr.create(el);
|
31249 | });
|
31250 | },
|
31251 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
31252 | var $tabEl = $(tabEl);
|
31253 | var app = this;
|
31254 | var $ptrEls = $tabEl.find('.ptr-content');
|
31255 | if ($tabEl.is('.ptr-content')) $ptrEls.add($tabEl);
|
31256 | $ptrEls.each(function (el) {
|
31257 | app.ptr.destroy(el);
|
31258 | });
|
31259 | },
|
31260 | pageInit: function pageInit(page) {
|
31261 | var app = this;
|
31262 | page.$el.find('.ptr-content').each(function (el) {
|
31263 | app.ptr.create(el);
|
31264 | });
|
31265 | },
|
31266 | pageBeforeRemove: function pageBeforeRemove(page) {
|
31267 | var app = this;
|
31268 | page.$el.find('.ptr-content').each(function (el) {
|
31269 | app.ptr.destroy(el);
|
31270 | });
|
31271 | }
|
31272 | }
|
31273 | };
|
31274 |
|
31275 | var Lazy$2 = {
|
31276 | destroy: function destroy(pageEl) {
|
31277 | var $pageEl = $(pageEl).closest('.page');
|
31278 | if (!$pageEl.length) return;
|
31279 |
|
31280 | if ($pageEl[0].f7LazyDestroy) {
|
31281 | $pageEl[0].f7LazyDestroy();
|
31282 | }
|
31283 | },
|
31284 | create: function create(pageEl) {
|
31285 | var app = this;
|
31286 | var window = getWindow();
|
31287 | var support = getSupport$1();
|
31288 | var $pageEl = $(pageEl).closest('.page').eq(0);
|
31289 |
|
31290 | var $lazyLoadImages = $pageEl.find('.lazy');
|
31291 | if ($lazyLoadImages.length === 0 && !$pageEl.hasClass('lazy')) return;
|
31292 |
|
31293 | var placeholderSrc = app.params.lazy.placeholder;
|
31294 |
|
31295 | if (placeholderSrc !== false) {
|
31296 | $lazyLoadImages.each(function (lazyEl) {
|
31297 | if ($(lazyEl).attr('data-src') && !$(lazyEl).attr('src')) $(lazyEl).attr('src', placeholderSrc);
|
31298 | });
|
31299 | }
|
31300 |
|
31301 |
|
31302 | var imagesSequence = [];
|
31303 | var imageIsLoading = false;
|
31304 |
|
31305 | function onImageComplete(lazyEl) {
|
31306 | if (imagesSequence.indexOf(lazyEl) >= 0) {
|
31307 | imagesSequence.splice(imagesSequence.indexOf(lazyEl), 1);
|
31308 | }
|
31309 |
|
31310 | imageIsLoading = false;
|
31311 |
|
31312 | if (app.params.lazy.sequential && imagesSequence.length > 0) {
|
31313 | imageIsLoading = true;
|
31314 | app.lazy.loadImage(imagesSequence[0], onImageComplete);
|
31315 | }
|
31316 | }
|
31317 |
|
31318 | function observerCallback(entries, observer) {
|
31319 | entries.forEach(function (entry) {
|
31320 | if (entry.isIntersecting) {
|
31321 | if (app.params.lazy.sequential && imageIsLoading) {
|
31322 | if (imagesSequence.indexOf(entry.target) < 0) imagesSequence.push(entry.target);
|
31323 | return;
|
31324 | }
|
31325 |
|
31326 |
|
31327 | imageIsLoading = true;
|
31328 | app.lazy.loadImage(entry.target, onImageComplete);
|
31329 |
|
31330 | observer.unobserve(entry.target);
|
31331 | }
|
31332 | });
|
31333 | }
|
31334 |
|
31335 | if (app.params.lazy.observer && support.intersectionObserver) {
|
31336 | var observer = $pageEl[0].f7LazyObserver;
|
31337 |
|
31338 | if (!observer) {
|
31339 | observer = new window.IntersectionObserver(observerCallback, {
|
31340 | root: $pageEl[0]
|
31341 | });
|
31342 | }
|
31343 |
|
31344 | $lazyLoadImages.each(function (el) {
|
31345 | if (el.f7LazyObserverAdded) return;
|
31346 | el.f7LazyObserverAdded = true;
|
31347 | observer.observe(el);
|
31348 | });
|
31349 |
|
31350 | if (!$pageEl[0].f7LazyDestroy) {
|
31351 | $pageEl[0].f7LazyDestroy = function () {
|
31352 | observer.disconnect();
|
31353 | delete $pageEl[0].f7LazyDestroy;
|
31354 | delete $pageEl[0].f7LazyObserver;
|
31355 | };
|
31356 | }
|
31357 |
|
31358 | return;
|
31359 | }
|
31360 |
|
31361 | function lazyHandler() {
|
31362 | app.lazy.load($pageEl, function (lazyEl) {
|
31363 | if (app.params.lazy.sequential && imageIsLoading) {
|
31364 | if (imagesSequence.indexOf(lazyEl) < 0) imagesSequence.push(lazyEl);
|
31365 | return;
|
31366 | }
|
31367 |
|
31368 | imageIsLoading = true;
|
31369 | app.lazy.loadImage(lazyEl, onImageComplete);
|
31370 | });
|
31371 | }
|
31372 |
|
31373 | function attachEvents() {
|
31374 | $pageEl[0].f7LazyAttached = true;
|
31375 | $pageEl.on('lazy', lazyHandler);
|
31376 | $pageEl.on('scroll', lazyHandler, true);
|
31377 | $pageEl.find('.tab').on('tab:mounted tab:show', lazyHandler);
|
31378 | app.on('resize', lazyHandler);
|
31379 | }
|
31380 |
|
31381 | function detachEvents() {
|
31382 | $pageEl[0].f7LazyAttached = false;
|
31383 | delete $pageEl[0].f7LazyAttached;
|
31384 | $pageEl.off('lazy', lazyHandler);
|
31385 | $pageEl.off('scroll', lazyHandler, true);
|
31386 | $pageEl.find('.tab').off('tab:mounted tab:show', lazyHandler);
|
31387 | app.off('resize', lazyHandler);
|
31388 | }
|
31389 |
|
31390 |
|
31391 | if (!$pageEl[0].f7LazyDestroy) {
|
31392 | $pageEl[0].f7LazyDestroy = detachEvents;
|
31393 | }
|
31394 |
|
31395 |
|
31396 | if (!$pageEl[0].f7LazyAttached) {
|
31397 | attachEvents();
|
31398 | }
|
31399 |
|
31400 |
|
31401 | lazyHandler();
|
31402 | },
|
31403 | isInViewport: function isInViewport(lazyEl) {
|
31404 | var app = this;
|
31405 | var rect = lazyEl.getBoundingClientRect();
|
31406 | var threshold = app.params.lazy.threshold || 0;
|
31407 | return rect.top >= 0 - threshold && rect.left >= 0 - threshold && rect.top <= app.height + threshold && rect.left <= app.width + threshold;
|
31408 | },
|
31409 | loadImage: function loadImage(imageEl, callback) {
|
31410 | var app = this;
|
31411 | var window = getWindow();
|
31412 | var $imageEl = $(imageEl);
|
31413 | var bg = $imageEl.attr('data-background');
|
31414 | var src = bg || $imageEl.attr('data-src');
|
31415 |
|
31416 | function onLoad() {
|
31417 | $imageEl.removeClass('lazy').addClass('lazy-loaded');
|
31418 |
|
31419 | if (bg) {
|
31420 | $imageEl.css('background-image', "url(" + src + ")");
|
31421 | } else if (src) {
|
31422 | $imageEl.attr('src', src);
|
31423 | }
|
31424 |
|
31425 | if (callback) callback(imageEl);
|
31426 | $imageEl.trigger('lazy:loaded');
|
31427 | app.emit('lazyLoaded', $imageEl[0]);
|
31428 | }
|
31429 |
|
31430 | if (!src) {
|
31431 | $imageEl.trigger('lazy:load');
|
31432 | app.emit('lazyLoad', $imageEl[0]);
|
31433 | onLoad();
|
31434 | return;
|
31435 | }
|
31436 |
|
31437 | function onError() {
|
31438 | $imageEl.removeClass('lazy').addClass('lazy-loaded');
|
31439 |
|
31440 | if (bg) {
|
31441 | $imageEl.css('background-image', "url(" + (app.params.lazy.placeholder || '') + ")");
|
31442 | } else {
|
31443 | $imageEl.attr('src', app.params.lazy.placeholder || '');
|
31444 | }
|
31445 |
|
31446 | if (callback) callback(imageEl);
|
31447 | $imageEl.trigger('lazy:error');
|
31448 | app.emit('lazyError', $imageEl[0]);
|
31449 | }
|
31450 |
|
31451 | var image = new window.Image();
|
31452 | image.onload = onLoad;
|
31453 | image.onerror = onError;
|
31454 | image.src = src;
|
31455 | $imageEl.removeAttr('data-src').removeAttr('data-background');
|
31456 |
|
31457 | $imageEl.trigger('lazy:load');
|
31458 | app.emit('lazyLoad', $imageEl[0]);
|
31459 | },
|
31460 | load: function load(pageEl, callback) {
|
31461 | var app = this;
|
31462 | var $pageEl = $(pageEl);
|
31463 | if (!$pageEl.hasClass('page')) $pageEl = $pageEl.parents('.page').eq(0);
|
31464 |
|
31465 | if ($pageEl.length === 0) {
|
31466 | return;
|
31467 | }
|
31468 |
|
31469 | $pageEl.find('.lazy').each(function (lazyEl) {
|
31470 | var $lazyEl = $(lazyEl);
|
31471 |
|
31472 | if ($lazyEl.parents('.tab:not(.tab-active)').length > 0) {
|
31473 | return;
|
31474 | }
|
31475 |
|
31476 | if (app.lazy.isInViewport(lazyEl)) {
|
31477 | if (callback) callback(lazyEl);else app.lazy.loadImage(lazyEl);
|
31478 | }
|
31479 | });
|
31480 | }
|
31481 | };
|
31482 | var Lazy$3 = {
|
31483 | name: 'lazy',
|
31484 | params: {
|
31485 | lazy: {
|
31486 | placeholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEXCwsK592mkAAAACklEQVQI12NgAAAAAgAB4iG8MwAAAABJRU5ErkJggg==',
|
31487 | threshold: 0,
|
31488 | sequential: true,
|
31489 | observer: true
|
31490 | }
|
31491 | },
|
31492 | create: function create() {
|
31493 | var app = this;
|
31494 | bindMethods(app, {
|
31495 | lazy: Lazy$2
|
31496 | });
|
31497 | },
|
31498 | on: {
|
31499 | pageInit: function pageInit(page) {
|
31500 | var app = this;
|
31501 |
|
31502 | if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
|
31503 | app.lazy.create(page.$el);
|
31504 | }
|
31505 | },
|
31506 | pageAfterIn: function pageAfterIn(page) {
|
31507 | var app = this;
|
31508 | var support = getSupport$1();
|
31509 | if (app.params.lazy.observer && support.intersectionObserver) return;
|
31510 |
|
31511 | if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
|
31512 | app.lazy.create(page.$el);
|
31513 | }
|
31514 | },
|
31515 | pageBeforeRemove: function pageBeforeRemove(page) {
|
31516 | var app = this;
|
31517 |
|
31518 | if (page.$el.find('.lazy').length > 0 || page.$el.hasClass('lazy')) {
|
31519 | app.lazy.destroy(page.$el);
|
31520 | }
|
31521 | },
|
31522 | tabMounted: function tabMounted(tabEl) {
|
31523 | var app = this;
|
31524 | var $tabEl = $(tabEl);
|
31525 |
|
31526 | if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {
|
31527 | app.lazy.create($tabEl);
|
31528 | }
|
31529 | },
|
31530 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
31531 | var app = this;
|
31532 | var support = getSupport$1();
|
31533 | if (app.params.lazy.observer && support.intersectionObserver) return;
|
31534 | var $tabEl = $(tabEl);
|
31535 |
|
31536 | if ($tabEl.find('.lazy').length > 0 || $tabEl.hasClass('lazy')) {
|
31537 | app.lazy.destroy($tabEl);
|
31538 | }
|
31539 | }
|
31540 | }
|
31541 | };
|
31542 |
|
31543 | var DataTable$1 = function (_Framework7Class) {
|
31544 | _inheritsLoose(DataTable, _Framework7Class);
|
31545 |
|
31546 | function DataTable(app, params) {
|
31547 | var _this;
|
31548 |
|
31549 | if (params === void 0) {
|
31550 | params = {};
|
31551 | }
|
31552 |
|
31553 | _this = _Framework7Class.call(this, params, [app]) || this;
|
31554 |
|
31555 | var table = _assertThisInitialized(_this);
|
31556 |
|
31557 | var defaults = {};
|
31558 |
|
31559 | table.useModulesParams(defaults);
|
31560 | table.params = extend$1(defaults, params);
|
31561 |
|
31562 | var $el = $(table.params.el);
|
31563 | if ($el.length === 0) return undefined || _assertThisInitialized(_this);
|
31564 | table.$el = $el;
|
31565 | table.el = $el[0];
|
31566 |
|
31567 | if (table.$el[0].f7DataTable) {
|
31568 | var instance = table.$el[0].f7DataTable;
|
31569 | table.destroy();
|
31570 | return instance || _assertThisInitialized(_this);
|
31571 | }
|
31572 |
|
31573 | table.$el[0].f7DataTable = table;
|
31574 | extend$1(table, {
|
31575 | collapsible: $el.hasClass('data-table-collapsible'),
|
31576 |
|
31577 | $headerEl: $el.find('.data-table-header'),
|
31578 | $headerSelectedEl: $el.find('.data-table-header-selected')
|
31579 | });
|
31580 |
|
31581 | function handleChange(e) {
|
31582 | if (e.detail && e.detail.sentByF7DataTable) {
|
31583 |
|
31584 | return;
|
31585 | }
|
31586 |
|
31587 | var $inputEl = $(this);
|
31588 | var checked = $inputEl[0].checked;
|
31589 | var columnIndex = $inputEl.parents('td,th').index();
|
31590 |
|
31591 | if ($inputEl.parents('thead').length > 0) {
|
31592 | if (columnIndex === 0) {
|
31593 | $el.find('tbody tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');
|
31594 | }
|
31595 |
|
31596 | $el.find("tbody tr td:nth-child(" + (columnIndex + 1) + ") input").prop('checked', checked).trigger('change', {
|
31597 | sentByF7DataTable: true
|
31598 | });
|
31599 | $inputEl.prop('indeterminate', false);
|
31600 | } else {
|
31601 | if (columnIndex === 0) {
|
31602 | $inputEl.parents('tr')[checked ? 'addClass' : 'removeClass']('data-table-row-selected');
|
31603 | }
|
31604 |
|
31605 | var checkedRows = $el.find("tbody .checkbox-cell:nth-child(" + (columnIndex + 1) + ") input[type=\"checkbox\"]:checked").length;
|
31606 | var totalRows = $el.find('tbody tr').length;
|
31607 | var $headCheckboxEl = $el.find("thead .checkbox-cell:nth-child(" + (columnIndex + 1) + ") input[type=\"checkbox\"]");
|
31608 |
|
31609 | if (!checked) {
|
31610 | $headCheckboxEl.prop('checked', false);
|
31611 | } else if (checkedRows === totalRows) {
|
31612 | $headCheckboxEl.prop('checked', true).trigger('change', {
|
31613 | sentByF7DataTable: true
|
31614 | });
|
31615 | }
|
31616 |
|
31617 | $headCheckboxEl.prop('indeterminate', checkedRows > 0 && checkedRows < totalRows);
|
31618 | }
|
31619 |
|
31620 | table.checkSelectedHeader();
|
31621 | }
|
31622 |
|
31623 | function handleSortableClick() {
|
31624 | var $cellEl = $(this);
|
31625 | var isActive = $cellEl.hasClass('sortable-cell-active');
|
31626 | var currentSort = $cellEl.hasClass('sortable-desc') ? 'desc' : 'asc';
|
31627 | var newSort;
|
31628 |
|
31629 | if (isActive) {
|
31630 | newSort = currentSort === 'desc' ? 'asc' : 'desc';
|
31631 | $cellEl.removeClass('sortable-desc sortable-asc').addClass("sortable-" + newSort);
|
31632 | } else {
|
31633 | $el.find('thead .sortable-cell-active').removeClass('sortable-cell-active');
|
31634 | $cellEl.addClass('sortable-cell-active');
|
31635 | newSort = currentSort;
|
31636 | }
|
31637 |
|
31638 | $cellEl.trigger('datatable:sort', newSort);
|
31639 | table.emit('local::sort dataTableSort', table, newSort);
|
31640 | }
|
31641 |
|
31642 | table.attachEvents = function attachEvents() {
|
31643 | table.$el.on('change', '.checkbox-cell input[type="checkbox"]', handleChange);
|
31644 | table.$el.find('thead .sortable-cell').on('click', handleSortableClick);
|
31645 | };
|
31646 |
|
31647 | table.detachEvents = function detachEvents() {
|
31648 | table.$el.off('change', '.checkbox-cell input[type="checkbox"]', handleChange);
|
31649 | table.$el.find('thead .sortable-cell').off('click', handleSortableClick);
|
31650 | };
|
31651 |
|
31652 |
|
31653 | table.useModules();
|
31654 |
|
31655 | table.init();
|
31656 | return table || _assertThisInitialized(_this);
|
31657 | }
|
31658 |
|
31659 | var _proto = DataTable.prototype;
|
31660 |
|
31661 | _proto.setCollapsibleLabels = function setCollapsibleLabels() {
|
31662 | var table = this;
|
31663 | if (!table.collapsible) return;
|
31664 | table.$el.find('tbody td:not(.checkbox-cell)').each(function (el) {
|
31665 | var $el = $(el);
|
31666 | var elIndex = $el.index();
|
31667 | var collpsibleTitle = $el.attr('data-collapsible-title');
|
31668 |
|
31669 | if (!collpsibleTitle && collpsibleTitle !== '') {
|
31670 | $el.attr('data-collapsible-title', table.$el.find('thead th').eq(elIndex).text());
|
31671 | }
|
31672 | });
|
31673 | };
|
31674 |
|
31675 | _proto.checkSelectedHeader = function checkSelectedHeader() {
|
31676 | var table = this;
|
31677 |
|
31678 | if (table.$headerEl.length > 0 && table.$headerSelectedEl.length > 0) {
|
31679 | var checkedItems = table.$el.find('tbody .checkbox-cell input:checked').length;
|
31680 | table.$el[checkedItems > 0 ? 'addClass' : 'removeClass']('data-table-has-checked');
|
31681 | table.$headerSelectedEl.find('.data-table-selected-count').text(checkedItems);
|
31682 | }
|
31683 | };
|
31684 |
|
31685 | _proto.init = function init() {
|
31686 | var table = this;
|
31687 | table.attachEvents();
|
31688 | table.setCollapsibleLabels();
|
31689 | table.checkSelectedHeader();
|
31690 | };
|
31691 |
|
31692 | _proto.destroy = function destroy() {
|
31693 | var table = this;
|
31694 | table.$el.trigger('datatable:beforedestroy');
|
31695 | table.emit('local::beforeDestroy dataTableBeforeDestroy', table);
|
31696 | table.attachEvents();
|
31697 |
|
31698 | if (table.$el[0]) {
|
31699 | table.$el[0].f7DataTable = null;
|
31700 | delete table.$el[0].f7DataTable;
|
31701 | }
|
31702 |
|
31703 | deleteProps$1(table);
|
31704 | table = null;
|
31705 | };
|
31706 |
|
31707 | return DataTable;
|
31708 | }(Framework7Class);
|
31709 |
|
31710 | var DataTable = {
|
31711 | name: 'dataTable',
|
31712 | static: {
|
31713 | DataTable: DataTable$1
|
31714 | },
|
31715 | create: function create() {
|
31716 | var app = this;
|
31717 | app.dataTable = ConstructorMethods({
|
31718 | defaultSelector: '.data-table',
|
31719 | constructor: DataTable$1,
|
31720 | app: app,
|
31721 | domProp: 'f7DataTable'
|
31722 | });
|
31723 | },
|
31724 | on: {
|
31725 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
31726 | var app = this;
|
31727 | $(tabEl).find('.data-table-init').each(function (tableEl) {
|
31728 | app.dataTable.destroy(tableEl);
|
31729 | });
|
31730 | },
|
31731 | tabMounted: function tabMounted(tabEl) {
|
31732 | var app = this;
|
31733 | $(tabEl).find('.data-table-init').each(function (tableEl) {
|
31734 | app.dataTable.create({
|
31735 | el: tableEl
|
31736 | });
|
31737 | });
|
31738 | },
|
31739 | pageBeforeRemove: function pageBeforeRemove(page) {
|
31740 | var app = this;
|
31741 | page.$el.find('.data-table-init').each(function (tableEl) {
|
31742 | app.dataTable.destroy(tableEl);
|
31743 | });
|
31744 | },
|
31745 | pageInit: function pageInit(page) {
|
31746 | var app = this;
|
31747 | page.$el.find('.data-table-init').each(function (tableEl) {
|
31748 | app.dataTable.create({
|
31749 | el: tableEl
|
31750 | });
|
31751 | });
|
31752 | }
|
31753 | },
|
31754 | vnode: {
|
31755 | 'data-table-init': {
|
31756 | insert: function insert(vnode) {
|
31757 | var app = this;
|
31758 | var tableEl = vnode.elm;
|
31759 | app.dataTable.create({
|
31760 | el: tableEl
|
31761 | });
|
31762 | },
|
31763 | destroy: function destroy(vnode) {
|
31764 | var app = this;
|
31765 | var tableEl = vnode.elm;
|
31766 | app.dataTable.destroy(tableEl);
|
31767 | }
|
31768 | }
|
31769 | }
|
31770 | };
|
31771 |
|
31772 | var Fab = {
|
31773 | morphOpen: function morphOpen(fabEl, targetEl) {
|
31774 | var app = this;
|
31775 | var $fabEl = $(fabEl);
|
31776 | var $targetEl = $(targetEl);
|
31777 | if ($targetEl.length === 0) return;
|
31778 | $targetEl.transition(0).addClass('fab-morph-target-visible');
|
31779 | var target = {
|
31780 | width: $targetEl[0].offsetWidth,
|
31781 | height: $targetEl[0].offsetHeight,
|
31782 | offset: $targetEl.offset(),
|
31783 | borderRadius: $targetEl.css('border-radius'),
|
31784 | zIndex: $targetEl.css('z-index')
|
31785 | };
|
31786 | var fab = {
|
31787 | width: $fabEl[0].offsetWidth,
|
31788 | height: $fabEl[0].offsetHeight,
|
31789 | offset: $fabEl.offset(),
|
31790 | translateX: getTranslate$1($fabEl[0], 'x'),
|
31791 | translateY: getTranslate$1($fabEl[0], 'y')
|
31792 | };
|
31793 | $fabEl[0].f7FabMorphData = {
|
31794 | $targetEl: $targetEl,
|
31795 | target: target,
|
31796 | fab: fab
|
31797 | };
|
31798 | var diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
|
31799 | var diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
|
31800 | var scaleX = target.width / fab.width;
|
31801 | var scaleY = target.height / fab.height;
|
31802 | var borderRadius = Math.ceil(parseInt(target.borderRadius, 10) / Math.max(scaleX, scaleY));
|
31803 | if (borderRadius > 0) borderRadius += 2;
|
31804 |
|
31805 | $fabEl[0].f7FabMorphResizeHandler = function resizeHandler() {
|
31806 | $fabEl.transition(0).transform('');
|
31807 | $targetEl.transition(0);
|
31808 | target.width = $targetEl[0].offsetWidth;
|
31809 | target.height = $targetEl[0].offsetHeight;
|
31810 | target.offset = $targetEl.offset();
|
31811 | fab.offset = $fabEl.offset();
|
31812 | var diffXNew = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
|
31813 | var diffYNew = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
|
31814 | var scaleXNew = target.width / fab.width;
|
31815 | var scaleYNew = target.height / fab.height;
|
31816 | $fabEl.transform("translate3d(" + -diffXNew + "px, " + -diffYNew + "px, 0) scale(" + scaleXNew + ", " + scaleYNew + ")");
|
31817 | };
|
31818 |
|
31819 | $targetEl.css('opacity', 0).transform("scale(" + 1 / scaleX + ", " + 1 / scaleY + ")");
|
31820 | $fabEl.addClass('fab-opened').css('z-index', target.zIndex - 1).transform("translate3d(" + -diffX + "px, " + -diffY + "px, 0)");
|
31821 | $fabEl.transitionEnd(function () {
|
31822 | $targetEl.transition('');
|
31823 | nextFrame$1(function () {
|
31824 | $targetEl.css('opacity', 1).transform('scale(1,1)');
|
31825 | $fabEl.transform("translate3d(" + -diffX + "px, " + -diffY + "px, 0) scale(" + scaleX + ", " + scaleY + ")").css('border-radius', borderRadius + "px").css('box-shadow', 'none').css('opacity', '0');
|
31826 | });
|
31827 | app.on('resize', $fabEl[0].f7FabMorphResizeHandler);
|
31828 |
|
31829 | if ($targetEl.parents('.page-content').length > 0) {
|
31830 | $targetEl.parents('.page-content').on('scroll', $fabEl[0].f7FabMorphResizeHandler);
|
31831 | }
|
31832 | });
|
31833 | },
|
31834 | morphClose: function morphClose(fabEl) {
|
31835 | var app = this;
|
31836 | var $fabEl = $(fabEl);
|
31837 | var morphData = $fabEl[0].f7FabMorphData;
|
31838 | if (!morphData) return;
|
31839 | var $targetEl = morphData.$targetEl,
|
31840 | target = morphData.target,
|
31841 | fab = morphData.fab;
|
31842 | if ($targetEl.length === 0) return;
|
31843 | var diffX = fab.offset.left + fab.width / 2 - (target.offset.left + target.width / 2) - fab.translateX;
|
31844 | var diffY = fab.offset.top + fab.height / 2 - (target.offset.top + target.height / 2) - fab.translateY;
|
31845 | var scaleX = target.width / fab.width;
|
31846 | var scaleY = target.height / fab.height;
|
31847 | app.off('resize', $fabEl[0].f7FabMorphResizeHandler);
|
31848 |
|
31849 | if ($targetEl.parents('.page-content').length > 0) {
|
31850 | $targetEl.parents('.page-content').off('scroll', $fabEl[0].f7FabMorphResizeHandler);
|
31851 | }
|
31852 |
|
31853 | $targetEl.css('opacity', 0).transform("scale(" + 1 / scaleX + ", " + 1 / scaleY + ")");
|
31854 | $fabEl.transition('').css('box-shadow', '').css('border-radius', '').css('opacity', '1').transform("translate3d(" + -diffX + "px, " + -diffY + "px, 0)");
|
31855 | $fabEl.transitionEnd(function () {
|
31856 | $fabEl.css('z-index', '').removeClass('fab-opened').transform('');
|
31857 | nextFrame$1(function () {
|
31858 | $fabEl.transitionEnd(function () {
|
31859 | $targetEl.removeClass('fab-morph-target-visible').css('opacity', '').transform('').transition('');
|
31860 | });
|
31861 | });
|
31862 | });
|
31863 | },
|
31864 | open: function open(fabEl, targetEl) {
|
31865 | var app = this;
|
31866 | var $fabEl = $(fabEl).eq(0);
|
31867 | var $buttonsEl = $fabEl.find('.fab-buttons');
|
31868 | if (!$fabEl.length) return;
|
31869 | if ($fabEl.hasClass('fab-opened')) return;
|
31870 | if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;
|
31871 |
|
31872 | if (app.fab.openedEl) {
|
31873 | if (app.fab.openedEl === $fabEl[0]) return;
|
31874 | app.fab.close(app.fab.openedEl);
|
31875 | }
|
31876 |
|
31877 | app.fab.openedEl = $fabEl[0];
|
31878 |
|
31879 | if ($fabEl.hasClass('fab-morph')) {
|
31880 | app.fab.morphOpen($fabEl, targetEl || $fabEl.attr('data-morph-to'));
|
31881 | } else {
|
31882 | $fabEl.addClass('fab-opened');
|
31883 | }
|
31884 |
|
31885 | $fabEl.siblings('.fab-backdrop').addClass('backdrop-in');
|
31886 | $fabEl.trigger('fab:open');
|
31887 | },
|
31888 | close: function close(fabEl) {
|
31889 | if (fabEl === void 0) {
|
31890 | fabEl = '.fab-opened';
|
31891 | }
|
31892 |
|
31893 | var app = this;
|
31894 | var $fabEl = $(fabEl).eq(0);
|
31895 | var $buttonsEl = $fabEl.find('.fab-buttons');
|
31896 | if (!$fabEl.length) return;
|
31897 | if (!$fabEl.hasClass('fab-opened')) return;
|
31898 | if (!$buttonsEl.length && !$fabEl.hasClass('fab-morph')) return;
|
31899 | app.fab.openedEl = null;
|
31900 |
|
31901 | if ($fabEl.hasClass('fab-morph')) {
|
31902 | app.fab.morphClose($fabEl);
|
31903 | } else {
|
31904 | $fabEl.removeClass('fab-opened');
|
31905 | }
|
31906 |
|
31907 | $fabEl.siblings('.fab-backdrop').removeClass('backdrop-in');
|
31908 | $fabEl.trigger('fab:close');
|
31909 | },
|
31910 | toggle: function toggle(fabEl) {
|
31911 | var app = this;
|
31912 | var $fabEl = $(fabEl);
|
31913 | if (!$fabEl.hasClass('fab-opened')) app.fab.open(fabEl);else app.fab.close(fabEl);
|
31914 | }
|
31915 | };
|
31916 | var Fab$1 = {
|
31917 | name: 'fab',
|
31918 | create: function create() {
|
31919 | var app = this;
|
31920 | bindMethods(app, {
|
31921 | fab: _extends$j({
|
31922 | openedEl: null
|
31923 | }, Fab)
|
31924 | });
|
31925 | },
|
31926 | clicks: {
|
31927 | '.fab > a': function open($clickedEl) {
|
31928 | var app = this;
|
31929 | app.fab.toggle($clickedEl.parents('.fab'));
|
31930 | },
|
31931 | '.fab-open': function open($clickedEl, data) {
|
31932 | if (data === void 0) {
|
31933 | data = {};
|
31934 | }
|
31935 |
|
31936 | var app = this;
|
31937 | app.fab.open(data.fab);
|
31938 | },
|
31939 | '.fab-close': function close($clickedEl, data) {
|
31940 | if (data === void 0) {
|
31941 | data = {};
|
31942 | }
|
31943 |
|
31944 | var app = this;
|
31945 | app.fab.close(data.fab);
|
31946 | },
|
31947 | '.fab-backdrop': function close() {
|
31948 | var app = this;
|
31949 | app.fab.close();
|
31950 | }
|
31951 | }
|
31952 | };
|
31953 |
|
31954 |
|
31955 | var defaultDiacriticsRemovalap = [{
|
31956 | base: 'A',
|
31957 | letters: "A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F"
|
31958 | }, {
|
31959 | base: 'AA',
|
31960 | letters: "\uA732"
|
31961 | }, {
|
31962 | base: 'AE',
|
31963 | letters: "\xC6\u01FC\u01E2"
|
31964 | }, {
|
31965 | base: 'AO',
|
31966 | letters: "\uA734"
|
31967 | }, {
|
31968 | base: 'AU',
|
31969 | letters: "\uA736"
|
31970 | }, {
|
31971 | base: 'AV',
|
31972 | letters: "\uA738\uA73A"
|
31973 | }, {
|
31974 | base: 'AY',
|
31975 | letters: "\uA73C"
|
31976 | }, {
|
31977 | base: 'B',
|
31978 | letters: "B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181"
|
31979 | }, {
|
31980 | base: 'C',
|
31981 | letters: "C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E"
|
31982 | }, {
|
31983 | base: 'D',
|
31984 | letters: "D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779"
|
31985 | }, {
|
31986 | base: 'DZ',
|
31987 | letters: "\u01F1\u01C4"
|
31988 | }, {
|
31989 | base: 'Dz',
|
31990 | letters: "\u01F2\u01C5"
|
31991 | }, {
|
31992 | base: 'E',
|
31993 | letters: "E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E"
|
31994 | }, {
|
31995 | base: 'F',
|
31996 | letters: "F\u24BB\uFF26\u1E1E\u0191\uA77B"
|
31997 | }, {
|
31998 | base: 'G',
|
31999 | letters: "G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E"
|
32000 | }, {
|
32001 | base: 'H',
|
32002 | letters: "H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D"
|
32003 | }, {
|
32004 | base: 'I',
|
32005 | letters: "I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197"
|
32006 | }, {
|
32007 | base: 'J',
|
32008 | letters: "J\u24BF\uFF2A\u0134\u0248"
|
32009 | }, {
|
32010 | base: 'K',
|
32011 | letters: "K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2"
|
32012 | }, {
|
32013 | base: 'L',
|
32014 | letters: "L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780"
|
32015 | }, {
|
32016 | base: 'LJ',
|
32017 | letters: "\u01C7"
|
32018 | }, {
|
32019 | base: 'Lj',
|
32020 | letters: "\u01C8"
|
32021 | }, {
|
32022 | base: 'M',
|
32023 | letters: "M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C"
|
32024 | }, {
|
32025 | base: 'N',
|
32026 | letters: "N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4"
|
32027 | }, {
|
32028 | base: 'NJ',
|
32029 | letters: "\u01CA"
|
32030 | }, {
|
32031 | base: 'Nj',
|
32032 | letters: "\u01CB"
|
32033 | }, {
|
32034 | base: 'O',
|
32035 | letters: "O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C"
|
32036 | }, {
|
32037 | base: 'OI',
|
32038 | letters: "\u01A2"
|
32039 | }, {
|
32040 | base: 'OO',
|
32041 | letters: "\uA74E"
|
32042 | }, {
|
32043 | base: 'OU',
|
32044 | letters: "\u0222"
|
32045 | }, {
|
32046 | base: 'OE',
|
32047 | letters: "\x8C\u0152"
|
32048 | }, {
|
32049 | base: 'oe',
|
32050 | letters: "\x9C\u0153"
|
32051 | }, {
|
32052 | base: 'P',
|
32053 | letters: "P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754"
|
32054 | }, {
|
32055 | base: 'Q',
|
32056 | letters: "Q\u24C6\uFF31\uA756\uA758\u024A"
|
32057 | }, {
|
32058 | base: 'R',
|
32059 | letters: "R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782"
|
32060 | }, {
|
32061 | base: 'S',
|
32062 | letters: "S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784"
|
32063 | }, {
|
32064 | base: 'T',
|
32065 | letters: "T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786"
|
32066 | }, {
|
32067 | base: 'TZ',
|
32068 | letters: "\uA728"
|
32069 | }, {
|
32070 | base: 'U',
|
32071 | letters: "U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244"
|
32072 | }, {
|
32073 | base: 'V',
|
32074 | letters: "V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245"
|
32075 | }, {
|
32076 | base: 'VY',
|
32077 | letters: "\uA760"
|
32078 | }, {
|
32079 | base: 'W',
|
32080 | letters: "W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72"
|
32081 | }, {
|
32082 | base: 'X',
|
32083 | letters: "X\u24CD\uFF38\u1E8A\u1E8C"
|
32084 | }, {
|
32085 | base: 'Y',
|
32086 | letters: "Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE"
|
32087 | }, {
|
32088 | base: 'Z',
|
32089 | letters: "Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762"
|
32090 | }, {
|
32091 | base: 'a',
|
32092 | letters: "a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250"
|
32093 | }, {
|
32094 | base: 'aa',
|
32095 | letters: "\uA733"
|
32096 | }, {
|
32097 | base: 'ae',
|
32098 | letters: "\xE6\u01FD\u01E3"
|
32099 | }, {
|
32100 | base: 'ao',
|
32101 | letters: "\uA735"
|
32102 | }, {
|
32103 | base: 'au',
|
32104 | letters: "\uA737"
|
32105 | }, {
|
32106 | base: 'av',
|
32107 | letters: "\uA739\uA73B"
|
32108 | }, {
|
32109 | base: 'ay',
|
32110 | letters: "\uA73D"
|
32111 | }, {
|
32112 | base: 'b',
|
32113 | letters: "b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253"
|
32114 | }, {
|
32115 | base: 'c',
|
32116 | letters: "c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184"
|
32117 | }, {
|
32118 | base: 'd',
|
32119 | letters: "d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A"
|
32120 | }, {
|
32121 | base: 'dz',
|
32122 | letters: "\u01F3\u01C6"
|
32123 | }, {
|
32124 | base: 'e',
|
32125 | letters: "e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD"
|
32126 | }, {
|
32127 | base: 'f',
|
32128 | letters: "f\u24D5\uFF46\u1E1F\u0192\uA77C"
|
32129 | }, {
|
32130 | base: 'g',
|
32131 | letters: "g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F"
|
32132 | }, {
|
32133 | base: 'h',
|
32134 | letters: "h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265"
|
32135 | }, {
|
32136 | base: 'hv',
|
32137 | letters: "\u0195"
|
32138 | }, {
|
32139 | base: 'i',
|
32140 | letters: "i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131"
|
32141 | }, {
|
32142 | base: 'j',
|
32143 | letters: "j\u24D9\uFF4A\u0135\u01F0\u0249"
|
32144 | }, {
|
32145 | base: 'k',
|
32146 | letters: "k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3"
|
32147 | }, {
|
32148 | base: 'l',
|
32149 | letters: "l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747"
|
32150 | }, {
|
32151 | base: 'lj',
|
32152 | letters: "\u01C9"
|
32153 | }, {
|
32154 | base: 'm',
|
32155 | letters: "m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F"
|
32156 | }, {
|
32157 | base: 'n',
|
32158 | letters: "n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5"
|
32159 | }, {
|
32160 | base: 'nj',
|
32161 | letters: "\u01CC"
|
32162 | }, {
|
32163 | base: 'o',
|
32164 | letters: "o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275"
|
32165 | }, {
|
32166 | base: 'oi',
|
32167 | letters: "\u01A3"
|
32168 | }, {
|
32169 | base: 'ou',
|
32170 | letters: "\u0223"
|
32171 | }, {
|
32172 | base: 'oo',
|
32173 | letters: "\uA74F"
|
32174 | }, {
|
32175 | base: 'p',
|
32176 | letters: "p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755"
|
32177 | }, {
|
32178 | base: 'q',
|
32179 | letters: "q\u24E0\uFF51\u024B\uA757\uA759"
|
32180 | }, {
|
32181 | base: 'r',
|
32182 | letters: "r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783"
|
32183 | }, {
|
32184 | base: 's',
|
32185 | letters: "s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B"
|
32186 | }, {
|
32187 | base: 't',
|
32188 | letters: "t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787"
|
32189 | }, {
|
32190 | base: 'tz',
|
32191 | letters: "\uA729"
|
32192 | }, {
|
32193 | base: 'u',
|
32194 | letters: "u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289"
|
32195 | }, {
|
32196 | base: 'v',
|
32197 | letters: "v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C"
|
32198 | }, {
|
32199 | base: 'vy',
|
32200 | letters: "\uA761"
|
32201 | }, {
|
32202 | base: 'w',
|
32203 | letters: "w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73"
|
32204 | }, {
|
32205 | base: 'x',
|
32206 | letters: "x\u24E7\uFF58\u1E8B\u1E8D"
|
32207 | }, {
|
32208 | base: 'y',
|
32209 | letters: "y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF"
|
32210 | }, {
|
32211 | base: 'z',
|
32212 | letters: "z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763"
|
32213 | }];
|
32214 | var diacriticsMap = {};
|
32215 |
|
32216 | for (var i = 0; i < defaultDiacriticsRemovalap.length; i += 1) {
|
32217 | var letters = defaultDiacriticsRemovalap[i].letters;
|
32218 |
|
32219 | for (var j = 0; j < letters.length; j += 1) {
|
32220 | diacriticsMap[letters[j]] = defaultDiacriticsRemovalap[i].base;
|
32221 | }
|
32222 | }
|
32223 |
|
32224 | function removeDiacritics(str) {
|
32225 | return str.replace(/[^\u0000-\u007E]/g, function (a) {
|
32226 | return diacriticsMap[a] || a;
|
32227 | });
|
32228 | }
|
32229 |
|
32230 | var Searchbar$1 = function (_FrameworkClass) {
|
32231 | _inheritsLoose(Searchbar, _FrameworkClass);
|
32232 |
|
32233 | function Searchbar(app, params) {
|
32234 | var _this;
|
32235 |
|
32236 | if (params === void 0) {
|
32237 | params = {};
|
32238 | }
|
32239 |
|
32240 | _this = _FrameworkClass.call(this, params, [app]) || this;
|
32241 |
|
32242 | var sb = _assertThisInitialized(_this);
|
32243 |
|
32244 | var defaults = {
|
32245 | el: undefined,
|
32246 | inputEl: undefined,
|
32247 | inputEvents: 'change input compositionend',
|
32248 | disableButton: true,
|
32249 | disableButtonEl: undefined,
|
32250 | backdropEl: undefined,
|
32251 | searchContainer: undefined,
|
32252 |
|
32253 | searchItem: 'li',
|
32254 |
|
32255 | searchIn: undefined,
|
32256 |
|
32257 | searchGroup: '.list-group',
|
32258 | searchGroupTitle: '.item-divider, .list-group-title',
|
32259 | ignore: '.searchbar-ignore',
|
32260 | foundEl: '.searchbar-found',
|
32261 | notFoundEl: '.searchbar-not-found',
|
32262 | hideOnEnableEl: '.searchbar-hide-on-enable',
|
32263 | hideOnSearchEl: '.searchbar-hide-on-search',
|
32264 | backdrop: undefined,
|
32265 | removeDiacritics: true,
|
32266 | customSearch: false,
|
32267 | hideDividers: true,
|
32268 | hideGroups: true,
|
32269 | disableOnBackdropClick: true,
|
32270 | expandable: false,
|
32271 | inline: false
|
32272 | };
|
32273 |
|
32274 | sb.useModulesParams(defaults);
|
32275 | sb.params = extend$1(defaults, params);
|
32276 | var $el = $(sb.params.el);
|
32277 | if ($el.length === 0) return sb || _assertThisInitialized(_this);
|
32278 | if ($el[0].f7Searchbar) return $el[0].f7Searchbar || _assertThisInitialized(_this);
|
32279 | $el[0].f7Searchbar = sb;
|
32280 | var $pageEl;
|
32281 | var $navbarEl = $el.parents('.navbar');
|
32282 |
|
32283 | if ($el.parents('.page').length > 0) {
|
32284 | $pageEl = $el.parents('.page');
|
32285 | } else if ($navbarEl.length > 0) {
|
32286 | $pageEl = $(app.navbar.getPageByEl($navbarEl[0]));
|
32287 |
|
32288 | if (!$pageEl.length) {
|
32289 | var $currentPageEl = $el.parents('.view').find('.page-current');
|
32290 |
|
32291 | if ($currentPageEl[0] && $currentPageEl[0].f7Page && $currentPageEl[0].f7Page.navbarEl === $navbarEl[0]) {
|
32292 | $pageEl = $currentPageEl;
|
32293 | }
|
32294 | }
|
32295 | }
|
32296 |
|
32297 | var $foundEl;
|
32298 |
|
32299 | if (params.foundEl) {
|
32300 | $foundEl = $(params.foundEl);
|
32301 | } else if (typeof sb.params.foundEl === 'string' && $pageEl) {
|
32302 | $foundEl = $pageEl.find(sb.params.foundEl);
|
32303 | }
|
32304 |
|
32305 | var $notFoundEl;
|
32306 |
|
32307 | if (params.notFoundEl) {
|
32308 | $notFoundEl = $(params.notFoundEl);
|
32309 | } else if (typeof sb.params.notFoundEl === 'string' && $pageEl) {
|
32310 | $notFoundEl = $pageEl.find(sb.params.notFoundEl);
|
32311 | }
|
32312 |
|
32313 | var $hideOnEnableEl;
|
32314 |
|
32315 | if (params.hideOnEnableEl) {
|
32316 | $hideOnEnableEl = $(params.hideOnEnableEl);
|
32317 | } else if (typeof sb.params.hideOnEnableEl === 'string' && $pageEl) {
|
32318 | $hideOnEnableEl = $pageEl.find(sb.params.hideOnEnableEl);
|
32319 | }
|
32320 |
|
32321 | var $hideOnSearchEl;
|
32322 |
|
32323 | if (params.hideOnSearchEl) {
|
32324 | $hideOnSearchEl = $(params.hideOnSearchEl);
|
32325 | } else if (typeof sb.params.hideOnSearchEl === 'string' && $pageEl) {
|
32326 | $hideOnSearchEl = $pageEl.find(sb.params.hideOnSearchEl);
|
32327 | }
|
32328 |
|
32329 | var expandable = sb.params.expandable || $el.hasClass('searchbar-expandable');
|
32330 | var inline = sb.params.inline || $el.hasClass('searchbar-inline');
|
32331 |
|
32332 | if (typeof sb.params.backdrop === 'undefined') {
|
32333 | if (!inline) sb.params.backdrop = app.theme !== 'aurora';else sb.params.backdrop = false;
|
32334 | }
|
32335 |
|
32336 | var $backdropEl;
|
32337 |
|
32338 | if (sb.params.backdrop) {
|
32339 | if (sb.params.backdropEl) {
|
32340 | $backdropEl = $(sb.params.backdropEl);
|
32341 | } else if ($pageEl && $pageEl.length > 0) {
|
32342 | $backdropEl = $pageEl.find('.searchbar-backdrop');
|
32343 | } else {
|
32344 | $backdropEl = $el.siblings('.searchbar-backdrop');
|
32345 | }
|
32346 |
|
32347 | if ($backdropEl.length === 0) {
|
32348 | $backdropEl = $('<div class="searchbar-backdrop"></div>');
|
32349 |
|
32350 | if ($pageEl && $pageEl.length) {
|
32351 | if ($el.parents($pageEl).length > 0 && $navbarEl && $el.parents($navbarEl).length === 0) {
|
32352 | $backdropEl.insertBefore($el);
|
32353 | } else {
|
32354 | $backdropEl.insertBefore($pageEl.find('.page-content').eq(0));
|
32355 | }
|
32356 | } else {
|
32357 | $backdropEl.insertBefore($el);
|
32358 | }
|
32359 | }
|
32360 | }
|
32361 |
|
32362 | var $searchContainer;
|
32363 |
|
32364 | if (sb.params.searchContainer) {
|
32365 | $searchContainer = $(sb.params.searchContainer);
|
32366 | }
|
32367 |
|
32368 | var $inputEl;
|
32369 |
|
32370 | if (sb.params.inputEl) {
|
32371 | $inputEl = $(sb.params.inputEl);
|
32372 | } else {
|
32373 | $inputEl = $el.find('input[type="search"]').eq(0);
|
32374 | }
|
32375 |
|
32376 | var $disableButtonEl;
|
32377 |
|
32378 | if (sb.params.disableButton) {
|
32379 | if (sb.params.disableButtonEl) {
|
32380 | $disableButtonEl = $(sb.params.disableButtonEl);
|
32381 | } else {
|
32382 | $disableButtonEl = $el.find('.searchbar-disable-button');
|
32383 | }
|
32384 | }
|
32385 |
|
32386 | extend$1(sb, {
|
32387 | app: app,
|
32388 | view: app.views.get($el.parents('.view')),
|
32389 | $el: $el,
|
32390 | el: $el[0],
|
32391 | $backdropEl: $backdropEl,
|
32392 | backdropEl: $backdropEl && $backdropEl[0],
|
32393 | $searchContainer: $searchContainer,
|
32394 | searchContainer: $searchContainer && $searchContainer[0],
|
32395 | $inputEl: $inputEl,
|
32396 | inputEl: $inputEl[0],
|
32397 | $disableButtonEl: $disableButtonEl,
|
32398 | disableButtonEl: $disableButtonEl && $disableButtonEl[0],
|
32399 | disableButtonHasMargin: false,
|
32400 | $pageEl: $pageEl,
|
32401 | pageEl: $pageEl && $pageEl[0],
|
32402 | $navbarEl: $navbarEl,
|
32403 | navbarEl: $navbarEl && $navbarEl[0],
|
32404 | $foundEl: $foundEl,
|
32405 | foundEl: $foundEl && $foundEl[0],
|
32406 | $notFoundEl: $notFoundEl,
|
32407 | notFoundEl: $notFoundEl && $notFoundEl[0],
|
32408 | $hideOnEnableEl: $hideOnEnableEl,
|
32409 | hideOnEnableEl: $hideOnEnableEl && $hideOnEnableEl[0],
|
32410 | $hideOnSearchEl: $hideOnSearchEl,
|
32411 | hideOnSearchEl: $hideOnSearchEl && $hideOnSearchEl[0],
|
32412 | previousQuery: '',
|
32413 | query: '',
|
32414 | isVirtualList: $searchContainer && $searchContainer.hasClass('virtual-list'),
|
32415 | virtualList: undefined,
|
32416 | enabled: false,
|
32417 | expandable: expandable,
|
32418 | inline: inline
|
32419 | });
|
32420 |
|
32421 | function preventSubmit(e) {
|
32422 | e.preventDefault();
|
32423 | }
|
32424 |
|
32425 | function onInputFocus(e) {
|
32426 | sb.enable(e);
|
32427 | sb.$el.addClass('searchbar-focused');
|
32428 | }
|
32429 |
|
32430 | function onInputBlur() {
|
32431 | sb.$el.removeClass('searchbar-focused');
|
32432 |
|
32433 | if (app.theme === 'aurora' && (!$disableButtonEl || !$disableButtonEl.length || !sb.params.disableButton) && !sb.query) {
|
32434 | sb.disable();
|
32435 | }
|
32436 | }
|
32437 |
|
32438 | function onInputChange() {
|
32439 | var value = sb.$inputEl.val().trim();
|
32440 |
|
32441 | if (sb.$searchContainer && sb.$searchContainer.length > 0 && (sb.params.searchIn || sb.isVirtualList || sb.params.searchIn === sb.params.searchItem) || sb.params.customSearch) {
|
32442 | sb.search(value, true);
|
32443 | }
|
32444 | }
|
32445 |
|
32446 | function onInputClear(e, previousValue) {
|
32447 | sb.$el.trigger('searchbar:clear', previousValue);
|
32448 | sb.emit('local::clear searchbarClear', sb, previousValue);
|
32449 | }
|
32450 |
|
32451 | function disableOnClick(e) {
|
32452 | sb.disable(e);
|
32453 | }
|
32454 |
|
32455 | function onPageBeforeOut() {
|
32456 | if (!sb || sb && !sb.$el) return;
|
32457 |
|
32458 | if (sb.enabled) {
|
32459 | sb.$el.removeClass('searchbar-enabled');
|
32460 |
|
32461 | if (sb.expandable) {
|
32462 | sb.$el.parents('.navbar').removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition');
|
32463 | }
|
32464 | }
|
32465 | }
|
32466 |
|
32467 | function onPageBeforeIn() {
|
32468 | if (!sb || sb && !sb.$el) return;
|
32469 |
|
32470 | if (sb.enabled) {
|
32471 | sb.$el.addClass('searchbar-enabled');
|
32472 |
|
32473 | if (sb.expandable) {
|
32474 | sb.$el.parents('.navbar').addClass('with-searchbar-expandable-enabled-no-transition');
|
32475 | }
|
32476 | }
|
32477 | }
|
32478 |
|
32479 | sb.attachEvents = function attachEvents() {
|
32480 | $el.on('submit', preventSubmit);
|
32481 |
|
32482 | if (sb.params.disableButton) {
|
32483 | sb.$disableButtonEl.on('click', disableOnClick);
|
32484 | }
|
32485 |
|
32486 | if (sb.params.disableOnBackdropClick && sb.$backdropEl) {
|
32487 | sb.$backdropEl.on('click', disableOnClick);
|
32488 | }
|
32489 |
|
32490 | if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {
|
32491 | sb.$pageEl.on('page:beforeout', onPageBeforeOut);
|
32492 | sb.$pageEl.on('page:beforein', onPageBeforeIn);
|
32493 | }
|
32494 |
|
32495 | sb.$inputEl.on('focus', onInputFocus);
|
32496 | sb.$inputEl.on('blur', onInputBlur);
|
32497 | sb.$inputEl.on(sb.params.inputEvents, onInputChange);
|
32498 | sb.$inputEl.on('input:clear', onInputClear);
|
32499 | };
|
32500 |
|
32501 | sb.detachEvents = function detachEvents() {
|
32502 | $el.off('submit', preventSubmit);
|
32503 |
|
32504 | if (sb.params.disableButton) {
|
32505 | sb.$disableButtonEl.off('click', disableOnClick);
|
32506 | }
|
32507 |
|
32508 | if (sb.params.disableOnBackdropClick && sb.$backdropEl) {
|
32509 | sb.$backdropEl.off('click', disableOnClick);
|
32510 | }
|
32511 |
|
32512 | if (sb.expandable && app.theme === 'ios' && sb.view && $navbarEl.length && sb.$pageEl) {
|
32513 | sb.$pageEl.off('page:beforeout', onPageBeforeOut);
|
32514 | sb.$pageEl.off('page:beforein', onPageBeforeIn);
|
32515 | }
|
32516 |
|
32517 | sb.$inputEl.off('focus', onInputFocus);
|
32518 | sb.$inputEl.off('blur', onInputBlur);
|
32519 | sb.$inputEl.off(sb.params.inputEvents, onInputChange);
|
32520 | sb.$inputEl.off('input:clear', onInputClear);
|
32521 | };
|
32522 |
|
32523 |
|
32524 | sb.useModules();
|
32525 |
|
32526 | sb.init();
|
32527 | return sb || _assertThisInitialized(_this);
|
32528 | }
|
32529 |
|
32530 | var _proto = Searchbar.prototype;
|
32531 |
|
32532 | _proto.clear = function clear(e) {
|
32533 | var sb = this;
|
32534 |
|
32535 | if (!sb.query && e && $(e.target).hasClass('searchbar-clear')) {
|
32536 | sb.disable();
|
32537 | return sb;
|
32538 | }
|
32539 |
|
32540 | var previousQuery = sb.value;
|
32541 | sb.$inputEl.val('').trigger('change').focus();
|
32542 | sb.$el.trigger('searchbar:clear', previousQuery);
|
32543 | sb.emit('local::clear searchbarClear', sb, previousQuery);
|
32544 | return sb;
|
32545 | };
|
32546 |
|
32547 | _proto.setDisableButtonMargin = function setDisableButtonMargin() {
|
32548 | var sb = this;
|
32549 | if (sb.expandable) return;
|
32550 | var app = sb.app;
|
32551 | sb.$disableButtonEl.transition(0).show();
|
32552 | sb.$disableButtonEl.css("margin-" + (app.rtl ? 'left' : 'right'), -sb.disableButtonEl.offsetWidth + "px");
|
32553 |
|
32554 |
|
32555 | sb._clientLeft = sb.$disableButtonEl[0].clientLeft;
|
32556 | sb.$disableButtonEl.transition('');
|
32557 | sb.disableButtonHasMargin = true;
|
32558 | };
|
32559 |
|
32560 | _proto.enable = function enable(setFocus) {
|
32561 | var sb = this;
|
32562 | if (sb.enabled) return sb;
|
32563 | var app = sb.app;
|
32564 | var document = getDocument();
|
32565 | var device = getDevice$1();
|
32566 | sb.enabled = true;
|
32567 |
|
32568 | function enable() {
|
32569 | if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch) && !sb.$el.hasClass('searchbar-enabled') && !sb.query) {
|
32570 | sb.backdropShow();
|
32571 | }
|
32572 |
|
32573 | sb.$el.addClass('searchbar-enabled');
|
32574 |
|
32575 | if (!sb.$disableButtonEl || sb.$disableButtonEl && sb.$disableButtonEl.length === 0) {
|
32576 | sb.$el.addClass('searchbar-enabled-no-disable-button');
|
32577 | }
|
32578 |
|
32579 | if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {
|
32580 | if (!sb.disableButtonHasMargin) {
|
32581 | sb.setDisableButtonMargin();
|
32582 | }
|
32583 |
|
32584 | sb.$disableButtonEl.css("margin-" + (app.rtl ? 'left' : 'right'), '0px');
|
32585 | }
|
32586 |
|
32587 | if (sb.expandable) {
|
32588 | var $navbarEl = sb.$el.parents('.navbar');
|
32589 |
|
32590 | if ($navbarEl.hasClass('navbar-large') && sb.$pageEl) {
|
32591 | var $pageContentEl = sb.$pageEl.find('.page-content');
|
32592 | var $titleLargeEl = $navbarEl.find('.title-large');
|
32593 | $pageContentEl.addClass('with-searchbar-expandable-enabled');
|
32594 |
|
32595 | if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length && $pageContentEl.length) {
|
32596 | $pageContentEl.transition(0);
|
32597 | $pageContentEl[0].scrollTop -= $titleLargeEl[0].offsetHeight;
|
32598 | setTimeout(function () {
|
32599 | $pageContentEl.transition('');
|
32600 | }, 200);
|
32601 | }
|
32602 | }
|
32603 |
|
32604 | if (app.theme === 'md' && $navbarEl.length) {
|
32605 | $navbarEl.addClass('with-searchbar-expandable-enabled');
|
32606 | } else {
|
32607 | $navbarEl.addClass('with-searchbar-expandable-enabled');
|
32608 |
|
32609 | if ($navbarEl.hasClass('navbar-large')) {
|
32610 | $navbarEl.addClass('navbar-large-collapsed');
|
32611 | }
|
32612 | }
|
32613 | }
|
32614 |
|
32615 | if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.addClass('hidden-by-searchbar');
|
32616 | sb.$el.trigger('searchbar:enable');
|
32617 | sb.emit('local::enable searchbarEnable', sb);
|
32618 | }
|
32619 |
|
32620 | var needsFocus = false;
|
32621 |
|
32622 | if (setFocus === true) {
|
32623 | if (document.activeElement !== sb.inputEl) {
|
32624 | needsFocus = true;
|
32625 | }
|
32626 | }
|
32627 |
|
32628 | var isIos = device.ios && app.theme === 'ios';
|
32629 |
|
32630 | if (isIos) {
|
32631 | if (sb.expandable) {
|
32632 | if (needsFocus) sb.$inputEl.focus();
|
32633 | enable();
|
32634 | } else {
|
32635 | if (needsFocus) sb.$inputEl.focus();
|
32636 |
|
32637 | if (setFocus && (setFocus.type === 'focus' || setFocus === true)) {
|
32638 | nextTick$1(function () {
|
32639 | enable();
|
32640 | }, 400);
|
32641 | } else {
|
32642 | enable();
|
32643 | }
|
32644 | }
|
32645 | } else {
|
32646 | if (needsFocus) sb.$inputEl.focus();
|
32647 |
|
32648 | if (app.theme === 'md' && sb.expandable) {
|
32649 | sb.$el.parents('.page, .view, .navbar-inner, .navbar').scrollLeft(app.rtl ? 100 : 0);
|
32650 | }
|
32651 |
|
32652 | enable();
|
32653 | }
|
32654 |
|
32655 | return sb;
|
32656 | };
|
32657 |
|
32658 | _proto.disable = function disable() {
|
32659 | var sb = this;
|
32660 | if (!sb.enabled) return sb;
|
32661 | var app = sb.app;
|
32662 | sb.$inputEl.val('').trigger('change');
|
32663 | sb.$el.removeClass('searchbar-enabled searchbar-focused searchbar-enabled-no-disable-button');
|
32664 |
|
32665 | if (sb.expandable) {
|
32666 | var $navbarEl = sb.$el.parents('.navbar');
|
32667 | var $pageContentEl = sb.$pageEl && sb.$pageEl.find('.page-content');
|
32668 |
|
32669 | if ($navbarEl.hasClass('navbar-large') && $pageContentEl.length) {
|
32670 | var $titleLargeEl = $navbarEl.find('.title-large');
|
32671 | sb.$el.transitionEnd(function () {
|
32672 | $pageContentEl.removeClass('with-searchbar-expandable-closing');
|
32673 | });
|
32674 |
|
32675 | if ($navbarEl.hasClass('navbar-large') && $navbarEl.hasClass('navbar-large-collapsed') && $titleLargeEl.length) {
|
32676 | var scrollTop = $pageContentEl[0].scrollTop;
|
32677 | var titleLargeHeight = $titleLargeEl[0].offsetHeight;
|
32678 |
|
32679 | if (scrollTop > titleLargeHeight) {
|
32680 | $pageContentEl.transition(0);
|
32681 | $pageContentEl[0].scrollTop = scrollTop + titleLargeHeight;
|
32682 | setTimeout(function () {
|
32683 | $pageContentEl.transition('');
|
32684 | }, 200);
|
32685 | }
|
32686 | }
|
32687 |
|
32688 | $pageContentEl.removeClass('with-searchbar-expandable-enabled').addClass('with-searchbar-expandable-closing');
|
32689 | }
|
32690 |
|
32691 | if (app.theme === 'md' && $navbarEl.length) {
|
32692 | $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');
|
32693 | sb.$el.transitionEnd(function () {
|
32694 | $navbarEl.removeClass('with-searchbar-expandable-closing');
|
32695 | });
|
32696 | } else {
|
32697 | $navbarEl.removeClass('with-searchbar-expandable-enabled with-searchbar-expandable-enabled-no-transition').addClass('with-searchbar-expandable-closing');
|
32698 | sb.$el.transitionEnd(function () {
|
32699 | $navbarEl.removeClass('with-searchbar-expandable-closing');
|
32700 | });
|
32701 |
|
32702 | if (sb.$pageEl) {
|
32703 | sb.$pageEl.find('.page-content').trigger('scroll');
|
32704 | }
|
32705 | }
|
32706 | }
|
32707 |
|
32708 | if (!sb.expandable && sb.$disableButtonEl && sb.$disableButtonEl.length > 0 && app.theme !== 'md') {
|
32709 | sb.$disableButtonEl.css("margin-" + (app.rtl ? 'left' : 'right'), -sb.disableButtonEl.offsetWidth + "px");
|
32710 | }
|
32711 |
|
32712 | if (sb.$backdropEl && (sb.$searchContainer && sb.$searchContainer.length || sb.params.customSearch)) {
|
32713 | sb.backdropHide();
|
32714 | }
|
32715 |
|
32716 | sb.enabled = false;
|
32717 | sb.$inputEl.blur();
|
32718 | if (sb.$hideOnEnableEl) sb.$hideOnEnableEl.removeClass('hidden-by-searchbar');
|
32719 | sb.$el.trigger('searchbar:disable');
|
32720 | sb.emit('local::disable searchbarDisable', sb);
|
32721 | return sb;
|
32722 | };
|
32723 |
|
32724 | _proto.toggle = function toggle() {
|
32725 | var sb = this;
|
32726 | if (sb.enabled) sb.disable();else sb.enable(true);
|
32727 | return sb;
|
32728 | };
|
32729 |
|
32730 | _proto.backdropShow = function backdropShow() {
|
32731 | var sb = this;
|
32732 |
|
32733 | if (sb.$backdropEl) {
|
32734 | sb.$backdropEl.addClass('searchbar-backdrop-in');
|
32735 | }
|
32736 |
|
32737 | return sb;
|
32738 | };
|
32739 |
|
32740 | _proto.backdropHide = function backdropHide() {
|
32741 | var sb = this;
|
32742 |
|
32743 | if (sb.$backdropEl) {
|
32744 | sb.$backdropEl.removeClass('searchbar-backdrop-in');
|
32745 | }
|
32746 |
|
32747 | return sb;
|
32748 | };
|
32749 |
|
32750 | _proto.search = function search(query, internal) {
|
32751 | var sb = this;
|
32752 | sb.previousQuery = sb.query || '';
|
32753 | if (query === sb.previousQuery) return sb;
|
32754 |
|
32755 | if (!internal) {
|
32756 | if (!sb.enabled) {
|
32757 | sb.enable();
|
32758 | }
|
32759 |
|
32760 | sb.$inputEl.val(query);
|
32761 | sb.$inputEl.trigger('input');
|
32762 | }
|
32763 |
|
32764 | sb.query = query;
|
32765 | sb.value = query;
|
32766 | var $searchContainer = sb.$searchContainer,
|
32767 | $el = sb.$el,
|
32768 | $foundEl = sb.$foundEl,
|
32769 | $notFoundEl = sb.$notFoundEl,
|
32770 | $hideOnSearchEl = sb.$hideOnSearchEl,
|
32771 | isVirtualList = sb.isVirtualList;
|
32772 |
|
32773 | if (query.length > 0 && $hideOnSearchEl) {
|
32774 | $hideOnSearchEl.addClass('hidden-by-searchbar');
|
32775 | } else if ($hideOnSearchEl) {
|
32776 | $hideOnSearchEl.removeClass('hidden-by-searchbar');
|
32777 | }
|
32778 |
|
32779 |
|
32780 | if ($searchContainer && $searchContainer.length && $el.hasClass('searchbar-enabled') || sb.params.customSearch && $el.hasClass('searchbar-enabled')) {
|
32781 | if (query.length === 0) {
|
32782 | sb.backdropShow();
|
32783 | } else {
|
32784 | sb.backdropHide();
|
32785 | }
|
32786 | }
|
32787 |
|
32788 | if (sb.params.customSearch) {
|
32789 | $el.trigger('searchbar:search', {
|
32790 | query: query,
|
32791 | previousQuery: sb.previousQuery
|
32792 | });
|
32793 | sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);
|
32794 | return sb;
|
32795 | }
|
32796 |
|
32797 | var foundItems = [];
|
32798 | var vlQuery;
|
32799 |
|
32800 | if (isVirtualList) {
|
32801 | sb.virtualList = $searchContainer[0].f7VirtualList;
|
32802 |
|
32803 | if (query.trim() === '') {
|
32804 | sb.virtualList.resetFilter();
|
32805 | if ($notFoundEl) $notFoundEl.hide();
|
32806 | if ($foundEl) $foundEl.show();
|
32807 | $el.trigger('searchbar:search', {
|
32808 | query: query,
|
32809 | previousQuery: sb.previousQuery
|
32810 | });
|
32811 | sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery);
|
32812 | return sb;
|
32813 | }
|
32814 |
|
32815 | vlQuery = sb.params.removeDiacritics ? removeDiacritics(query) : query;
|
32816 |
|
32817 | if (sb.virtualList.params.searchAll) {
|
32818 | foundItems = sb.virtualList.params.searchAll(vlQuery, sb.virtualList.items) || [];
|
32819 | } else if (sb.virtualList.params.searchByItem) {
|
32820 | for (var i = 0; i < sb.virtualList.items.length; i += 1) {
|
32821 | if (sb.virtualList.params.searchByItem(vlQuery, sb.virtualList.params.items[i], i)) {
|
32822 | foundItems.push(i);
|
32823 | }
|
32824 | }
|
32825 | }
|
32826 | } else {
|
32827 | var values;
|
32828 | if (sb.params.removeDiacritics) values = removeDiacritics(query.trim().toLowerCase()).split(' ');else {
|
32829 | values = query.trim().toLowerCase().split(' ');
|
32830 | }
|
32831 | $searchContainer.find(sb.params.searchItem).removeClass('hidden-by-searchbar').each(function (itemEl) {
|
32832 | var $itemEl = $(itemEl);
|
32833 | var compareWithText = [];
|
32834 | var $searchIn = sb.params.searchIn ? $itemEl.find(sb.params.searchIn) : $itemEl;
|
32835 |
|
32836 | if (sb.params.searchIn === sb.params.searchItem) {
|
32837 | $searchIn = $itemEl;
|
32838 | }
|
32839 |
|
32840 | $searchIn.each(function (searchInEl) {
|
32841 | var itemText = $(searchInEl).text().trim().toLowerCase();
|
32842 | if (sb.params.removeDiacritics) itemText = removeDiacritics(itemText);
|
32843 | compareWithText.push(itemText);
|
32844 | });
|
32845 | compareWithText = compareWithText.join(' ');
|
32846 | var wordsMatch = 0;
|
32847 |
|
32848 | for (var _i = 0; _i < values.length; _i += 1) {
|
32849 | if (compareWithText.indexOf(values[_i]) >= 0) wordsMatch += 1;
|
32850 | }
|
32851 |
|
32852 | if (wordsMatch !== values.length && !(sb.params.ignore && $itemEl.is(sb.params.ignore))) {
|
32853 | $itemEl.addClass('hidden-by-searchbar');
|
32854 | } else {
|
32855 | foundItems.push($itemEl[0]);
|
32856 | }
|
32857 | });
|
32858 |
|
32859 | if (sb.params.hideDividers) {
|
32860 | $searchContainer.find(sb.params.searchGroupTitle).each(function (titleEl) {
|
32861 | var $titleEl = $(titleEl);
|
32862 | var $nextElements = $titleEl.nextAll(sb.params.searchItem);
|
32863 | var hide = true;
|
32864 |
|
32865 | for (var _i2 = 0; _i2 < $nextElements.length; _i2 += 1) {
|
32866 | var $nextEl = $nextElements.eq(_i2);
|
32867 | if ($nextEl.is(sb.params.searchGroupTitle)) break;
|
32868 |
|
32869 | if (!$nextEl.hasClass('hidden-by-searchbar')) {
|
32870 | hide = false;
|
32871 | }
|
32872 | }
|
32873 |
|
32874 | var ignore = sb.params.ignore && $titleEl.is(sb.params.ignore);
|
32875 | if (hide && !ignore) $titleEl.addClass('hidden-by-searchbar');else $titleEl.removeClass('hidden-by-searchbar');
|
32876 | });
|
32877 | }
|
32878 |
|
32879 | if (sb.params.hideGroups) {
|
32880 | $searchContainer.find(sb.params.searchGroup).each(function (groupEl) {
|
32881 | var $groupEl = $(groupEl);
|
32882 | var ignore = sb.params.ignore && $groupEl.is(sb.params.ignore);
|
32883 |
|
32884 | var notHidden = $groupEl.find(sb.params.searchItem).filter(function (el) {
|
32885 | return !$(el).hasClass('hidden-by-searchbar');
|
32886 | });
|
32887 |
|
32888 | if (notHidden.length === 0 && !ignore) {
|
32889 | $groupEl.addClass('hidden-by-searchbar');
|
32890 | } else {
|
32891 | $groupEl.removeClass('hidden-by-searchbar');
|
32892 | }
|
32893 | });
|
32894 | }
|
32895 | }
|
32896 |
|
32897 | if (foundItems.length === 0) {
|
32898 | if ($notFoundEl) $notFoundEl.show();
|
32899 | if ($foundEl) $foundEl.hide();
|
32900 | } else {
|
32901 | if ($notFoundEl) $notFoundEl.hide();
|
32902 | if ($foundEl) $foundEl.show();
|
32903 | }
|
32904 |
|
32905 | if (isVirtualList && sb.virtualList) {
|
32906 | sb.virtualList.filterItems(foundItems);
|
32907 | }
|
32908 |
|
32909 | $el.trigger('searchbar:search', {
|
32910 | query: query,
|
32911 | previousQuery: sb.previousQuery,
|
32912 | foundItems: foundItems
|
32913 | });
|
32914 | sb.emit('local::search searchbarSearch', sb, query, sb.previousQuery, foundItems);
|
32915 | return sb;
|
32916 | };
|
32917 |
|
32918 | _proto.init = function init() {
|
32919 | var sb = this;
|
32920 | if (sb.expandable && sb.$el) sb.$el.addClass('searchbar-expandable');
|
32921 | if (sb.inline && sb.$el) sb.$el.addClass('searchbar-inline');
|
32922 | sb.attachEvents();
|
32923 | };
|
32924 |
|
32925 | _proto.destroy = function destroy() {
|
32926 | var sb = this;
|
32927 | sb.emit('local::beforeDestroy searchbarBeforeDestroy', sb);
|
32928 | sb.$el.trigger('searchbar:beforedestroy');
|
32929 | sb.detachEvents();
|
32930 |
|
32931 | if (sb.$el[0]) {
|
32932 | sb.$el[0].f7Searchbar = null;
|
32933 | delete sb.$el[0].f7Searchbar;
|
32934 | }
|
32935 |
|
32936 | deleteProps$1(sb);
|
32937 | };
|
32938 |
|
32939 | return Searchbar;
|
32940 | }(Framework7Class);
|
32941 |
|
32942 | var Searchbar = {
|
32943 | name: 'searchbar',
|
32944 | static: {
|
32945 | Searchbar: Searchbar$1
|
32946 | },
|
32947 | create: function create() {
|
32948 | var app = this;
|
32949 | app.searchbar = ConstructorMethods({
|
32950 | defaultSelector: '.searchbar',
|
32951 | constructor: Searchbar$1,
|
32952 | app: app,
|
32953 | domProp: 'f7Searchbar',
|
32954 | addMethods: 'clear enable disable toggle search'.split(' ')
|
32955 | });
|
32956 | },
|
32957 | on: {
|
32958 | tabMounted: function tabMounted(tabEl) {
|
32959 | var app = this;
|
32960 | $(tabEl).find('.searchbar-init').each(function (searchbarEl) {
|
32961 | var $searchbarEl = $(searchbarEl);
|
32962 | app.searchbar.create(extend$1($searchbarEl.dataset(), {
|
32963 | el: searchbarEl
|
32964 | }));
|
32965 | });
|
32966 | },
|
32967 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
32968 | $(tabEl).find('.searchbar-init').each(function (searchbarEl) {
|
32969 | if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {
|
32970 | searchbarEl.f7Searchbar.destroy();
|
32971 | }
|
32972 | });
|
32973 | },
|
32974 | pageInit: function pageInit(page) {
|
32975 | var app = this;
|
32976 | page.$el.find('.searchbar-init').each(function (searchbarEl) {
|
32977 | var $searchbarEl = $(searchbarEl);
|
32978 | app.searchbar.create(extend$1($searchbarEl.dataset(), {
|
32979 | el: searchbarEl
|
32980 | }));
|
32981 | });
|
32982 |
|
32983 | if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {
|
32984 | page.$navbarEl.find('.searchbar-init').each(function (searchbarEl) {
|
32985 | var $searchbarEl = $(searchbarEl);
|
32986 | app.searchbar.create(extend$1($searchbarEl.dataset(), {
|
32987 | el: searchbarEl
|
32988 | }));
|
32989 | });
|
32990 | }
|
32991 | },
|
32992 | pageBeforeRemove: function pageBeforeRemove(page) {
|
32993 | var app = this;
|
32994 | page.$el.find('.searchbar-init').each(function (searchbarEl) {
|
32995 | if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {
|
32996 | searchbarEl.f7Searchbar.destroy();
|
32997 | }
|
32998 | });
|
32999 |
|
33000 | if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {
|
33001 | page.$navbarEl.find('.searchbar-init').each(function (searchbarEl) {
|
33002 | if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {
|
33003 | searchbarEl.f7Searchbar.destroy();
|
33004 | }
|
33005 | });
|
33006 | }
|
33007 | }
|
33008 | },
|
33009 | clicks: {
|
33010 | '.searchbar-clear': function clear($clickedEl, data) {
|
33011 | if (data === void 0) {
|
33012 | data = {};
|
33013 | }
|
33014 |
|
33015 | var app = this;
|
33016 | var sb = app.searchbar.get(data.searchbar);
|
33017 | if (sb) sb.clear();
|
33018 | },
|
33019 | '.searchbar-enable': function enable($clickedEl, data) {
|
33020 | if (data === void 0) {
|
33021 | data = {};
|
33022 | }
|
33023 |
|
33024 | var app = this;
|
33025 | var sb = app.searchbar.get(data.searchbar);
|
33026 | if (sb) sb.enable(true);
|
33027 | },
|
33028 | '.searchbar-disable': function disable($clickedEl, data) {
|
33029 | if (data === void 0) {
|
33030 | data = {};
|
33031 | }
|
33032 |
|
33033 | var app = this;
|
33034 | var sb = app.searchbar.get(data.searchbar);
|
33035 | if (sb) sb.disable();
|
33036 | },
|
33037 | '.searchbar-toggle': function toggle($clickedEl, data) {
|
33038 | if (data === void 0) {
|
33039 | data = {};
|
33040 | }
|
33041 |
|
33042 | var app = this;
|
33043 | var sb = app.searchbar.get(data.searchbar);
|
33044 | if (sb) sb.toggle();
|
33045 | }
|
33046 | },
|
33047 | vnode: {
|
33048 | 'searchbar-init': {
|
33049 | insert: function insert(vnode) {
|
33050 | var app = this;
|
33051 | var searchbarEl = vnode.elm;
|
33052 | var $searchbarEl = $(searchbarEl);
|
33053 | app.searchbar.create(extend$1($searchbarEl.dataset(), {
|
33054 | el: searchbarEl
|
33055 | }));
|
33056 | },
|
33057 | destroy: function destroy(vnode) {
|
33058 | var searchbarEl = vnode.elm;
|
33059 |
|
33060 | if (searchbarEl.f7Searchbar && searchbarEl.f7Searchbar.destroy) {
|
33061 | searchbarEl.f7Searchbar.destroy();
|
33062 | }
|
33063 | }
|
33064 | }
|
33065 | }
|
33066 | };
|
33067 |
|
33068 | var Messages$1 = function (_Framework7Class) {
|
33069 | _inheritsLoose(Messages, _Framework7Class);
|
33070 |
|
33071 | function Messages(app, params) {
|
33072 | var _this;
|
33073 |
|
33074 | if (params === void 0) {
|
33075 | params = {};
|
33076 | }
|
33077 |
|
33078 | _this = _Framework7Class.call(this, params, [app]) || this;
|
33079 |
|
33080 | var m = _assertThisInitialized(_this);
|
33081 |
|
33082 | var defaults = {
|
33083 | autoLayout: true,
|
33084 | messages: [],
|
33085 | newMessagesFirst: false,
|
33086 | scrollMessages: true,
|
33087 | scrollMessagesOnEdge: true,
|
33088 | firstMessageRule: undefined,
|
33089 | lastMessageRule: undefined,
|
33090 | tailMessageRule: undefined,
|
33091 | sameNameMessageRule: undefined,
|
33092 | sameHeaderMessageRule: undefined,
|
33093 | sameFooterMessageRule: undefined,
|
33094 | sameAvatarMessageRule: undefined,
|
33095 | customClassMessageRule: undefined,
|
33096 | renderMessage: undefined
|
33097 | };
|
33098 |
|
33099 | m.useModulesParams(defaults);
|
33100 | m.params = extend$1(defaults, params);
|
33101 | var $el = $(params.el).eq(0);
|
33102 | if ($el.length === 0) return m || _assertThisInitialized(_this);
|
33103 | if ($el[0].f7Messages) return $el[0].f7Messages || _assertThisInitialized(_this);
|
33104 | $el[0].f7Messages = m;
|
33105 | var $pageContentEl = $el.closest('.page-content').eq(0);
|
33106 | extend$1(m, {
|
33107 | messages: m.params.messages,
|
33108 | $el: $el,
|
33109 | el: $el[0],
|
33110 | $pageContentEl: $pageContentEl,
|
33111 | pageContentEl: $pageContentEl[0]
|
33112 | });
|
33113 |
|
33114 | m.useModules();
|
33115 |
|
33116 | m.init();
|
33117 | return m || _assertThisInitialized(_this);
|
33118 | }
|
33119 |
|
33120 |
|
33121 | var _proto = Messages.prototype;
|
33122 |
|
33123 | _proto.getMessageData = function getMessageData(messageEl) {
|
33124 | var $messageEl = $(messageEl);
|
33125 | var data = {
|
33126 | name: $messageEl.find('.message-name').html(),
|
33127 | header: $messageEl.find('.message-header').html(),
|
33128 | textHeader: $messageEl.find('.message-text-header').html(),
|
33129 | textFooter: $messageEl.find('.message-text-footer').html(),
|
33130 | footer: $messageEl.find('.message-footer').html(),
|
33131 | isTitle: $messageEl.hasClass('messages-title'),
|
33132 | type: $messageEl.hasClass('message-sent') ? 'sent' : 'received',
|
33133 | text: $messageEl.find('.message-text').html(),
|
33134 | image: $messageEl.find('.message-image').html(),
|
33135 | imageSrc: $messageEl.find('.message-image img').attr('src'),
|
33136 | typing: $messageEl.hasClass('message-typing')
|
33137 | };
|
33138 |
|
33139 | if (data.isTitle) {
|
33140 | data.text = $messageEl.html();
|
33141 | }
|
33142 |
|
33143 | if (data.text && data.textHeader) {
|
33144 | data.text = data.text.replace("<div class=\"message-text-header\">" + data.textHeader + "</div>", '');
|
33145 | }
|
33146 |
|
33147 | if (data.text && data.textFooter) {
|
33148 | data.text = data.text.replace("<div class=\"message-text-footer\">" + data.textFooter + "</div>", '');
|
33149 | }
|
33150 |
|
33151 | var avatar = $messageEl.find('.message-avatar').css('background-image');
|
33152 | if (avatar === 'none' || avatar === '') avatar = undefined;
|
33153 |
|
33154 | if (avatar && typeof avatar === 'string') {
|
33155 | avatar = avatar.replace('url(', '').replace(')', '').replace(/"/g, '').replace(/'/g, '');
|
33156 | } else {
|
33157 | avatar = undefined;
|
33158 | }
|
33159 |
|
33160 | data.avatar = avatar;
|
33161 | return data;
|
33162 | };
|
33163 |
|
33164 | _proto.getMessagesData = function getMessagesData() {
|
33165 | var m = this;
|
33166 | var data = [];
|
33167 | m.$el.find('.message, .messages-title').each(function (messageEl) {
|
33168 | data.push(m.getMessageData(messageEl));
|
33169 | });
|
33170 | return data;
|
33171 | };
|
33172 |
|
33173 | _proto.renderMessage = function renderMessage(messageToRender) {
|
33174 | var m = this;
|
33175 | var message = extend$1({
|
33176 | type: 'sent',
|
33177 | attrs: {}
|
33178 | }, messageToRender);
|
33179 |
|
33180 | if (m.params.renderMessage) {
|
33181 | return m.params.renderMessage.call(m, message);
|
33182 | }
|
33183 |
|
33184 | if (message.isTitle) {
|
33185 | return "<div class=\"messages-title\">" + message.text + "</div>";
|
33186 | }
|
33187 |
|
33188 | return $jsx("div", _extends$j({
|
33189 | class: "message message-" + message.type + " " + (message.isTyping ? 'message-typing' : '') + " " + (message.cssClass || '')
|
33190 | }, message.attrs), message.avatar && $jsx("div", {
|
33191 | class: "message-avatar",
|
33192 | style: "background-image:url(" + message.avatar + ")"
|
33193 | }), $jsx("div", {
|
33194 | class: "message-content"
|
33195 | }, message.name && $jsx("div", {
|
33196 | class: "message-name"
|
33197 | }, message.name), message.header && $jsx("div", {
|
33198 | class: "message-header"
|
33199 | }, message.header), $jsx("div", {
|
33200 | class: "message-bubble"
|
33201 | }, message.textHeader && $jsx("div", {
|
33202 | class: "message-text-header"
|
33203 | }, message.textHeader), message.image && $jsx("div", {
|
33204 | class: "message-image"
|
33205 | }, message.image), message.imageSrc && !message.image && $jsx("div", {
|
33206 | class: "message-image"
|
33207 | }, $jsx("img", {
|
33208 | src: message.imageSrc
|
33209 | })), (message.text || message.isTyping) && $jsx("div", {
|
33210 | class: "message-text"
|
33211 | }, message.text || '', message.isTyping && $jsx("div", {
|
33212 | class: "message-typing-indicator"
|
33213 | }, $jsx("div", null), $jsx("div", null), $jsx("div", null))), message.textFooter && $jsx("div", {
|
33214 | class: "message-text-footer"
|
33215 | }, message.textFooter)), message.footer && $jsx("div", {
|
33216 | class: "message-footer"
|
33217 | }, message.footer)));
|
33218 | };
|
33219 |
|
33220 | _proto.renderMessages = function renderMessages(messagesToRender, method) {
|
33221 | if (messagesToRender === void 0) {
|
33222 | messagesToRender = this.messages;
|
33223 | }
|
33224 |
|
33225 | if (method === void 0) {
|
33226 | method = this.params.newMessagesFirst ? 'prepend' : 'append';
|
33227 | }
|
33228 |
|
33229 | var m = this;
|
33230 | var html = messagesToRender.map(function (message) {
|
33231 | return m.renderMessage(message);
|
33232 | }).join('');
|
33233 | m.$el[method](html);
|
33234 | };
|
33235 |
|
33236 | _proto.isFirstMessage = function isFirstMessage() {
|
33237 | var _m$params;
|
33238 |
|
33239 | var m = this;
|
33240 | if (m.params.firstMessageRule) return (_m$params = m.params).firstMessageRule.apply(_m$params, arguments);
|
33241 | return false;
|
33242 | };
|
33243 |
|
33244 | _proto.isLastMessage = function isLastMessage() {
|
33245 | var _m$params2;
|
33246 |
|
33247 | var m = this;
|
33248 | if (m.params.lastMessageRule) return (_m$params2 = m.params).lastMessageRule.apply(_m$params2, arguments);
|
33249 | return false;
|
33250 | };
|
33251 |
|
33252 | _proto.isTailMessage = function isTailMessage() {
|
33253 | var _m$params3;
|
33254 |
|
33255 | var m = this;
|
33256 | if (m.params.tailMessageRule) return (_m$params3 = m.params).tailMessageRule.apply(_m$params3, arguments);
|
33257 | return false;
|
33258 | };
|
33259 |
|
33260 | _proto.isSameNameMessage = function isSameNameMessage() {
|
33261 | var _m$params4;
|
33262 |
|
33263 | var m = this;
|
33264 | if (m.params.sameNameMessageRule) return (_m$params4 = m.params).sameNameMessageRule.apply(_m$params4, arguments);
|
33265 | return false;
|
33266 | };
|
33267 |
|
33268 | _proto.isSameHeaderMessage = function isSameHeaderMessage() {
|
33269 | var _m$params5;
|
33270 |
|
33271 | var m = this;
|
33272 | if (m.params.sameHeaderMessageRule) return (_m$params5 = m.params).sameHeaderMessageRule.apply(_m$params5, arguments);
|
33273 | return false;
|
33274 | };
|
33275 |
|
33276 | _proto.isSameFooterMessage = function isSameFooterMessage() {
|
33277 | var _m$params6;
|
33278 |
|
33279 | var m = this;
|
33280 | if (m.params.sameFooterMessageRule) return (_m$params6 = m.params).sameFooterMessageRule.apply(_m$params6, arguments);
|
33281 | return false;
|
33282 | };
|
33283 |
|
33284 | _proto.isSameAvatarMessage = function isSameAvatarMessage() {
|
33285 | var _m$params7;
|
33286 |
|
33287 | var m = this;
|
33288 | if (m.params.sameAvatarMessageRule) return (_m$params7 = m.params).sameAvatarMessageRule.apply(_m$params7, arguments);
|
33289 | return false;
|
33290 | };
|
33291 |
|
33292 | _proto.isCustomClassMessage = function isCustomClassMessage() {
|
33293 | var _m$params8;
|
33294 |
|
33295 | var m = this;
|
33296 | if (m.params.customClassMessageRule) return (_m$params8 = m.params).customClassMessageRule.apply(_m$params8, arguments);
|
33297 | return undefined;
|
33298 | };
|
33299 |
|
33300 | _proto.layout = function layout() {
|
33301 | var m = this;
|
33302 | m.$el.find('.message, .messages-title').each(function (messageEl, index) {
|
33303 | var $messageEl = $(messageEl);
|
33304 |
|
33305 | if (!m.messages) {
|
33306 | m.messages = m.getMessagesData();
|
33307 | }
|
33308 |
|
33309 | var classes = [];
|
33310 | var message = m.messages[index];
|
33311 | var previousMessage = m.messages[index - 1];
|
33312 | var nextMessage = m.messages[index + 1];
|
33313 |
|
33314 | if (m.isFirstMessage(message, previousMessage, nextMessage)) {
|
33315 | classes.push('message-first');
|
33316 | }
|
33317 |
|
33318 | if (m.isLastMessage(message, previousMessage, nextMessage)) {
|
33319 | classes.push('message-last');
|
33320 | }
|
33321 |
|
33322 | if (m.isTailMessage(message, previousMessage, nextMessage)) {
|
33323 | classes.push('message-tail');
|
33324 | }
|
33325 |
|
33326 | if (m.isSameNameMessage(message, previousMessage, nextMessage)) {
|
33327 | classes.push('message-same-name');
|
33328 | }
|
33329 |
|
33330 | if (m.isSameHeaderMessage(message, previousMessage, nextMessage)) {
|
33331 | classes.push('message-same-header');
|
33332 | }
|
33333 |
|
33334 | if (m.isSameFooterMessage(message, previousMessage, nextMessage)) {
|
33335 | classes.push('message-same-footer');
|
33336 | }
|
33337 |
|
33338 | if (m.isSameAvatarMessage(message, previousMessage, nextMessage)) {
|
33339 | classes.push('message-same-avatar');
|
33340 | }
|
33341 |
|
33342 | var customMessageClasses = m.isCustomClassMessage(message, previousMessage, nextMessage);
|
33343 |
|
33344 | if (customMessageClasses && customMessageClasses.length) {
|
33345 | if (typeof customMessageClasses === 'string') {
|
33346 | customMessageClasses = customMessageClasses.split(' ');
|
33347 | }
|
33348 |
|
33349 | customMessageClasses.forEach(function (customClass) {
|
33350 | classes.push(customClass);
|
33351 | });
|
33352 | }
|
33353 |
|
33354 | $messageEl.removeClass('message-first message-last message-tail message-same-name message-same-header message-same-footer message-same-avatar');
|
33355 | classes.forEach(function (className) {
|
33356 | $messageEl.addClass(className);
|
33357 | });
|
33358 | });
|
33359 | };
|
33360 |
|
33361 | _proto.clear = function clear() {
|
33362 | var m = this;
|
33363 | m.messages = [];
|
33364 | m.$el.html('');
|
33365 | };
|
33366 |
|
33367 | _proto.removeMessage = function removeMessage(messageToRemove, layout) {
|
33368 | if (layout === void 0) {
|
33369 | layout = true;
|
33370 | }
|
33371 |
|
33372 | var m = this;
|
33373 |
|
33374 | var index;
|
33375 | var $el;
|
33376 |
|
33377 | if (typeof messageToRemove === 'number') {
|
33378 | index = messageToRemove;
|
33379 | $el = m.$el.find('.message, .messages-title').eq(index);
|
33380 | } else if (m.messages && m.messages.indexOf(messageToRemove) >= 0) {
|
33381 | index = m.messages.indexOf(messageToRemove);
|
33382 | $el = m.$el.children().eq(index);
|
33383 | } else {
|
33384 | $el = $(messageToRemove);
|
33385 | index = $el.index();
|
33386 | }
|
33387 |
|
33388 | if ($el.length === 0) {
|
33389 | return m;
|
33390 | }
|
33391 |
|
33392 | $el.remove();
|
33393 | m.messages.splice(index, 1);
|
33394 | if (m.params.autoLayout && layout) m.layout();
|
33395 | return m;
|
33396 | };
|
33397 |
|
33398 | _proto.removeMessages = function removeMessages(messagesToRemove, layout) {
|
33399 | if (layout === void 0) {
|
33400 | layout = true;
|
33401 | }
|
33402 |
|
33403 | var m = this;
|
33404 |
|
33405 | if (Array.isArray(messagesToRemove)) {
|
33406 | var messagesToRemoveEls = [];
|
33407 | messagesToRemove.forEach(function (messageToRemoveIndex) {
|
33408 | messagesToRemoveEls.push(m.$el.find('.message, .messages-title').eq(messageToRemoveIndex));
|
33409 | });
|
33410 | messagesToRemoveEls.forEach(function (messageToRemove) {
|
33411 | m.removeMessage(messageToRemove, false);
|
33412 | });
|
33413 | } else {
|
33414 | $(messagesToRemove).each(function (messageToRemove) {
|
33415 | m.removeMessage(messageToRemove, false);
|
33416 | });
|
33417 | }
|
33418 |
|
33419 | if (m.params.autoLayout && layout) m.layout();
|
33420 | return m;
|
33421 | };
|
33422 |
|
33423 | _proto.addMessage = function addMessage() {
|
33424 | var m = this;
|
33425 | var messageToAdd;
|
33426 | var animate;
|
33427 | var method;
|
33428 |
|
33429 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
33430 | args[_key] = arguments[_key];
|
33431 | }
|
33432 |
|
33433 | if (typeof args[1] === 'boolean') {
|
33434 | messageToAdd = args[0];
|
33435 | animate = args[1];
|
33436 | method = args[2];
|
33437 | } else {
|
33438 | messageToAdd = args[0];
|
33439 | method = args[1];
|
33440 | animate = args[2];
|
33441 | }
|
33442 |
|
33443 | if (typeof animate === 'undefined') {
|
33444 | animate = true;
|
33445 | }
|
33446 |
|
33447 | if (typeof method === 'undefined') {
|
33448 | method = m.params.newMessagesFirst ? 'prepend' : 'append';
|
33449 | }
|
33450 |
|
33451 | return m.addMessages([messageToAdd], animate, method);
|
33452 | };
|
33453 |
|
33454 | _proto.setScrollData = function setScrollData() {
|
33455 | var m = this;
|
33456 |
|
33457 | var scrollHeightBefore = m.pageContentEl.scrollHeight;
|
33458 | var heightBefore = m.pageContentEl.offsetHeight;
|
33459 | var scrollBefore = m.pageContentEl.scrollTop;
|
33460 | m.scrollData = {
|
33461 | scrollHeightBefore: scrollHeightBefore,
|
33462 | heightBefore: heightBefore,
|
33463 | scrollBefore: scrollBefore
|
33464 | };
|
33465 | return {
|
33466 | scrollHeightBefore: scrollHeightBefore,
|
33467 | heightBefore: heightBefore,
|
33468 | scrollBefore: scrollBefore
|
33469 | };
|
33470 | };
|
33471 |
|
33472 | _proto.addMessages = function addMessages() {
|
33473 | var m = this;
|
33474 | var messagesToAdd;
|
33475 | var animate;
|
33476 | var method;
|
33477 |
|
33478 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
33479 | args[_key2] = arguments[_key2];
|
33480 | }
|
33481 |
|
33482 | if (typeof args[1] === 'boolean') {
|
33483 | messagesToAdd = args[0];
|
33484 | animate = args[1];
|
33485 | method = args[2];
|
33486 | } else {
|
33487 | messagesToAdd = args[0];
|
33488 | method = args[1];
|
33489 | animate = args[2];
|
33490 | }
|
33491 |
|
33492 | if (typeof animate === 'undefined') {
|
33493 | animate = true;
|
33494 | }
|
33495 |
|
33496 | if (typeof method === 'undefined') {
|
33497 | method = m.params.newMessagesFirst ? 'prepend' : 'append';
|
33498 | }
|
33499 |
|
33500 | var _m$setScrollData = m.setScrollData(),
|
33501 | scrollHeightBefore = _m$setScrollData.scrollHeightBefore,
|
33502 | scrollBefore = _m$setScrollData.scrollBefore;
|
33503 |
|
33504 |
|
33505 | var messagesHTML = '';
|
33506 | var typingMessage = m.messages.filter(function (el) {
|
33507 | return el.isTyping;
|
33508 | })[0];
|
33509 | messagesToAdd.forEach(function (messageToAdd) {
|
33510 | if (typingMessage) {
|
33511 | if (method === 'append') {
|
33512 | m.messages.splice(m.messages.indexOf(typingMessage), 0, messageToAdd);
|
33513 | } else {
|
33514 | m.messages.splice(m.messages.indexOf(typingMessage) + 1, 0, messageToAdd);
|
33515 | }
|
33516 | } else {
|
33517 | m.messages[method === 'append' ? 'push' : 'unshift'](messageToAdd);
|
33518 | }
|
33519 |
|
33520 | messagesHTML += m.renderMessage(messageToAdd);
|
33521 | });
|
33522 | var $messagesEls = $(messagesHTML);
|
33523 |
|
33524 | if (animate) {
|
33525 | if (method === 'append' && !m.params.newMessagesFirst) {
|
33526 | $messagesEls.addClass('message-appear-from-bottom');
|
33527 | }
|
33528 |
|
33529 | if (method === 'prepend' && m.params.newMessagesFirst) {
|
33530 | $messagesEls.addClass('message-appear-from-top');
|
33531 | }
|
33532 | }
|
33533 |
|
33534 | if (typingMessage) {
|
33535 | if (method === 'append') {
|
33536 | $messagesEls.insertBefore(m.$el.find('.message-typing'));
|
33537 | } else {
|
33538 | $messagesEls.insertAfter(m.$el.find('.message-typing'));
|
33539 | }
|
33540 | } else {
|
33541 | m.$el[method]($messagesEls);
|
33542 | }
|
33543 |
|
33544 |
|
33545 | if (m.params.autoLayout) m.layout();
|
33546 |
|
33547 | if (method === 'prepend' && !typingMessage) {
|
33548 | m.pageContentEl.scrollTop = scrollBefore + (m.pageContentEl.scrollHeight - scrollHeightBefore);
|
33549 | }
|
33550 |
|
33551 | if (m.params.scrollMessages && (method === 'append' && !m.params.newMessagesFirst || method === 'prepend' && m.params.newMessagesFirst && !typingMessage)) {
|
33552 | m.scrollWithEdgeCheck(animate);
|
33553 | }
|
33554 |
|
33555 | return m;
|
33556 | };
|
33557 |
|
33558 | _proto.showTyping = function showTyping(message) {
|
33559 | if (message === void 0) {
|
33560 | message = {};
|
33561 | }
|
33562 |
|
33563 | var m = this;
|
33564 | var typingMessage = m.messages.filter(function (el) {
|
33565 | return el.isTyping;
|
33566 | })[0];
|
33567 |
|
33568 | if (typingMessage) {
|
33569 | m.removeMessage(m.messages.indexOf(typingMessage));
|
33570 | }
|
33571 |
|
33572 | m.addMessage(extend$1({
|
33573 | type: 'received',
|
33574 | isTyping: true
|
33575 | }, message));
|
33576 | return m;
|
33577 | };
|
33578 |
|
33579 | _proto.hideTyping = function hideTyping() {
|
33580 | var m = this;
|
33581 | var typingMessageIndex;
|
33582 | var typingFound;
|
33583 | m.messages.forEach(function (message, index) {
|
33584 | if (message.isTyping) typingMessageIndex = index;
|
33585 | });
|
33586 |
|
33587 | if (typeof typingMessageIndex !== 'undefined') {
|
33588 | if (m.$el.find('.message').eq(typingMessageIndex).hasClass('message-typing')) {
|
33589 | typingFound = true;
|
33590 | m.removeMessage(typingMessageIndex);
|
33591 | }
|
33592 | }
|
33593 |
|
33594 | if (!typingFound) {
|
33595 | var $typingMessageEl = m.$el.find('.message-typing');
|
33596 |
|
33597 | if ($typingMessageEl.length) {
|
33598 | m.removeMessage($typingMessageEl);
|
33599 | }
|
33600 | }
|
33601 |
|
33602 | return m;
|
33603 | };
|
33604 |
|
33605 | _proto.scrollWithEdgeCheck = function scrollWithEdgeCheck(animate) {
|
33606 | var m = this;
|
33607 | var _m$scrollData = m.scrollData,
|
33608 | scrollBefore = _m$scrollData.scrollBefore,
|
33609 | scrollHeightBefore = _m$scrollData.scrollHeightBefore,
|
33610 | heightBefore = _m$scrollData.heightBefore;
|
33611 |
|
33612 | if (m.params.scrollMessagesOnEdge) {
|
33613 | var onEdge = false;
|
33614 |
|
33615 | if (m.params.newMessagesFirst && scrollBefore === 0) {
|
33616 | onEdge = true;
|
33617 | }
|
33618 |
|
33619 | if (!m.params.newMessagesFirst && scrollBefore - (scrollHeightBefore - heightBefore) >= -10) {
|
33620 | onEdge = true;
|
33621 | }
|
33622 |
|
33623 | if (onEdge) m.scroll(animate ? undefined : 0);
|
33624 | } else {
|
33625 | m.scroll(animate ? undefined : 0);
|
33626 | }
|
33627 | };
|
33628 |
|
33629 | _proto.scroll = function scroll(duration, scrollTop) {
|
33630 | if (duration === void 0) {
|
33631 | duration = 300;
|
33632 | }
|
33633 |
|
33634 | var m = this;
|
33635 | var currentScroll = m.pageContentEl.scrollTop;
|
33636 | var newScrollTop;
|
33637 | if (typeof scrollTop !== 'undefined') newScrollTop = scrollTop;else {
|
33638 | newScrollTop = m.params.newMessagesFirst ? 0 : m.pageContentEl.scrollHeight - m.pageContentEl.offsetHeight;
|
33639 | if (newScrollTop === currentScroll) return m;
|
33640 | }
|
33641 | m.$pageContentEl.scrollTop(newScrollTop, duration);
|
33642 | return m;
|
33643 | };
|
33644 |
|
33645 | _proto.init = function init() {
|
33646 | var m = this;
|
33647 |
|
33648 | if (!m.messages || m.messages.length === 0) {
|
33649 | m.messages = m.getMessagesData();
|
33650 | }
|
33651 |
|
33652 | if (m.params.messages && m.params.messages.length) {
|
33653 | m.renderMessages();
|
33654 | }
|
33655 |
|
33656 | if (m.params.autoLayout) m.layout();
|
33657 | if (m.params.scrollMessages) m.scroll(0);
|
33658 | };
|
33659 |
|
33660 | _proto.destroy = function destroy() {
|
33661 | var m = this;
|
33662 | m.emit('local::beforeDestroy messagesBeforeDestroy', m);
|
33663 | m.$el.trigger('messages:beforedestroy');
|
33664 |
|
33665 | if (m.$el[0]) {
|
33666 | m.$el[0].f7Messages = null;
|
33667 | delete m.$el[0].f7Messages;
|
33668 | }
|
33669 |
|
33670 | deleteProps$1(m);
|
33671 | };
|
33672 |
|
33673 | return Messages;
|
33674 | }(Framework7Class);
|
33675 |
|
33676 | var Messages = {
|
33677 | name: 'messages',
|
33678 | static: {
|
33679 | Messages: Messages$1
|
33680 | },
|
33681 | create: function create() {
|
33682 | var app = this;
|
33683 | app.messages = ConstructorMethods({
|
33684 | defaultSelector: '.messages',
|
33685 | constructor: Messages$1,
|
33686 | app: app,
|
33687 | domProp: 'f7Messages',
|
33688 | addMethods: 'renderMessages layout scroll clear removeMessage removeMessages addMessage addMessages'.split(' ')
|
33689 | });
|
33690 | },
|
33691 | on: {
|
33692 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
33693 | var app = this;
|
33694 | $(tabEl).find('.messages-init').each(function (messagesEl) {
|
33695 | app.messages.destroy(messagesEl);
|
33696 | });
|
33697 | },
|
33698 | tabMounted: function tabMounted(tabEl) {
|
33699 | var app = this;
|
33700 | $(tabEl).find('.messages-init').each(function (messagesEl) {
|
33701 | app.messages.create({
|
33702 | el: messagesEl
|
33703 | });
|
33704 | });
|
33705 | },
|
33706 | pageBeforeRemove: function pageBeforeRemove(page) {
|
33707 | var app = this;
|
33708 | page.$el.find('.messages-init').each(function (messagesEl) {
|
33709 | app.messages.destroy(messagesEl);
|
33710 | });
|
33711 | },
|
33712 | pageInit: function pageInit(page) {
|
33713 | var app = this;
|
33714 | page.$el.find('.messages-init').each(function (messagesEl) {
|
33715 | app.messages.create({
|
33716 | el: messagesEl
|
33717 | });
|
33718 | });
|
33719 | }
|
33720 | },
|
33721 | vnode: {
|
33722 | 'messages-init': {
|
33723 | insert: function insert(vnode) {
|
33724 | var app = this;
|
33725 | var messagesEl = vnode.elm;
|
33726 | app.messages.create({
|
33727 | el: messagesEl
|
33728 | });
|
33729 | },
|
33730 | destroy: function destroy(vnode) {
|
33731 | var app = this;
|
33732 | var messagesEl = vnode.elm;
|
33733 | app.messages.destroy(messagesEl);
|
33734 | }
|
33735 | }
|
33736 | }
|
33737 | };
|
33738 |
|
33739 | var Messagebar$1 = function (_Framework7Class) {
|
33740 | _inheritsLoose(Messagebar, _Framework7Class);
|
33741 |
|
33742 | function Messagebar(app, params) {
|
33743 | var _this;
|
33744 |
|
33745 | if (params === void 0) {
|
33746 | params = {};
|
33747 | }
|
33748 |
|
33749 | _this = _Framework7Class.call(this, params, [app]) || this;
|
33750 |
|
33751 | var messagebar = _assertThisInitialized(_this);
|
33752 |
|
33753 | var defaults = {
|
33754 | top: false,
|
33755 | topOffset: 0,
|
33756 | bottomOffset: 0,
|
33757 | attachments: [],
|
33758 | renderAttachments: undefined,
|
33759 | renderAttachment: undefined,
|
33760 | maxHeight: null,
|
33761 | resizePage: true
|
33762 | };
|
33763 |
|
33764 | messagebar.useModulesParams(defaults);
|
33765 | messagebar.params = extend$1(defaults, params);
|
33766 |
|
33767 | var $el = $(messagebar.params.el);
|
33768 | if ($el.length === 0) return messagebar || _assertThisInitialized(_this);
|
33769 | if ($el[0].f7Messagebar) return $el[0].f7Messagebar || _assertThisInitialized(_this);
|
33770 | $el[0].f7Messagebar = messagebar;
|
33771 |
|
33772 | var $pageEl = $el.parents('.page').eq(0);
|
33773 | var $pageContentEl = $pageEl.find('.page-content').eq(0);
|
33774 |
|
33775 | var $areaEl = $el.find('.messagebar-area');
|
33776 |
|
33777 | var $textareaEl;
|
33778 |
|
33779 | if (messagebar.params.textareaEl) {
|
33780 | $textareaEl = $(messagebar.params.textareaEl);
|
33781 | } else {
|
33782 | $textareaEl = $el.find('textarea');
|
33783 | }
|
33784 |
|
33785 |
|
33786 | var $attachmentsEl = $el.find('.messagebar-attachments');
|
33787 | var $sheetEl = $el.find('.messagebar-sheet');
|
33788 |
|
33789 | if (messagebar.params.top) {
|
33790 | $el.addClass('messagebar-top');
|
33791 | }
|
33792 |
|
33793 | extend$1(messagebar, {
|
33794 | $el: $el,
|
33795 | el: $el[0],
|
33796 | $areaEl: $areaEl,
|
33797 | areaEl: $areaEl[0],
|
33798 | $textareaEl: $textareaEl,
|
33799 | textareaEl: $textareaEl[0],
|
33800 | $attachmentsEl: $attachmentsEl,
|
33801 | attachmentsEl: $attachmentsEl[0],
|
33802 | attachmentsVisible: $attachmentsEl.hasClass('messagebar-attachments-visible'),
|
33803 | $sheetEl: $sheetEl,
|
33804 | sheetEl: $sheetEl[0],
|
33805 | sheetVisible: $sheetEl.hasClass('messagebar-sheet-visible'),
|
33806 | $pageEl: $pageEl,
|
33807 | pageEl: $pageEl[0],
|
33808 | $pageContentEl: $pageContentEl,
|
33809 | pageContentEl: $pageContentEl,
|
33810 | top: $el.hasClass('messagebar-top') || messagebar.params.top,
|
33811 | attachments: []
|
33812 | });
|
33813 |
|
33814 | function onAppResize() {
|
33815 | if (messagebar.params.resizePage) {
|
33816 | messagebar.resizePage();
|
33817 | }
|
33818 | }
|
33819 |
|
33820 | function onSubmit(e) {
|
33821 | e.preventDefault();
|
33822 | }
|
33823 |
|
33824 | function onAttachmentClick(e) {
|
33825 | var index = $(this).index();
|
33826 |
|
33827 | if ($(e.target).closest('.messagebar-attachment-delete').length) {
|
33828 | $(this).trigger('messagebar:attachmentdelete', index);
|
33829 | messagebar.emit('local::attachmentDelete messagebarAttachmentDelete', messagebar, this, index);
|
33830 | } else {
|
33831 | $(this).trigger('messagebar:attachmentclick', index);
|
33832 | messagebar.emit('local::attachmentClick messagebarAttachmentClick', messagebar, this, index);
|
33833 | }
|
33834 | }
|
33835 |
|
33836 | function onTextareaChange() {
|
33837 | messagebar.checkEmptyState();
|
33838 | messagebar.$el.trigger('messagebar:change');
|
33839 | messagebar.emit('local::change messagebarChange', messagebar);
|
33840 | }
|
33841 |
|
33842 | function onTextareaFocus() {
|
33843 | messagebar.sheetHide();
|
33844 | messagebar.$el.addClass('messagebar-focused');
|
33845 | messagebar.$el.trigger('messagebar:focus');
|
33846 | messagebar.emit('local::focus messagebarFocus', messagebar);
|
33847 | }
|
33848 |
|
33849 | function onTextareaBlur() {
|
33850 | messagebar.$el.removeClass('messagebar-focused');
|
33851 | messagebar.$el.trigger('messagebar:blur');
|
33852 | messagebar.emit('local::blur messagebarBlur', messagebar);
|
33853 | }
|
33854 |
|
33855 | messagebar.attachEvents = function attachEvents() {
|
33856 | $el.on('textarea:resize', onAppResize);
|
33857 | $el.on('submit', onSubmit);
|
33858 | $el.on('click', '.messagebar-attachment', onAttachmentClick);
|
33859 | $textareaEl.on('change input', onTextareaChange);
|
33860 | $textareaEl.on('focus', onTextareaFocus);
|
33861 | $textareaEl.on('blur', onTextareaBlur);
|
33862 | app.on('resize', onAppResize);
|
33863 | };
|
33864 |
|
33865 | messagebar.detachEvents = function detachEvents() {
|
33866 | $el.off('textarea:resize', onAppResize);
|
33867 | $el.off('submit', onSubmit);
|
33868 | $el.off('click', '.messagebar-attachment', onAttachmentClick);
|
33869 | $textareaEl.off('change input', onTextareaChange);
|
33870 | $textareaEl.off('focus', onTextareaFocus);
|
33871 | $textareaEl.off('blur', onTextareaBlur);
|
33872 | app.off('resize', onAppResize);
|
33873 | };
|
33874 |
|
33875 |
|
33876 | messagebar.useModules();
|
33877 |
|
33878 | messagebar.init();
|
33879 | return messagebar || _assertThisInitialized(_this);
|
33880 | }
|
33881 |
|
33882 | var _proto = Messagebar.prototype;
|
33883 |
|
33884 | _proto.focus = function focus() {
|
33885 | var messagebar = this;
|
33886 | messagebar.$textareaEl.focus();
|
33887 | return messagebar;
|
33888 | };
|
33889 |
|
33890 | _proto.blur = function blur() {
|
33891 | var messagebar = this;
|
33892 | messagebar.$textareaEl.blur();
|
33893 | return messagebar;
|
33894 | };
|
33895 |
|
33896 | _proto.clear = function clear() {
|
33897 | var messagebar = this;
|
33898 | messagebar.$textareaEl.val('').trigger('change');
|
33899 | return messagebar;
|
33900 | };
|
33901 |
|
33902 | _proto.getValue = function getValue() {
|
33903 | var messagebar = this;
|
33904 | return messagebar.$textareaEl.val().trim();
|
33905 | };
|
33906 |
|
33907 | _proto.setValue = function setValue(value) {
|
33908 | var messagebar = this;
|
33909 | messagebar.$textareaEl.val(value).trigger('change');
|
33910 | return messagebar;
|
33911 | };
|
33912 |
|
33913 | _proto.setPlaceholder = function setPlaceholder(placeholder) {
|
33914 | var messagebar = this;
|
33915 | messagebar.$textareaEl.attr('placeholder', placeholder);
|
33916 | return messagebar;
|
33917 | };
|
33918 |
|
33919 | _proto.resizePage = function resizePage() {
|
33920 | var messagebar = this;
|
33921 | var params = messagebar.params,
|
33922 | $el = messagebar.$el,
|
33923 | top = messagebar.top,
|
33924 | $pageEl = messagebar.$pageEl,
|
33925 | $pageContentEl = messagebar.$pageContentEl,
|
33926 | $areaEl = messagebar.$areaEl,
|
33927 | $textareaEl = messagebar.$textareaEl,
|
33928 | $sheetEl = messagebar.$sheetEl,
|
33929 | $attachmentsEl = messagebar.$attachmentsEl;
|
33930 | var elHeight = $el[0].offsetHeight;
|
33931 | var maxHeight = params.maxHeight;
|
33932 |
|
33933 | if (top) {
|
33934 | |
33935 |
|
33936 |
|
33937 |
|
33938 |
|
33939 |
|
33940 |
|
33941 |
|
33942 |
|
33943 |
|
33944 |
|
33945 |
|
33946 |
|
33947 |
|
33948 | } else {
|
33949 | var currentPaddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);
|
33950 | var requiredPaddingBottom = elHeight + params.bottomOffset;
|
33951 |
|
33952 | if (requiredPaddingBottom !== currentPaddingBottom && $pageContentEl.length) {
|
33953 | var currentPaddingTop = parseInt($pageContentEl.css('padding-top'), 10);
|
33954 | var pageScrollHeight = $pageContentEl[0].scrollHeight;
|
33955 | var pageOffsetHeight = $pageContentEl[0].offsetHeight;
|
33956 | var pageScrollTop = $pageContentEl[0].scrollTop;
|
33957 | var scrollOnBottom = pageScrollTop === pageScrollHeight - pageOffsetHeight;
|
33958 |
|
33959 | if (!maxHeight) {
|
33960 | maxHeight = $pageEl[0].offsetHeight - currentPaddingTop - $sheetEl.outerHeight() - $attachmentsEl.outerHeight() - parseInt($areaEl.css('margin-top'), 10) - parseInt($areaEl.css('margin-bottom'), 10);
|
33961 | }
|
33962 |
|
33963 | $textareaEl.css('max-height', maxHeight + "px");
|
33964 | $pageContentEl.css('padding-bottom', requiredPaddingBottom + "px");
|
33965 |
|
33966 | if (scrollOnBottom) {
|
33967 | $pageContentEl.scrollTop($pageContentEl[0].scrollHeight - pageOffsetHeight);
|
33968 | }
|
33969 |
|
33970 | $el.trigger('messagebar:resizepage');
|
33971 | messagebar.emit('local::resizePage messagebarResizePage', messagebar);
|
33972 | }
|
33973 | }
|
33974 | };
|
33975 |
|
33976 | _proto.checkEmptyState = function checkEmptyState() {
|
33977 | var messagebar = this;
|
33978 | var $el = messagebar.$el,
|
33979 | $textareaEl = messagebar.$textareaEl;
|
33980 | var value = $textareaEl.val().trim();
|
33981 |
|
33982 | if (value && value.length) {
|
33983 | $el.addClass('messagebar-with-value');
|
33984 | } else {
|
33985 | $el.removeClass('messagebar-with-value');
|
33986 | }
|
33987 | };
|
33988 |
|
33989 | _proto.attachmentsCreate = function attachmentsCreate(innerHTML) {
|
33990 | if (innerHTML === void 0) {
|
33991 | innerHTML = '';
|
33992 | }
|
33993 |
|
33994 | var messagebar = this;
|
33995 | var $attachmentsEl = $("<div class=\"messagebar-attachments\">" + innerHTML + "</div>");
|
33996 | $attachmentsEl.insertBefore(messagebar.$textareaEl);
|
33997 | extend$1(messagebar, {
|
33998 | $attachmentsEl: $attachmentsEl,
|
33999 | attachmentsEl: $attachmentsEl[0]
|
34000 | });
|
34001 | return messagebar;
|
34002 | };
|
34003 |
|
34004 | _proto.attachmentsShow = function attachmentsShow(innerHTML) {
|
34005 | if (innerHTML === void 0) {
|
34006 | innerHTML = '';
|
34007 | }
|
34008 |
|
34009 | var messagebar = this;
|
34010 | messagebar.$attachmentsEl = messagebar.$el.find('.messagebar-attachments');
|
34011 |
|
34012 | if (messagebar.$attachmentsEl.length === 0) {
|
34013 | messagebar.attachmentsCreate(innerHTML);
|
34014 | }
|
34015 |
|
34016 | messagebar.$el.addClass('messagebar-attachments-visible');
|
34017 | messagebar.attachmentsVisible = true;
|
34018 |
|
34019 | if (messagebar.params.resizePage) {
|
34020 | messagebar.resizePage();
|
34021 | }
|
34022 |
|
34023 | return messagebar;
|
34024 | };
|
34025 |
|
34026 | _proto.attachmentsHide = function attachmentsHide() {
|
34027 | var messagebar = this;
|
34028 | messagebar.$el.removeClass('messagebar-attachments-visible');
|
34029 | messagebar.attachmentsVisible = false;
|
34030 |
|
34031 | if (messagebar.params.resizePage) {
|
34032 | messagebar.resizePage();
|
34033 | }
|
34034 |
|
34035 | return messagebar;
|
34036 | };
|
34037 |
|
34038 | _proto.attachmentsToggle = function attachmentsToggle() {
|
34039 | var messagebar = this;
|
34040 |
|
34041 | if (messagebar.attachmentsVisible) {
|
34042 | messagebar.attachmentsHide();
|
34043 | } else {
|
34044 | messagebar.attachmentsShow();
|
34045 | }
|
34046 |
|
34047 | return messagebar;
|
34048 | };
|
34049 |
|
34050 | _proto.renderAttachment = function renderAttachment(attachment) {
|
34051 | var messagebar = this;
|
34052 |
|
34053 | if (messagebar.params.renderAttachment) {
|
34054 | return messagebar.params.renderAttachment.call(messagebar, attachment);
|
34055 | }
|
34056 |
|
34057 | return "\n <div class=\"messagebar-attachment\">\n <img src=\"" + attachment + "\">\n <span class=\"messagebar-attachment-delete\"></span>\n </div>\n ";
|
34058 | };
|
34059 |
|
34060 | _proto.renderAttachments = function renderAttachments() {
|
34061 | var messagebar = this;
|
34062 | var html;
|
34063 |
|
34064 | if (messagebar.params.renderAttachments) {
|
34065 | html = messagebar.params.renderAttachments.call(messagebar, messagebar.attachments);
|
34066 | } else {
|
34067 | html = "" + messagebar.attachments.map(function (attachment) {
|
34068 | return messagebar.renderAttachment(attachment);
|
34069 | }).join('');
|
34070 | }
|
34071 |
|
34072 | if (messagebar.$attachmentsEl.length === 0) {
|
34073 | messagebar.attachmentsCreate(html);
|
34074 | } else {
|
34075 | messagebar.$attachmentsEl.html(html);
|
34076 | }
|
34077 | };
|
34078 |
|
34079 | _proto.sheetCreate = function sheetCreate(innerHTML) {
|
34080 | if (innerHTML === void 0) {
|
34081 | innerHTML = '';
|
34082 | }
|
34083 |
|
34084 | var messagebar = this;
|
34085 | var $sheetEl = $("<div class=\"messagebar-sheet\">" + innerHTML + "</div>");
|
34086 | messagebar.$el.append($sheetEl);
|
34087 | extend$1(messagebar, {
|
34088 | $sheetEl: $sheetEl,
|
34089 | sheetEl: $sheetEl[0]
|
34090 | });
|
34091 | return messagebar;
|
34092 | };
|
34093 |
|
34094 | _proto.sheetShow = function sheetShow(innerHTML) {
|
34095 | if (innerHTML === void 0) {
|
34096 | innerHTML = '';
|
34097 | }
|
34098 |
|
34099 | var messagebar = this;
|
34100 | messagebar.$sheetEl = messagebar.$el.find('.messagebar-sheet');
|
34101 |
|
34102 | if (messagebar.$sheetEl.length === 0) {
|
34103 | messagebar.sheetCreate(innerHTML);
|
34104 | }
|
34105 |
|
34106 | messagebar.$el.addClass('messagebar-sheet-visible');
|
34107 | messagebar.sheetVisible = true;
|
34108 |
|
34109 | if (messagebar.params.resizePage) {
|
34110 | messagebar.resizePage();
|
34111 | }
|
34112 |
|
34113 | return messagebar;
|
34114 | };
|
34115 |
|
34116 | _proto.sheetHide = function sheetHide() {
|
34117 | var messagebar = this;
|
34118 | messagebar.$el.removeClass('messagebar-sheet-visible');
|
34119 | messagebar.sheetVisible = false;
|
34120 |
|
34121 | if (messagebar.params.resizePage) {
|
34122 | messagebar.resizePage();
|
34123 | }
|
34124 |
|
34125 | return messagebar;
|
34126 | };
|
34127 |
|
34128 | _proto.sheetToggle = function sheetToggle() {
|
34129 | var messagebar = this;
|
34130 |
|
34131 | if (messagebar.sheetVisible) {
|
34132 | messagebar.sheetHide();
|
34133 | } else {
|
34134 | messagebar.sheetShow();
|
34135 | }
|
34136 |
|
34137 | return messagebar;
|
34138 | };
|
34139 |
|
34140 | _proto.init = function init() {
|
34141 | var messagebar = this;
|
34142 | messagebar.attachEvents();
|
34143 | messagebar.checkEmptyState();
|
34144 | return messagebar;
|
34145 | };
|
34146 |
|
34147 | _proto.destroy = function destroy() {
|
34148 | var messagebar = this;
|
34149 | messagebar.emit('local::beforeDestroy messagebarBeforeDestroy', messagebar);
|
34150 | messagebar.$el.trigger('messagebar:beforedestroy');
|
34151 | messagebar.detachEvents();
|
34152 |
|
34153 | if (messagebar.$el[0]) {
|
34154 | messagebar.$el[0].f7Messagebar = null;
|
34155 | delete messagebar.$el[0].f7Messagebar;
|
34156 | }
|
34157 |
|
34158 | deleteProps$1(messagebar);
|
34159 | };
|
34160 |
|
34161 | return Messagebar;
|
34162 | }(Framework7Class);
|
34163 |
|
34164 | var Messagebar = {
|
34165 | name: 'messagebar',
|
34166 | static: {
|
34167 | Messagebar: Messagebar$1
|
34168 | },
|
34169 | create: function create() {
|
34170 | var app = this;
|
34171 | app.messagebar = ConstructorMethods({
|
34172 | defaultSelector: '.messagebar',
|
34173 | constructor: Messagebar$1,
|
34174 | app: app,
|
34175 | domProp: 'f7Messagebar',
|
34176 | addMethods: 'clear getValue setValue setPlaceholder resizePage focus blur attachmentsCreate attachmentsShow attachmentsHide attachmentsToggle renderAttachments sheetCreate sheetShow sheetHide sheetToggle'.split(' ')
|
34177 | });
|
34178 | },
|
34179 | on: {
|
34180 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
34181 | var app = this;
|
34182 | $(tabEl).find('.messagebar-init').each(function (messagebarEl) {
|
34183 | app.messagebar.destroy(messagebarEl);
|
34184 | });
|
34185 | },
|
34186 | tabMounted: function tabMounted(tabEl) {
|
34187 | var app = this;
|
34188 | $(tabEl).find('.messagebar-init').each(function (messagebarEl) {
|
34189 | app.messagebar.create(extend$1({
|
34190 | el: messagebarEl
|
34191 | }, $(messagebarEl).dataset()));
|
34192 | });
|
34193 | },
|
34194 | pageBeforeRemove: function pageBeforeRemove(page) {
|
34195 | var app = this;
|
34196 | page.$el.find('.messagebar-init').each(function (messagebarEl) {
|
34197 | app.messagebar.destroy(messagebarEl);
|
34198 | });
|
34199 | },
|
34200 | pageInit: function pageInit(page) {
|
34201 | var app = this;
|
34202 | page.$el.find('.messagebar-init').each(function (messagebarEl) {
|
34203 | app.messagebar.create(extend$1({
|
34204 | el: messagebarEl
|
34205 | }, $(messagebarEl).dataset()));
|
34206 | });
|
34207 | }
|
34208 | },
|
34209 | vnode: {
|
34210 | 'messagebar-init': {
|
34211 | insert: function insert(vnode) {
|
34212 | var app = this;
|
34213 | var messagebarEl = vnode.elm;
|
34214 | app.messagebar.create(extend$1({
|
34215 | el: messagebarEl
|
34216 | }, $(messagebarEl).dataset()));
|
34217 | },
|
34218 | destroy: function destroy(vnode) {
|
34219 | var app = this;
|
34220 | var messagebarEl = vnode.elm;
|
34221 | app.messagebar.destroy(messagebarEl);
|
34222 | }
|
34223 | }
|
34224 | }
|
34225 | };
|
34226 |
|
34227 | var Methods = {
|
34228 | addClass: addClass,
|
34229 | removeClass: removeClass,
|
34230 | hasClass: hasClass,
|
34231 | toggleClass: toggleClass,
|
34232 | attr: attr,
|
34233 | removeAttr: removeAttr,
|
34234 | transform: transform,
|
34235 | transition: transition$1,
|
34236 | on: on,
|
34237 | off: off,
|
34238 | trigger: trigger,
|
34239 | transitionEnd: transitionEnd$1,
|
34240 | outerWidth: outerWidth,
|
34241 | outerHeight: outerHeight,
|
34242 | styles: styles,
|
34243 | offset: offset,
|
34244 | css: css,
|
34245 | each: each,
|
34246 | html: html,
|
34247 | text: text,
|
34248 | is: is,
|
34249 | index: index,
|
34250 | eq: eq,
|
34251 | append: append,
|
34252 | prepend: prepend,
|
34253 | next: next,
|
34254 | nextAll: nextAll,
|
34255 | prev: prev,
|
34256 | prevAll: prevAll,
|
34257 | parent: parent,
|
34258 | parents: parents,
|
34259 | closest: closest,
|
34260 | find: find,
|
34261 | children: children,
|
34262 | filter: filter,
|
34263 | remove: remove
|
34264 | };
|
34265 | Object.keys(Methods).forEach(function (methodName) {
|
34266 | Object.defineProperty($$1.fn, methodName, {
|
34267 | value: Methods[methodName],
|
34268 | writable: true
|
34269 | });
|
34270 | });
|
34271 |
|
34272 | function deleteProps(obj) {
|
34273 | var object = obj;
|
34274 | Object.keys(object).forEach(function (key) {
|
34275 | try {
|
34276 | object[key] = null;
|
34277 | } catch (e) {
|
34278 | }
|
34279 |
|
34280 | try {
|
34281 | delete object[key];
|
34282 | } catch (e) {
|
34283 | }
|
34284 | });
|
34285 | }
|
34286 |
|
34287 | function nextTick(callback, delay) {
|
34288 | if (delay === void 0) {
|
34289 | delay = 0;
|
34290 | }
|
34291 |
|
34292 | return setTimeout(callback, delay);
|
34293 | }
|
34294 |
|
34295 | function now() {
|
34296 | return Date.now();
|
34297 | }
|
34298 |
|
34299 | function getComputedStyle$1(el) {
|
34300 | var window = getWindow();
|
34301 | var style;
|
34302 |
|
34303 | if (window.getComputedStyle) {
|
34304 | style = window.getComputedStyle(el, null);
|
34305 | }
|
34306 |
|
34307 | if (!style && el.currentStyle) {
|
34308 | style = el.currentStyle;
|
34309 | }
|
34310 |
|
34311 | if (!style) {
|
34312 | style = el.style;
|
34313 | }
|
34314 |
|
34315 | return style;
|
34316 | }
|
34317 |
|
34318 | function getTranslate(el, axis) {
|
34319 | if (axis === void 0) {
|
34320 | axis = 'x';
|
34321 | }
|
34322 |
|
34323 | var window = getWindow();
|
34324 | var matrix;
|
34325 | var curTransform;
|
34326 | var transformMatrix;
|
34327 | var curStyle = getComputedStyle$1(el, null);
|
34328 |
|
34329 | if (window.WebKitCSSMatrix) {
|
34330 | curTransform = curStyle.transform || curStyle.webkitTransform;
|
34331 |
|
34332 | if (curTransform.split(',').length > 6) {
|
34333 | curTransform = curTransform.split(', ').map(function (a) {
|
34334 | return a.replace(',', '.');
|
34335 | }).join(', ');
|
34336 | }
|
34337 |
|
34338 |
|
34339 |
|
34340 | transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);
|
34341 | } else {
|
34342 | transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');
|
34343 | matrix = transformMatrix.toString().split(',');
|
34344 | }
|
34345 |
|
34346 | if (axis === 'x') {
|
34347 |
|
34348 | if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;
|
34349 | else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
|
34350 | else curTransform = parseFloat(matrix[4]);
|
34351 | }
|
34352 |
|
34353 | if (axis === 'y') {
|
34354 |
|
34355 | if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;
|
34356 | else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
|
34357 | else curTransform = parseFloat(matrix[5]);
|
34358 | }
|
34359 |
|
34360 | return curTransform || 0;
|
34361 | }
|
34362 |
|
34363 | function isObject(o) {
|
34364 | return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';
|
34365 | }
|
34366 |
|
34367 | function extend() {
|
34368 | var to = Object(arguments.length <= 0 ? undefined : arguments[0]);
|
34369 | var noExtend = ['__proto__', 'constructor', 'prototype'];
|
34370 |
|
34371 | for (var i = 1; i < arguments.length; i += 1) {
|
34372 | var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
|
34373 |
|
34374 | if (nextSource !== undefined && nextSource !== null) {
|
34375 | var keysArray = Object.keys(Object(nextSource)).filter(function (key) {
|
34376 | return noExtend.indexOf(key) < 0;
|
34377 | });
|
34378 |
|
34379 | for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
|
34380 | var nextKey = keysArray[nextIndex];
|
34381 | var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
|
34382 |
|
34383 | if (desc !== undefined && desc.enumerable) {
|
34384 | if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
|
34385 | if (nextSource[nextKey].__swiper__) {
|
34386 | to[nextKey] = nextSource[nextKey];
|
34387 | } else {
|
34388 | extend(to[nextKey], nextSource[nextKey]);
|
34389 | }
|
34390 | } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {
|
34391 | to[nextKey] = {};
|
34392 |
|
34393 | if (nextSource[nextKey].__swiper__) {
|
34394 | to[nextKey] = nextSource[nextKey];
|
34395 | } else {
|
34396 | extend(to[nextKey], nextSource[nextKey]);
|
34397 | }
|
34398 | } else {
|
34399 | to[nextKey] = nextSource[nextKey];
|
34400 | }
|
34401 | }
|
34402 | }
|
34403 | }
|
34404 | }
|
34405 |
|
34406 | return to;
|
34407 | }
|
34408 |
|
34409 | function bindModuleMethods(instance, obj) {
|
34410 | Object.keys(obj).forEach(function (key) {
|
34411 | if (isObject(obj[key])) {
|
34412 | Object.keys(obj[key]).forEach(function (subKey) {
|
34413 | if (typeof obj[key][subKey] === 'function') {
|
34414 | obj[key][subKey] = obj[key][subKey].bind(instance);
|
34415 | }
|
34416 | });
|
34417 | }
|
34418 |
|
34419 | instance[key] = obj[key];
|
34420 | });
|
34421 | }
|
34422 |
|
34423 | function classesToSelector(classes) {
|
34424 | if (classes === void 0) {
|
34425 | classes = '';
|
34426 | }
|
34427 |
|
34428 | return "." + classes.trim().replace(/([\.:\/])/g, '\\$1')
|
34429 | .replace(/ /g, '.');
|
34430 | }
|
34431 |
|
34432 | var support;
|
34433 |
|
34434 | function calcSupport() {
|
34435 | var window = getWindow();
|
34436 | var document = getDocument();
|
34437 | return {
|
34438 | touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),
|
34439 | pointerEvents: !!window.PointerEvent && 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints >= 0,
|
34440 | observer: function checkObserver() {
|
34441 | return 'MutationObserver' in window || 'WebkitMutationObserver' in window;
|
34442 | }(),
|
34443 | passiveListener: function checkPassiveListener() {
|
34444 | var supportsPassive = false;
|
34445 |
|
34446 | try {
|
34447 | var opts = Object.defineProperty({}, 'passive', {
|
34448 |
|
34449 | get: function get() {
|
34450 | supportsPassive = true;
|
34451 | }
|
34452 | });
|
34453 | window.addEventListener('testPassiveListener', null, opts);
|
34454 | } catch (e) {
|
34455 | }
|
34456 |
|
34457 | return supportsPassive;
|
34458 | }(),
|
34459 | gestures: function checkGestures() {
|
34460 | return 'ongesturestart' in window;
|
34461 | }()
|
34462 | };
|
34463 | }
|
34464 |
|
34465 | function getSupport() {
|
34466 | if (!support) {
|
34467 | support = calcSupport();
|
34468 | }
|
34469 |
|
34470 | return support;
|
34471 | }
|
34472 |
|
34473 | var device;
|
34474 |
|
34475 | function calcDevice(_temp) {
|
34476 | var _ref = _temp === void 0 ? {} : _temp,
|
34477 | userAgent = _ref.userAgent;
|
34478 |
|
34479 | var support = getSupport();
|
34480 | var window = getWindow();
|
34481 | var platform = window.navigator.platform;
|
34482 | var ua = userAgent || window.navigator.userAgent;
|
34483 | var device = {
|
34484 | ios: false,
|
34485 | android: false
|
34486 | };
|
34487 | var screenWidth = window.screen.width;
|
34488 | var screenHeight = window.screen.height;
|
34489 | var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
|
34490 |
|
34491 | var ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
|
34492 | var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
|
34493 | var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
|
34494 | var windows = platform === 'Win32';
|
34495 | var macos = platform === 'MacIntel';
|
34496 |
|
34497 | var iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];
|
34498 |
|
34499 | if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) {
|
34500 | ipad = ua.match(/(Version)\/([\d.]+)/);
|
34501 | if (!ipad) ipad = [0, 1, '13_0_0'];
|
34502 | macos = false;
|
34503 | }
|
34504 |
|
34505 |
|
34506 | if (android && !windows) {
|
34507 | device.os = 'android';
|
34508 | device.android = true;
|
34509 | }
|
34510 |
|
34511 | if (ipad || iphone || ipod) {
|
34512 | device.os = 'ios';
|
34513 | device.ios = true;
|
34514 | }
|
34515 |
|
34516 |
|
34517 | return device;
|
34518 | }
|
34519 |
|
34520 | function getDevice(overrides) {
|
34521 | if (overrides === void 0) {
|
34522 | overrides = {};
|
34523 | }
|
34524 |
|
34525 | if (!device) {
|
34526 | device = calcDevice(overrides);
|
34527 | }
|
34528 |
|
34529 | return device;
|
34530 | }
|
34531 |
|
34532 | var browser;
|
34533 |
|
34534 | function calcBrowser() {
|
34535 | var window = getWindow();
|
34536 |
|
34537 | function isSafari() {
|
34538 | var ua = window.navigator.userAgent.toLowerCase();
|
34539 | return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;
|
34540 | }
|
34541 |
|
34542 | return {
|
34543 | isEdge: !!window.navigator.userAgent.match(/Edge/g),
|
34544 | isSafari: isSafari(),
|
34545 | isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)
|
34546 | };
|
34547 | }
|
34548 |
|
34549 | function getBrowser() {
|
34550 | if (!browser) {
|
34551 | browser = calcBrowser();
|
34552 | }
|
34553 |
|
34554 | return browser;
|
34555 | }
|
34556 |
|
34557 | var supportsResizeObserver = function supportsResizeObserver() {
|
34558 | var window = getWindow();
|
34559 | return typeof window.ResizeObserver !== 'undefined';
|
34560 | };
|
34561 |
|
34562 | var Resize = {
|
34563 | name: 'resize',
|
34564 | create: function create() {
|
34565 | var swiper = this;
|
34566 | extend(swiper, {
|
34567 | resize: {
|
34568 | observer: null,
|
34569 | createObserver: function createObserver() {
|
34570 | if (!swiper || swiper.destroyed || !swiper.initialized) return;
|
34571 | swiper.resize.observer = new ResizeObserver(function (entries) {
|
34572 | var width = swiper.width,
|
34573 | height = swiper.height;
|
34574 | var newWidth = width;
|
34575 | var newHeight = height;
|
34576 | entries.forEach(function (_ref) {
|
34577 | var contentBoxSize = _ref.contentBoxSize,
|
34578 | contentRect = _ref.contentRect,
|
34579 | target = _ref.target;
|
34580 | if (target && target !== swiper.el) return;
|
34581 | newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
|
34582 | newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
|
34583 | });
|
34584 |
|
34585 | if (newWidth !== width || newHeight !== height) {
|
34586 | swiper.resize.resizeHandler();
|
34587 | }
|
34588 | });
|
34589 | swiper.resize.observer.observe(swiper.el);
|
34590 | },
|
34591 | removeObserver: function removeObserver() {
|
34592 | if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) {
|
34593 | swiper.resize.observer.unobserve(swiper.el);
|
34594 | swiper.resize.observer = null;
|
34595 | }
|
34596 | },
|
34597 | resizeHandler: function resizeHandler() {
|
34598 | if (!swiper || swiper.destroyed || !swiper.initialized) return;
|
34599 | swiper.emit('beforeResize');
|
34600 | swiper.emit('resize');
|
34601 | },
|
34602 | orientationChangeHandler: function orientationChangeHandler() {
|
34603 | if (!swiper || swiper.destroyed || !swiper.initialized) return;
|
34604 | swiper.emit('orientationchange');
|
34605 | }
|
34606 | }
|
34607 | });
|
34608 | },
|
34609 | on: {
|
34610 | init: function init(swiper) {
|
34611 | var window = getWindow();
|
34612 |
|
34613 | if (swiper.params.resizeObserver && supportsResizeObserver()) {
|
34614 | swiper.resize.createObserver();
|
34615 | return;
|
34616 | }
|
34617 |
|
34618 |
|
34619 | window.addEventListener('resize', swiper.resize.resizeHandler);
|
34620 |
|
34621 | window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);
|
34622 | },
|
34623 | destroy: function destroy(swiper) {
|
34624 | var window = getWindow();
|
34625 | swiper.resize.removeObserver();
|
34626 | window.removeEventListener('resize', swiper.resize.resizeHandler);
|
34627 | window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);
|
34628 | }
|
34629 | }
|
34630 | };
|
34631 |
|
34632 | function _extends$i() {
|
34633 | _extends$i = Object.assign || function (target) {
|
34634 | for (var i = 1; i < arguments.length; i++) {
|
34635 | var source = arguments[i];
|
34636 |
|
34637 | for (var key in source) {
|
34638 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
34639 | target[key] = source[key];
|
34640 | }
|
34641 | }
|
34642 | }
|
34643 |
|
34644 | return target;
|
34645 | };
|
34646 |
|
34647 | return _extends$i.apply(this, arguments);
|
34648 | }
|
34649 | var Observer = {
|
34650 | attach: function attach(target, options) {
|
34651 | if (options === void 0) {
|
34652 | options = {};
|
34653 | }
|
34654 |
|
34655 | var window = getWindow();
|
34656 | var swiper = this;
|
34657 | var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;
|
34658 | var observer = new ObserverFunc(function (mutations) {
|
34659 |
|
34660 |
|
34661 |
|
34662 | if (mutations.length === 1) {
|
34663 | swiper.emit('observerUpdate', mutations[0]);
|
34664 | return;
|
34665 | }
|
34666 |
|
34667 | var observerUpdate = function observerUpdate() {
|
34668 | swiper.emit('observerUpdate', mutations[0]);
|
34669 | };
|
34670 |
|
34671 | if (window.requestAnimationFrame) {
|
34672 | window.requestAnimationFrame(observerUpdate);
|
34673 | } else {
|
34674 | window.setTimeout(observerUpdate, 0);
|
34675 | }
|
34676 | });
|
34677 | observer.observe(target, {
|
34678 | attributes: typeof options.attributes === 'undefined' ? true : options.attributes,
|
34679 | childList: typeof options.childList === 'undefined' ? true : options.childList,
|
34680 | characterData: typeof options.characterData === 'undefined' ? true : options.characterData
|
34681 | });
|
34682 | swiper.observer.observers.push(observer);
|
34683 | },
|
34684 | init: function init() {
|
34685 | var swiper = this;
|
34686 | if (!swiper.support.observer || !swiper.params.observer) return;
|
34687 |
|
34688 | if (swiper.params.observeParents) {
|
34689 | var containerParents = swiper.$el.parents();
|
34690 |
|
34691 | for (var i = 0; i < containerParents.length; i += 1) {
|
34692 | swiper.observer.attach(containerParents[i]);
|
34693 | }
|
34694 | }
|
34695 |
|
34696 |
|
34697 | swiper.observer.attach(swiper.$el[0], {
|
34698 | childList: swiper.params.observeSlideChildren
|
34699 | });
|
34700 |
|
34701 | swiper.observer.attach(swiper.$wrapperEl[0], {
|
34702 | attributes: false
|
34703 | });
|
34704 | },
|
34705 | destroy: function destroy() {
|
34706 | var swiper = this;
|
34707 | swiper.observer.observers.forEach(function (observer) {
|
34708 | observer.disconnect();
|
34709 | });
|
34710 | swiper.observer.observers = [];
|
34711 | }
|
34712 | };
|
34713 | var Observer$1 = {
|
34714 | name: 'observer',
|
34715 | params: {
|
34716 | observer: false,
|
34717 | observeParents: false,
|
34718 | observeSlideChildren: false
|
34719 | },
|
34720 | create: function create() {
|
34721 | var swiper = this;
|
34722 | bindModuleMethods(swiper, {
|
34723 | observer: _extends$i({}, Observer, {
|
34724 | observers: []
|
34725 | })
|
34726 | });
|
34727 | },
|
34728 | on: {
|
34729 | init: function init(swiper) {
|
34730 | swiper.observer.init();
|
34731 | },
|
34732 | destroy: function destroy(swiper) {
|
34733 | swiper.observer.destroy();
|
34734 | }
|
34735 | }
|
34736 | };
|
34737 |
|
34738 | var modular = {
|
34739 | useParams: function useParams(instanceParams) {
|
34740 | var instance = this;
|
34741 | if (!instance.modules) return;
|
34742 | Object.keys(instance.modules).forEach(function (moduleName) {
|
34743 | var module = instance.modules[moduleName];
|
34744 |
|
34745 | if (module.params) {
|
34746 | extend(instanceParams, module.params);
|
34747 | }
|
34748 | });
|
34749 | },
|
34750 | useModules: function useModules(modulesParams) {
|
34751 | if (modulesParams === void 0) {
|
34752 | modulesParams = {};
|
34753 | }
|
34754 |
|
34755 | var instance = this;
|
34756 | if (!instance.modules) return;
|
34757 | Object.keys(instance.modules).forEach(function (moduleName) {
|
34758 | var module = instance.modules[moduleName];
|
34759 | var moduleParams = modulesParams[moduleName] || {};
|
34760 |
|
34761 | if (module.on && instance.on) {
|
34762 | Object.keys(module.on).forEach(function (moduleEventName) {
|
34763 | instance.on(moduleEventName, module.on[moduleEventName]);
|
34764 | });
|
34765 | }
|
34766 |
|
34767 |
|
34768 | if (module.create) {
|
34769 | module.create.bind(instance)(moduleParams);
|
34770 | }
|
34771 | });
|
34772 | }
|
34773 | };
|
34774 |
|
34775 |
|
34776 | var eventsEmitter = {
|
34777 | on: function on(events, handler, priority) {
|
34778 | var self = this;
|
34779 | if (typeof handler !== 'function') return self;
|
34780 | var method = priority ? 'unshift' : 'push';
|
34781 | events.split(' ').forEach(function (event) {
|
34782 | if (!self.eventsListeners[event]) self.eventsListeners[event] = [];
|
34783 | self.eventsListeners[event][method](handler);
|
34784 | });
|
34785 | return self;
|
34786 | },
|
34787 | once: function once(events, handler, priority) {
|
34788 | var self = this;
|
34789 | if (typeof handler !== 'function') return self;
|
34790 |
|
34791 | function onceHandler() {
|
34792 | self.off(events, onceHandler);
|
34793 |
|
34794 | if (onceHandler.__emitterProxy) {
|
34795 | delete onceHandler.__emitterProxy;
|
34796 | }
|
34797 |
|
34798 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
34799 | args[_key] = arguments[_key];
|
34800 | }
|
34801 |
|
34802 | handler.apply(self, args);
|
34803 | }
|
34804 |
|
34805 | onceHandler.__emitterProxy = handler;
|
34806 | return self.on(events, onceHandler, priority);
|
34807 | },
|
34808 | onAny: function onAny(handler, priority) {
|
34809 | var self = this;
|
34810 | if (typeof handler !== 'function') return self;
|
34811 | var method = priority ? 'unshift' : 'push';
|
34812 |
|
34813 | if (self.eventsAnyListeners.indexOf(handler) < 0) {
|
34814 | self.eventsAnyListeners[method](handler);
|
34815 | }
|
34816 |
|
34817 | return self;
|
34818 | },
|
34819 | offAny: function offAny(handler) {
|
34820 | var self = this;
|
34821 | if (!self.eventsAnyListeners) return self;
|
34822 | var index = self.eventsAnyListeners.indexOf(handler);
|
34823 |
|
34824 | if (index >= 0) {
|
34825 | self.eventsAnyListeners.splice(index, 1);
|
34826 | }
|
34827 |
|
34828 | return self;
|
34829 | },
|
34830 | off: function off(events, handler) {
|
34831 | var self = this;
|
34832 | if (!self.eventsListeners) return self;
|
34833 | events.split(' ').forEach(function (event) {
|
34834 | if (typeof handler === 'undefined') {
|
34835 | self.eventsListeners[event] = [];
|
34836 | } else if (self.eventsListeners[event]) {
|
34837 | self.eventsListeners[event].forEach(function (eventHandler, index) {
|
34838 | if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
|
34839 | self.eventsListeners[event].splice(index, 1);
|
34840 | }
|
34841 | });
|
34842 | }
|
34843 | });
|
34844 | return self;
|
34845 | },
|
34846 | emit: function emit() {
|
34847 | var self = this;
|
34848 | if (!self.eventsListeners) return self;
|
34849 | var events;
|
34850 | var data;
|
34851 | var context;
|
34852 |
|
34853 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
34854 | args[_key2] = arguments[_key2];
|
34855 | }
|
34856 |
|
34857 | if (typeof args[0] === 'string' || Array.isArray(args[0])) {
|
34858 | events = args[0];
|
34859 | data = args.slice(1, args.length);
|
34860 | context = self;
|
34861 | } else {
|
34862 | events = args[0].events;
|
34863 | data = args[0].data;
|
34864 | context = args[0].context || self;
|
34865 | }
|
34866 |
|
34867 | data.unshift(context);
|
34868 | var eventsArray = Array.isArray(events) ? events : events.split(' ');
|
34869 | eventsArray.forEach(function (event) {
|
34870 | if (self.eventsAnyListeners && self.eventsAnyListeners.length) {
|
34871 | self.eventsAnyListeners.forEach(function (eventHandler) {
|
34872 | eventHandler.apply(context, [event].concat(data));
|
34873 | });
|
34874 | }
|
34875 |
|
34876 | if (self.eventsListeners && self.eventsListeners[event]) {
|
34877 | self.eventsListeners[event].forEach(function (eventHandler) {
|
34878 | eventHandler.apply(context, data);
|
34879 | });
|
34880 | }
|
34881 | });
|
34882 | return self;
|
34883 | }
|
34884 | };
|
34885 |
|
34886 | function updateSize() {
|
34887 | var swiper = this;
|
34888 | var width;
|
34889 | var height;
|
34890 | var $el = swiper.$el;
|
34891 |
|
34892 | if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {
|
34893 | width = swiper.params.width;
|
34894 | } else {
|
34895 | width = $el[0].clientWidth;
|
34896 | }
|
34897 |
|
34898 | if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {
|
34899 | height = swiper.params.height;
|
34900 | } else {
|
34901 | height = $el[0].clientHeight;
|
34902 | }
|
34903 |
|
34904 | if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
|
34905 | return;
|
34906 | }
|
34907 |
|
34908 |
|
34909 | width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);
|
34910 | height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);
|
34911 | if (Number.isNaN(width)) width = 0;
|
34912 | if (Number.isNaN(height)) height = 0;
|
34913 | extend(swiper, {
|
34914 | width: width,
|
34915 | height: height,
|
34916 | size: swiper.isHorizontal() ? width : height
|
34917 | });
|
34918 | }
|
34919 |
|
34920 | function updateSlides() {
|
34921 | var swiper = this;
|
34922 |
|
34923 | function getDirectionLabel(property) {
|
34924 | if (swiper.isHorizontal()) {
|
34925 | return property;
|
34926 | }
|
34927 |
|
34928 |
|
34929 | return {
|
34930 | 'width': 'height',
|
34931 | 'margin-top': 'margin-left',
|
34932 | 'margin-bottom ': 'margin-right',
|
34933 | 'margin-left': 'margin-top',
|
34934 | 'margin-right': 'margin-bottom',
|
34935 | 'padding-left': 'padding-top',
|
34936 | 'padding-right': 'padding-bottom',
|
34937 | 'marginRight': 'marginBottom'
|
34938 | }[property];
|
34939 | }
|
34940 |
|
34941 | function getDirectionPropertyValue(node, label) {
|
34942 | return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);
|
34943 | }
|
34944 |
|
34945 | var params = swiper.params;
|
34946 | var $wrapperEl = swiper.$wrapperEl,
|
34947 | swiperSize = swiper.size,
|
34948 | rtl = swiper.rtlTranslate,
|
34949 | wrongRTL = swiper.wrongRTL;
|
34950 | var isVirtual = swiper.virtual && params.virtual.enabled;
|
34951 | var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
|
34952 | var slides = $wrapperEl.children("." + swiper.params.slideClass);
|
34953 | var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
|
34954 | var snapGrid = [];
|
34955 | var slidesGrid = [];
|
34956 | var slidesSizesGrid = [];
|
34957 | var offsetBefore = params.slidesOffsetBefore;
|
34958 |
|
34959 | if (typeof offsetBefore === 'function') {
|
34960 | offsetBefore = params.slidesOffsetBefore.call(swiper);
|
34961 | }
|
34962 |
|
34963 | var offsetAfter = params.slidesOffsetAfter;
|
34964 |
|
34965 | if (typeof offsetAfter === 'function') {
|
34966 | offsetAfter = params.slidesOffsetAfter.call(swiper);
|
34967 | }
|
34968 |
|
34969 | var previousSnapGridLength = swiper.snapGrid.length;
|
34970 | var previousSlidesGridLength = swiper.slidesGrid.length;
|
34971 | var spaceBetween = params.spaceBetween;
|
34972 | var slidePosition = -offsetBefore;
|
34973 | var prevSlideSize = 0;
|
34974 | var index = 0;
|
34975 |
|
34976 | if (typeof swiperSize === 'undefined') {
|
34977 | return;
|
34978 | }
|
34979 |
|
34980 | if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {
|
34981 | spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;
|
34982 | }
|
34983 |
|
34984 | swiper.virtualSize = -spaceBetween;
|
34985 |
|
34986 | if (rtl) slides.css({
|
34987 | marginLeft: '',
|
34988 | marginTop: ''
|
34989 | });else slides.css({
|
34990 | marginRight: '',
|
34991 | marginBottom: ''
|
34992 | });
|
34993 | var slidesNumberEvenToRows;
|
34994 |
|
34995 | if (params.slidesPerColumn > 1) {
|
34996 | if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {
|
34997 | slidesNumberEvenToRows = slidesLength;
|
34998 | } else {
|
34999 | slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;
|
35000 | }
|
35001 |
|
35002 | if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {
|
35003 | slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);
|
35004 | }
|
35005 | }
|
35006 |
|
35007 |
|
35008 | var slideSize;
|
35009 | var slidesPerColumn = params.slidesPerColumn;
|
35010 | var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;
|
35011 | var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);
|
35012 |
|
35013 | for (var i = 0; i < slidesLength; i += 1) {
|
35014 | slideSize = 0;
|
35015 | var slide = slides.eq(i);
|
35016 |
|
35017 | if (params.slidesPerColumn > 1) {
|
35018 |
|
35019 | var newSlideOrderIndex = void 0;
|
35020 | var column = void 0;
|
35021 | var row = void 0;
|
35022 |
|
35023 | if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {
|
35024 | var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));
|
35025 | var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;
|
35026 | var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);
|
35027 | row = Math.floor(slideIndexInGroup / columnsInGroup);
|
35028 | column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup;
|
35029 | newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn;
|
35030 | slide.css({
|
35031 | '-webkit-box-ordinal-group': newSlideOrderIndex,
|
35032 | '-moz-box-ordinal-group': newSlideOrderIndex,
|
35033 | '-ms-flex-order': newSlideOrderIndex,
|
35034 | '-webkit-order': newSlideOrderIndex,
|
35035 | order: newSlideOrderIndex
|
35036 | });
|
35037 | } else if (params.slidesPerColumnFill === 'column') {
|
35038 | column = Math.floor(i / slidesPerColumn);
|
35039 | row = i - column * slidesPerColumn;
|
35040 |
|
35041 | if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) {
|
35042 | row += 1;
|
35043 |
|
35044 | if (row >= slidesPerColumn) {
|
35045 | row = 0;
|
35046 | column += 1;
|
35047 | }
|
35048 | }
|
35049 | } else {
|
35050 | row = Math.floor(i / slidesPerRow);
|
35051 | column = i - row * slidesPerRow;
|
35052 | }
|
35053 |
|
35054 | slide.css(getDirectionLabel('margin-top'), row !== 0 && params.spaceBetween && params.spaceBetween + "px");
|
35055 | }
|
35056 |
|
35057 | if (slide.css('display') === 'none') continue;
|
35058 |
|
35059 | if (params.slidesPerView === 'auto') {
|
35060 | var slideStyles = getComputedStyle(slide[0]);
|
35061 | var currentTransform = slide[0].style.transform;
|
35062 | var currentWebKitTransform = slide[0].style.webkitTransform;
|
35063 |
|
35064 | if (currentTransform) {
|
35065 | slide[0].style.transform = 'none';
|
35066 | }
|
35067 |
|
35068 | if (currentWebKitTransform) {
|
35069 | slide[0].style.webkitTransform = 'none';
|
35070 | }
|
35071 |
|
35072 | if (params.roundLengths) {
|
35073 | slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);
|
35074 | } else {
|
35075 |
|
35076 | var width = getDirectionPropertyValue(slideStyles, 'width');
|
35077 | var paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');
|
35078 | var paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');
|
35079 | var marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');
|
35080 | var marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');
|
35081 | var boxSizing = slideStyles.getPropertyValue('box-sizing');
|
35082 |
|
35083 | if (boxSizing && boxSizing === 'border-box') {
|
35084 | slideSize = width + marginLeft + marginRight;
|
35085 | } else {
|
35086 | var _slide$ = slide[0],
|
35087 | clientWidth = _slide$.clientWidth,
|
35088 | offsetWidth = _slide$.offsetWidth;
|
35089 | slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
|
35090 | }
|
35091 | }
|
35092 |
|
35093 | if (currentTransform) {
|
35094 | slide[0].style.transform = currentTransform;
|
35095 | }
|
35096 |
|
35097 | if (currentWebKitTransform) {
|
35098 | slide[0].style.webkitTransform = currentWebKitTransform;
|
35099 | }
|
35100 |
|
35101 | if (params.roundLengths) slideSize = Math.floor(slideSize);
|
35102 | } else {
|
35103 | slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
|
35104 | if (params.roundLengths) slideSize = Math.floor(slideSize);
|
35105 |
|
35106 | if (slides[i]) {
|
35107 | slides[i].style[getDirectionLabel('width')] = slideSize + "px";
|
35108 | }
|
35109 | }
|
35110 |
|
35111 | if (slides[i]) {
|
35112 | slides[i].swiperSlideSize = slideSize;
|
35113 | }
|
35114 |
|
35115 | slidesSizesGrid.push(slideSize);
|
35116 |
|
35117 | if (params.centeredSlides) {
|
35118 | slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
|
35119 | if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
|
35120 | if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
|
35121 | if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;
|
35122 | if (params.roundLengths) slidePosition = Math.floor(slidePosition);
|
35123 | if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
|
35124 | slidesGrid.push(slidePosition);
|
35125 | } else {
|
35126 | if (params.roundLengths) slidePosition = Math.floor(slidePosition);
|
35127 | if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
|
35128 | slidesGrid.push(slidePosition);
|
35129 | slidePosition = slidePosition + slideSize + spaceBetween;
|
35130 | }
|
35131 |
|
35132 | swiper.virtualSize += slideSize + spaceBetween;
|
35133 | prevSlideSize = slideSize;
|
35134 | index += 1;
|
35135 | }
|
35136 |
|
35137 | swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
|
35138 | var newSlidesGrid;
|
35139 |
|
35140 | if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {
|
35141 | $wrapperEl.css({
|
35142 | width: swiper.virtualSize + params.spaceBetween + "px"
|
35143 | });
|
35144 | }
|
35145 |
|
35146 | if (params.setWrapperSize) {
|
35147 | var _$wrapperEl$css;
|
35148 |
|
35149 | $wrapperEl.css((_$wrapperEl$css = {}, _$wrapperEl$css[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + "px", _$wrapperEl$css));
|
35150 | }
|
35151 |
|
35152 | if (params.slidesPerColumn > 1) {
|
35153 | var _$wrapperEl$css2;
|
35154 |
|
35155 | swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;
|
35156 | swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;
|
35157 | $wrapperEl.css((_$wrapperEl$css2 = {}, _$wrapperEl$css2[getDirectionLabel('width')] = swiper.virtualSize + params.spaceBetween + "px", _$wrapperEl$css2));
|
35158 |
|
35159 | if (params.centeredSlides) {
|
35160 | newSlidesGrid = [];
|
35161 |
|
35162 | for (var _i = 0; _i < snapGrid.length; _i += 1) {
|
35163 | var slidesGridItem = snapGrid[_i];
|
35164 | if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
|
35165 | if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);
|
35166 | }
|
35167 |
|
35168 | snapGrid = newSlidesGrid;
|
35169 | }
|
35170 | }
|
35171 |
|
35172 |
|
35173 | if (!params.centeredSlides) {
|
35174 | newSlidesGrid = [];
|
35175 |
|
35176 | for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) {
|
35177 | var _slidesGridItem = snapGrid[_i2];
|
35178 | if (params.roundLengths) _slidesGridItem = Math.floor(_slidesGridItem);
|
35179 |
|
35180 | if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) {
|
35181 | newSlidesGrid.push(_slidesGridItem);
|
35182 | }
|
35183 | }
|
35184 |
|
35185 | snapGrid = newSlidesGrid;
|
35186 |
|
35187 | if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
|
35188 | snapGrid.push(swiper.virtualSize - swiperSize);
|
35189 | }
|
35190 | }
|
35191 |
|
35192 | if (snapGrid.length === 0) snapGrid = [0];
|
35193 |
|
35194 | if (params.spaceBetween !== 0) {
|
35195 | var _slides$filter$css;
|
35196 |
|
35197 | var key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');
|
35198 | slides.filter(function (_, slideIndex) {
|
35199 | if (!params.cssMode) return true;
|
35200 |
|
35201 | if (slideIndex === slides.length - 1) {
|
35202 | return false;
|
35203 | }
|
35204 |
|
35205 | return true;
|
35206 | }).css((_slides$filter$css = {}, _slides$filter$css[key] = spaceBetween + "px", _slides$filter$css));
|
35207 | }
|
35208 |
|
35209 | if (params.centeredSlides && params.centeredSlidesBounds) {
|
35210 | var allSlidesSize = 0;
|
35211 | slidesSizesGrid.forEach(function (slideSizeValue) {
|
35212 | allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
|
35213 | });
|
35214 | allSlidesSize -= params.spaceBetween;
|
35215 | var maxSnap = allSlidesSize - swiperSize;
|
35216 | snapGrid = snapGrid.map(function (snap) {
|
35217 | if (snap < 0) return -offsetBefore;
|
35218 | if (snap > maxSnap) return maxSnap + offsetAfter;
|
35219 | return snap;
|
35220 | });
|
35221 | }
|
35222 |
|
35223 | if (params.centerInsufficientSlides) {
|
35224 | var _allSlidesSize = 0;
|
35225 | slidesSizesGrid.forEach(function (slideSizeValue) {
|
35226 | _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);
|
35227 | });
|
35228 | _allSlidesSize -= params.spaceBetween;
|
35229 |
|
35230 | if (_allSlidesSize < swiperSize) {
|
35231 | var allSlidesOffset = (swiperSize - _allSlidesSize) / 2;
|
35232 | snapGrid.forEach(function (snap, snapIndex) {
|
35233 | snapGrid[snapIndex] = snap - allSlidesOffset;
|
35234 | });
|
35235 | slidesGrid.forEach(function (snap, snapIndex) {
|
35236 | slidesGrid[snapIndex] = snap + allSlidesOffset;
|
35237 | });
|
35238 | }
|
35239 | }
|
35240 |
|
35241 | extend(swiper, {
|
35242 | slides: slides,
|
35243 | snapGrid: snapGrid,
|
35244 | slidesGrid: slidesGrid,
|
35245 | slidesSizesGrid: slidesSizesGrid
|
35246 | });
|
35247 |
|
35248 | if (slidesLength !== previousSlidesLength) {
|
35249 | swiper.emit('slidesLengthChange');
|
35250 | }
|
35251 |
|
35252 | if (snapGrid.length !== previousSnapGridLength) {
|
35253 | if (swiper.params.watchOverflow) swiper.checkOverflow();
|
35254 | swiper.emit('snapGridLengthChange');
|
35255 | }
|
35256 |
|
35257 | if (slidesGrid.length !== previousSlidesGridLength) {
|
35258 | swiper.emit('slidesGridLengthChange');
|
35259 | }
|
35260 |
|
35261 | if (params.watchSlidesProgress || params.watchSlidesVisibility) {
|
35262 | swiper.updateSlidesOffset();
|
35263 | }
|
35264 | }
|
35265 |
|
35266 | function updateAutoHeight(speed) {
|
35267 | var swiper = this;
|
35268 | var activeSlides = [];
|
35269 | var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
|
35270 | var newHeight = 0;
|
35271 | var i;
|
35272 |
|
35273 | if (typeof speed === 'number') {
|
35274 | swiper.setTransition(speed);
|
35275 | } else if (speed === true) {
|
35276 | swiper.setTransition(swiper.params.speed);
|
35277 | }
|
35278 |
|
35279 | var getSlideByIndex = function getSlideByIndex(index) {
|
35280 | if (isVirtual) {
|
35281 | return swiper.slides.filter(function (el) {
|
35282 | return parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index;
|
35283 | })[0];
|
35284 | }
|
35285 |
|
35286 | return swiper.slides.eq(index)[0];
|
35287 | };
|
35288 |
|
35289 |
|
35290 | if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
|
35291 | if (swiper.params.centeredSlides) {
|
35292 | swiper.visibleSlides.each(function (slide) {
|
35293 | activeSlides.push(slide);
|
35294 | });
|
35295 | } else {
|
35296 | for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
|
35297 | var index = swiper.activeIndex + i;
|
35298 | if (index > swiper.slides.length && !isVirtual) break;
|
35299 | activeSlides.push(getSlideByIndex(index));
|
35300 | }
|
35301 | }
|
35302 | } else {
|
35303 | activeSlides.push(getSlideByIndex(swiper.activeIndex));
|
35304 | }
|
35305 |
|
35306 |
|
35307 | for (i = 0; i < activeSlides.length; i += 1) {
|
35308 | if (typeof activeSlides[i] !== 'undefined') {
|
35309 | var height = activeSlides[i].offsetHeight;
|
35310 | newHeight = height > newHeight ? height : newHeight;
|
35311 | }
|
35312 | }
|
35313 |
|
35314 |
|
35315 | if (newHeight) swiper.$wrapperEl.css('height', newHeight + "px");
|
35316 | }
|
35317 |
|
35318 | function updateSlidesOffset() {
|
35319 | var swiper = this;
|
35320 | var slides = swiper.slides;
|
35321 |
|
35322 | for (var i = 0; i < slides.length; i += 1) {
|
35323 | slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;
|
35324 | }
|
35325 | }
|
35326 |
|
35327 | function updateSlidesProgress(translate) {
|
35328 | if (translate === void 0) {
|
35329 | translate = this && this.translate || 0;
|
35330 | }
|
35331 |
|
35332 | var swiper = this;
|
35333 | var params = swiper.params;
|
35334 | var slides = swiper.slides,
|
35335 | rtl = swiper.rtlTranslate;
|
35336 | if (slides.length === 0) return;
|
35337 | if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();
|
35338 | var offsetCenter = -translate;
|
35339 | if (rtl) offsetCenter = translate;
|
35340 |
|
35341 | slides.removeClass(params.slideVisibleClass);
|
35342 | swiper.visibleSlidesIndexes = [];
|
35343 | swiper.visibleSlides = [];
|
35344 |
|
35345 | for (var i = 0; i < slides.length; i += 1) {
|
35346 | var slide = slides[i];
|
35347 | var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween);
|
35348 |
|
35349 | if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) {
|
35350 | var slideBefore = -(offsetCenter - slide.swiperSlideOffset);
|
35351 | var slideAfter = slideBefore + swiper.slidesSizesGrid[i];
|
35352 | var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
|
35353 |
|
35354 | if (isVisible) {
|
35355 | swiper.visibleSlides.push(slide);
|
35356 | swiper.visibleSlidesIndexes.push(i);
|
35357 | slides.eq(i).addClass(params.slideVisibleClass);
|
35358 | }
|
35359 | }
|
35360 |
|
35361 | slide.progress = rtl ? -slideProgress : slideProgress;
|
35362 | }
|
35363 |
|
35364 | swiper.visibleSlides = $$1(swiper.visibleSlides);
|
35365 | }
|
35366 |
|
35367 | function updateProgress(translate) {
|
35368 | var swiper = this;
|
35369 |
|
35370 | if (typeof translate === 'undefined') {
|
35371 | var multiplier = swiper.rtlTranslate ? -1 : 1;
|
35372 |
|
35373 | translate = swiper && swiper.translate && swiper.translate * multiplier || 0;
|
35374 | }
|
35375 |
|
35376 | var params = swiper.params;
|
35377 | var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
|
35378 | var progress = swiper.progress,
|
35379 | isBeginning = swiper.isBeginning,
|
35380 | isEnd = swiper.isEnd;
|
35381 | var wasBeginning = isBeginning;
|
35382 | var wasEnd = isEnd;
|
35383 |
|
35384 | if (translatesDiff === 0) {
|
35385 | progress = 0;
|
35386 | isBeginning = true;
|
35387 | isEnd = true;
|
35388 | } else {
|
35389 | progress = (translate - swiper.minTranslate()) / translatesDiff;
|
35390 | isBeginning = progress <= 0;
|
35391 | isEnd = progress >= 1;
|
35392 | }
|
35393 |
|
35394 | extend(swiper, {
|
35395 | progress: progress,
|
35396 | isBeginning: isBeginning,
|
35397 | isEnd: isEnd
|
35398 | });
|
35399 | if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);
|
35400 |
|
35401 | if (isBeginning && !wasBeginning) {
|
35402 | swiper.emit('reachBeginning toEdge');
|
35403 | }
|
35404 |
|
35405 | if (isEnd && !wasEnd) {
|
35406 | swiper.emit('reachEnd toEdge');
|
35407 | }
|
35408 |
|
35409 | if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
|
35410 | swiper.emit('fromEdge');
|
35411 | }
|
35412 |
|
35413 | swiper.emit('progress', progress);
|
35414 | }
|
35415 |
|
35416 | function updateSlidesClasses() {
|
35417 | var swiper = this;
|
35418 | var slides = swiper.slides,
|
35419 | params = swiper.params,
|
35420 | $wrapperEl = swiper.$wrapperEl,
|
35421 | activeIndex = swiper.activeIndex,
|
35422 | realIndex = swiper.realIndex;
|
35423 | var isVirtual = swiper.virtual && params.virtual.enabled;
|
35424 | slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass);
|
35425 | var activeSlide;
|
35426 |
|
35427 | if (isVirtual) {
|
35428 | activeSlide = swiper.$wrapperEl.find("." + params.slideClass + "[data-swiper-slide-index=\"" + activeIndex + "\"]");
|
35429 | } else {
|
35430 | activeSlide = slides.eq(activeIndex);
|
35431 | }
|
35432 |
|
35433 |
|
35434 | activeSlide.addClass(params.slideActiveClass);
|
35435 |
|
35436 | if (params.loop) {
|
35437 |
|
35438 | if (activeSlide.hasClass(params.slideDuplicateClass)) {
|
35439 | $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
|
35440 | } else {
|
35441 | $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + realIndex + "\"]").addClass(params.slideDuplicateActiveClass);
|
35442 | }
|
35443 | }
|
35444 |
|
35445 |
|
35446 | var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass);
|
35447 |
|
35448 | if (params.loop && nextSlide.length === 0) {
|
35449 | nextSlide = slides.eq(0);
|
35450 | nextSlide.addClass(params.slideNextClass);
|
35451 | }
|
35452 |
|
35453 |
|
35454 | var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass);
|
35455 |
|
35456 | if (params.loop && prevSlide.length === 0) {
|
35457 | prevSlide = slides.eq(-1);
|
35458 | prevSlide.addClass(params.slidePrevClass);
|
35459 | }
|
35460 |
|
35461 | if (params.loop) {
|
35462 |
|
35463 | if (nextSlide.hasClass(params.slideDuplicateClass)) {
|
35464 | $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
|
35465 | } else {
|
35466 | $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + nextSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicateNextClass);
|
35467 | }
|
35468 |
|
35469 | if (prevSlide.hasClass(params.slideDuplicateClass)) {
|
35470 | $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ")[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
|
35471 | } else {
|
35472 | $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + "[data-swiper-slide-index=\"" + prevSlide.attr('data-swiper-slide-index') + "\"]").addClass(params.slideDuplicatePrevClass);
|
35473 | }
|
35474 | }
|
35475 |
|
35476 | swiper.emitSlidesClasses();
|
35477 | }
|
35478 |
|
35479 | function updateActiveIndex(newActiveIndex) {
|
35480 | var swiper = this;
|
35481 | var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
|
35482 | var slidesGrid = swiper.slidesGrid,
|
35483 | snapGrid = swiper.snapGrid,
|
35484 | params = swiper.params,
|
35485 | previousIndex = swiper.activeIndex,
|
35486 | previousRealIndex = swiper.realIndex,
|
35487 | previousSnapIndex = swiper.snapIndex;
|
35488 | var activeIndex = newActiveIndex;
|
35489 | var snapIndex;
|
35490 |
|
35491 | if (typeof activeIndex === 'undefined') {
|
35492 | for (var i = 0; i < slidesGrid.length; i += 1) {
|
35493 | if (typeof slidesGrid[i + 1] !== 'undefined') {
|
35494 | if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
|
35495 | activeIndex = i;
|
35496 | } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {
|
35497 | activeIndex = i + 1;
|
35498 | }
|
35499 | } else if (translate >= slidesGrid[i]) {
|
35500 | activeIndex = i;
|
35501 | }
|
35502 | }
|
35503 |
|
35504 |
|
35505 | if (params.normalizeSlideIndex) {
|
35506 | if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;
|
35507 | }
|
35508 | }
|
35509 |
|
35510 | if (snapGrid.indexOf(translate) >= 0) {
|
35511 | snapIndex = snapGrid.indexOf(translate);
|
35512 | } else {
|
35513 | var skip = Math.min(params.slidesPerGroupSkip, activeIndex);
|
35514 | snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
|
35515 | }
|
35516 |
|
35517 | if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
|
35518 |
|
35519 | if (activeIndex === previousIndex) {
|
35520 | if (snapIndex !== previousSnapIndex) {
|
35521 | swiper.snapIndex = snapIndex;
|
35522 | swiper.emit('snapIndexChange');
|
35523 | }
|
35524 |
|
35525 | return;
|
35526 | }
|
35527 |
|
35528 |
|
35529 | var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);
|
35530 | extend(swiper, {
|
35531 | snapIndex: snapIndex,
|
35532 | realIndex: realIndex,
|
35533 | previousIndex: previousIndex,
|
35534 | activeIndex: activeIndex
|
35535 | });
|
35536 | swiper.emit('activeIndexChange');
|
35537 | swiper.emit('snapIndexChange');
|
35538 |
|
35539 | if (previousRealIndex !== realIndex) {
|
35540 | swiper.emit('realIndexChange');
|
35541 | }
|
35542 |
|
35543 | if (swiper.initialized || swiper.params.runCallbacksOnInit) {
|
35544 | swiper.emit('slideChange');
|
35545 | }
|
35546 | }
|
35547 |
|
35548 | function updateClickedSlide(e) {
|
35549 | var swiper = this;
|
35550 | var params = swiper.params;
|
35551 | var slide = $$1(e.target).closest("." + params.slideClass)[0];
|
35552 | var slideFound = false;
|
35553 | var slideIndex;
|
35554 |
|
35555 | if (slide) {
|
35556 | for (var i = 0; i < swiper.slides.length; i += 1) {
|
35557 | if (swiper.slides[i] === slide) {
|
35558 | slideFound = true;
|
35559 | slideIndex = i;
|
35560 | break;
|
35561 | }
|
35562 | }
|
35563 | }
|
35564 |
|
35565 | if (slide && slideFound) {
|
35566 | swiper.clickedSlide = slide;
|
35567 |
|
35568 | if (swiper.virtual && swiper.params.virtual.enabled) {
|
35569 | swiper.clickedIndex = parseInt($$1(slide).attr('data-swiper-slide-index'), 10);
|
35570 | } else {
|
35571 | swiper.clickedIndex = slideIndex;
|
35572 | }
|
35573 | } else {
|
35574 | swiper.clickedSlide = undefined;
|
35575 | swiper.clickedIndex = undefined;
|
35576 | return;
|
35577 | }
|
35578 |
|
35579 | if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {
|
35580 | swiper.slideToClickedSlide();
|
35581 | }
|
35582 | }
|
35583 |
|
35584 | var update = {
|
35585 | updateSize: updateSize,
|
35586 | updateSlides: updateSlides,
|
35587 | updateAutoHeight: updateAutoHeight,
|
35588 | updateSlidesOffset: updateSlidesOffset,
|
35589 | updateSlidesProgress: updateSlidesProgress,
|
35590 | updateProgress: updateProgress,
|
35591 | updateSlidesClasses: updateSlidesClasses,
|
35592 | updateActiveIndex: updateActiveIndex,
|
35593 | updateClickedSlide: updateClickedSlide
|
35594 | };
|
35595 |
|
35596 | function getSwiperTranslate(axis) {
|
35597 | if (axis === void 0) {
|
35598 | axis = this.isHorizontal() ? 'x' : 'y';
|
35599 | }
|
35600 |
|
35601 | var swiper = this;
|
35602 | var params = swiper.params,
|
35603 | rtl = swiper.rtlTranslate,
|
35604 | translate = swiper.translate,
|
35605 | $wrapperEl = swiper.$wrapperEl;
|
35606 |
|
35607 | if (params.virtualTranslate) {
|
35608 | return rtl ? -translate : translate;
|
35609 | }
|
35610 |
|
35611 | if (params.cssMode) {
|
35612 | return translate;
|
35613 | }
|
35614 |
|
35615 | var currentTranslate = getTranslate($wrapperEl[0], axis);
|
35616 | if (rtl) currentTranslate = -currentTranslate;
|
35617 | return currentTranslate || 0;
|
35618 | }
|
35619 |
|
35620 | function setTranslate(translate, byController) {
|
35621 | var swiper = this;
|
35622 | var rtl = swiper.rtlTranslate,
|
35623 | params = swiper.params,
|
35624 | $wrapperEl = swiper.$wrapperEl,
|
35625 | wrapperEl = swiper.wrapperEl,
|
35626 | progress = swiper.progress;
|
35627 | var x = 0;
|
35628 | var y = 0;
|
35629 | var z = 0;
|
35630 |
|
35631 | if (swiper.isHorizontal()) {
|
35632 | x = rtl ? -translate : translate;
|
35633 | } else {
|
35634 | y = translate;
|
35635 | }
|
35636 |
|
35637 | if (params.roundLengths) {
|
35638 | x = Math.floor(x);
|
35639 | y = Math.floor(y);
|
35640 | }
|
35641 |
|
35642 | if (params.cssMode) {
|
35643 | wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;
|
35644 | } else if (!params.virtualTranslate) {
|
35645 | $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)");
|
35646 | }
|
35647 |
|
35648 | swiper.previousTranslate = swiper.translate;
|
35649 | swiper.translate = swiper.isHorizontal() ? x : y;
|
35650 |
|
35651 | var newProgress;
|
35652 | var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
|
35653 |
|
35654 | if (translatesDiff === 0) {
|
35655 | newProgress = 0;
|
35656 | } else {
|
35657 | newProgress = (translate - swiper.minTranslate()) / translatesDiff;
|
35658 | }
|
35659 |
|
35660 | if (newProgress !== progress) {
|
35661 | swiper.updateProgress(translate);
|
35662 | }
|
35663 |
|
35664 | swiper.emit('setTranslate', swiper.translate, byController);
|
35665 | }
|
35666 |
|
35667 | function minTranslate() {
|
35668 | return -this.snapGrid[0];
|
35669 | }
|
35670 |
|
35671 | function maxTranslate() {
|
35672 | return -this.snapGrid[this.snapGrid.length - 1];
|
35673 | }
|
35674 |
|
35675 | function translateTo(translate, speed, runCallbacks, translateBounds, internal) {
|
35676 | if (translate === void 0) {
|
35677 | translate = 0;
|
35678 | }
|
35679 |
|
35680 | if (speed === void 0) {
|
35681 | speed = this.params.speed;
|
35682 | }
|
35683 |
|
35684 | if (runCallbacks === void 0) {
|
35685 | runCallbacks = true;
|
35686 | }
|
35687 |
|
35688 | if (translateBounds === void 0) {
|
35689 | translateBounds = true;
|
35690 | }
|
35691 |
|
35692 | var swiper = this;
|
35693 | var params = swiper.params,
|
35694 | wrapperEl = swiper.wrapperEl;
|
35695 |
|
35696 | if (swiper.animating && params.preventInteractionOnTransition) {
|
35697 | return false;
|
35698 | }
|
35699 |
|
35700 | var minTranslate = swiper.minTranslate();
|
35701 | var maxTranslate = swiper.maxTranslate();
|
35702 | var newTranslate;
|
35703 | if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;
|
35704 |
|
35705 | swiper.updateProgress(newTranslate);
|
35706 |
|
35707 | if (params.cssMode) {
|
35708 | var isH = swiper.isHorizontal();
|
35709 |
|
35710 | if (speed === 0) {
|
35711 | wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
|
35712 | } else {
|
35713 |
|
35714 | if (wrapperEl.scrollTo) {
|
35715 | var _wrapperEl$scrollTo;
|
35716 |
|
35717 | wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = -newTranslate, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
|
35718 | } else {
|
35719 | wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;
|
35720 | }
|
35721 | }
|
35722 |
|
35723 | return true;
|
35724 | }
|
35725 |
|
35726 | if (speed === 0) {
|
35727 | swiper.setTransition(0);
|
35728 | swiper.setTranslate(newTranslate);
|
35729 |
|
35730 | if (runCallbacks) {
|
35731 | swiper.emit('beforeTransitionStart', speed, internal);
|
35732 | swiper.emit('transitionEnd');
|
35733 | }
|
35734 | } else {
|
35735 | swiper.setTransition(speed);
|
35736 | swiper.setTranslate(newTranslate);
|
35737 |
|
35738 | if (runCallbacks) {
|
35739 | swiper.emit('beforeTransitionStart', speed, internal);
|
35740 | swiper.emit('transitionStart');
|
35741 | }
|
35742 |
|
35743 | if (!swiper.animating) {
|
35744 | swiper.animating = true;
|
35745 |
|
35746 | if (!swiper.onTranslateToWrapperTransitionEnd) {
|
35747 | swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {
|
35748 | if (!swiper || swiper.destroyed) return;
|
35749 | if (e.target !== this) return;
|
35750 | swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
|
35751 | swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
|
35752 | swiper.onTranslateToWrapperTransitionEnd = null;
|
35753 | delete swiper.onTranslateToWrapperTransitionEnd;
|
35754 |
|
35755 | if (runCallbacks) {
|
35756 | swiper.emit('transitionEnd');
|
35757 | }
|
35758 | };
|
35759 | }
|
35760 |
|
35761 | swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);
|
35762 | swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);
|
35763 | }
|
35764 | }
|
35765 |
|
35766 | return true;
|
35767 | }
|
35768 |
|
35769 | var translate = {
|
35770 | getTranslate: getSwiperTranslate,
|
35771 | setTranslate: setTranslate,
|
35772 | minTranslate: minTranslate,
|
35773 | maxTranslate: maxTranslate,
|
35774 | translateTo: translateTo
|
35775 | };
|
35776 |
|
35777 | function setTransition(duration, byController) {
|
35778 | var swiper = this;
|
35779 |
|
35780 | if (!swiper.params.cssMode) {
|
35781 | swiper.$wrapperEl.transition(duration);
|
35782 | }
|
35783 |
|
35784 | swiper.emit('setTransition', duration, byController);
|
35785 | }
|
35786 |
|
35787 | function transitionStart(runCallbacks, direction) {
|
35788 | if (runCallbacks === void 0) {
|
35789 | runCallbacks = true;
|
35790 | }
|
35791 |
|
35792 | var swiper = this;
|
35793 | var activeIndex = swiper.activeIndex,
|
35794 | params = swiper.params,
|
35795 | previousIndex = swiper.previousIndex;
|
35796 | if (params.cssMode) return;
|
35797 |
|
35798 | if (params.autoHeight) {
|
35799 | swiper.updateAutoHeight();
|
35800 | }
|
35801 |
|
35802 | var dir = direction;
|
35803 |
|
35804 | if (!dir) {
|
35805 | if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
|
35806 | }
|
35807 |
|
35808 | swiper.emit('transitionStart');
|
35809 |
|
35810 | if (runCallbacks && activeIndex !== previousIndex) {
|
35811 | if (dir === 'reset') {
|
35812 | swiper.emit('slideResetTransitionStart');
|
35813 | return;
|
35814 | }
|
35815 |
|
35816 | swiper.emit('slideChangeTransitionStart');
|
35817 |
|
35818 | if (dir === 'next') {
|
35819 | swiper.emit('slideNextTransitionStart');
|
35820 | } else {
|
35821 | swiper.emit('slidePrevTransitionStart');
|
35822 | }
|
35823 | }
|
35824 | }
|
35825 |
|
35826 | function transitionEnd(runCallbacks, direction) {
|
35827 | if (runCallbacks === void 0) {
|
35828 | runCallbacks = true;
|
35829 | }
|
35830 |
|
35831 | var swiper = this;
|
35832 | var activeIndex = swiper.activeIndex,
|
35833 | previousIndex = swiper.previousIndex,
|
35834 | params = swiper.params;
|
35835 | swiper.animating = false;
|
35836 | if (params.cssMode) return;
|
35837 | swiper.setTransition(0);
|
35838 | var dir = direction;
|
35839 |
|
35840 | if (!dir) {
|
35841 | if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';
|
35842 | }
|
35843 |
|
35844 | swiper.emit('transitionEnd');
|
35845 |
|
35846 | if (runCallbacks && activeIndex !== previousIndex) {
|
35847 | if (dir === 'reset') {
|
35848 | swiper.emit('slideResetTransitionEnd');
|
35849 | return;
|
35850 | }
|
35851 |
|
35852 | swiper.emit('slideChangeTransitionEnd');
|
35853 |
|
35854 | if (dir === 'next') {
|
35855 | swiper.emit('slideNextTransitionEnd');
|
35856 | } else {
|
35857 | swiper.emit('slidePrevTransitionEnd');
|
35858 | }
|
35859 | }
|
35860 | }
|
35861 |
|
35862 | var transition = {
|
35863 | setTransition: setTransition,
|
35864 | transitionStart: transitionStart,
|
35865 | transitionEnd: transitionEnd
|
35866 | };
|
35867 |
|
35868 | function slideTo(index, speed, runCallbacks, internal, initial) {
|
35869 | if (index === void 0) {
|
35870 | index = 0;
|
35871 | }
|
35872 |
|
35873 | if (speed === void 0) {
|
35874 | speed = this.params.speed;
|
35875 | }
|
35876 |
|
35877 | if (runCallbacks === void 0) {
|
35878 | runCallbacks = true;
|
35879 | }
|
35880 |
|
35881 | if (typeof index !== 'number' && typeof index !== 'string') {
|
35882 | throw new Error("The 'index' argument cannot have type other than 'number' or 'string'. [" + typeof index + "] given.");
|
35883 | }
|
35884 |
|
35885 | if (typeof index === 'string') {
|
35886 | |
35887 |
|
35888 |
|
35889 |
|
35890 | var indexAsNumber = parseInt(index, 10);
|
35891 | |
35892 |
|
35893 |
|
35894 |
|
35895 |
|
35896 |
|
35897 | var isValidNumber = isFinite(indexAsNumber);
|
35898 |
|
35899 | if (!isValidNumber) {
|
35900 | throw new Error("The passed-in 'index' (string) couldn't be converted to 'number'. [" + index + "] given.");
|
35901 | }
|
35902 |
|
35903 |
|
35904 |
|
35905 | index = indexAsNumber;
|
35906 | }
|
35907 |
|
35908 | var swiper = this;
|
35909 | var slideIndex = index;
|
35910 | if (slideIndex < 0) slideIndex = 0;
|
35911 | var params = swiper.params,
|
35912 | snapGrid = swiper.snapGrid,
|
35913 | slidesGrid = swiper.slidesGrid,
|
35914 | previousIndex = swiper.previousIndex,
|
35915 | activeIndex = swiper.activeIndex,
|
35916 | rtl = swiper.rtlTranslate,
|
35917 | wrapperEl = swiper.wrapperEl,
|
35918 | enabled = swiper.enabled;
|
35919 |
|
35920 | if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {
|
35921 | return false;
|
35922 | }
|
35923 |
|
35924 | var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
|
35925 | var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
|
35926 | if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
|
35927 |
|
35928 | if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
|
35929 | swiper.emit('beforeSlideChangeStart');
|
35930 | }
|
35931 |
|
35932 | var translate = -snapGrid[snapIndex];
|
35933 |
|
35934 | swiper.updateProgress(translate);
|
35935 |
|
35936 | if (params.normalizeSlideIndex) {
|
35937 | for (var i = 0; i < slidesGrid.length; i += 1) {
|
35938 | var normalizedTranslate = -Math.floor(translate * 100);
|
35939 | var normalizedGird = Math.floor(slidesGrid[i] * 100);
|
35940 | var normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
|
35941 |
|
35942 | if (typeof slidesGrid[i + 1] !== 'undefined') {
|
35943 | if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGird) / 2) {
|
35944 | slideIndex = i;
|
35945 | } else if (normalizedTranslate >= normalizedGird && normalizedTranslate < normalizedGridNext) {
|
35946 | slideIndex = i + 1;
|
35947 | }
|
35948 | } else if (normalizedTranslate >= normalizedGird) {
|
35949 | slideIndex = i;
|
35950 | }
|
35951 | }
|
35952 | }
|
35953 |
|
35954 |
|
35955 | if (swiper.initialized && slideIndex !== activeIndex) {
|
35956 | if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {
|
35957 | return false;
|
35958 | }
|
35959 |
|
35960 | if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {
|
35961 | if ((activeIndex || 0) !== slideIndex) return false;
|
35962 | }
|
35963 | }
|
35964 |
|
35965 | var direction;
|
35966 | if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';
|
35967 |
|
35968 | if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {
|
35969 | swiper.updateActiveIndex(slideIndex);
|
35970 |
|
35971 | if (params.autoHeight) {
|
35972 | swiper.updateAutoHeight();
|
35973 | }
|
35974 |
|
35975 | swiper.updateSlidesClasses();
|
35976 |
|
35977 | if (params.effect !== 'slide') {
|
35978 | swiper.setTranslate(translate);
|
35979 | }
|
35980 |
|
35981 | if (direction !== 'reset') {
|
35982 | swiper.transitionStart(runCallbacks, direction);
|
35983 | swiper.transitionEnd(runCallbacks, direction);
|
35984 | }
|
35985 |
|
35986 | return false;
|
35987 | }
|
35988 |
|
35989 | if (params.cssMode) {
|
35990 | var isH = swiper.isHorizontal();
|
35991 | var t = -translate;
|
35992 |
|
35993 | if (rtl) {
|
35994 | t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;
|
35995 | }
|
35996 |
|
35997 | if (speed === 0) {
|
35998 | wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
|
35999 | } else {
|
36000 |
|
36001 | if (wrapperEl.scrollTo) {
|
36002 | var _wrapperEl$scrollTo;
|
36003 |
|
36004 | wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? 'left' : 'top'] = t, _wrapperEl$scrollTo.behavior = 'smooth', _wrapperEl$scrollTo));
|
36005 | } else {
|
36006 | wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;
|
36007 | }
|
36008 | }
|
36009 |
|
36010 | return true;
|
36011 | }
|
36012 |
|
36013 | if (speed === 0) {
|
36014 | swiper.setTransition(0);
|
36015 | swiper.setTranslate(translate);
|
36016 | swiper.updateActiveIndex(slideIndex);
|
36017 | swiper.updateSlidesClasses();
|
36018 | swiper.emit('beforeTransitionStart', speed, internal);
|
36019 | swiper.transitionStart(runCallbacks, direction);
|
36020 | swiper.transitionEnd(runCallbacks, direction);
|
36021 | } else {
|
36022 | swiper.setTransition(speed);
|
36023 | swiper.setTranslate(translate);
|
36024 | swiper.updateActiveIndex(slideIndex);
|
36025 | swiper.updateSlidesClasses();
|
36026 | swiper.emit('beforeTransitionStart', speed, internal);
|
36027 | swiper.transitionStart(runCallbacks, direction);
|
36028 |
|
36029 | if (!swiper.animating) {
|
36030 | swiper.animating = true;
|
36031 |
|
36032 | if (!swiper.onSlideToWrapperTransitionEnd) {
|
36033 | swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {
|
36034 | if (!swiper || swiper.destroyed) return;
|
36035 | if (e.target !== this) return;
|
36036 | swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
|
36037 | swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
|
36038 | swiper.onSlideToWrapperTransitionEnd = null;
|
36039 | delete swiper.onSlideToWrapperTransitionEnd;
|
36040 | swiper.transitionEnd(runCallbacks, direction);
|
36041 | };
|
36042 | }
|
36043 |
|
36044 | swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);
|
36045 | swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);
|
36046 | }
|
36047 | }
|
36048 |
|
36049 | return true;
|
36050 | }
|
36051 |
|
36052 | function slideToLoop(index, speed, runCallbacks, internal) {
|
36053 | if (index === void 0) {
|
36054 | index = 0;
|
36055 | }
|
36056 |
|
36057 | if (speed === void 0) {
|
36058 | speed = this.params.speed;
|
36059 | }
|
36060 |
|
36061 | if (runCallbacks === void 0) {
|
36062 | runCallbacks = true;
|
36063 | }
|
36064 |
|
36065 | var swiper = this;
|
36066 | var newIndex = index;
|
36067 |
|
36068 | if (swiper.params.loop) {
|
36069 | newIndex += swiper.loopedSlides;
|
36070 | }
|
36071 |
|
36072 | return swiper.slideTo(newIndex, speed, runCallbacks, internal);
|
36073 | }
|
36074 |
|
36075 |
|
36076 | function slideNext(speed, runCallbacks, internal) {
|
36077 | if (speed === void 0) {
|
36078 | speed = this.params.speed;
|
36079 | }
|
36080 |
|
36081 | if (runCallbacks === void 0) {
|
36082 | runCallbacks = true;
|
36083 | }
|
36084 |
|
36085 | var swiper = this;
|
36086 | var params = swiper.params,
|
36087 | animating = swiper.animating,
|
36088 | enabled = swiper.enabled;
|
36089 | if (!enabled) return swiper;
|
36090 | var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;
|
36091 |
|
36092 | if (params.loop) {
|
36093 | if (animating && params.loopPreventsSlide) return false;
|
36094 | swiper.loopFix();
|
36095 |
|
36096 | swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
|
36097 | }
|
36098 |
|
36099 | return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
|
36100 | }
|
36101 |
|
36102 |
|
36103 | function slidePrev(speed, runCallbacks, internal) {
|
36104 | if (speed === void 0) {
|
36105 | speed = this.params.speed;
|
36106 | }
|
36107 |
|
36108 | if (runCallbacks === void 0) {
|
36109 | runCallbacks = true;
|
36110 | }
|
36111 |
|
36112 | var swiper = this;
|
36113 | var params = swiper.params,
|
36114 | animating = swiper.animating,
|
36115 | snapGrid = swiper.snapGrid,
|
36116 | slidesGrid = swiper.slidesGrid,
|
36117 | rtlTranslate = swiper.rtlTranslate,
|
36118 | enabled = swiper.enabled;
|
36119 | if (!enabled) return swiper;
|
36120 |
|
36121 | if (params.loop) {
|
36122 | if (animating && params.loopPreventsSlide) return false;
|
36123 | swiper.loopFix();
|
36124 |
|
36125 | swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
|
36126 | }
|
36127 |
|
36128 | var translate = rtlTranslate ? swiper.translate : -swiper.translate;
|
36129 |
|
36130 | function normalize(val) {
|
36131 | if (val < 0) return -Math.floor(Math.abs(val));
|
36132 | return Math.floor(val);
|
36133 | }
|
36134 |
|
36135 | var normalizedTranslate = normalize(translate);
|
36136 | var normalizedSnapGrid = snapGrid.map(function (val) {
|
36137 | return normalize(val);
|
36138 | });
|
36139 | var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];
|
36140 | var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
|
36141 |
|
36142 | if (typeof prevSnap === 'undefined' && params.cssMode) {
|
36143 | snapGrid.forEach(function (snap) {
|
36144 | if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;
|
36145 | });
|
36146 | }
|
36147 |
|
36148 | var prevIndex;
|
36149 |
|
36150 | if (typeof prevSnap !== 'undefined') {
|
36151 | prevIndex = slidesGrid.indexOf(prevSnap);
|
36152 | if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
|
36153 | }
|
36154 |
|
36155 | return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
|
36156 | }
|
36157 |
|
36158 |
|
36159 | function slideReset(speed, runCallbacks, internal) {
|
36160 | if (speed === void 0) {
|
36161 | speed = this.params.speed;
|
36162 | }
|
36163 |
|
36164 | if (runCallbacks === void 0) {
|
36165 | runCallbacks = true;
|
36166 | }
|
36167 |
|
36168 | var swiper = this;
|
36169 | return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
|
36170 | }
|
36171 |
|
36172 |
|
36173 | function slideToClosest(speed, runCallbacks, internal, threshold) {
|
36174 | if (speed === void 0) {
|
36175 | speed = this.params.speed;
|
36176 | }
|
36177 |
|
36178 | if (runCallbacks === void 0) {
|
36179 | runCallbacks = true;
|
36180 | }
|
36181 |
|
36182 | if (threshold === void 0) {
|
36183 | threshold = 0.5;
|
36184 | }
|
36185 |
|
36186 | var swiper = this;
|
36187 | var index = swiper.activeIndex;
|
36188 | var skip = Math.min(swiper.params.slidesPerGroupSkip, index);
|
36189 | var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);
|
36190 | var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
|
36191 |
|
36192 | if (translate >= swiper.snapGrid[snapIndex]) {
|
36193 |
|
36194 |
|
36195 | var currentSnap = swiper.snapGrid[snapIndex];
|
36196 | var nextSnap = swiper.snapGrid[snapIndex + 1];
|
36197 |
|
36198 | if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {
|
36199 | index += swiper.params.slidesPerGroup;
|
36200 | }
|
36201 | } else {
|
36202 |
|
36203 |
|
36204 | var prevSnap = swiper.snapGrid[snapIndex - 1];
|
36205 | var _currentSnap = swiper.snapGrid[snapIndex];
|
36206 |
|
36207 | if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) {
|
36208 | index -= swiper.params.slidesPerGroup;
|
36209 | }
|
36210 | }
|
36211 |
|
36212 | index = Math.max(index, 0);
|
36213 | index = Math.min(index, swiper.slidesGrid.length - 1);
|
36214 | return swiper.slideTo(index, speed, runCallbacks, internal);
|
36215 | }
|
36216 |
|
36217 | function slideToClickedSlide() {
|
36218 | var swiper = this;
|
36219 | var params = swiper.params,
|
36220 | $wrapperEl = swiper.$wrapperEl;
|
36221 | var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;
|
36222 | var slideToIndex = swiper.clickedIndex;
|
36223 | var realIndex;
|
36224 |
|
36225 | if (params.loop) {
|
36226 | if (swiper.animating) return;
|
36227 | realIndex = parseInt($$1(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);
|
36228 |
|
36229 | if (params.centeredSlides) {
|
36230 | if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
|
36231 | swiper.loopFix();
|
36232 | slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
|
36233 | nextTick(function () {
|
36234 | swiper.slideTo(slideToIndex);
|
36235 | });
|
36236 | } else {
|
36237 | swiper.slideTo(slideToIndex);
|
36238 | }
|
36239 | } else if (slideToIndex > swiper.slides.length - slidesPerView) {
|
36240 | swiper.loopFix();
|
36241 | slideToIndex = $wrapperEl.children("." + params.slideClass + "[data-swiper-slide-index=\"" + realIndex + "\"]:not(." + params.slideDuplicateClass + ")").eq(0).index();
|
36242 | nextTick(function () {
|
36243 | swiper.slideTo(slideToIndex);
|
36244 | });
|
36245 | } else {
|
36246 | swiper.slideTo(slideToIndex);
|
36247 | }
|
36248 | } else {
|
36249 | swiper.slideTo(slideToIndex);
|
36250 | }
|
36251 | }
|
36252 |
|
36253 | var slide = {
|
36254 | slideTo: slideTo,
|
36255 | slideToLoop: slideToLoop,
|
36256 | slideNext: slideNext,
|
36257 | slidePrev: slidePrev,
|
36258 | slideReset: slideReset,
|
36259 | slideToClosest: slideToClosest,
|
36260 | slideToClickedSlide: slideToClickedSlide
|
36261 | };
|
36262 |
|
36263 | function loopCreate() {
|
36264 | var swiper = this;
|
36265 | var document = getDocument();
|
36266 | var params = swiper.params,
|
36267 | $wrapperEl = swiper.$wrapperEl;
|
36268 |
|
36269 | $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove();
|
36270 | var slides = $wrapperEl.children("." + params.slideClass);
|
36271 |
|
36272 | if (params.loopFillGroupWithBlank) {
|
36273 | var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;
|
36274 |
|
36275 | if (blankSlidesNum !== params.slidesPerGroup) {
|
36276 | for (var i = 0; i < blankSlidesNum; i += 1) {
|
36277 | var blankNode = $$1(document.createElement('div')).addClass(params.slideClass + " " + params.slideBlankClass);
|
36278 | $wrapperEl.append(blankNode);
|
36279 | }
|
36280 |
|
36281 | slides = $wrapperEl.children("." + params.slideClass);
|
36282 | }
|
36283 | }
|
36284 |
|
36285 | if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;
|
36286 | swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
|
36287 | swiper.loopedSlides += params.loopAdditionalSlides;
|
36288 |
|
36289 | if (swiper.loopedSlides > slides.length) {
|
36290 | swiper.loopedSlides = slides.length;
|
36291 | }
|
36292 |
|
36293 | var prependSlides = [];
|
36294 | var appendSlides = [];
|
36295 | slides.each(function (el, index) {
|
36296 | var slide = $$1(el);
|
36297 |
|
36298 | if (index < swiper.loopedSlides) {
|
36299 | appendSlides.push(el);
|
36300 | }
|
36301 |
|
36302 | if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
|
36303 | prependSlides.push(el);
|
36304 | }
|
36305 |
|
36306 | slide.attr('data-swiper-slide-index', index);
|
36307 | });
|
36308 |
|
36309 | for (var _i = 0; _i < appendSlides.length; _i += 1) {
|
36310 | $wrapperEl.append($$1(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass));
|
36311 | }
|
36312 |
|
36313 | for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) {
|
36314 | $wrapperEl.prepend($$1(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass));
|
36315 | }
|
36316 | }
|
36317 |
|
36318 | function loopFix() {
|
36319 | var swiper = this;
|
36320 | swiper.emit('beforeLoopFix');
|
36321 | var activeIndex = swiper.activeIndex,
|
36322 | slides = swiper.slides,
|
36323 | loopedSlides = swiper.loopedSlides,
|
36324 | allowSlidePrev = swiper.allowSlidePrev,
|
36325 | allowSlideNext = swiper.allowSlideNext,
|
36326 | snapGrid = swiper.snapGrid,
|
36327 | rtl = swiper.rtlTranslate;
|
36328 | var newIndex;
|
36329 | swiper.allowSlidePrev = true;
|
36330 | swiper.allowSlideNext = true;
|
36331 | var snapTranslate = -snapGrid[activeIndex];
|
36332 | var diff = snapTranslate - swiper.getTranslate();
|
36333 |
|
36334 | if (activeIndex < loopedSlides) {
|
36335 | newIndex = slides.length - loopedSlides * 3 + activeIndex;
|
36336 | newIndex += loopedSlides;
|
36337 | var slideChanged = swiper.slideTo(newIndex, 0, false, true);
|
36338 |
|
36339 | if (slideChanged && diff !== 0) {
|
36340 | swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
|
36341 | }
|
36342 | } else if (activeIndex >= slides.length - loopedSlides) {
|
36343 |
|
36344 | newIndex = -slides.length + activeIndex + loopedSlides;
|
36345 | newIndex += loopedSlides;
|
36346 |
|
36347 | var _slideChanged = swiper.slideTo(newIndex, 0, false, true);
|
36348 |
|
36349 | if (_slideChanged && diff !== 0) {
|
36350 | swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);
|
36351 | }
|
36352 | }
|
36353 |
|
36354 | swiper.allowSlidePrev = allowSlidePrev;
|
36355 | swiper.allowSlideNext = allowSlideNext;
|
36356 | swiper.emit('loopFix');
|
36357 | }
|
36358 |
|
36359 | function loopDestroy() {
|
36360 | var swiper = this;
|
36361 | var $wrapperEl = swiper.$wrapperEl,
|
36362 | params = swiper.params,
|
36363 | slides = swiper.slides;
|
36364 | $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove();
|
36365 | slides.removeAttr('data-swiper-slide-index');
|
36366 | }
|
36367 |
|
36368 | var loop = {
|
36369 | loopCreate: loopCreate,
|
36370 | loopFix: loopFix,
|
36371 | loopDestroy: loopDestroy
|
36372 | };
|
36373 |
|
36374 | function setGrabCursor(moving) {
|
36375 | var swiper = this;
|
36376 | if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
|
36377 | var el = swiper.el;
|
36378 | el.style.cursor = 'move';
|
36379 | el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';
|
36380 | el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';
|
36381 | el.style.cursor = moving ? 'grabbing' : 'grab';
|
36382 | }
|
36383 |
|
36384 | function unsetGrabCursor() {
|
36385 | var swiper = this;
|
36386 |
|
36387 | if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
|
36388 | return;
|
36389 | }
|
36390 |
|
36391 | swiper.el.style.cursor = '';
|
36392 | }
|
36393 |
|
36394 | var grabCursor = {
|
36395 | setGrabCursor: setGrabCursor,
|
36396 | unsetGrabCursor: unsetGrabCursor
|
36397 | };
|
36398 |
|
36399 | function appendSlide(slides) {
|
36400 | var swiper = this;
|
36401 | var $wrapperEl = swiper.$wrapperEl,
|
36402 | params = swiper.params;
|
36403 |
|
36404 | if (params.loop) {
|
36405 | swiper.loopDestroy();
|
36406 | }
|
36407 |
|
36408 | if (typeof slides === 'object' && 'length' in slides) {
|
36409 | for (var i = 0; i < slides.length; i += 1) {
|
36410 | if (slides[i]) $wrapperEl.append(slides[i]);
|
36411 | }
|
36412 | } else {
|
36413 | $wrapperEl.append(slides);
|
36414 | }
|
36415 |
|
36416 | if (params.loop) {
|
36417 | swiper.loopCreate();
|
36418 | }
|
36419 |
|
36420 | if (!(params.observer && swiper.support.observer)) {
|
36421 | swiper.update();
|
36422 | }
|
36423 | }
|
36424 |
|
36425 | function prependSlide(slides) {
|
36426 | var swiper = this;
|
36427 | var params = swiper.params,
|
36428 | $wrapperEl = swiper.$wrapperEl,
|
36429 | activeIndex = swiper.activeIndex;
|
36430 |
|
36431 | if (params.loop) {
|
36432 | swiper.loopDestroy();
|
36433 | }
|
36434 |
|
36435 | var newActiveIndex = activeIndex + 1;
|
36436 |
|
36437 | if (typeof slides === 'object' && 'length' in slides) {
|
36438 | for (var i = 0; i < slides.length; i += 1) {
|
36439 | if (slides[i]) $wrapperEl.prepend(slides[i]);
|
36440 | }
|
36441 |
|
36442 | newActiveIndex = activeIndex + slides.length;
|
36443 | } else {
|
36444 | $wrapperEl.prepend(slides);
|
36445 | }
|
36446 |
|
36447 | if (params.loop) {
|
36448 | swiper.loopCreate();
|
36449 | }
|
36450 |
|
36451 | if (!(params.observer && swiper.support.observer)) {
|
36452 | swiper.update();
|
36453 | }
|
36454 |
|
36455 | swiper.slideTo(newActiveIndex, 0, false);
|
36456 | }
|
36457 |
|
36458 | function addSlide(index, slides) {
|
36459 | var swiper = this;
|
36460 | var $wrapperEl = swiper.$wrapperEl,
|
36461 | params = swiper.params,
|
36462 | activeIndex = swiper.activeIndex;
|
36463 | var activeIndexBuffer = activeIndex;
|
36464 |
|
36465 | if (params.loop) {
|
36466 | activeIndexBuffer -= swiper.loopedSlides;
|
36467 | swiper.loopDestroy();
|
36468 | swiper.slides = $wrapperEl.children("." + params.slideClass);
|
36469 | }
|
36470 |
|
36471 | var baseLength = swiper.slides.length;
|
36472 |
|
36473 | if (index <= 0) {
|
36474 | swiper.prependSlide(slides);
|
36475 | return;
|
36476 | }
|
36477 |
|
36478 | if (index >= baseLength) {
|
36479 | swiper.appendSlide(slides);
|
36480 | return;
|
36481 | }
|
36482 |
|
36483 | var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;
|
36484 | var slidesBuffer = [];
|
36485 |
|
36486 | for (var i = baseLength - 1; i >= index; i -= 1) {
|
36487 | var currentSlide = swiper.slides.eq(i);
|
36488 | currentSlide.remove();
|
36489 | slidesBuffer.unshift(currentSlide);
|
36490 | }
|
36491 |
|
36492 | if (typeof slides === 'object' && 'length' in slides) {
|
36493 | for (var _i = 0; _i < slides.length; _i += 1) {
|
36494 | if (slides[_i]) $wrapperEl.append(slides[_i]);
|
36495 | }
|
36496 |
|
36497 | newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;
|
36498 | } else {
|
36499 | $wrapperEl.append(slides);
|
36500 | }
|
36501 |
|
36502 | for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) {
|
36503 | $wrapperEl.append(slidesBuffer[_i2]);
|
36504 | }
|
36505 |
|
36506 | if (params.loop) {
|
36507 | swiper.loopCreate();
|
36508 | }
|
36509 |
|
36510 | if (!(params.observer && swiper.support.observer)) {
|
36511 | swiper.update();
|
36512 | }
|
36513 |
|
36514 | if (params.loop) {
|
36515 | swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
|
36516 | } else {
|
36517 | swiper.slideTo(newActiveIndex, 0, false);
|
36518 | }
|
36519 | }
|
36520 |
|
36521 | function removeSlide(slidesIndexes) {
|
36522 | var swiper = this;
|
36523 | var params = swiper.params,
|
36524 | $wrapperEl = swiper.$wrapperEl,
|
36525 | activeIndex = swiper.activeIndex;
|
36526 | var activeIndexBuffer = activeIndex;
|
36527 |
|
36528 | if (params.loop) {
|
36529 | activeIndexBuffer -= swiper.loopedSlides;
|
36530 | swiper.loopDestroy();
|
36531 | swiper.slides = $wrapperEl.children("." + params.slideClass);
|
36532 | }
|
36533 |
|
36534 | var newActiveIndex = activeIndexBuffer;
|
36535 | var indexToRemove;
|
36536 |
|
36537 | if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {
|
36538 | for (var i = 0; i < slidesIndexes.length; i += 1) {
|
36539 | indexToRemove = slidesIndexes[i];
|
36540 | if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
|
36541 | if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
|
36542 | }
|
36543 |
|
36544 | newActiveIndex = Math.max(newActiveIndex, 0);
|
36545 | } else {
|
36546 | indexToRemove = slidesIndexes;
|
36547 | if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();
|
36548 | if (indexToRemove < newActiveIndex) newActiveIndex -= 1;
|
36549 | newActiveIndex = Math.max(newActiveIndex, 0);
|
36550 | }
|
36551 |
|
36552 | if (params.loop) {
|
36553 | swiper.loopCreate();
|
36554 | }
|
36555 |
|
36556 | if (!(params.observer && swiper.support.observer)) {
|
36557 | swiper.update();
|
36558 | }
|
36559 |
|
36560 | if (params.loop) {
|
36561 | swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);
|
36562 | } else {
|
36563 | swiper.slideTo(newActiveIndex, 0, false);
|
36564 | }
|
36565 | }
|
36566 |
|
36567 | function removeAllSlides() {
|
36568 | var swiper = this;
|
36569 | var slidesIndexes = [];
|
36570 |
|
36571 | for (var i = 0; i < swiper.slides.length; i += 1) {
|
36572 | slidesIndexes.push(i);
|
36573 | }
|
36574 |
|
36575 | swiper.removeSlide(slidesIndexes);
|
36576 | }
|
36577 |
|
36578 | var manipulation = {
|
36579 | appendSlide: appendSlide,
|
36580 | prependSlide: prependSlide,
|
36581 | addSlide: addSlide,
|
36582 | removeSlide: removeSlide,
|
36583 | removeAllSlides: removeAllSlides
|
36584 | };
|
36585 |
|
36586 | function onTouchStart(event) {
|
36587 | var swiper = this;
|
36588 | var document = getDocument();
|
36589 | var window = getWindow();
|
36590 | var data = swiper.touchEventsData;
|
36591 | var params = swiper.params,
|
36592 | touches = swiper.touches,
|
36593 | enabled = swiper.enabled;
|
36594 | if (!enabled) return;
|
36595 |
|
36596 | if (swiper.animating && params.preventInteractionOnTransition) {
|
36597 | return;
|
36598 | }
|
36599 |
|
36600 | var e = event;
|
36601 | if (e.originalEvent) e = e.originalEvent;
|
36602 | var $targetEl = $$1(e.target);
|
36603 |
|
36604 | if (params.touchEventsTarget === 'wrapper') {
|
36605 | if (!$targetEl.closest(swiper.wrapperEl).length) return;
|
36606 | }
|
36607 |
|
36608 | data.isTouchEvent = e.type === 'touchstart';
|
36609 | if (!data.isTouchEvent && 'which' in e && e.which === 3) return;
|
36610 | if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
|
36611 | if (data.isTouched && data.isMoved) return;
|
36612 |
|
36613 | var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
|
36614 |
|
36615 | if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {
|
36616 | $targetEl = $$1(event.path[0]);
|
36617 | }
|
36618 |
|
36619 | if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) {
|
36620 | swiper.allowClick = true;
|
36621 | return;
|
36622 | }
|
36623 |
|
36624 | if (params.swipeHandler) {
|
36625 | if (!$targetEl.closest(params.swipeHandler)[0]) return;
|
36626 | }
|
36627 |
|
36628 | touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
36629 | touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
36630 | var startX = touches.currentX;
|
36631 | var startY = touches.currentY;
|
36632 |
|
36633 | var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;
|
36634 | var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;
|
36635 |
|
36636 | if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {
|
36637 | if (edgeSwipeDetection === 'prevent') {
|
36638 | event.preventDefault();
|
36639 | } else {
|
36640 | return;
|
36641 | }
|
36642 | }
|
36643 |
|
36644 | extend(data, {
|
36645 | isTouched: true,
|
36646 | isMoved: false,
|
36647 | allowTouchCallbacks: true,
|
36648 | isScrolling: undefined,
|
36649 | startMoving: undefined
|
36650 | });
|
36651 | touches.startX = startX;
|
36652 | touches.startY = startY;
|
36653 | data.touchStartTime = now();
|
36654 | swiper.allowClick = true;
|
36655 | swiper.updateSize();
|
36656 | swiper.swipeDirection = undefined;
|
36657 | if (params.threshold > 0) data.allowThresholdMove = false;
|
36658 |
|
36659 | if (e.type !== 'touchstart') {
|
36660 | var preventDefault = true;
|
36661 | if ($targetEl.is(data.formElements)) preventDefault = false;
|
36662 |
|
36663 | if (document.activeElement && $$1(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) {
|
36664 | document.activeElement.blur();
|
36665 | }
|
36666 |
|
36667 | var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
|
36668 |
|
36669 | if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {
|
36670 | e.preventDefault();
|
36671 | }
|
36672 | }
|
36673 |
|
36674 | swiper.emit('touchStart', e);
|
36675 | }
|
36676 |
|
36677 | function onTouchMove(event) {
|
36678 | var document = getDocument();
|
36679 | var swiper = this;
|
36680 | var data = swiper.touchEventsData;
|
36681 | var params = swiper.params,
|
36682 | touches = swiper.touches,
|
36683 | rtl = swiper.rtlTranslate,
|
36684 | enabled = swiper.enabled;
|
36685 | if (!enabled) return;
|
36686 | var e = event;
|
36687 | if (e.originalEvent) e = e.originalEvent;
|
36688 |
|
36689 | if (!data.isTouched) {
|
36690 | if (data.startMoving && data.isScrolling) {
|
36691 | swiper.emit('touchMoveOpposite', e);
|
36692 | }
|
36693 |
|
36694 | return;
|
36695 | }
|
36696 |
|
36697 | if (data.isTouchEvent && e.type !== 'touchmove') return;
|
36698 | var targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);
|
36699 | var pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;
|
36700 | var pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;
|
36701 |
|
36702 | if (e.preventedByNestedSwiper) {
|
36703 | touches.startX = pageX;
|
36704 | touches.startY = pageY;
|
36705 | return;
|
36706 | }
|
36707 |
|
36708 | if (!swiper.allowTouchMove) {
|
36709 |
|
36710 | swiper.allowClick = false;
|
36711 |
|
36712 | if (data.isTouched) {
|
36713 | extend(touches, {
|
36714 | startX: pageX,
|
36715 | startY: pageY,
|
36716 | currentX: pageX,
|
36717 | currentY: pageY
|
36718 | });
|
36719 | data.touchStartTime = now();
|
36720 | }
|
36721 |
|
36722 | return;
|
36723 | }
|
36724 |
|
36725 | if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {
|
36726 | if (swiper.isVertical()) {
|
36727 |
|
36728 | if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
|
36729 | data.isTouched = false;
|
36730 | data.isMoved = false;
|
36731 | return;
|
36732 | }
|
36733 | } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {
|
36734 | return;
|
36735 | }
|
36736 | }
|
36737 |
|
36738 | if (data.isTouchEvent && document.activeElement) {
|
36739 | if (e.target === document.activeElement && $$1(e.target).is(data.formElements)) {
|
36740 | data.isMoved = true;
|
36741 | swiper.allowClick = false;
|
36742 | return;
|
36743 | }
|
36744 | }
|
36745 |
|
36746 | if (data.allowTouchCallbacks) {
|
36747 | swiper.emit('touchMove', e);
|
36748 | }
|
36749 |
|
36750 | if (e.targetTouches && e.targetTouches.length > 1) return;
|
36751 | touches.currentX = pageX;
|
36752 | touches.currentY = pageY;
|
36753 | var diffX = touches.currentX - touches.startX;
|
36754 | var diffY = touches.currentY - touches.startY;
|
36755 | if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) return;
|
36756 |
|
36757 | if (typeof data.isScrolling === 'undefined') {
|
36758 | var touchAngle;
|
36759 |
|
36760 | if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
|
36761 | data.isScrolling = false;
|
36762 | } else {
|
36763 |
|
36764 | if (diffX * diffX + diffY * diffY >= 25) {
|
36765 | touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
|
36766 | data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
|
36767 | }
|
36768 | }
|
36769 | }
|
36770 |
|
36771 | if (data.isScrolling) {
|
36772 | swiper.emit('touchMoveOpposite', e);
|
36773 | }
|
36774 |
|
36775 | if (typeof data.startMoving === 'undefined') {
|
36776 | if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
|
36777 | data.startMoving = true;
|
36778 | }
|
36779 | }
|
36780 |
|
36781 | if (data.isScrolling) {
|
36782 | data.isTouched = false;
|
36783 | return;
|
36784 | }
|
36785 |
|
36786 | if (!data.startMoving) {
|
36787 | return;
|
36788 | }
|
36789 |
|
36790 | swiper.allowClick = false;
|
36791 |
|
36792 | if (!params.cssMode && e.cancelable) {
|
36793 | e.preventDefault();
|
36794 | }
|
36795 |
|
36796 | if (params.touchMoveStopPropagation && !params.nested) {
|
36797 | e.stopPropagation();
|
36798 | }
|
36799 |
|
36800 | if (!data.isMoved) {
|
36801 | if (params.loop) {
|
36802 | swiper.loopFix();
|
36803 | }
|
36804 |
|
36805 | data.startTranslate = swiper.getTranslate();
|
36806 | swiper.setTransition(0);
|
36807 |
|
36808 | if (swiper.animating) {
|
36809 | swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');
|
36810 | }
|
36811 |
|
36812 | data.allowMomentumBounce = false;
|
36813 |
|
36814 | if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
|
36815 | swiper.setGrabCursor(true);
|
36816 | }
|
36817 |
|
36818 | swiper.emit('sliderFirstMove', e);
|
36819 | }
|
36820 |
|
36821 | swiper.emit('sliderMove', e);
|
36822 | data.isMoved = true;
|
36823 | var diff = swiper.isHorizontal() ? diffX : diffY;
|
36824 | touches.diff = diff;
|
36825 | diff *= params.touchRatio;
|
36826 | if (rtl) diff = -diff;
|
36827 | swiper.swipeDirection = diff > 0 ? 'prev' : 'next';
|
36828 | data.currentTranslate = diff + data.startTranslate;
|
36829 | var disableParentSwiper = true;
|
36830 | var resistanceRatio = params.resistanceRatio;
|
36831 |
|
36832 | if (params.touchReleaseOnEdges) {
|
36833 | resistanceRatio = 0;
|
36834 | }
|
36835 |
|
36836 | if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {
|
36837 | disableParentSwiper = false;
|
36838 | if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio);
|
36839 | } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {
|
36840 | disableParentSwiper = false;
|
36841 | if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio);
|
36842 | }
|
36843 |
|
36844 | if (disableParentSwiper) {
|
36845 | e.preventedByNestedSwiper = true;
|
36846 | }
|
36847 |
|
36848 |
|
36849 | if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {
|
36850 | data.currentTranslate = data.startTranslate;
|
36851 | }
|
36852 |
|
36853 | if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {
|
36854 | data.currentTranslate = data.startTranslate;
|
36855 | }
|
36856 |
|
36857 | if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
|
36858 | data.currentTranslate = data.startTranslate;
|
36859 | }
|
36860 |
|
36861 |
|
36862 | if (params.threshold > 0) {
|
36863 | if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
|
36864 | if (!data.allowThresholdMove) {
|
36865 | data.allowThresholdMove = true;
|
36866 | touches.startX = touches.currentX;
|
36867 | touches.startY = touches.currentY;
|
36868 | data.currentTranslate = data.startTranslate;
|
36869 | touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
|
36870 | return;
|
36871 | }
|
36872 | } else {
|
36873 | data.currentTranslate = data.startTranslate;
|
36874 | return;
|
36875 | }
|
36876 | }
|
36877 |
|
36878 | if (!params.followFinger || params.cssMode) return;
|
36879 |
|
36880 | if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {
|
36881 | swiper.updateActiveIndex();
|
36882 | swiper.updateSlidesClasses();
|
36883 | }
|
36884 |
|
36885 | if (params.freeMode) {
|
36886 |
|
36887 | if (data.velocities.length === 0) {
|
36888 | data.velocities.push({
|
36889 | position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],
|
36890 | time: data.touchStartTime
|
36891 | });
|
36892 | }
|
36893 |
|
36894 | data.velocities.push({
|
36895 | position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],
|
36896 | time: now()
|
36897 | });
|
36898 | }
|
36899 |
|
36900 |
|
36901 | swiper.updateProgress(data.currentTranslate);
|
36902 |
|
36903 | swiper.setTranslate(data.currentTranslate);
|
36904 | }
|
36905 |
|
36906 | function onTouchEnd(event) {
|
36907 | var swiper = this;
|
36908 | var data = swiper.touchEventsData;
|
36909 | var params = swiper.params,
|
36910 | touches = swiper.touches,
|
36911 | rtl = swiper.rtlTranslate,
|
36912 | $wrapperEl = swiper.$wrapperEl,
|
36913 | slidesGrid = swiper.slidesGrid,
|
36914 | snapGrid = swiper.snapGrid,
|
36915 | enabled = swiper.enabled;
|
36916 | if (!enabled) return;
|
36917 | var e = event;
|
36918 | if (e.originalEvent) e = e.originalEvent;
|
36919 |
|
36920 | if (data.allowTouchCallbacks) {
|
36921 | swiper.emit('touchEnd', e);
|
36922 | }
|
36923 |
|
36924 | data.allowTouchCallbacks = false;
|
36925 |
|
36926 | if (!data.isTouched) {
|
36927 | if (data.isMoved && params.grabCursor) {
|
36928 | swiper.setGrabCursor(false);
|
36929 | }
|
36930 |
|
36931 | data.isMoved = false;
|
36932 | data.startMoving = false;
|
36933 | return;
|
36934 | }
|
36935 |
|
36936 |
|
36937 | if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
|
36938 | swiper.setGrabCursor(false);
|
36939 | }
|
36940 |
|
36941 |
|
36942 | var touchEndTime = now();
|
36943 | var timeDiff = touchEndTime - data.touchStartTime;
|
36944 |
|
36945 | if (swiper.allowClick) {
|
36946 | swiper.updateClickedSlide(e);
|
36947 | swiper.emit('tap click', e);
|
36948 |
|
36949 | if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
|
36950 | swiper.emit('doubleTap doubleClick', e);
|
36951 | }
|
36952 | }
|
36953 |
|
36954 | data.lastClickTime = now();
|
36955 | nextTick(function () {
|
36956 | if (!swiper.destroyed) swiper.allowClick = true;
|
36957 | });
|
36958 |
|
36959 | if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {
|
36960 | data.isTouched = false;
|
36961 | data.isMoved = false;
|
36962 | data.startMoving = false;
|
36963 | return;
|
36964 | }
|
36965 |
|
36966 | data.isTouched = false;
|
36967 | data.isMoved = false;
|
36968 | data.startMoving = false;
|
36969 | var currentPos;
|
36970 |
|
36971 | if (params.followFinger) {
|
36972 | currentPos = rtl ? swiper.translate : -swiper.translate;
|
36973 | } else {
|
36974 | currentPos = -data.currentTranslate;
|
36975 | }
|
36976 |
|
36977 | if (params.cssMode) {
|
36978 | return;
|
36979 | }
|
36980 |
|
36981 | if (params.freeMode) {
|
36982 | if (currentPos < -swiper.minTranslate()) {
|
36983 | swiper.slideTo(swiper.activeIndex);
|
36984 | return;
|
36985 | }
|
36986 |
|
36987 | if (currentPos > -swiper.maxTranslate()) {
|
36988 | if (swiper.slides.length < snapGrid.length) {
|
36989 | swiper.slideTo(snapGrid.length - 1);
|
36990 | } else {
|
36991 | swiper.slideTo(swiper.slides.length - 1);
|
36992 | }
|
36993 |
|
36994 | return;
|
36995 | }
|
36996 |
|
36997 | if (params.freeModeMomentum) {
|
36998 | if (data.velocities.length > 1) {
|
36999 | var lastMoveEvent = data.velocities.pop();
|
37000 | var velocityEvent = data.velocities.pop();
|
37001 | var distance = lastMoveEvent.position - velocityEvent.position;
|
37002 | var time = lastMoveEvent.time - velocityEvent.time;
|
37003 | swiper.velocity = distance / time;
|
37004 | swiper.velocity /= 2;
|
37005 |
|
37006 | if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {
|
37007 | swiper.velocity = 0;
|
37008 | }
|
37009 |
|
37010 |
|
37011 |
|
37012 | if (time > 150 || now() - lastMoveEvent.time > 300) {
|
37013 | swiper.velocity = 0;
|
37014 | }
|
37015 | } else {
|
37016 | swiper.velocity = 0;
|
37017 | }
|
37018 |
|
37019 | swiper.velocity *= params.freeModeMomentumVelocityRatio;
|
37020 | data.velocities.length = 0;
|
37021 | var momentumDuration = 1000 * params.freeModeMomentumRatio;
|
37022 | var momentumDistance = swiper.velocity * momentumDuration;
|
37023 | var newPosition = swiper.translate + momentumDistance;
|
37024 | if (rtl) newPosition = -newPosition;
|
37025 | var doBounce = false;
|
37026 | var afterBouncePosition;
|
37027 | var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;
|
37028 | var needsLoopFix;
|
37029 |
|
37030 | if (newPosition < swiper.maxTranslate()) {
|
37031 | if (params.freeModeMomentumBounce) {
|
37032 | if (newPosition + swiper.maxTranslate() < -bounceAmount) {
|
37033 | newPosition = swiper.maxTranslate() - bounceAmount;
|
37034 | }
|
37035 |
|
37036 | afterBouncePosition = swiper.maxTranslate();
|
37037 | doBounce = true;
|
37038 | data.allowMomentumBounce = true;
|
37039 | } else {
|
37040 | newPosition = swiper.maxTranslate();
|
37041 | }
|
37042 |
|
37043 | if (params.loop && params.centeredSlides) needsLoopFix = true;
|
37044 | } else if (newPosition > swiper.minTranslate()) {
|
37045 | if (params.freeModeMomentumBounce) {
|
37046 | if (newPosition - swiper.minTranslate() > bounceAmount) {
|
37047 | newPosition = swiper.minTranslate() + bounceAmount;
|
37048 | }
|
37049 |
|
37050 | afterBouncePosition = swiper.minTranslate();
|
37051 | doBounce = true;
|
37052 | data.allowMomentumBounce = true;
|
37053 | } else {
|
37054 | newPosition = swiper.minTranslate();
|
37055 | }
|
37056 |
|
37057 | if (params.loop && params.centeredSlides) needsLoopFix = true;
|
37058 | } else if (params.freeModeSticky) {
|
37059 | var nextSlide;
|
37060 |
|
37061 | for (var j = 0; j < snapGrid.length; j += 1) {
|
37062 | if (snapGrid[j] > -newPosition) {
|
37063 | nextSlide = j;
|
37064 | break;
|
37065 | }
|
37066 | }
|
37067 |
|
37068 | if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {
|
37069 | newPosition = snapGrid[nextSlide];
|
37070 | } else {
|
37071 | newPosition = snapGrid[nextSlide - 1];
|
37072 | }
|
37073 |
|
37074 | newPosition = -newPosition;
|
37075 | }
|
37076 |
|
37077 | if (needsLoopFix) {
|
37078 | swiper.once('transitionEnd', function () {
|
37079 | swiper.loopFix();
|
37080 | });
|
37081 | }
|
37082 |
|
37083 |
|
37084 | if (swiper.velocity !== 0) {
|
37085 | if (rtl) {
|
37086 | momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);
|
37087 | } else {
|
37088 | momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);
|
37089 | }
|
37090 |
|
37091 | if (params.freeModeSticky) {
|
37092 |
|
37093 |
|
37094 |
|
37095 |
|
37096 |
|
37097 |
|
37098 |
|
37099 | var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);
|
37100 | var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];
|
37101 |
|
37102 | if (moveDistance < currentSlideSize) {
|
37103 | momentumDuration = params.speed;
|
37104 | } else if (moveDistance < 2 * currentSlideSize) {
|
37105 | momentumDuration = params.speed * 1.5;
|
37106 | } else {
|
37107 | momentumDuration = params.speed * 2.5;
|
37108 | }
|
37109 | }
|
37110 | } else if (params.freeModeSticky) {
|
37111 | swiper.slideToClosest();
|
37112 | return;
|
37113 | }
|
37114 |
|
37115 | if (params.freeModeMomentumBounce && doBounce) {
|
37116 | swiper.updateProgress(afterBouncePosition);
|
37117 | swiper.setTransition(momentumDuration);
|
37118 | swiper.setTranslate(newPosition);
|
37119 | swiper.transitionStart(true, swiper.swipeDirection);
|
37120 | swiper.animating = true;
|
37121 | $wrapperEl.transitionEnd(function () {
|
37122 | if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;
|
37123 | swiper.emit('momentumBounce');
|
37124 | swiper.setTransition(params.speed);
|
37125 | setTimeout(function () {
|
37126 | swiper.setTranslate(afterBouncePosition);
|
37127 | $wrapperEl.transitionEnd(function () {
|
37128 | if (!swiper || swiper.destroyed) return;
|
37129 | swiper.transitionEnd();
|
37130 | });
|
37131 | }, 0);
|
37132 | });
|
37133 | } else if (swiper.velocity) {
|
37134 | swiper.updateProgress(newPosition);
|
37135 | swiper.setTransition(momentumDuration);
|
37136 | swiper.setTranslate(newPosition);
|
37137 | swiper.transitionStart(true, swiper.swipeDirection);
|
37138 |
|
37139 | if (!swiper.animating) {
|
37140 | swiper.animating = true;
|
37141 | $wrapperEl.transitionEnd(function () {
|
37142 | if (!swiper || swiper.destroyed) return;
|
37143 | swiper.transitionEnd();
|
37144 | });
|
37145 | }
|
37146 | } else {
|
37147 | swiper.emit('_freeModeNoMomentumRelease');
|
37148 | swiper.updateProgress(newPosition);
|
37149 | }
|
37150 |
|
37151 | swiper.updateActiveIndex();
|
37152 | swiper.updateSlidesClasses();
|
37153 | } else if (params.freeModeSticky) {
|
37154 | swiper.slideToClosest();
|
37155 | return;
|
37156 | } else if (params.freeMode) {
|
37157 | swiper.emit('_freeModeNoMomentumRelease');
|
37158 | }
|
37159 |
|
37160 | if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {
|
37161 | swiper.updateProgress();
|
37162 | swiper.updateActiveIndex();
|
37163 | swiper.updateSlidesClasses();
|
37164 | }
|
37165 |
|
37166 | return;
|
37167 | }
|
37168 |
|
37169 |
|
37170 | var stopIndex = 0;
|
37171 | var groupSize = swiper.slidesSizesGrid[0];
|
37172 |
|
37173 | for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
|
37174 | var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
|
37175 |
|
37176 | if (typeof slidesGrid[i + _increment] !== 'undefined') {
|
37177 | if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) {
|
37178 | stopIndex = i;
|
37179 | groupSize = slidesGrid[i + _increment] - slidesGrid[i];
|
37180 | }
|
37181 | } else if (currentPos >= slidesGrid[i]) {
|
37182 | stopIndex = i;
|
37183 | groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
|
37184 | }
|
37185 | }
|
37186 |
|
37187 |
|
37188 | var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
|
37189 | var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
|
37190 |
|
37191 | if (timeDiff > params.longSwipesMs) {
|
37192 |
|
37193 | if (!params.longSwipes) {
|
37194 | swiper.slideTo(swiper.activeIndex);
|
37195 | return;
|
37196 | }
|
37197 |
|
37198 | if (swiper.swipeDirection === 'next') {
|
37199 | if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
|
37200 | }
|
37201 |
|
37202 | if (swiper.swipeDirection === 'prev') {
|
37203 | if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);
|
37204 | }
|
37205 | } else {
|
37206 |
|
37207 | if (!params.shortSwipes) {
|
37208 | swiper.slideTo(swiper.activeIndex);
|
37209 | return;
|
37210 | }
|
37211 |
|
37212 | var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
|
37213 |
|
37214 | if (!isNavButtonTarget) {
|
37215 | if (swiper.swipeDirection === 'next') {
|
37216 | swiper.slideTo(stopIndex + increment);
|
37217 | }
|
37218 |
|
37219 | if (swiper.swipeDirection === 'prev') {
|
37220 | swiper.slideTo(stopIndex);
|
37221 | }
|
37222 | } else if (e.target === swiper.navigation.nextEl) {
|
37223 | swiper.slideTo(stopIndex + increment);
|
37224 | } else {
|
37225 | swiper.slideTo(stopIndex);
|
37226 | }
|
37227 | }
|
37228 | }
|
37229 |
|
37230 | function onResize() {
|
37231 | var swiper = this;
|
37232 | var params = swiper.params,
|
37233 | el = swiper.el;
|
37234 | if (el && el.offsetWidth === 0) return;
|
37235 |
|
37236 | if (params.breakpoints) {
|
37237 | swiper.setBreakpoint();
|
37238 | }
|
37239 |
|
37240 |
|
37241 | var allowSlideNext = swiper.allowSlideNext,
|
37242 | allowSlidePrev = swiper.allowSlidePrev,
|
37243 | snapGrid = swiper.snapGrid;
|
37244 |
|
37245 | swiper.allowSlideNext = true;
|
37246 | swiper.allowSlidePrev = true;
|
37247 | swiper.updateSize();
|
37248 | swiper.updateSlides();
|
37249 | swiper.updateSlidesClasses();
|
37250 |
|
37251 | if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {
|
37252 | swiper.slideTo(swiper.slides.length - 1, 0, false, true);
|
37253 | } else {
|
37254 | swiper.slideTo(swiper.activeIndex, 0, false, true);
|
37255 | }
|
37256 |
|
37257 | if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
|
37258 | swiper.autoplay.run();
|
37259 | }
|
37260 |
|
37261 |
|
37262 | swiper.allowSlidePrev = allowSlidePrev;
|
37263 | swiper.allowSlideNext = allowSlideNext;
|
37264 |
|
37265 | if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
|
37266 | swiper.checkOverflow();
|
37267 | }
|
37268 | }
|
37269 |
|
37270 | function onClick(e) {
|
37271 | var swiper = this;
|
37272 | if (!swiper.enabled) return;
|
37273 |
|
37274 | if (!swiper.allowClick) {
|
37275 | if (swiper.params.preventClicks) e.preventDefault();
|
37276 |
|
37277 | if (swiper.params.preventClicksPropagation && swiper.animating) {
|
37278 | e.stopPropagation();
|
37279 | e.stopImmediatePropagation();
|
37280 | }
|
37281 | }
|
37282 | }
|
37283 |
|
37284 | function onScroll() {
|
37285 | var swiper = this;
|
37286 | var wrapperEl = swiper.wrapperEl,
|
37287 | rtlTranslate = swiper.rtlTranslate,
|
37288 | enabled = swiper.enabled;
|
37289 | if (!enabled) return;
|
37290 | swiper.previousTranslate = swiper.translate;
|
37291 |
|
37292 | if (swiper.isHorizontal()) {
|
37293 | if (rtlTranslate) {
|
37294 | swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft;
|
37295 | } else {
|
37296 | swiper.translate = -wrapperEl.scrollLeft;
|
37297 | }
|
37298 | } else {
|
37299 | swiper.translate = -wrapperEl.scrollTop;
|
37300 | }
|
37301 |
|
37302 |
|
37303 | if (swiper.translate === -0) swiper.translate = 0;
|
37304 | swiper.updateActiveIndex();
|
37305 | swiper.updateSlidesClasses();
|
37306 | var newProgress;
|
37307 | var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
|
37308 |
|
37309 | if (translatesDiff === 0) {
|
37310 | newProgress = 0;
|
37311 | } else {
|
37312 | newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
|
37313 | }
|
37314 |
|
37315 | if (newProgress !== swiper.progress) {
|
37316 | swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
|
37317 | }
|
37318 |
|
37319 | swiper.emit('setTranslate', swiper.translate, false);
|
37320 | }
|
37321 |
|
37322 | var dummyEventAttached = false;
|
37323 |
|
37324 | function dummyEventListener() {}
|
37325 |
|
37326 | function attachEvents() {
|
37327 | var swiper = this;
|
37328 | var document = getDocument();
|
37329 | var params = swiper.params,
|
37330 | touchEvents = swiper.touchEvents,
|
37331 | el = swiper.el,
|
37332 | wrapperEl = swiper.wrapperEl,
|
37333 | device = swiper.device,
|
37334 | support = swiper.support;
|
37335 | swiper.onTouchStart = onTouchStart.bind(swiper);
|
37336 | swiper.onTouchMove = onTouchMove.bind(swiper);
|
37337 | swiper.onTouchEnd = onTouchEnd.bind(swiper);
|
37338 |
|
37339 | if (params.cssMode) {
|
37340 | swiper.onScroll = onScroll.bind(swiper);
|
37341 | }
|
37342 |
|
37343 | swiper.onClick = onClick.bind(swiper);
|
37344 | var capture = !!params.nested;
|
37345 |
|
37346 | if (!support.touch && support.pointerEvents) {
|
37347 | el.addEventListener(touchEvents.start, swiper.onTouchStart, false);
|
37348 | document.addEventListener(touchEvents.move, swiper.onTouchMove, capture);
|
37349 | document.addEventListener(touchEvents.end, swiper.onTouchEnd, false);
|
37350 | } else {
|
37351 | if (support.touch) {
|
37352 | var passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {
|
37353 | passive: true,
|
37354 | capture: false
|
37355 | } : false;
|
37356 | el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
|
37357 | el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? {
|
37358 | passive: false,
|
37359 | capture: capture
|
37360 | } : capture);
|
37361 | el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
|
37362 |
|
37363 | if (touchEvents.cancel) {
|
37364 | el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
|
37365 | }
|
37366 |
|
37367 | if (!dummyEventAttached) {
|
37368 | document.addEventListener('touchstart', dummyEventListener);
|
37369 | dummyEventAttached = true;
|
37370 | }
|
37371 | }
|
37372 |
|
37373 | if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
|
37374 | el.addEventListener('mousedown', swiper.onTouchStart, false);
|
37375 | document.addEventListener('mousemove', swiper.onTouchMove, capture);
|
37376 | document.addEventListener('mouseup', swiper.onTouchEnd, false);
|
37377 | }
|
37378 | }
|
37379 |
|
37380 |
|
37381 | if (params.preventClicks || params.preventClicksPropagation) {
|
37382 | el.addEventListener('click', swiper.onClick, true);
|
37383 | }
|
37384 |
|
37385 | if (params.cssMode) {
|
37386 | wrapperEl.addEventListener('scroll', swiper.onScroll);
|
37387 | }
|
37388 |
|
37389 |
|
37390 | if (params.updateOnWindowResize) {
|
37391 | swiper.on(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);
|
37392 | } else {
|
37393 | swiper.on('observerUpdate', onResize, true);
|
37394 | }
|
37395 | }
|
37396 |
|
37397 | function detachEvents() {
|
37398 | var swiper = this;
|
37399 | var document = getDocument();
|
37400 | var params = swiper.params,
|
37401 | touchEvents = swiper.touchEvents,
|
37402 | el = swiper.el,
|
37403 | wrapperEl = swiper.wrapperEl,
|
37404 | device = swiper.device,
|
37405 | support = swiper.support;
|
37406 | var capture = !!params.nested;
|
37407 |
|
37408 | if (!support.touch && support.pointerEvents) {
|
37409 | el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);
|
37410 | document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
|
37411 | document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);
|
37412 | } else {
|
37413 | if (support.touch) {
|
37414 | var passiveListener = touchEvents.start === 'onTouchStart' && support.passiveListener && params.passiveListeners ? {
|
37415 | passive: true,
|
37416 | capture: false
|
37417 | } : false;
|
37418 | el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);
|
37419 | el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);
|
37420 | el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);
|
37421 |
|
37422 | if (touchEvents.cancel) {
|
37423 | el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);
|
37424 | }
|
37425 | }
|
37426 |
|
37427 | if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) {
|
37428 | el.removeEventListener('mousedown', swiper.onTouchStart, false);
|
37429 | document.removeEventListener('mousemove', swiper.onTouchMove, capture);
|
37430 | document.removeEventListener('mouseup', swiper.onTouchEnd, false);
|
37431 | }
|
37432 | }
|
37433 |
|
37434 |
|
37435 | if (params.preventClicks || params.preventClicksPropagation) {
|
37436 | el.removeEventListener('click', swiper.onClick, true);
|
37437 | }
|
37438 |
|
37439 | if (params.cssMode) {
|
37440 | wrapperEl.removeEventListener('scroll', swiper.onScroll);
|
37441 | }
|
37442 |
|
37443 |
|
37444 | swiper.off(device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize);
|
37445 | }
|
37446 |
|
37447 | var events = {
|
37448 | attachEvents: attachEvents,
|
37449 | detachEvents: detachEvents
|
37450 | };
|
37451 |
|
37452 | function setBreakpoint() {
|
37453 | var swiper = this;
|
37454 | var activeIndex = swiper.activeIndex,
|
37455 | initialized = swiper.initialized,
|
37456 | _swiper$loopedSlides = swiper.loopedSlides,
|
37457 | loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides,
|
37458 | params = swiper.params,
|
37459 | $el = swiper.$el;
|
37460 | var breakpoints = params.breakpoints;
|
37461 | if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;
|
37462 |
|
37463 | var breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);
|
37464 | if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
|
37465 | var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;
|
37466 |
|
37467 | if (breakpointOnlyParams) {
|
37468 | ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach(function (param) {
|
37469 | var paramValue = breakpointOnlyParams[param];
|
37470 | if (typeof paramValue === 'undefined') return;
|
37471 |
|
37472 | if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {
|
37473 | breakpointOnlyParams[param] = 'auto';
|
37474 | } else if (param === 'slidesPerView') {
|
37475 | breakpointOnlyParams[param] = parseFloat(paramValue);
|
37476 | } else {
|
37477 | breakpointOnlyParams[param] = parseInt(paramValue, 10);
|
37478 | }
|
37479 | });
|
37480 | }
|
37481 |
|
37482 | var breakpointParams = breakpointOnlyParams || swiper.originalParams;
|
37483 | var wasMultiRow = params.slidesPerColumn > 1;
|
37484 | var isMultiRow = breakpointParams.slidesPerColumn > 1;
|
37485 | var wasEnabled = params.enabled;
|
37486 |
|
37487 | if (wasMultiRow && !isMultiRow) {
|
37488 | $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column");
|
37489 | swiper.emitContainerClasses();
|
37490 | } else if (!wasMultiRow && isMultiRow) {
|
37491 | $el.addClass(params.containerModifierClass + "multirow");
|
37492 |
|
37493 | if (breakpointParams.slidesPerColumnFill === 'column') {
|
37494 | $el.addClass(params.containerModifierClass + "multirow-column");
|
37495 | }
|
37496 |
|
37497 | swiper.emitContainerClasses();
|
37498 | }
|
37499 |
|
37500 | var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
|
37501 | var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
|
37502 |
|
37503 | if (directionChanged && initialized) {
|
37504 | swiper.changeDirection();
|
37505 | }
|
37506 |
|
37507 | extend(swiper.params, breakpointParams);
|
37508 | var isEnabled = swiper.params.enabled;
|
37509 | extend(swiper, {
|
37510 | allowTouchMove: swiper.params.allowTouchMove,
|
37511 | allowSlideNext: swiper.params.allowSlideNext,
|
37512 | allowSlidePrev: swiper.params.allowSlidePrev
|
37513 | });
|
37514 |
|
37515 | if (wasEnabled && !isEnabled) {
|
37516 | swiper.disable();
|
37517 | } else if (!wasEnabled && isEnabled) {
|
37518 | swiper.enable();
|
37519 | }
|
37520 |
|
37521 | swiper.currentBreakpoint = breakpoint;
|
37522 | swiper.emit('_beforeBreakpoint', breakpointParams);
|
37523 |
|
37524 | if (needsReLoop && initialized) {
|
37525 | swiper.loopDestroy();
|
37526 | swiper.loopCreate();
|
37527 | swiper.updateSlides();
|
37528 | swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);
|
37529 | }
|
37530 |
|
37531 | swiper.emit('breakpoint', breakpointParams);
|
37532 | }
|
37533 |
|
37534 | function getBreakpoint(breakpoints, base, containerEl) {
|
37535 | if (base === void 0) {
|
37536 | base = 'window';
|
37537 | }
|
37538 |
|
37539 | if (!breakpoints || base === 'container' && !containerEl) return undefined;
|
37540 | var breakpoint = false;
|
37541 | var window = getWindow();
|
37542 | var currentWidth = base === 'window' ? window.innerWidth : containerEl.clientWidth;
|
37543 | var currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;
|
37544 | var points = Object.keys(breakpoints).map(function (point) {
|
37545 | if (typeof point === 'string' && point.indexOf('@') === 0) {
|
37546 | var minRatio = parseFloat(point.substr(1));
|
37547 | var value = currentHeight * minRatio;
|
37548 | return {
|
37549 | value: value,
|
37550 | point: point
|
37551 | };
|
37552 | }
|
37553 |
|
37554 | return {
|
37555 | value: point,
|
37556 | point: point
|
37557 | };
|
37558 | });
|
37559 | points.sort(function (a, b) {
|
37560 | return parseInt(a.value, 10) - parseInt(b.value, 10);
|
37561 | });
|
37562 |
|
37563 | for (var i = 0; i < points.length; i += 1) {
|
37564 | var _points$i = points[i],
|
37565 | point = _points$i.point,
|
37566 | value = _points$i.value;
|
37567 |
|
37568 | if (value <= currentWidth) {
|
37569 | breakpoint = point;
|
37570 | }
|
37571 | }
|
37572 |
|
37573 | return breakpoint || 'max';
|
37574 | }
|
37575 |
|
37576 | var breakpoints = {
|
37577 | setBreakpoint: setBreakpoint,
|
37578 | getBreakpoint: getBreakpoint
|
37579 | };
|
37580 |
|
37581 | function prepareClasses(entries, prefix) {
|
37582 | var resultClasses = [];
|
37583 | entries.forEach(function (item) {
|
37584 | if (typeof item === 'object') {
|
37585 | Object.keys(item).forEach(function (classNames) {
|
37586 | if (item[classNames]) {
|
37587 | resultClasses.push(prefix + classNames);
|
37588 | }
|
37589 | });
|
37590 | } else if (typeof item === 'string') {
|
37591 | resultClasses.push(prefix + item);
|
37592 | }
|
37593 | });
|
37594 | return resultClasses;
|
37595 | }
|
37596 |
|
37597 | function addClasses() {
|
37598 | var swiper = this;
|
37599 | var classNames = swiper.classNames,
|
37600 | params = swiper.params,
|
37601 | rtl = swiper.rtl,
|
37602 | $el = swiper.$el,
|
37603 | device = swiper.device,
|
37604 | support = swiper.support;
|
37605 |
|
37606 | var suffixes = prepareClasses(['initialized', params.direction, {
|
37607 | 'pointer-events': support.pointerEvents && !support.touch
|
37608 | }, {
|
37609 | 'free-mode': params.freeMode
|
37610 | }, {
|
37611 | 'autoheight': params.autoHeight
|
37612 | }, {
|
37613 | 'rtl': rtl
|
37614 | }, {
|
37615 | 'multirow': params.slidesPerColumn > 1
|
37616 | }, {
|
37617 | 'multirow-column': params.slidesPerColumn > 1 && params.slidesPerColumnFill === 'column'
|
37618 | }, {
|
37619 | 'android': device.android
|
37620 | }, {
|
37621 | 'ios': device.ios
|
37622 | }, {
|
37623 | 'css-mode': params.cssMode
|
37624 | }], params.containerModifierClass);
|
37625 | classNames.push.apply(classNames, suffixes);
|
37626 | $el.addClass([].concat(classNames).join(' '));
|
37627 | swiper.emitContainerClasses();
|
37628 | }
|
37629 |
|
37630 | function removeClasses() {
|
37631 | var swiper = this;
|
37632 | var $el = swiper.$el,
|
37633 | classNames = swiper.classNames;
|
37634 | $el.removeClass(classNames.join(' '));
|
37635 | swiper.emitContainerClasses();
|
37636 | }
|
37637 |
|
37638 | var classes = {
|
37639 | addClasses: addClasses,
|
37640 | removeClasses: removeClasses
|
37641 | };
|
37642 |
|
37643 | function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {
|
37644 | var window = getWindow();
|
37645 | var image;
|
37646 |
|
37647 | function onReady() {
|
37648 | if (callback) callback();
|
37649 | }
|
37650 |
|
37651 | var isPicture = $$1(imageEl).parent('picture')[0];
|
37652 |
|
37653 | if (!isPicture && (!imageEl.complete || !checkForComplete)) {
|
37654 | if (src) {
|
37655 | image = new window.Image();
|
37656 | image.onload = onReady;
|
37657 | image.onerror = onReady;
|
37658 |
|
37659 | if (sizes) {
|
37660 | image.sizes = sizes;
|
37661 | }
|
37662 |
|
37663 | if (srcset) {
|
37664 | image.srcset = srcset;
|
37665 | }
|
37666 |
|
37667 | if (src) {
|
37668 | image.src = src;
|
37669 | }
|
37670 | } else {
|
37671 | onReady();
|
37672 | }
|
37673 | } else {
|
37674 |
|
37675 | onReady();
|
37676 | }
|
37677 | }
|
37678 |
|
37679 | function preloadImages() {
|
37680 | var swiper = this;
|
37681 | swiper.imagesToLoad = swiper.$el.find('img');
|
37682 |
|
37683 | function onReady() {
|
37684 | if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;
|
37685 | if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;
|
37686 |
|
37687 | if (swiper.imagesLoaded === swiper.imagesToLoad.length) {
|
37688 | if (swiper.params.updateOnImagesReady) swiper.update();
|
37689 | swiper.emit('imagesReady');
|
37690 | }
|
37691 | }
|
37692 |
|
37693 | for (var i = 0; i < swiper.imagesToLoad.length; i += 1) {
|
37694 | var imageEl = swiper.imagesToLoad[i];
|
37695 | swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);
|
37696 | }
|
37697 | }
|
37698 |
|
37699 | var images = {
|
37700 | loadImage: loadImage,
|
37701 | preloadImages: preloadImages
|
37702 | };
|
37703 |
|
37704 | function checkOverflow() {
|
37705 | var swiper = this;
|
37706 | var params = swiper.params;
|
37707 | var wasLocked = swiper.isLocked;
|
37708 | var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length;
|
37709 |
|
37710 | if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {
|
37711 | swiper.isLocked = lastSlidePosition <= swiper.size;
|
37712 | } else {
|
37713 | swiper.isLocked = swiper.snapGrid.length === 1;
|
37714 | }
|
37715 |
|
37716 | swiper.allowSlideNext = !swiper.isLocked;
|
37717 | swiper.allowSlidePrev = !swiper.isLocked;
|
37718 |
|
37719 | if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');
|
37720 |
|
37721 | if (wasLocked && wasLocked !== swiper.isLocked) {
|
37722 | swiper.isEnd = false;
|
37723 | if (swiper.navigation) swiper.navigation.update();
|
37724 | }
|
37725 | }
|
37726 |
|
37727 | var checkOverflow$1 = {
|
37728 | checkOverflow: checkOverflow
|
37729 | };
|
37730 |
|
37731 | var defaults = {
|
37732 | init: true,
|
37733 | direction: 'horizontal',
|
37734 | touchEventsTarget: 'container',
|
37735 | initialSlide: 0,
|
37736 | speed: 300,
|
37737 | cssMode: false,
|
37738 | updateOnWindowResize: true,
|
37739 | resizeObserver: false,
|
37740 | nested: false,
|
37741 | enabled: true,
|
37742 |
|
37743 | width: null,
|
37744 | height: null,
|
37745 |
|
37746 | preventInteractionOnTransition: false,
|
37747 |
|
37748 | userAgent: null,
|
37749 | url: null,
|
37750 |
|
37751 | edgeSwipeDetection: false,
|
37752 | edgeSwipeThreshold: 20,
|
37753 |
|
37754 | freeMode: false,
|
37755 | freeModeMomentum: true,
|
37756 | freeModeMomentumRatio: 1,
|
37757 | freeModeMomentumBounce: true,
|
37758 | freeModeMomentumBounceRatio: 1,
|
37759 | freeModeMomentumVelocityRatio: 1,
|
37760 | freeModeSticky: false,
|
37761 | freeModeMinimumVelocity: 0.02,
|
37762 |
|
37763 | autoHeight: false,
|
37764 |
|
37765 | setWrapperSize: false,
|
37766 |
|
37767 | virtualTranslate: false,
|
37768 |
|
37769 | effect: 'slide',
|
37770 |
|
37771 |
|
37772 | breakpoints: undefined,
|
37773 | breakpointsBase: 'window',
|
37774 |
|
37775 | spaceBetween: 0,
|
37776 | slidesPerView: 1,
|
37777 | slidesPerColumn: 1,
|
37778 | slidesPerColumnFill: 'column',
|
37779 | slidesPerGroup: 1,
|
37780 | slidesPerGroupSkip: 0,
|
37781 | centeredSlides: false,
|
37782 | centeredSlidesBounds: false,
|
37783 | slidesOffsetBefore: 0,
|
37784 |
|
37785 | slidesOffsetAfter: 0,
|
37786 |
|
37787 | normalizeSlideIndex: true,
|
37788 | centerInsufficientSlides: false,
|
37789 |
|
37790 | watchOverflow: false,
|
37791 |
|
37792 | roundLengths: false,
|
37793 |
|
37794 | touchRatio: 1,
|
37795 | touchAngle: 45,
|
37796 | simulateTouch: true,
|
37797 | shortSwipes: true,
|
37798 | longSwipes: true,
|
37799 | longSwipesRatio: 0.5,
|
37800 | longSwipesMs: 300,
|
37801 | followFinger: true,
|
37802 | allowTouchMove: true,
|
37803 | threshold: 0,
|
37804 | touchMoveStopPropagation: false,
|
37805 | touchStartPreventDefault: true,
|
37806 | touchStartForcePreventDefault: false,
|
37807 | touchReleaseOnEdges: false,
|
37808 |
|
37809 | uniqueNavElements: true,
|
37810 |
|
37811 | resistance: true,
|
37812 | resistanceRatio: 0.85,
|
37813 |
|
37814 | watchSlidesProgress: false,
|
37815 | watchSlidesVisibility: false,
|
37816 |
|
37817 | grabCursor: false,
|
37818 |
|
37819 | preventClicks: true,
|
37820 | preventClicksPropagation: true,
|
37821 | slideToClickedSlide: false,
|
37822 |
|
37823 | preloadImages: true,
|
37824 | updateOnImagesReady: true,
|
37825 |
|
37826 | loop: false,
|
37827 | loopAdditionalSlides: 0,
|
37828 | loopedSlides: null,
|
37829 | loopFillGroupWithBlank: false,
|
37830 | loopPreventsSlide: true,
|
37831 |
|
37832 | allowSlidePrev: true,
|
37833 | allowSlideNext: true,
|
37834 | swipeHandler: null,
|
37835 |
|
37836 | noSwiping: true,
|
37837 | noSwipingClass: 'swiper-no-swiping',
|
37838 | noSwipingSelector: null,
|
37839 |
|
37840 | passiveListeners: true,
|
37841 |
|
37842 | containerModifierClass: 'swiper-container-',
|
37843 |
|
37844 | slideClass: 'swiper-slide',
|
37845 | slideBlankClass: 'swiper-slide-invisible-blank',
|
37846 | slideActiveClass: 'swiper-slide-active',
|
37847 | slideDuplicateActiveClass: 'swiper-slide-duplicate-active',
|
37848 | slideVisibleClass: 'swiper-slide-visible',
|
37849 | slideDuplicateClass: 'swiper-slide-duplicate',
|
37850 | slideNextClass: 'swiper-slide-next',
|
37851 | slideDuplicateNextClass: 'swiper-slide-duplicate-next',
|
37852 | slidePrevClass: 'swiper-slide-prev',
|
37853 | slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',
|
37854 | wrapperClass: 'swiper-wrapper',
|
37855 |
|
37856 | runCallbacksOnInit: true,
|
37857 |
|
37858 | _emitClasses: false
|
37859 | };
|
37860 |
|
37861 | function _defineProperties(target, props) {
|
37862 | for (var i = 0; i < props.length; i++) {
|
37863 | var descriptor = props[i];
|
37864 | descriptor.enumerable = descriptor.enumerable || false;
|
37865 | descriptor.configurable = true;
|
37866 | if ("value" in descriptor) descriptor.writable = true;
|
37867 | Object.defineProperty(target, descriptor.key, descriptor);
|
37868 | }
|
37869 | }
|
37870 |
|
37871 | function _createClass(Constructor, protoProps, staticProps) {
|
37872 | if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
37873 | if (staticProps) _defineProperties(Constructor, staticProps);
|
37874 | return Constructor;
|
37875 | }
|
37876 | var prototypes = {
|
37877 | modular: modular,
|
37878 | eventsEmitter: eventsEmitter,
|
37879 | update: update,
|
37880 | translate: translate,
|
37881 | transition: transition,
|
37882 | slide: slide,
|
37883 | loop: loop,
|
37884 | grabCursor: grabCursor,
|
37885 | manipulation: manipulation,
|
37886 | events: events,
|
37887 | breakpoints: breakpoints,
|
37888 | checkOverflow: checkOverflow$1,
|
37889 | classes: classes,
|
37890 | images: images
|
37891 | };
|
37892 | var extendedDefaults = {};
|
37893 |
|
37894 | var Swiper$1 = function () {
|
37895 | function Swiper() {
|
37896 | var el;
|
37897 | var params;
|
37898 |
|
37899 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
37900 | args[_key] = arguments[_key];
|
37901 | }
|
37902 |
|
37903 | if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {
|
37904 | params = args[0];
|
37905 | } else {
|
37906 | el = args[0];
|
37907 | params = args[1];
|
37908 | }
|
37909 |
|
37910 | if (!params) params = {};
|
37911 | params = extend({}, params);
|
37912 | if (el && !params.el) params.el = el;
|
37913 |
|
37914 | if (params.el && $$1(params.el).length > 1) {
|
37915 | var swipers = [];
|
37916 | $$1(params.el).each(function (containerEl) {
|
37917 | var newParams = extend({}, params, {
|
37918 | el: containerEl
|
37919 | });
|
37920 | swipers.push(new Swiper(newParams));
|
37921 | });
|
37922 | return swipers;
|
37923 | }
|
37924 |
|
37925 |
|
37926 | var swiper = this;
|
37927 | swiper.__swiper__ = true;
|
37928 | swiper.support = getSupport();
|
37929 | swiper.device = getDevice({
|
37930 | userAgent: params.userAgent
|
37931 | });
|
37932 | swiper.browser = getBrowser();
|
37933 | swiper.eventsListeners = {};
|
37934 | swiper.eventsAnyListeners = [];
|
37935 |
|
37936 | if (typeof swiper.modules === 'undefined') {
|
37937 | swiper.modules = {};
|
37938 | }
|
37939 |
|
37940 | Object.keys(swiper.modules).forEach(function (moduleName) {
|
37941 | var module = swiper.modules[moduleName];
|
37942 |
|
37943 | if (module.params) {
|
37944 | var moduleParamName = Object.keys(module.params)[0];
|
37945 | var moduleParams = module.params[moduleParamName];
|
37946 | if (typeof moduleParams !== 'object' || moduleParams === null) return;
|
37947 | if (!(moduleParamName in params && 'enabled' in moduleParams)) return;
|
37948 |
|
37949 | if (params[moduleParamName] === true) {
|
37950 | params[moduleParamName] = {
|
37951 | enabled: true
|
37952 | };
|
37953 | }
|
37954 |
|
37955 | if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {
|
37956 | params[moduleParamName].enabled = true;
|
37957 | }
|
37958 |
|
37959 | if (!params[moduleParamName]) params[moduleParamName] = {
|
37960 | enabled: false
|
37961 | };
|
37962 | }
|
37963 | });
|
37964 |
|
37965 | var swiperParams = extend({}, defaults);
|
37966 | swiper.useParams(swiperParams);
|
37967 |
|
37968 | swiper.params = extend({}, swiperParams, extendedDefaults, params);
|
37969 | swiper.originalParams = extend({}, swiper.params);
|
37970 | swiper.passedParams = extend({}, params);
|
37971 |
|
37972 | if (swiper.params && swiper.params.on) {
|
37973 | Object.keys(swiper.params.on).forEach(function (eventName) {
|
37974 | swiper.on(eventName, swiper.params.on[eventName]);
|
37975 | });
|
37976 | }
|
37977 |
|
37978 | if (swiper.params && swiper.params.onAny) {
|
37979 | swiper.onAny(swiper.params.onAny);
|
37980 | }
|
37981 |
|
37982 |
|
37983 | swiper.$ = $$1;
|
37984 |
|
37985 | extend(swiper, {
|
37986 | enabled: swiper.params.enabled,
|
37987 | el: el,
|
37988 |
|
37989 | classNames: [],
|
37990 |
|
37991 | slides: $$1(),
|
37992 | slidesGrid: [],
|
37993 | snapGrid: [],
|
37994 | slidesSizesGrid: [],
|
37995 |
|
37996 | isHorizontal: function isHorizontal() {
|
37997 | return swiper.params.direction === 'horizontal';
|
37998 | },
|
37999 | isVertical: function isVertical() {
|
38000 | return swiper.params.direction === 'vertical';
|
38001 | },
|
38002 |
|
38003 | activeIndex: 0,
|
38004 | realIndex: 0,
|
38005 |
|
38006 | isBeginning: true,
|
38007 | isEnd: false,
|
38008 |
|
38009 | translate: 0,
|
38010 | previousTranslate: 0,
|
38011 | progress: 0,
|
38012 | velocity: 0,
|
38013 | animating: false,
|
38014 |
|
38015 | allowSlideNext: swiper.params.allowSlideNext,
|
38016 | allowSlidePrev: swiper.params.allowSlidePrev,
|
38017 |
|
38018 | touchEvents: function touchEvents() {
|
38019 | var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];
|
38020 | var desktop = ['mousedown', 'mousemove', 'mouseup'];
|
38021 |
|
38022 | if (swiper.support.pointerEvents) {
|
38023 | desktop = ['pointerdown', 'pointermove', 'pointerup'];
|
38024 | }
|
38025 |
|
38026 | swiper.touchEventsTouch = {
|
38027 | start: touch[0],
|
38028 | move: touch[1],
|
38029 | end: touch[2],
|
38030 | cancel: touch[3]
|
38031 | };
|
38032 | swiper.touchEventsDesktop = {
|
38033 | start: desktop[0],
|
38034 | move: desktop[1],
|
38035 | end: desktop[2]
|
38036 | };
|
38037 | return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;
|
38038 | }(),
|
38039 | touchEventsData: {
|
38040 | isTouched: undefined,
|
38041 | isMoved: undefined,
|
38042 | allowTouchCallbacks: undefined,
|
38043 | touchStartTime: undefined,
|
38044 | isScrolling: undefined,
|
38045 | currentTranslate: undefined,
|
38046 | startTranslate: undefined,
|
38047 | allowThresholdMove: undefined,
|
38048 |
|
38049 | formElements: 'input, select, option, textarea, button, video, label',
|
38050 |
|
38051 | lastClickTime: now(),
|
38052 | clickTimeout: undefined,
|
38053 |
|
38054 | velocities: [],
|
38055 | allowMomentumBounce: undefined,
|
38056 | isTouchEvent: undefined,
|
38057 | startMoving: undefined
|
38058 | },
|
38059 |
|
38060 | allowClick: true,
|
38061 |
|
38062 | allowTouchMove: swiper.params.allowTouchMove,
|
38063 | touches: {
|
38064 | startX: 0,
|
38065 | startY: 0,
|
38066 | currentX: 0,
|
38067 | currentY: 0,
|
38068 | diff: 0
|
38069 | },
|
38070 |
|
38071 | imagesToLoad: [],
|
38072 | imagesLoaded: 0
|
38073 | });
|
38074 |
|
38075 | swiper.useModules();
|
38076 | swiper.emit('_swiper');
|
38077 |
|
38078 | if (swiper.params.init) {
|
38079 | swiper.init();
|
38080 | }
|
38081 |
|
38082 |
|
38083 | return swiper;
|
38084 | }
|
38085 |
|
38086 | var _proto = Swiper.prototype;
|
38087 |
|
38088 | _proto.enable = function enable() {
|
38089 | var swiper = this;
|
38090 | if (swiper.enabled) return;
|
38091 | swiper.enabled = true;
|
38092 |
|
38093 | if (swiper.params.grabCursor) {
|
38094 | swiper.setGrabCursor();
|
38095 | }
|
38096 |
|
38097 | swiper.emit('enable');
|
38098 | };
|
38099 |
|
38100 | _proto.disable = function disable() {
|
38101 | var swiper = this;
|
38102 | if (!swiper.enabled) return;
|
38103 | swiper.enabled = false;
|
38104 |
|
38105 | if (swiper.params.grabCursor) {
|
38106 | swiper.unsetGrabCursor();
|
38107 | }
|
38108 |
|
38109 | swiper.emit('disable');
|
38110 | };
|
38111 |
|
38112 | _proto.setProgress = function setProgress(progress, speed) {
|
38113 | var swiper = this;
|
38114 | progress = Math.min(Math.max(progress, 0), 1);
|
38115 | var min = swiper.minTranslate();
|
38116 | var max = swiper.maxTranslate();
|
38117 | var current = (max - min) * progress + min;
|
38118 | swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);
|
38119 | swiper.updateActiveIndex();
|
38120 | swiper.updateSlidesClasses();
|
38121 | };
|
38122 |
|
38123 | _proto.emitContainerClasses = function emitContainerClasses() {
|
38124 | var swiper = this;
|
38125 | if (!swiper.params._emitClasses || !swiper.el) return;
|
38126 | var classes = swiper.el.className.split(' ').filter(function (className) {
|
38127 | return className.indexOf('swiper-container') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
|
38128 | });
|
38129 | swiper.emit('_containerClasses', classes.join(' '));
|
38130 | };
|
38131 |
|
38132 | _proto.getSlideClasses = function getSlideClasses(slideEl) {
|
38133 | var swiper = this;
|
38134 | return slideEl.className.split(' ').filter(function (className) {
|
38135 | return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;
|
38136 | }).join(' ');
|
38137 | };
|
38138 |
|
38139 | _proto.emitSlidesClasses = function emitSlidesClasses() {
|
38140 | var swiper = this;
|
38141 | if (!swiper.params._emitClasses || !swiper.el) return;
|
38142 | var updates = [];
|
38143 | swiper.slides.each(function (slideEl) {
|
38144 | var classNames = swiper.getSlideClasses(slideEl);
|
38145 | updates.push({
|
38146 | slideEl: slideEl,
|
38147 | classNames: classNames
|
38148 | });
|
38149 | swiper.emit('_slideClass', slideEl, classNames);
|
38150 | });
|
38151 | swiper.emit('_slideClasses', updates);
|
38152 | };
|
38153 |
|
38154 | _proto.slidesPerViewDynamic = function slidesPerViewDynamic() {
|
38155 | var swiper = this;
|
38156 | var params = swiper.params,
|
38157 | slides = swiper.slides,
|
38158 | slidesGrid = swiper.slidesGrid,
|
38159 | swiperSize = swiper.size,
|
38160 | activeIndex = swiper.activeIndex;
|
38161 | var spv = 1;
|
38162 |
|
38163 | if (params.centeredSlides) {
|
38164 | var slideSize = slides[activeIndex].swiperSlideSize;
|
38165 | var breakLoop;
|
38166 |
|
38167 | for (var i = activeIndex + 1; i < slides.length; i += 1) {
|
38168 | if (slides[i] && !breakLoop) {
|
38169 | slideSize += slides[i].swiperSlideSize;
|
38170 | spv += 1;
|
38171 | if (slideSize > swiperSize) breakLoop = true;
|
38172 | }
|
38173 | }
|
38174 |
|
38175 | for (var _i = activeIndex - 1; _i >= 0; _i -= 1) {
|
38176 | if (slides[_i] && !breakLoop) {
|
38177 | slideSize += slides[_i].swiperSlideSize;
|
38178 | spv += 1;
|
38179 | if (slideSize > swiperSize) breakLoop = true;
|
38180 | }
|
38181 | }
|
38182 | } else {
|
38183 | for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) {
|
38184 | if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) {
|
38185 | spv += 1;
|
38186 | }
|
38187 | }
|
38188 | }
|
38189 |
|
38190 | return spv;
|
38191 | };
|
38192 |
|
38193 | _proto.update = function update() {
|
38194 | var swiper = this;
|
38195 | if (!swiper || swiper.destroyed) return;
|
38196 | var snapGrid = swiper.snapGrid,
|
38197 | params = swiper.params;
|
38198 |
|
38199 | if (params.breakpoints) {
|
38200 | swiper.setBreakpoint();
|
38201 | }
|
38202 |
|
38203 | swiper.updateSize();
|
38204 | swiper.updateSlides();
|
38205 | swiper.updateProgress();
|
38206 | swiper.updateSlidesClasses();
|
38207 |
|
38208 | function setTranslate() {
|
38209 | var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
|
38210 | var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
|
38211 | swiper.setTranslate(newTranslate);
|
38212 | swiper.updateActiveIndex();
|
38213 | swiper.updateSlidesClasses();
|
38214 | }
|
38215 |
|
38216 | var translated;
|
38217 |
|
38218 | if (swiper.params.freeMode) {
|
38219 | setTranslate();
|
38220 |
|
38221 | if (swiper.params.autoHeight) {
|
38222 | swiper.updateAutoHeight();
|
38223 | }
|
38224 | } else {
|
38225 | if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {
|
38226 | translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);
|
38227 | } else {
|
38228 | translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
|
38229 | }
|
38230 |
|
38231 | if (!translated) {
|
38232 | setTranslate();
|
38233 | }
|
38234 | }
|
38235 |
|
38236 | if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
|
38237 | swiper.checkOverflow();
|
38238 | }
|
38239 |
|
38240 | swiper.emit('update');
|
38241 | };
|
38242 |
|
38243 | _proto.changeDirection = function changeDirection(newDirection, needUpdate) {
|
38244 | if (needUpdate === void 0) {
|
38245 | needUpdate = true;
|
38246 | }
|
38247 |
|
38248 | var swiper = this;
|
38249 | var currentDirection = swiper.params.direction;
|
38250 |
|
38251 | if (!newDirection) {
|
38252 |
|
38253 | newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';
|
38254 | }
|
38255 |
|
38256 | if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {
|
38257 | return swiper;
|
38258 | }
|
38259 |
|
38260 | swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection);
|
38261 | swiper.emitContainerClasses();
|
38262 | swiper.params.direction = newDirection;
|
38263 | swiper.slides.each(function (slideEl) {
|
38264 | if (newDirection === 'vertical') {
|
38265 | slideEl.style.width = '';
|
38266 | } else {
|
38267 | slideEl.style.height = '';
|
38268 | }
|
38269 | });
|
38270 | swiper.emit('changeDirection');
|
38271 | if (needUpdate) swiper.update();
|
38272 | return swiper;
|
38273 | };
|
38274 |
|
38275 | _proto.mount = function mount(el) {
|
38276 | var swiper = this;
|
38277 | if (swiper.mounted) return true;
|
38278 |
|
38279 | var $el = $$1(el || swiper.params.el);
|
38280 | el = $el[0];
|
38281 |
|
38282 | if (!el) {
|
38283 | return false;
|
38284 | }
|
38285 |
|
38286 | el.swiper = swiper;
|
38287 |
|
38288 | var $wrapperEl;
|
38289 |
|
38290 | if (el && el.shadowRoot && el.shadowRoot.querySelector) {
|
38291 | $wrapperEl = $$1(el.shadowRoot.querySelector("." + swiper.params.wrapperClass));
|
38292 |
|
38293 | $wrapperEl.children = function (options) {
|
38294 | return $el.children(options);
|
38295 | };
|
38296 | } else {
|
38297 | $wrapperEl = $el.children("." + swiper.params.wrapperClass);
|
38298 | }
|
38299 |
|
38300 | extend(swiper, {
|
38301 | $el: $el,
|
38302 | el: el,
|
38303 | $wrapperEl: $wrapperEl,
|
38304 | wrapperEl: $wrapperEl[0],
|
38305 | mounted: true,
|
38306 |
|
38307 | rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',
|
38308 | rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),
|
38309 | wrongRTL: $wrapperEl.css('display') === '-webkit-box'
|
38310 | });
|
38311 | return true;
|
38312 | };
|
38313 |
|
38314 | _proto.init = function init(el) {
|
38315 | var swiper = this;
|
38316 | if (swiper.initialized) return swiper;
|
38317 | var mounted = swiper.mount(el);
|
38318 | if (mounted === false) return swiper;
|
38319 | swiper.emit('beforeInit');
|
38320 |
|
38321 | if (swiper.params.breakpoints) {
|
38322 | swiper.setBreakpoint();
|
38323 | }
|
38324 |
|
38325 |
|
38326 | swiper.addClasses();
|
38327 |
|
38328 | if (swiper.params.loop) {
|
38329 | swiper.loopCreate();
|
38330 | }
|
38331 |
|
38332 |
|
38333 | swiper.updateSize();
|
38334 |
|
38335 | swiper.updateSlides();
|
38336 |
|
38337 | if (swiper.params.watchOverflow) {
|
38338 | swiper.checkOverflow();
|
38339 | }
|
38340 |
|
38341 |
|
38342 | if (swiper.params.grabCursor && swiper.enabled) {
|
38343 | swiper.setGrabCursor();
|
38344 | }
|
38345 |
|
38346 | if (swiper.params.preloadImages) {
|
38347 | swiper.preloadImages();
|
38348 | }
|
38349 |
|
38350 |
|
38351 | if (swiper.params.loop) {
|
38352 | swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);
|
38353 | } else {
|
38354 | swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
|
38355 | }
|
38356 |
|
38357 |
|
38358 | swiper.attachEvents();
|
38359 |
|
38360 | swiper.initialized = true;
|
38361 |
|
38362 | swiper.emit('init');
|
38363 | swiper.emit('afterInit');
|
38364 | return swiper;
|
38365 | };
|
38366 |
|
38367 | _proto.destroy = function destroy(deleteInstance, cleanStyles) {
|
38368 | if (deleteInstance === void 0) {
|
38369 | deleteInstance = true;
|
38370 | }
|
38371 |
|
38372 | if (cleanStyles === void 0) {
|
38373 | cleanStyles = true;
|
38374 | }
|
38375 |
|
38376 | var swiper = this;
|
38377 | var params = swiper.params,
|
38378 | $el = swiper.$el,
|
38379 | $wrapperEl = swiper.$wrapperEl,
|
38380 | slides = swiper.slides;
|
38381 |
|
38382 | if (typeof swiper.params === 'undefined' || swiper.destroyed) {
|
38383 | return null;
|
38384 | }
|
38385 |
|
38386 | swiper.emit('beforeDestroy');
|
38387 |
|
38388 | swiper.initialized = false;
|
38389 |
|
38390 | swiper.detachEvents();
|
38391 |
|
38392 | if (params.loop) {
|
38393 | swiper.loopDestroy();
|
38394 | }
|
38395 |
|
38396 |
|
38397 | if (cleanStyles) {
|
38398 | swiper.removeClasses();
|
38399 | $el.removeAttr('style');
|
38400 | $wrapperEl.removeAttr('style');
|
38401 |
|
38402 | if (slides && slides.length) {
|
38403 | slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');
|
38404 | }
|
38405 | }
|
38406 |
|
38407 | swiper.emit('destroy');
|
38408 |
|
38409 | Object.keys(swiper.eventsListeners).forEach(function (eventName) {
|
38410 | swiper.off(eventName);
|
38411 | });
|
38412 |
|
38413 | if (deleteInstance !== false) {
|
38414 | swiper.$el[0].swiper = null;
|
38415 | deleteProps(swiper);
|
38416 | }
|
38417 |
|
38418 | swiper.destroyed = true;
|
38419 | return null;
|
38420 | };
|
38421 |
|
38422 | Swiper.extendDefaults = function extendDefaults(newDefaults) {
|
38423 | extend(extendedDefaults, newDefaults);
|
38424 | };
|
38425 |
|
38426 | Swiper.installModule = function installModule(module) {
|
38427 | if (!Swiper.prototype.modules) Swiper.prototype.modules = {};
|
38428 | var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + now();
|
38429 | Swiper.prototype.modules[name] = module;
|
38430 | };
|
38431 |
|
38432 | Swiper.use = function use(module) {
|
38433 | if (Array.isArray(module)) {
|
38434 | module.forEach(function (m) {
|
38435 | return Swiper.installModule(m);
|
38436 | });
|
38437 | return Swiper;
|
38438 | }
|
38439 |
|
38440 | Swiper.installModule(module);
|
38441 | return Swiper;
|
38442 | };
|
38443 |
|
38444 | _createClass(Swiper, null, [{
|
38445 | key: "extendedDefaults",
|
38446 | get: function get() {
|
38447 | return extendedDefaults;
|
38448 | }
|
38449 | }, {
|
38450 | key: "defaults",
|
38451 | get: function get() {
|
38452 | return defaults;
|
38453 | }
|
38454 | }]);
|
38455 |
|
38456 | return Swiper;
|
38457 | }();
|
38458 |
|
38459 | Object.keys(prototypes).forEach(function (prototypeGroup) {
|
38460 | Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {
|
38461 | Swiper$1.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
|
38462 | });
|
38463 | });
|
38464 | Swiper$1.use([Resize, Observer$1]);
|
38465 |
|
38466 | function _extends$h() {
|
38467 | _extends$h = Object.assign || function (target) {
|
38468 | for (var i = 1; i < arguments.length; i++) {
|
38469 | var source = arguments[i];
|
38470 |
|
38471 | for (var key in source) {
|
38472 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
38473 | target[key] = source[key];
|
38474 | }
|
38475 | }
|
38476 | }
|
38477 |
|
38478 | return target;
|
38479 | };
|
38480 |
|
38481 | return _extends$h.apply(this, arguments);
|
38482 | }
|
38483 | var Virtual = {
|
38484 | update: function update(force) {
|
38485 | var swiper = this;
|
38486 | var _swiper$params = swiper.params,
|
38487 | slidesPerView = _swiper$params.slidesPerView,
|
38488 | slidesPerGroup = _swiper$params.slidesPerGroup,
|
38489 | centeredSlides = _swiper$params.centeredSlides;
|
38490 | var _swiper$params$virtua = swiper.params.virtual,
|
38491 | addSlidesBefore = _swiper$params$virtua.addSlidesBefore,
|
38492 | addSlidesAfter = _swiper$params$virtua.addSlidesAfter;
|
38493 | var _swiper$virtual = swiper.virtual,
|
38494 | previousFrom = _swiper$virtual.from,
|
38495 | previousTo = _swiper$virtual.to,
|
38496 | slides = _swiper$virtual.slides,
|
38497 | previousSlidesGrid = _swiper$virtual.slidesGrid,
|
38498 | renderSlide = _swiper$virtual.renderSlide,
|
38499 | previousOffset = _swiper$virtual.offset;
|
38500 | swiper.updateActiveIndex();
|
38501 | var activeIndex = swiper.activeIndex || 0;
|
38502 | var offsetProp;
|
38503 | if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';
|
38504 | var slidesAfter;
|
38505 | var slidesBefore;
|
38506 |
|
38507 | if (centeredSlides) {
|
38508 | slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;
|
38509 | slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;
|
38510 | } else {
|
38511 | slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;
|
38512 | slidesBefore = slidesPerGroup + addSlidesBefore;
|
38513 | }
|
38514 |
|
38515 | var from = Math.max((activeIndex || 0) - slidesBefore, 0);
|
38516 | var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);
|
38517 | var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);
|
38518 | extend(swiper.virtual, {
|
38519 | from: from,
|
38520 | to: to,
|
38521 | offset: offset,
|
38522 | slidesGrid: swiper.slidesGrid
|
38523 | });
|
38524 |
|
38525 | function onRendered() {
|
38526 | swiper.updateSlides();
|
38527 | swiper.updateProgress();
|
38528 | swiper.updateSlidesClasses();
|
38529 |
|
38530 | if (swiper.lazy && swiper.params.lazy.enabled) {
|
38531 | swiper.lazy.load();
|
38532 | }
|
38533 | }
|
38534 |
|
38535 | if (previousFrom === from && previousTo === to && !force) {
|
38536 | if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {
|
38537 | swiper.slides.css(offsetProp, offset + "px");
|
38538 | }
|
38539 |
|
38540 | swiper.updateProgress();
|
38541 | return;
|
38542 | }
|
38543 |
|
38544 | if (swiper.params.virtual.renderExternal) {
|
38545 | swiper.params.virtual.renderExternal.call(swiper, {
|
38546 | offset: offset,
|
38547 | from: from,
|
38548 | to: to,
|
38549 | slides: function getSlides() {
|
38550 | var slidesToRender = [];
|
38551 |
|
38552 | for (var i = from; i <= to; i += 1) {
|
38553 | slidesToRender.push(slides[i]);
|
38554 | }
|
38555 |
|
38556 | return slidesToRender;
|
38557 | }()
|
38558 | });
|
38559 |
|
38560 | if (swiper.params.virtual.renderExternalUpdate) {
|
38561 | onRendered();
|
38562 | }
|
38563 |
|
38564 | return;
|
38565 | }
|
38566 |
|
38567 | var prependIndexes = [];
|
38568 | var appendIndexes = [];
|
38569 |
|
38570 | if (force) {
|
38571 | swiper.$wrapperEl.find("." + swiper.params.slideClass).remove();
|
38572 | } else {
|
38573 | for (var i = previousFrom; i <= previousTo; i += 1) {
|
38574 | if (i < from || i > to) {
|
38575 | swiper.$wrapperEl.find("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + i + "\"]").remove();
|
38576 | }
|
38577 | }
|
38578 | }
|
38579 |
|
38580 | for (var _i = 0; _i < slides.length; _i += 1) {
|
38581 | if (_i >= from && _i <= to) {
|
38582 | if (typeof previousTo === 'undefined' || force) {
|
38583 | appendIndexes.push(_i);
|
38584 | } else {
|
38585 | if (_i > previousTo) appendIndexes.push(_i);
|
38586 | if (_i < previousFrom) prependIndexes.push(_i);
|
38587 | }
|
38588 | }
|
38589 | }
|
38590 |
|
38591 | appendIndexes.forEach(function (index) {
|
38592 | swiper.$wrapperEl.append(renderSlide(slides[index], index));
|
38593 | });
|
38594 | prependIndexes.sort(function (a, b) {
|
38595 | return b - a;
|
38596 | }).forEach(function (index) {
|
38597 | swiper.$wrapperEl.prepend(renderSlide(slides[index], index));
|
38598 | });
|
38599 | swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, offset + "px");
|
38600 | onRendered();
|
38601 | },
|
38602 | renderSlide: function renderSlide(slide, index) {
|
38603 | var swiper = this;
|
38604 | var params = swiper.params.virtual;
|
38605 |
|
38606 | if (params.cache && swiper.virtual.cache[index]) {
|
38607 | return swiper.virtual.cache[index];
|
38608 | }
|
38609 |
|
38610 | var $slideEl = params.renderSlide ? $$1(params.renderSlide.call(swiper, slide, index)) : $$1("<div class=\"" + swiper.params.slideClass + "\" data-swiper-slide-index=\"" + index + "\">" + slide + "</div>");
|
38611 | if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);
|
38612 | if (params.cache) swiper.virtual.cache[index] = $slideEl;
|
38613 | return $slideEl;
|
38614 | },
|
38615 | appendSlide: function appendSlide(slides) {
|
38616 | var swiper = this;
|
38617 |
|
38618 | if (typeof slides === 'object' && 'length' in slides) {
|
38619 | for (var i = 0; i < slides.length; i += 1) {
|
38620 | if (slides[i]) swiper.virtual.slides.push(slides[i]);
|
38621 | }
|
38622 | } else {
|
38623 | swiper.virtual.slides.push(slides);
|
38624 | }
|
38625 |
|
38626 | swiper.virtual.update(true);
|
38627 | },
|
38628 | prependSlide: function prependSlide(slides) {
|
38629 | var swiper = this;
|
38630 | var activeIndex = swiper.activeIndex;
|
38631 | var newActiveIndex = activeIndex + 1;
|
38632 | var numberOfNewSlides = 1;
|
38633 |
|
38634 | if (Array.isArray(slides)) {
|
38635 | for (var i = 0; i < slides.length; i += 1) {
|
38636 | if (slides[i]) swiper.virtual.slides.unshift(slides[i]);
|
38637 | }
|
38638 |
|
38639 | newActiveIndex = activeIndex + slides.length;
|
38640 | numberOfNewSlides = slides.length;
|
38641 | } else {
|
38642 | swiper.virtual.slides.unshift(slides);
|
38643 | }
|
38644 |
|
38645 | if (swiper.params.virtual.cache) {
|
38646 | var cache = swiper.virtual.cache;
|
38647 | var newCache = {};
|
38648 | Object.keys(cache).forEach(function (cachedIndex) {
|
38649 | var $cachedEl = cache[cachedIndex];
|
38650 | var cachedElIndex = $cachedEl.attr('data-swiper-slide-index');
|
38651 |
|
38652 | if (cachedElIndex) {
|
38653 | $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);
|
38654 | }
|
38655 |
|
38656 | newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;
|
38657 | });
|
38658 | swiper.virtual.cache = newCache;
|
38659 | }
|
38660 |
|
38661 | swiper.virtual.update(true);
|
38662 | swiper.slideTo(newActiveIndex, 0);
|
38663 | },
|
38664 | removeSlide: function removeSlide(slidesIndexes) {
|
38665 | var swiper = this;
|
38666 | if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;
|
38667 | var activeIndex = swiper.activeIndex;
|
38668 |
|
38669 | if (Array.isArray(slidesIndexes)) {
|
38670 | for (var i = slidesIndexes.length - 1; i >= 0; i -= 1) {
|
38671 | swiper.virtual.slides.splice(slidesIndexes[i], 1);
|
38672 |
|
38673 | if (swiper.params.virtual.cache) {
|
38674 | delete swiper.virtual.cache[slidesIndexes[i]];
|
38675 | }
|
38676 |
|
38677 | if (slidesIndexes[i] < activeIndex) activeIndex -= 1;
|
38678 | activeIndex = Math.max(activeIndex, 0);
|
38679 | }
|
38680 | } else {
|
38681 | swiper.virtual.slides.splice(slidesIndexes, 1);
|
38682 |
|
38683 | if (swiper.params.virtual.cache) {
|
38684 | delete swiper.virtual.cache[slidesIndexes];
|
38685 | }
|
38686 |
|
38687 | if (slidesIndexes < activeIndex) activeIndex -= 1;
|
38688 | activeIndex = Math.max(activeIndex, 0);
|
38689 | }
|
38690 |
|
38691 | swiper.virtual.update(true);
|
38692 | swiper.slideTo(activeIndex, 0);
|
38693 | },
|
38694 | removeAllSlides: function removeAllSlides() {
|
38695 | var swiper = this;
|
38696 | swiper.virtual.slides = [];
|
38697 |
|
38698 | if (swiper.params.virtual.cache) {
|
38699 | swiper.virtual.cache = {};
|
38700 | }
|
38701 |
|
38702 | swiper.virtual.update(true);
|
38703 | swiper.slideTo(0, 0);
|
38704 | }
|
38705 | };
|
38706 | var Virtual$1 = {
|
38707 | name: 'virtual',
|
38708 | params: {
|
38709 | virtual: {
|
38710 | enabled: false,
|
38711 | slides: [],
|
38712 | cache: true,
|
38713 | renderSlide: null,
|
38714 | renderExternal: null,
|
38715 | renderExternalUpdate: true,
|
38716 | addSlidesBefore: 0,
|
38717 | addSlidesAfter: 0
|
38718 | }
|
38719 | },
|
38720 | create: function create() {
|
38721 | var swiper = this;
|
38722 | bindModuleMethods(swiper, {
|
38723 | virtual: _extends$h({}, Virtual, {
|
38724 | slides: swiper.params.virtual.slides,
|
38725 | cache: {}
|
38726 | })
|
38727 | });
|
38728 | },
|
38729 | on: {
|
38730 | beforeInit: function beforeInit(swiper) {
|
38731 | if (!swiper.params.virtual.enabled) return;
|
38732 | swiper.classNames.push(swiper.params.containerModifierClass + "virtual");
|
38733 | var overwriteParams = {
|
38734 | watchSlidesProgress: true
|
38735 | };
|
38736 | extend(swiper.params, overwriteParams);
|
38737 | extend(swiper.originalParams, overwriteParams);
|
38738 |
|
38739 | if (!swiper.params.initialSlide) {
|
38740 | swiper.virtual.update();
|
38741 | }
|
38742 | },
|
38743 | setTranslate: function setTranslate(swiper) {
|
38744 | if (!swiper.params.virtual.enabled) return;
|
38745 | swiper.virtual.update();
|
38746 | }
|
38747 | }
|
38748 | };
|
38749 |
|
38750 | function _extends$g() {
|
38751 | _extends$g = Object.assign || function (target) {
|
38752 | for (var i = 1; i < arguments.length; i++) {
|
38753 | var source = arguments[i];
|
38754 |
|
38755 | for (var key in source) {
|
38756 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
38757 | target[key] = source[key];
|
38758 | }
|
38759 | }
|
38760 | }
|
38761 |
|
38762 | return target;
|
38763 | };
|
38764 |
|
38765 | return _extends$g.apply(this, arguments);
|
38766 | }
|
38767 | var Keyboard = {
|
38768 | handle: function handle(event) {
|
38769 | var swiper = this;
|
38770 | if (!swiper.enabled) return;
|
38771 | var window = getWindow();
|
38772 | var document = getDocument();
|
38773 | var rtl = swiper.rtlTranslate;
|
38774 | var e = event;
|
38775 | if (e.originalEvent) e = e.originalEvent;
|
38776 |
|
38777 | var kc = e.keyCode || e.charCode;
|
38778 | var pageUpDown = swiper.params.keyboard.pageUpDown;
|
38779 | var isPageUp = pageUpDown && kc === 33;
|
38780 | var isPageDown = pageUpDown && kc === 34;
|
38781 | var isArrowLeft = kc === 37;
|
38782 | var isArrowRight = kc === 39;
|
38783 | var isArrowUp = kc === 38;
|
38784 | var isArrowDown = kc === 40;
|
38785 |
|
38786 | if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
|
38787 | return false;
|
38788 | }
|
38789 |
|
38790 | if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
|
38791 | return false;
|
38792 | }
|
38793 |
|
38794 | if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
|
38795 | return undefined;
|
38796 | }
|
38797 |
|
38798 | if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {
|
38799 | return undefined;
|
38800 | }
|
38801 |
|
38802 | if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
|
38803 | var inView = false;
|
38804 |
|
38805 | if (swiper.$el.parents("." + swiper.params.slideClass).length > 0 && swiper.$el.parents("." + swiper.params.slideActiveClass).length === 0) {
|
38806 | return undefined;
|
38807 | }
|
38808 |
|
38809 | var $el = swiper.$el;
|
38810 | var swiperWidth = $el[0].clientWidth;
|
38811 | var swiperHeight = $el[0].clientHeight;
|
38812 | var windowWidth = window.innerWidth;
|
38813 | var windowHeight = window.innerHeight;
|
38814 | var swiperOffset = swiper.$el.offset();
|
38815 | if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
|
38816 | var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
|
38817 |
|
38818 | for (var i = 0; i < swiperCoord.length; i += 1) {
|
38819 | var point = swiperCoord[i];
|
38820 |
|
38821 | if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
|
38822 | if (point[0] === 0 && point[1] === 0) continue;
|
38823 |
|
38824 | inView = true;
|
38825 | }
|
38826 | }
|
38827 |
|
38828 | if (!inView) return undefined;
|
38829 | }
|
38830 |
|
38831 | if (swiper.isHorizontal()) {
|
38832 | if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
|
38833 | if (e.preventDefault) e.preventDefault();else e.returnValue = false;
|
38834 | }
|
38835 |
|
38836 | if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
|
38837 | if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
|
38838 | } else {
|
38839 | if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
|
38840 | if (e.preventDefault) e.preventDefault();else e.returnValue = false;
|
38841 | }
|
38842 |
|
38843 | if (isPageDown || isArrowDown) swiper.slideNext();
|
38844 | if (isPageUp || isArrowUp) swiper.slidePrev();
|
38845 | }
|
38846 |
|
38847 | swiper.emit('keyPress', kc);
|
38848 | return undefined;
|
38849 | },
|
38850 | enable: function enable() {
|
38851 | var swiper = this;
|
38852 | var document = getDocument();
|
38853 | if (swiper.keyboard.enabled) return;
|
38854 | $$1(document).on('keydown', swiper.keyboard.handle);
|
38855 | swiper.keyboard.enabled = true;
|
38856 | },
|
38857 | disable: function disable() {
|
38858 | var swiper = this;
|
38859 | var document = getDocument();
|
38860 | if (!swiper.keyboard.enabled) return;
|
38861 | $$1(document).off('keydown', swiper.keyboard.handle);
|
38862 | swiper.keyboard.enabled = false;
|
38863 | }
|
38864 | };
|
38865 | var Keyboard$1 = {
|
38866 | name: 'keyboard',
|
38867 | params: {
|
38868 | keyboard: {
|
38869 | enabled: false,
|
38870 | onlyInViewport: true,
|
38871 | pageUpDown: true
|
38872 | }
|
38873 | },
|
38874 | create: function create() {
|
38875 | var swiper = this;
|
38876 | bindModuleMethods(swiper, {
|
38877 | keyboard: _extends$g({
|
38878 | enabled: false
|
38879 | }, Keyboard)
|
38880 | });
|
38881 | },
|
38882 | on: {
|
38883 | init: function init(swiper) {
|
38884 | if (swiper.params.keyboard.enabled) {
|
38885 | swiper.keyboard.enable();
|
38886 | }
|
38887 | },
|
38888 | destroy: function destroy(swiper) {
|
38889 | if (swiper.keyboard.enabled) {
|
38890 | swiper.keyboard.disable();
|
38891 | }
|
38892 | }
|
38893 | }
|
38894 | };
|
38895 |
|
38896 |
|
38897 |
|
38898 | function isEventSupported() {
|
38899 | var document = getDocument();
|
38900 | var eventName = 'onwheel';
|
38901 | var isSupported = (eventName in document);
|
38902 |
|
38903 | if (!isSupported) {
|
38904 | var element = document.createElement('div');
|
38905 | element.setAttribute(eventName, 'return;');
|
38906 | isSupported = typeof element[eventName] === 'function';
|
38907 | }
|
38908 |
|
38909 | if (!isSupported && document.implementation && document.implementation.hasFeature &&
|
38910 |
|
38911 | document.implementation.hasFeature('', '') !== true) {
|
38912 |
|
38913 | isSupported = document.implementation.hasFeature('Events.wheel', '3.0');
|
38914 | }
|
38915 |
|
38916 | return isSupported;
|
38917 | }
|
38918 |
|
38919 | var Mousewheel = {
|
38920 | lastScrollTime: now(),
|
38921 | lastEventBeforeSnap: undefined,
|
38922 | recentWheelEvents: [],
|
38923 | event: function event() {
|
38924 | var window = getWindow();
|
38925 | if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';
|
38926 | return isEventSupported() ? 'wheel' : 'mousewheel';
|
38927 | },
|
38928 | normalize: function normalize(e) {
|
38929 |
|
38930 | var PIXEL_STEP = 10;
|
38931 | var LINE_HEIGHT = 40;
|
38932 | var PAGE_HEIGHT = 800;
|
38933 | var sX = 0;
|
38934 | var sY = 0;
|
38935 |
|
38936 | var pX = 0;
|
38937 | var pY = 0;
|
38938 |
|
38939 |
|
38940 | if ('detail' in e) {
|
38941 | sY = e.detail;
|
38942 | }
|
38943 |
|
38944 | if ('wheelDelta' in e) {
|
38945 | sY = -e.wheelDelta / 120;
|
38946 | }
|
38947 |
|
38948 | if ('wheelDeltaY' in e) {
|
38949 | sY = -e.wheelDeltaY / 120;
|
38950 | }
|
38951 |
|
38952 | if ('wheelDeltaX' in e) {
|
38953 | sX = -e.wheelDeltaX / 120;
|
38954 | }
|
38955 |
|
38956 |
|
38957 | if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {
|
38958 | sX = sY;
|
38959 | sY = 0;
|
38960 | }
|
38961 |
|
38962 | pX = sX * PIXEL_STEP;
|
38963 | pY = sY * PIXEL_STEP;
|
38964 |
|
38965 | if ('deltaY' in e) {
|
38966 | pY = e.deltaY;
|
38967 | }
|
38968 |
|
38969 | if ('deltaX' in e) {
|
38970 | pX = e.deltaX;
|
38971 | }
|
38972 |
|
38973 | if (e.shiftKey && !pX) {
|
38974 |
|
38975 | pX = pY;
|
38976 | pY = 0;
|
38977 | }
|
38978 |
|
38979 | if ((pX || pY) && e.deltaMode) {
|
38980 | if (e.deltaMode === 1) {
|
38981 |
|
38982 | pX *= LINE_HEIGHT;
|
38983 | pY *= LINE_HEIGHT;
|
38984 | } else {
|
38985 |
|
38986 | pX *= PAGE_HEIGHT;
|
38987 | pY *= PAGE_HEIGHT;
|
38988 | }
|
38989 | }
|
38990 |
|
38991 |
|
38992 | if (pX && !sX) {
|
38993 | sX = pX < 1 ? -1 : 1;
|
38994 | }
|
38995 |
|
38996 | if (pY && !sY) {
|
38997 | sY = pY < 1 ? -1 : 1;
|
38998 | }
|
38999 |
|
39000 | return {
|
39001 | spinX: sX,
|
39002 | spinY: sY,
|
39003 | pixelX: pX,
|
39004 | pixelY: pY
|
39005 | };
|
39006 | },
|
39007 | handleMouseEnter: function handleMouseEnter() {
|
39008 | var swiper = this;
|
39009 | if (!swiper.enabled) return;
|
39010 | swiper.mouseEntered = true;
|
39011 | },
|
39012 | handleMouseLeave: function handleMouseLeave() {
|
39013 | var swiper = this;
|
39014 | if (!swiper.enabled) return;
|
39015 | swiper.mouseEntered = false;
|
39016 | },
|
39017 | handle: function handle(event) {
|
39018 | var e = event;
|
39019 | var disableParentSwiper = true;
|
39020 | var swiper = this;
|
39021 | if (!swiper.enabled) return;
|
39022 | var params = swiper.params.mousewheel;
|
39023 |
|
39024 | if (swiper.params.cssMode) {
|
39025 | e.preventDefault();
|
39026 | }
|
39027 |
|
39028 | var target = swiper.$el;
|
39029 |
|
39030 | if (swiper.params.mousewheel.eventsTarget !== 'container') {
|
39031 | target = $$1(swiper.params.mousewheel.eventsTarget);
|
39032 | }
|
39033 |
|
39034 | if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;
|
39035 | if (e.originalEvent) e = e.originalEvent;
|
39036 |
|
39037 | var delta = 0;
|
39038 | var rtlFactor = swiper.rtlTranslate ? -1 : 1;
|
39039 | var data = Mousewheel.normalize(e);
|
39040 |
|
39041 | if (params.forceToAxis) {
|
39042 | if (swiper.isHorizontal()) {
|
39043 | if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;
|
39044 | } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;
|
39045 | } else {
|
39046 | delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;
|
39047 | }
|
39048 |
|
39049 | if (delta === 0) return true;
|
39050 | if (params.invert) delta = -delta;
|
39051 |
|
39052 | var positions = swiper.getTranslate() + delta * params.sensitivity;
|
39053 | if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();
|
39054 | if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();
|
39055 |
|
39056 |
|
39057 |
|
39058 |
|
39059 |
|
39060 |
|
39061 |
|
39062 | disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());
|
39063 | if (disableParentSwiper && swiper.params.nested) e.stopPropagation();
|
39064 |
|
39065 | if (!swiper.params.freeMode) {
|
39066 |
|
39067 | var newEvent = {
|
39068 | time: now(),
|
39069 | delta: Math.abs(delta),
|
39070 | direction: Math.sign(delta),
|
39071 | raw: event
|
39072 | };
|
39073 |
|
39074 | var recentWheelEvents = swiper.mousewheel.recentWheelEvents;
|
39075 |
|
39076 | if (recentWheelEvents.length >= 2) {
|
39077 | recentWheelEvents.shift();
|
39078 | }
|
39079 |
|
39080 | var prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;
|
39081 | recentWheelEvents.push(newEvent);
|
39082 |
|
39083 |
|
39084 |
|
39085 |
|
39086 |
|
39087 |
|
39088 | if (prevEvent) {
|
39089 | if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {
|
39090 | swiper.mousewheel.animateSlider(newEvent);
|
39091 | }
|
39092 | } else {
|
39093 | swiper.mousewheel.animateSlider(newEvent);
|
39094 | }
|
39095 |
|
39096 |
|
39097 |
|
39098 | if (swiper.mousewheel.releaseScroll(newEvent)) {
|
39099 | return true;
|
39100 | }
|
39101 | } else {
|
39102 |
|
39103 |
|
39104 |
|
39105 |
|
39106 |
|
39107 | var _newEvent = {
|
39108 | time: now(),
|
39109 | delta: Math.abs(delta),
|
39110 | direction: Math.sign(delta)
|
39111 | };
|
39112 | var lastEventBeforeSnap = swiper.mousewheel.lastEventBeforeSnap;
|
39113 | var ignoreWheelEvents = lastEventBeforeSnap && _newEvent.time < lastEventBeforeSnap.time + 500 && _newEvent.delta <= lastEventBeforeSnap.delta && _newEvent.direction === lastEventBeforeSnap.direction;
|
39114 |
|
39115 | if (!ignoreWheelEvents) {
|
39116 | swiper.mousewheel.lastEventBeforeSnap = undefined;
|
39117 |
|
39118 | if (swiper.params.loop) {
|
39119 | swiper.loopFix();
|
39120 | }
|
39121 |
|
39122 | var position = swiper.getTranslate() + delta * params.sensitivity;
|
39123 | var wasBeginning = swiper.isBeginning;
|
39124 | var wasEnd = swiper.isEnd;
|
39125 | if (position >= swiper.minTranslate()) position = swiper.minTranslate();
|
39126 | if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();
|
39127 | swiper.setTransition(0);
|
39128 | swiper.setTranslate(position);
|
39129 | swiper.updateProgress();
|
39130 | swiper.updateActiveIndex();
|
39131 | swiper.updateSlidesClasses();
|
39132 |
|
39133 | if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {
|
39134 | swiper.updateSlidesClasses();
|
39135 | }
|
39136 |
|
39137 | if (swiper.params.freeModeSticky) {
|
39138 |
|
39139 |
|
39140 |
|
39141 |
|
39142 |
|
39143 |
|
39144 |
|
39145 |
|
39146 |
|
39147 |
|
39148 |
|
39149 | clearTimeout(swiper.mousewheel.timeout);
|
39150 | swiper.mousewheel.timeout = undefined;
|
39151 | var _recentWheelEvents = swiper.mousewheel.recentWheelEvents;
|
39152 |
|
39153 | if (_recentWheelEvents.length >= 15) {
|
39154 | _recentWheelEvents.shift();
|
39155 |
|
39156 | }
|
39157 |
|
39158 | var _prevEvent = _recentWheelEvents.length ? _recentWheelEvents[_recentWheelEvents.length - 1] : undefined;
|
39159 |
|
39160 | var firstEvent = _recentWheelEvents[0];
|
39161 |
|
39162 | _recentWheelEvents.push(_newEvent);
|
39163 |
|
39164 | if (_prevEvent && (_newEvent.delta > _prevEvent.delta || _newEvent.direction !== _prevEvent.direction)) {
|
39165 |
|
39166 | _recentWheelEvents.splice(0);
|
39167 | } else if (_recentWheelEvents.length >= 15 && _newEvent.time - firstEvent.time < 500 && firstEvent.delta - _newEvent.delta >= 1 && _newEvent.delta <= 6) {
|
39168 |
|
39169 |
|
39170 |
|
39171 |
|
39172 |
|
39173 |
|
39174 | var snapToThreshold = delta > 0 ? 0.8 : 0.2;
|
39175 | swiper.mousewheel.lastEventBeforeSnap = _newEvent;
|
39176 |
|
39177 | _recentWheelEvents.splice(0);
|
39178 |
|
39179 | swiper.mousewheel.timeout = nextTick(function () {
|
39180 | swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
|
39181 | }, 0);
|
39182 | }
|
39183 |
|
39184 | if (!swiper.mousewheel.timeout) {
|
39185 |
|
39186 |
|
39187 |
|
39188 | swiper.mousewheel.timeout = nextTick(function () {
|
39189 | var snapToThreshold = 0.5;
|
39190 | swiper.mousewheel.lastEventBeforeSnap = _newEvent;
|
39191 |
|
39192 | _recentWheelEvents.splice(0);
|
39193 |
|
39194 | swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);
|
39195 | }, 500);
|
39196 | }
|
39197 | }
|
39198 |
|
39199 |
|
39200 | if (!ignoreWheelEvents) swiper.emit('scroll', e);
|
39201 |
|
39202 | if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();
|
39203 |
|
39204 | if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;
|
39205 | }
|
39206 | }
|
39207 |
|
39208 | if (e.preventDefault) e.preventDefault();else e.returnValue = false;
|
39209 | return false;
|
39210 | },
|
39211 | animateSlider: function animateSlider(newEvent) {
|
39212 | var swiper = this;
|
39213 | var window = getWindow();
|
39214 |
|
39215 | if (this.params.mousewheel.thresholdDelta && newEvent.delta < this.params.mousewheel.thresholdDelta) {
|
39216 |
|
39217 | return false;
|
39218 | }
|
39219 |
|
39220 | if (this.params.mousewheel.thresholdTime && now() - swiper.mousewheel.lastScrollTime < this.params.mousewheel.thresholdTime) {
|
39221 |
|
39222 | return false;
|
39223 | }
|
39224 |
|
39225 |
|
39226 |
|
39227 |
|
39228 | if (newEvent.delta >= 6 && now() - swiper.mousewheel.lastScrollTime < 60) {
|
39229 |
|
39230 | return true;
|
39231 | }
|
39232 |
|
39233 |
|
39234 |
|
39235 |
|
39236 |
|
39237 |
|
39238 |
|
39239 |
|
39240 |
|
39241 |
|
39242 |
|
39243 |
|
39244 |
|
39245 | if (newEvent.direction < 0) {
|
39246 | if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {
|
39247 | swiper.slideNext();
|
39248 | swiper.emit('scroll', newEvent.raw);
|
39249 | }
|
39250 | } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {
|
39251 | swiper.slidePrev();
|
39252 | swiper.emit('scroll', newEvent.raw);
|
39253 | }
|
39254 |
|
39255 |
|
39256 | swiper.mousewheel.lastScrollTime = new window.Date().getTime();
|
39257 |
|
39258 | return false;
|
39259 | },
|
39260 | releaseScroll: function releaseScroll(newEvent) {
|
39261 | var swiper = this;
|
39262 | var params = swiper.params.mousewheel;
|
39263 |
|
39264 | if (newEvent.direction < 0) {
|
39265 | if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {
|
39266 |
|
39267 | return true;
|
39268 | }
|
39269 | } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {
|
39270 |
|
39271 | return true;
|
39272 | }
|
39273 |
|
39274 | return false;
|
39275 | },
|
39276 | enable: function enable() {
|
39277 | var swiper = this;
|
39278 | var event = Mousewheel.event();
|
39279 |
|
39280 | if (swiper.params.cssMode) {
|
39281 | swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);
|
39282 | return true;
|
39283 | }
|
39284 |
|
39285 | if (!event) return false;
|
39286 | if (swiper.mousewheel.enabled) return false;
|
39287 | var target = swiper.$el;
|
39288 |
|
39289 | if (swiper.params.mousewheel.eventsTarget !== 'container') {
|
39290 | target = $$1(swiper.params.mousewheel.eventsTarget);
|
39291 | }
|
39292 |
|
39293 | target.on('mouseenter', swiper.mousewheel.handleMouseEnter);
|
39294 | target.on('mouseleave', swiper.mousewheel.handleMouseLeave);
|
39295 | target.on(event, swiper.mousewheel.handle);
|
39296 | swiper.mousewheel.enabled = true;
|
39297 | return true;
|
39298 | },
|
39299 | disable: function disable() {
|
39300 | var swiper = this;
|
39301 | var event = Mousewheel.event();
|
39302 |
|
39303 | if (swiper.params.cssMode) {
|
39304 | swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);
|
39305 | return true;
|
39306 | }
|
39307 |
|
39308 | if (!event) return false;
|
39309 | if (!swiper.mousewheel.enabled) return false;
|
39310 | var target = swiper.$el;
|
39311 |
|
39312 | if (swiper.params.mousewheel.eventsTarget !== 'container') {
|
39313 | target = $$1(swiper.params.mousewheel.eventsTarget);
|
39314 | }
|
39315 |
|
39316 | target.off(event, swiper.mousewheel.handle);
|
39317 | swiper.mousewheel.enabled = false;
|
39318 | return true;
|
39319 | }
|
39320 | };
|
39321 | var Mousewheel$1 = {
|
39322 | name: 'mousewheel',
|
39323 | params: {
|
39324 | mousewheel: {
|
39325 | enabled: false,
|
39326 | releaseOnEdges: false,
|
39327 | invert: false,
|
39328 | forceToAxis: false,
|
39329 | sensitivity: 1,
|
39330 | eventsTarget: 'container',
|
39331 | thresholdDelta: null,
|
39332 | thresholdTime: null
|
39333 | }
|
39334 | },
|
39335 | create: function create() {
|
39336 | var swiper = this;
|
39337 | bindModuleMethods(swiper, {
|
39338 | mousewheel: {
|
39339 | enabled: false,
|
39340 | lastScrollTime: now(),
|
39341 | lastEventBeforeSnap: undefined,
|
39342 | recentWheelEvents: [],
|
39343 | enable: Mousewheel.enable,
|
39344 | disable: Mousewheel.disable,
|
39345 | handle: Mousewheel.handle,
|
39346 | handleMouseEnter: Mousewheel.handleMouseEnter,
|
39347 | handleMouseLeave: Mousewheel.handleMouseLeave,
|
39348 | animateSlider: Mousewheel.animateSlider,
|
39349 | releaseScroll: Mousewheel.releaseScroll
|
39350 | }
|
39351 | });
|
39352 | },
|
39353 | on: {
|
39354 | init: function init(swiper) {
|
39355 | if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {
|
39356 | swiper.mousewheel.disable();
|
39357 | }
|
39358 |
|
39359 | if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();
|
39360 | },
|
39361 | destroy: function destroy(swiper) {
|
39362 | if (swiper.params.cssMode) {
|
39363 | swiper.mousewheel.enable();
|
39364 | }
|
39365 |
|
39366 | if (swiper.mousewheel.enabled) swiper.mousewheel.disable();
|
39367 | }
|
39368 | }
|
39369 | };
|
39370 |
|
39371 | function _extends$f() {
|
39372 | _extends$f = Object.assign || function (target) {
|
39373 | for (var i = 1; i < arguments.length; i++) {
|
39374 | var source = arguments[i];
|
39375 |
|
39376 | for (var key in source) {
|
39377 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
39378 | target[key] = source[key];
|
39379 | }
|
39380 | }
|
39381 | }
|
39382 |
|
39383 | return target;
|
39384 | };
|
39385 |
|
39386 | return _extends$f.apply(this, arguments);
|
39387 | }
|
39388 | var Navigation = {
|
39389 | toggleEl: function toggleEl($el, disabled) {
|
39390 | $el[disabled ? 'addClass' : 'removeClass'](this.params.navigation.disabledClass);
|
39391 | if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;
|
39392 | },
|
39393 | update: function update() {
|
39394 |
|
39395 | var swiper = this;
|
39396 | var params = swiper.params.navigation;
|
39397 | var toggleEl = swiper.navigation.toggleEl;
|
39398 | if (swiper.params.loop) return;
|
39399 | var _swiper$navigation = swiper.navigation,
|
39400 | $nextEl = _swiper$navigation.$nextEl,
|
39401 | $prevEl = _swiper$navigation.$prevEl;
|
39402 |
|
39403 | if ($prevEl && $prevEl.length > 0) {
|
39404 | if (swiper.isBeginning) {
|
39405 | toggleEl($prevEl, true);
|
39406 | } else {
|
39407 | toggleEl($prevEl, false);
|
39408 | }
|
39409 |
|
39410 | if (swiper.params.watchOverflow && swiper.enabled) {
|
39411 | $prevEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
|
39412 | }
|
39413 | }
|
39414 |
|
39415 | if ($nextEl && $nextEl.length > 0) {
|
39416 | if (swiper.isEnd) {
|
39417 | toggleEl($nextEl, true);
|
39418 | } else {
|
39419 | toggleEl($nextEl, false);
|
39420 | }
|
39421 |
|
39422 | if (swiper.params.watchOverflow && swiper.enabled) {
|
39423 | $nextEl[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
|
39424 | }
|
39425 | }
|
39426 | },
|
39427 | onPrevClick: function onPrevClick(e) {
|
39428 | var swiper = this;
|
39429 | e.preventDefault();
|
39430 | if (swiper.isBeginning && !swiper.params.loop) return;
|
39431 | swiper.slidePrev();
|
39432 | },
|
39433 | onNextClick: function onNextClick(e) {
|
39434 | var swiper = this;
|
39435 | e.preventDefault();
|
39436 | if (swiper.isEnd && !swiper.params.loop) return;
|
39437 | swiper.slideNext();
|
39438 | },
|
39439 | init: function init() {
|
39440 | var swiper = this;
|
39441 | var params = swiper.params.navigation;
|
39442 | if (!(params.nextEl || params.prevEl)) return;
|
39443 | var $nextEl;
|
39444 | var $prevEl;
|
39445 |
|
39446 | if (params.nextEl) {
|
39447 | $nextEl = $$1(params.nextEl);
|
39448 |
|
39449 | if (swiper.params.uniqueNavElements && typeof params.nextEl === 'string' && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) {
|
39450 | $nextEl = swiper.$el.find(params.nextEl);
|
39451 | }
|
39452 | }
|
39453 |
|
39454 | if (params.prevEl) {
|
39455 | $prevEl = $$1(params.prevEl);
|
39456 |
|
39457 | if (swiper.params.uniqueNavElements && typeof params.prevEl === 'string' && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) {
|
39458 | $prevEl = swiper.$el.find(params.prevEl);
|
39459 | }
|
39460 | }
|
39461 |
|
39462 | if ($nextEl && $nextEl.length > 0) {
|
39463 | $nextEl.on('click', swiper.navigation.onNextClick);
|
39464 | }
|
39465 |
|
39466 | if ($prevEl && $prevEl.length > 0) {
|
39467 | $prevEl.on('click', swiper.navigation.onPrevClick);
|
39468 | }
|
39469 |
|
39470 | extend(swiper.navigation, {
|
39471 | $nextEl: $nextEl,
|
39472 | nextEl: $nextEl && $nextEl[0],
|
39473 | $prevEl: $prevEl,
|
39474 | prevEl: $prevEl && $prevEl[0]
|
39475 | });
|
39476 |
|
39477 | if (!swiper.enabled) {
|
39478 | if ($nextEl) $nextEl.addClass(params.lockClass);
|
39479 | if ($prevEl) $prevEl.addClass(params.lockClass);
|
39480 | }
|
39481 | },
|
39482 | destroy: function destroy() {
|
39483 | var swiper = this;
|
39484 | var _swiper$navigation2 = swiper.navigation,
|
39485 | $nextEl = _swiper$navigation2.$nextEl,
|
39486 | $prevEl = _swiper$navigation2.$prevEl;
|
39487 |
|
39488 | if ($nextEl && $nextEl.length) {
|
39489 | $nextEl.off('click', swiper.navigation.onNextClick);
|
39490 | $nextEl.removeClass(swiper.params.navigation.disabledClass);
|
39491 | }
|
39492 |
|
39493 | if ($prevEl && $prevEl.length) {
|
39494 | $prevEl.off('click', swiper.navigation.onPrevClick);
|
39495 | $prevEl.removeClass(swiper.params.navigation.disabledClass);
|
39496 | }
|
39497 | }
|
39498 | };
|
39499 | var Navigation$1 = {
|
39500 | name: 'navigation',
|
39501 | params: {
|
39502 | navigation: {
|
39503 | nextEl: null,
|
39504 | prevEl: null,
|
39505 | hideOnClick: false,
|
39506 | disabledClass: 'swiper-button-disabled',
|
39507 | hiddenClass: 'swiper-button-hidden',
|
39508 | lockClass: 'swiper-button-lock'
|
39509 | }
|
39510 | },
|
39511 | create: function create() {
|
39512 | var swiper = this;
|
39513 | bindModuleMethods(swiper, {
|
39514 | navigation: _extends$f({}, Navigation)
|
39515 | });
|
39516 | },
|
39517 | on: {
|
39518 | init: function init(swiper) {
|
39519 | swiper.navigation.init();
|
39520 | swiper.navigation.update();
|
39521 | },
|
39522 | toEdge: function toEdge(swiper) {
|
39523 | swiper.navigation.update();
|
39524 | },
|
39525 | fromEdge: function fromEdge(swiper) {
|
39526 | swiper.navigation.update();
|
39527 | },
|
39528 | destroy: function destroy(swiper) {
|
39529 | swiper.navigation.destroy();
|
39530 | },
|
39531 | 'enable disable': function enableDisable(swiper) {
|
39532 | var _swiper$navigation3 = swiper.navigation,
|
39533 | $nextEl = _swiper$navigation3.$nextEl,
|
39534 | $prevEl = _swiper$navigation3.$prevEl;
|
39535 |
|
39536 | if ($nextEl) {
|
39537 | $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
|
39538 | }
|
39539 |
|
39540 | if ($prevEl) {
|
39541 | $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);
|
39542 | }
|
39543 | },
|
39544 | click: function click(swiper, e) {
|
39545 | var _swiper$navigation4 = swiper.navigation,
|
39546 | $nextEl = _swiper$navigation4.$nextEl,
|
39547 | $prevEl = _swiper$navigation4.$prevEl;
|
39548 | var targetEl = e.target;
|
39549 |
|
39550 | if (swiper.params.navigation.hideOnClick && !$$1(targetEl).is($prevEl) && !$$1(targetEl).is($nextEl)) {
|
39551 | if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
|
39552 | var isHidden;
|
39553 |
|
39554 | if ($nextEl) {
|
39555 | isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);
|
39556 | } else if ($prevEl) {
|
39557 | isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);
|
39558 | }
|
39559 |
|
39560 | if (isHidden === true) {
|
39561 | swiper.emit('navigationShow');
|
39562 | } else {
|
39563 | swiper.emit('navigationHide');
|
39564 | }
|
39565 |
|
39566 | if ($nextEl) {
|
39567 | $nextEl.toggleClass(swiper.params.navigation.hiddenClass);
|
39568 | }
|
39569 |
|
39570 | if ($prevEl) {
|
39571 | $prevEl.toggleClass(swiper.params.navigation.hiddenClass);
|
39572 | }
|
39573 | }
|
39574 | }
|
39575 | }
|
39576 | };
|
39577 |
|
39578 | function _extends$e() {
|
39579 | _extends$e = Object.assign || function (target) {
|
39580 | for (var i = 1; i < arguments.length; i++) {
|
39581 | var source = arguments[i];
|
39582 |
|
39583 | for (var key in source) {
|
39584 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
39585 | target[key] = source[key];
|
39586 | }
|
39587 | }
|
39588 | }
|
39589 |
|
39590 | return target;
|
39591 | };
|
39592 |
|
39593 | return _extends$e.apply(this, arguments);
|
39594 | }
|
39595 | var Pagination = {
|
39596 | update: function update() {
|
39597 |
|
39598 | var swiper = this;
|
39599 | var rtl = swiper.rtl;
|
39600 | var params = swiper.params.pagination;
|
39601 | if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
|
39602 | var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
|
39603 | var $el = swiper.pagination.$el;
|
39604 |
|
39605 | var current;
|
39606 | var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
|
39607 |
|
39608 | if (swiper.params.loop) {
|
39609 | current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);
|
39610 |
|
39611 | if (current > slidesLength - 1 - swiper.loopedSlides * 2) {
|
39612 | current -= slidesLength - swiper.loopedSlides * 2;
|
39613 | }
|
39614 |
|
39615 | if (current > total - 1) current -= total;
|
39616 | if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;
|
39617 | } else if (typeof swiper.snapIndex !== 'undefined') {
|
39618 | current = swiper.snapIndex;
|
39619 | } else {
|
39620 | current = swiper.activeIndex || 0;
|
39621 | }
|
39622 |
|
39623 |
|
39624 | if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {
|
39625 | var bullets = swiper.pagination.bullets;
|
39626 | var firstIndex;
|
39627 | var lastIndex;
|
39628 | var midIndex;
|
39629 |
|
39630 | if (params.dynamicBullets) {
|
39631 | swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);
|
39632 | $el.css(swiper.isHorizontal() ? 'width' : 'height', swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px");
|
39633 |
|
39634 | if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {
|
39635 | swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex;
|
39636 |
|
39637 | if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) {
|
39638 | swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;
|
39639 | } else if (swiper.pagination.dynamicBulletIndex < 0) {
|
39640 | swiper.pagination.dynamicBulletIndex = 0;
|
39641 | }
|
39642 | }
|
39643 |
|
39644 | firstIndex = current - swiper.pagination.dynamicBulletIndex;
|
39645 | lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);
|
39646 | midIndex = (lastIndex + firstIndex) / 2;
|
39647 | }
|
39648 |
|
39649 | bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main");
|
39650 |
|
39651 | if ($el.length > 1) {
|
39652 | bullets.each(function (bullet) {
|
39653 | var $bullet = $$1(bullet);
|
39654 | var bulletIndex = $bullet.index();
|
39655 |
|
39656 | if (bulletIndex === current) {
|
39657 | $bullet.addClass(params.bulletActiveClass);
|
39658 | }
|
39659 |
|
39660 | if (params.dynamicBullets) {
|
39661 | if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {
|
39662 | $bullet.addClass(params.bulletActiveClass + "-main");
|
39663 | }
|
39664 |
|
39665 | if (bulletIndex === firstIndex) {
|
39666 | $bullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
|
39667 | }
|
39668 |
|
39669 | if (bulletIndex === lastIndex) {
|
39670 | $bullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
|
39671 | }
|
39672 | }
|
39673 | });
|
39674 | } else {
|
39675 | var $bullet = bullets.eq(current);
|
39676 | var bulletIndex = $bullet.index();
|
39677 | $bullet.addClass(params.bulletActiveClass);
|
39678 |
|
39679 | if (params.dynamicBullets) {
|
39680 | var $firstDisplayedBullet = bullets.eq(firstIndex);
|
39681 | var $lastDisplayedBullet = bullets.eq(lastIndex);
|
39682 |
|
39683 | for (var i = firstIndex; i <= lastIndex; i += 1) {
|
39684 | bullets.eq(i).addClass(params.bulletActiveClass + "-main");
|
39685 | }
|
39686 |
|
39687 | if (swiper.params.loop) {
|
39688 | if (bulletIndex >= bullets.length - params.dynamicMainBullets) {
|
39689 | for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) {
|
39690 | bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + "-main");
|
39691 | }
|
39692 |
|
39693 | bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + "-prev");
|
39694 | } else {
|
39695 | $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
|
39696 | $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
|
39697 | }
|
39698 | } else {
|
39699 | $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev");
|
39700 | $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next");
|
39701 | }
|
39702 | }
|
39703 | }
|
39704 |
|
39705 | if (params.dynamicBullets) {
|
39706 | var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);
|
39707 | var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize;
|
39708 | var offsetProp = rtl ? 'right' : 'left';
|
39709 | bullets.css(swiper.isHorizontal() ? offsetProp : 'top', bulletsOffset + "px");
|
39710 | }
|
39711 | }
|
39712 |
|
39713 | if (params.type === 'fraction') {
|
39714 | $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));
|
39715 | $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));
|
39716 | }
|
39717 |
|
39718 | if (params.type === 'progressbar') {
|
39719 | var progressbarDirection;
|
39720 |
|
39721 | if (params.progressbarOpposite) {
|
39722 | progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';
|
39723 | } else {
|
39724 | progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';
|
39725 | }
|
39726 |
|
39727 | var scale = (current + 1) / total;
|
39728 | var scaleX = 1;
|
39729 | var scaleY = 1;
|
39730 |
|
39731 | if (progressbarDirection === 'horizontal') {
|
39732 | scaleX = scale;
|
39733 | } else {
|
39734 | scaleY = scale;
|
39735 | }
|
39736 |
|
39737 | $el.find(classesToSelector(params.progressbarFillClass)).transform("translate3d(0,0,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper.params.speed);
|
39738 | }
|
39739 |
|
39740 | if (params.type === 'custom' && params.renderCustom) {
|
39741 | $el.html(params.renderCustom(swiper, current + 1, total));
|
39742 | swiper.emit('paginationRender', $el[0]);
|
39743 | } else {
|
39744 | swiper.emit('paginationUpdate', $el[0]);
|
39745 | }
|
39746 |
|
39747 | if (swiper.params.watchOverflow && swiper.enabled) {
|
39748 | $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);
|
39749 | }
|
39750 | },
|
39751 | render: function render() {
|
39752 |
|
39753 | var swiper = this;
|
39754 | var params = swiper.params.pagination;
|
39755 | if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
|
39756 | var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;
|
39757 | var $el = swiper.pagination.$el;
|
39758 | var paginationHTML = '';
|
39759 |
|
39760 | if (params.type === 'bullets') {
|
39761 | var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;
|
39762 |
|
39763 | if (swiper.params.freeMode && !swiper.params.loop && numberOfBullets > slidesLength) {
|
39764 | numberOfBullets = slidesLength;
|
39765 | }
|
39766 |
|
39767 | for (var i = 0; i < numberOfBullets; i += 1) {
|
39768 | if (params.renderBullet) {
|
39769 | paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);
|
39770 | } else {
|
39771 | paginationHTML += "<" + params.bulletElement + " class=\"" + params.bulletClass + "\"></" + params.bulletElement + ">";
|
39772 | }
|
39773 | }
|
39774 |
|
39775 | $el.html(paginationHTML);
|
39776 | swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));
|
39777 | }
|
39778 |
|
39779 | if (params.type === 'fraction') {
|
39780 | if (params.renderFraction) {
|
39781 | paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);
|
39782 | } else {
|
39783 | paginationHTML = "<span class=\"" + params.currentClass + "\"></span>" + ' / ' + ("<span class=\"" + params.totalClass + "\"></span>");
|
39784 | }
|
39785 |
|
39786 | $el.html(paginationHTML);
|
39787 | }
|
39788 |
|
39789 | if (params.type === 'progressbar') {
|
39790 | if (params.renderProgressbar) {
|
39791 | paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);
|
39792 | } else {
|
39793 | paginationHTML = "<span class=\"" + params.progressbarFillClass + "\"></span>";
|
39794 | }
|
39795 |
|
39796 | $el.html(paginationHTML);
|
39797 | }
|
39798 |
|
39799 | if (params.type !== 'custom') {
|
39800 | swiper.emit('paginationRender', swiper.pagination.$el[0]);
|
39801 | }
|
39802 | },
|
39803 | init: function init() {
|
39804 | var swiper = this;
|
39805 | var params = swiper.params.pagination;
|
39806 | if (!params.el) return;
|
39807 | var $el = $$1(params.el);
|
39808 | if ($el.length === 0) return;
|
39809 |
|
39810 | if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {
|
39811 | $el = swiper.$el.find(params.el);
|
39812 | }
|
39813 |
|
39814 | if (params.type === 'bullets' && params.clickable) {
|
39815 | $el.addClass(params.clickableClass);
|
39816 | }
|
39817 |
|
39818 | $el.addClass(params.modifierClass + params.type);
|
39819 |
|
39820 | if (params.type === 'bullets' && params.dynamicBullets) {
|
39821 | $el.addClass("" + params.modifierClass + params.type + "-dynamic");
|
39822 | swiper.pagination.dynamicBulletIndex = 0;
|
39823 |
|
39824 | if (params.dynamicMainBullets < 1) {
|
39825 | params.dynamicMainBullets = 1;
|
39826 | }
|
39827 | }
|
39828 |
|
39829 | if (params.type === 'progressbar' && params.progressbarOpposite) {
|
39830 | $el.addClass(params.progressbarOppositeClass);
|
39831 | }
|
39832 |
|
39833 | if (params.clickable) {
|
39834 | $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {
|
39835 | e.preventDefault();
|
39836 | var index = $$1(this).index() * swiper.params.slidesPerGroup;
|
39837 | if (swiper.params.loop) index += swiper.loopedSlides;
|
39838 | swiper.slideTo(index);
|
39839 | });
|
39840 | }
|
39841 |
|
39842 | extend(swiper.pagination, {
|
39843 | $el: $el,
|
39844 | el: $el[0]
|
39845 | });
|
39846 |
|
39847 | if (!swiper.enabled) {
|
39848 | $el.addClass(params.lockClass);
|
39849 | }
|
39850 | },
|
39851 | destroy: function destroy() {
|
39852 | var swiper = this;
|
39853 | var params = swiper.params.pagination;
|
39854 | if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;
|
39855 | var $el = swiper.pagination.$el;
|
39856 | $el.removeClass(params.hiddenClass);
|
39857 | $el.removeClass(params.modifierClass + params.type);
|
39858 | if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);
|
39859 |
|
39860 | if (params.clickable) {
|
39861 | $el.off('click', classesToSelector(params.bulletClass));
|
39862 | }
|
39863 | }
|
39864 | };
|
39865 | var Pagination$1 = {
|
39866 | name: 'pagination',
|
39867 | params: {
|
39868 | pagination: {
|
39869 | el: null,
|
39870 | bulletElement: 'span',
|
39871 | clickable: false,
|
39872 | hideOnClick: false,
|
39873 | renderBullet: null,
|
39874 | renderProgressbar: null,
|
39875 | renderFraction: null,
|
39876 | renderCustom: null,
|
39877 | progressbarOpposite: false,
|
39878 | type: 'bullets',
|
39879 |
|
39880 | dynamicBullets: false,
|
39881 | dynamicMainBullets: 1,
|
39882 | formatFractionCurrent: function formatFractionCurrent(number) {
|
39883 | return number;
|
39884 | },
|
39885 | formatFractionTotal: function formatFractionTotal(number) {
|
39886 | return number;
|
39887 | },
|
39888 | bulletClass: 'swiper-pagination-bullet',
|
39889 | bulletActiveClass: 'swiper-pagination-bullet-active',
|
39890 | modifierClass: 'swiper-pagination-',
|
39891 |
|
39892 | currentClass: 'swiper-pagination-current',
|
39893 | totalClass: 'swiper-pagination-total',
|
39894 | hiddenClass: 'swiper-pagination-hidden',
|
39895 | progressbarFillClass: 'swiper-pagination-progressbar-fill',
|
39896 | progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',
|
39897 | clickableClass: 'swiper-pagination-clickable',
|
39898 |
|
39899 | lockClass: 'swiper-pagination-lock'
|
39900 | }
|
39901 | },
|
39902 | create: function create() {
|
39903 | var swiper = this;
|
39904 | bindModuleMethods(swiper, {
|
39905 | pagination: _extends$e({
|
39906 | dynamicBulletIndex: 0
|
39907 | }, Pagination)
|
39908 | });
|
39909 | },
|
39910 | on: {
|
39911 | init: function init(swiper) {
|
39912 | swiper.pagination.init();
|
39913 | swiper.pagination.render();
|
39914 | swiper.pagination.update();
|
39915 | },
|
39916 | activeIndexChange: function activeIndexChange(swiper) {
|
39917 | if (swiper.params.loop) {
|
39918 | swiper.pagination.update();
|
39919 | } else if (typeof swiper.snapIndex === 'undefined') {
|
39920 | swiper.pagination.update();
|
39921 | }
|
39922 | },
|
39923 | snapIndexChange: function snapIndexChange(swiper) {
|
39924 | if (!swiper.params.loop) {
|
39925 | swiper.pagination.update();
|
39926 | }
|
39927 | },
|
39928 | slidesLengthChange: function slidesLengthChange(swiper) {
|
39929 | if (swiper.params.loop) {
|
39930 | swiper.pagination.render();
|
39931 | swiper.pagination.update();
|
39932 | }
|
39933 | },
|
39934 | snapGridLengthChange: function snapGridLengthChange(swiper) {
|
39935 | if (!swiper.params.loop) {
|
39936 | swiper.pagination.render();
|
39937 | swiper.pagination.update();
|
39938 | }
|
39939 | },
|
39940 | destroy: function destroy(swiper) {
|
39941 | swiper.pagination.destroy();
|
39942 | },
|
39943 | 'enable disable': function enableDisable(swiper) {
|
39944 | var $el = swiper.pagination.$el;
|
39945 |
|
39946 | if ($el) {
|
39947 | $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);
|
39948 | }
|
39949 | },
|
39950 | click: function click(swiper, e) {
|
39951 | var targetEl = e.target;
|
39952 |
|
39953 | if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$$1(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
|
39954 | if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
|
39955 | var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);
|
39956 |
|
39957 | if (isHidden === true) {
|
39958 | swiper.emit('paginationShow');
|
39959 | } else {
|
39960 | swiper.emit('paginationHide');
|
39961 | }
|
39962 |
|
39963 | swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);
|
39964 | }
|
39965 | }
|
39966 | }
|
39967 | };
|
39968 |
|
39969 | function _extends$d() {
|
39970 | _extends$d = Object.assign || function (target) {
|
39971 | for (var i = 1; i < arguments.length; i++) {
|
39972 | var source = arguments[i];
|
39973 |
|
39974 | for (var key in source) {
|
39975 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
39976 | target[key] = source[key];
|
39977 | }
|
39978 | }
|
39979 | }
|
39980 |
|
39981 | return target;
|
39982 | };
|
39983 |
|
39984 | return _extends$d.apply(this, arguments);
|
39985 | }
|
39986 | var Scrollbar = {
|
39987 | setTranslate: function setTranslate() {
|
39988 | var swiper = this;
|
39989 | if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
|
39990 | var scrollbar = swiper.scrollbar,
|
39991 | rtl = swiper.rtlTranslate,
|
39992 | progress = swiper.progress;
|
39993 | var dragSize = scrollbar.dragSize,
|
39994 | trackSize = scrollbar.trackSize,
|
39995 | $dragEl = scrollbar.$dragEl,
|
39996 | $el = scrollbar.$el;
|
39997 | var params = swiper.params.scrollbar;
|
39998 | var newSize = dragSize;
|
39999 | var newPos = (trackSize - dragSize) * progress;
|
40000 |
|
40001 | if (rtl) {
|
40002 | newPos = -newPos;
|
40003 |
|
40004 | if (newPos > 0) {
|
40005 | newSize = dragSize - newPos;
|
40006 | newPos = 0;
|
40007 | } else if (-newPos + dragSize > trackSize) {
|
40008 | newSize = trackSize + newPos;
|
40009 | }
|
40010 | } else if (newPos < 0) {
|
40011 | newSize = dragSize + newPos;
|
40012 | newPos = 0;
|
40013 | } else if (newPos + dragSize > trackSize) {
|
40014 | newSize = trackSize - newPos;
|
40015 | }
|
40016 |
|
40017 | if (swiper.isHorizontal()) {
|
40018 | $dragEl.transform("translate3d(" + newPos + "px, 0, 0)");
|
40019 | $dragEl[0].style.width = newSize + "px";
|
40020 | } else {
|
40021 | $dragEl.transform("translate3d(0px, " + newPos + "px, 0)");
|
40022 | $dragEl[0].style.height = newSize + "px";
|
40023 | }
|
40024 |
|
40025 | if (params.hide) {
|
40026 | clearTimeout(swiper.scrollbar.timeout);
|
40027 | $el[0].style.opacity = 1;
|
40028 | swiper.scrollbar.timeout = setTimeout(function () {
|
40029 | $el[0].style.opacity = 0;
|
40030 | $el.transition(400);
|
40031 | }, 1000);
|
40032 | }
|
40033 | },
|
40034 | setTransition: function setTransition(duration) {
|
40035 | var swiper = this;
|
40036 | if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
|
40037 | swiper.scrollbar.$dragEl.transition(duration);
|
40038 | },
|
40039 | updateSize: function updateSize() {
|
40040 | var swiper = this;
|
40041 | if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
|
40042 | var scrollbar = swiper.scrollbar;
|
40043 | var $dragEl = scrollbar.$dragEl,
|
40044 | $el = scrollbar.$el;
|
40045 | $dragEl[0].style.width = '';
|
40046 | $dragEl[0].style.height = '';
|
40047 | var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;
|
40048 | var divider = swiper.size / swiper.virtualSize;
|
40049 | var moveDivider = divider * (trackSize / swiper.size);
|
40050 | var dragSize;
|
40051 |
|
40052 | if (swiper.params.scrollbar.dragSize === 'auto') {
|
40053 | dragSize = trackSize * divider;
|
40054 | } else {
|
40055 | dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);
|
40056 | }
|
40057 |
|
40058 | if (swiper.isHorizontal()) {
|
40059 | $dragEl[0].style.width = dragSize + "px";
|
40060 | } else {
|
40061 | $dragEl[0].style.height = dragSize + "px";
|
40062 | }
|
40063 |
|
40064 | if (divider >= 1) {
|
40065 | $el[0].style.display = 'none';
|
40066 | } else {
|
40067 | $el[0].style.display = '';
|
40068 | }
|
40069 |
|
40070 | if (swiper.params.scrollbar.hide) {
|
40071 | $el[0].style.opacity = 0;
|
40072 | }
|
40073 |
|
40074 | extend(scrollbar, {
|
40075 | trackSize: trackSize,
|
40076 | divider: divider,
|
40077 | moveDivider: moveDivider,
|
40078 | dragSize: dragSize
|
40079 | });
|
40080 |
|
40081 | if (swiper.params.watchOverflow && swiper.enabled) {
|
40082 | scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);
|
40083 | }
|
40084 | },
|
40085 | getPointerPosition: function getPointerPosition(e) {
|
40086 | var swiper = this;
|
40087 |
|
40088 | if (swiper.isHorizontal()) {
|
40089 | return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;
|
40090 | }
|
40091 |
|
40092 | return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;
|
40093 | },
|
40094 | setDragPosition: function setDragPosition(e) {
|
40095 | var swiper = this;
|
40096 | var scrollbar = swiper.scrollbar,
|
40097 | rtl = swiper.rtlTranslate;
|
40098 | var $el = scrollbar.$el,
|
40099 | dragSize = scrollbar.dragSize,
|
40100 | trackSize = scrollbar.trackSize,
|
40101 | dragStartPos = scrollbar.dragStartPos;
|
40102 | var positionRatio;
|
40103 | positionRatio = (scrollbar.getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);
|
40104 | positionRatio = Math.max(Math.min(positionRatio, 1), 0);
|
40105 |
|
40106 | if (rtl) {
|
40107 | positionRatio = 1 - positionRatio;
|
40108 | }
|
40109 |
|
40110 | var position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;
|
40111 | swiper.updateProgress(position);
|
40112 | swiper.setTranslate(position);
|
40113 | swiper.updateActiveIndex();
|
40114 | swiper.updateSlidesClasses();
|
40115 | },
|
40116 | onDragStart: function onDragStart(e) {
|
40117 | var swiper = this;
|
40118 | var params = swiper.params.scrollbar;
|
40119 | var scrollbar = swiper.scrollbar,
|
40120 | $wrapperEl = swiper.$wrapperEl;
|
40121 | var $el = scrollbar.$el,
|
40122 | $dragEl = scrollbar.$dragEl;
|
40123 | swiper.scrollbar.isTouched = true;
|
40124 | swiper.scrollbar.dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;
|
40125 | e.preventDefault();
|
40126 | e.stopPropagation();
|
40127 | $wrapperEl.transition(100);
|
40128 | $dragEl.transition(100);
|
40129 | scrollbar.setDragPosition(e);
|
40130 | clearTimeout(swiper.scrollbar.dragTimeout);
|
40131 | $el.transition(0);
|
40132 |
|
40133 | if (params.hide) {
|
40134 | $el.css('opacity', 1);
|
40135 | }
|
40136 |
|
40137 | if (swiper.params.cssMode) {
|
40138 | swiper.$wrapperEl.css('scroll-snap-type', 'none');
|
40139 | }
|
40140 |
|
40141 | swiper.emit('scrollbarDragStart', e);
|
40142 | },
|
40143 | onDragMove: function onDragMove(e) {
|
40144 | var swiper = this;
|
40145 | var scrollbar = swiper.scrollbar,
|
40146 | $wrapperEl = swiper.$wrapperEl;
|
40147 | var $el = scrollbar.$el,
|
40148 | $dragEl = scrollbar.$dragEl;
|
40149 | if (!swiper.scrollbar.isTouched) return;
|
40150 | if (e.preventDefault) e.preventDefault();else e.returnValue = false;
|
40151 | scrollbar.setDragPosition(e);
|
40152 | $wrapperEl.transition(0);
|
40153 | $el.transition(0);
|
40154 | $dragEl.transition(0);
|
40155 | swiper.emit('scrollbarDragMove', e);
|
40156 | },
|
40157 | onDragEnd: function onDragEnd(e) {
|
40158 | var swiper = this;
|
40159 | var params = swiper.params.scrollbar;
|
40160 | var scrollbar = swiper.scrollbar,
|
40161 | $wrapperEl = swiper.$wrapperEl;
|
40162 | var $el = scrollbar.$el;
|
40163 | if (!swiper.scrollbar.isTouched) return;
|
40164 | swiper.scrollbar.isTouched = false;
|
40165 |
|
40166 | if (swiper.params.cssMode) {
|
40167 | swiper.$wrapperEl.css('scroll-snap-type', '');
|
40168 | $wrapperEl.transition('');
|
40169 | }
|
40170 |
|
40171 | if (params.hide) {
|
40172 | clearTimeout(swiper.scrollbar.dragTimeout);
|
40173 | swiper.scrollbar.dragTimeout = nextTick(function () {
|
40174 | $el.css('opacity', 0);
|
40175 | $el.transition(400);
|
40176 | }, 1000);
|
40177 | }
|
40178 |
|
40179 | swiper.emit('scrollbarDragEnd', e);
|
40180 |
|
40181 | if (params.snapOnRelease) {
|
40182 | swiper.slideToClosest();
|
40183 | }
|
40184 | },
|
40185 | enableDraggable: function enableDraggable() {
|
40186 | var swiper = this;
|
40187 | if (!swiper.params.scrollbar.el) return;
|
40188 | var document = getDocument();
|
40189 | var scrollbar = swiper.scrollbar,
|
40190 | touchEventsTouch = swiper.touchEventsTouch,
|
40191 | touchEventsDesktop = swiper.touchEventsDesktop,
|
40192 | params = swiper.params,
|
40193 | support = swiper.support;
|
40194 | var $el = scrollbar.$el;
|
40195 | var target = $el[0];
|
40196 | var activeListener = support.passiveListener && params.passiveListeners ? {
|
40197 | passive: false,
|
40198 | capture: false
|
40199 | } : false;
|
40200 | var passiveListener = support.passiveListener && params.passiveListeners ? {
|
40201 | passive: true,
|
40202 | capture: false
|
40203 | } : false;
|
40204 | if (!target) return;
|
40205 |
|
40206 | if (!support.touch) {
|
40207 | target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
|
40208 | document.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
|
40209 | document.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
|
40210 | } else {
|
40211 | target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
|
40212 | target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
|
40213 | target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
|
40214 | }
|
40215 | },
|
40216 | disableDraggable: function disableDraggable() {
|
40217 | var swiper = this;
|
40218 | if (!swiper.params.scrollbar.el) return;
|
40219 | var document = getDocument();
|
40220 | var scrollbar = swiper.scrollbar,
|
40221 | touchEventsTouch = swiper.touchEventsTouch,
|
40222 | touchEventsDesktop = swiper.touchEventsDesktop,
|
40223 | params = swiper.params,
|
40224 | support = swiper.support;
|
40225 | var $el = scrollbar.$el;
|
40226 | var target = $el[0];
|
40227 | var activeListener = support.passiveListener && params.passiveListeners ? {
|
40228 | passive: false,
|
40229 | capture: false
|
40230 | } : false;
|
40231 | var passiveListener = support.passiveListener && params.passiveListeners ? {
|
40232 | passive: true,
|
40233 | capture: false
|
40234 | } : false;
|
40235 | if (!target) return;
|
40236 |
|
40237 | if (!support.touch) {
|
40238 | target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);
|
40239 | document.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);
|
40240 | document.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);
|
40241 | } else {
|
40242 | target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);
|
40243 | target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);
|
40244 | target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);
|
40245 | }
|
40246 | },
|
40247 | init: function init() {
|
40248 | var swiper = this;
|
40249 | if (!swiper.params.scrollbar.el) return;
|
40250 | var scrollbar = swiper.scrollbar,
|
40251 | $swiperEl = swiper.$el;
|
40252 | var params = swiper.params.scrollbar;
|
40253 | var $el = $$1(params.el);
|
40254 |
|
40255 | if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {
|
40256 | $el = $swiperEl.find(params.el);
|
40257 | }
|
40258 |
|
40259 | var $dragEl = $el.find("." + swiper.params.scrollbar.dragClass);
|
40260 |
|
40261 | if ($dragEl.length === 0) {
|
40262 | $dragEl = $$1("<div class=\"" + swiper.params.scrollbar.dragClass + "\"></div>");
|
40263 | $el.append($dragEl);
|
40264 | }
|
40265 |
|
40266 | extend(scrollbar, {
|
40267 | $el: $el,
|
40268 | el: $el[0],
|
40269 | $dragEl: $dragEl,
|
40270 | dragEl: $dragEl[0]
|
40271 | });
|
40272 |
|
40273 | if (params.draggable) {
|
40274 | scrollbar.enableDraggable();
|
40275 | }
|
40276 |
|
40277 | if ($el) {
|
40278 | $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
|
40279 | }
|
40280 | },
|
40281 | destroy: function destroy() {
|
40282 | var swiper = this;
|
40283 | swiper.scrollbar.disableDraggable();
|
40284 | }
|
40285 | };
|
40286 | var Scrollbar$1 = {
|
40287 | name: 'scrollbar',
|
40288 | params: {
|
40289 | scrollbar: {
|
40290 | el: null,
|
40291 | dragSize: 'auto',
|
40292 | hide: false,
|
40293 | draggable: false,
|
40294 | snapOnRelease: true,
|
40295 | lockClass: 'swiper-scrollbar-lock',
|
40296 | dragClass: 'swiper-scrollbar-drag'
|
40297 | }
|
40298 | },
|
40299 | create: function create() {
|
40300 | var swiper = this;
|
40301 | bindModuleMethods(swiper, {
|
40302 | scrollbar: _extends$d({
|
40303 | isTouched: false,
|
40304 | timeout: null,
|
40305 | dragTimeout: null
|
40306 | }, Scrollbar)
|
40307 | });
|
40308 | },
|
40309 | on: {
|
40310 | init: function init(swiper) {
|
40311 | swiper.scrollbar.init();
|
40312 | swiper.scrollbar.updateSize();
|
40313 | swiper.scrollbar.setTranslate();
|
40314 | },
|
40315 | update: function update(swiper) {
|
40316 | swiper.scrollbar.updateSize();
|
40317 | },
|
40318 | resize: function resize(swiper) {
|
40319 | swiper.scrollbar.updateSize();
|
40320 | },
|
40321 | observerUpdate: function observerUpdate(swiper) {
|
40322 | swiper.scrollbar.updateSize();
|
40323 | },
|
40324 | setTranslate: function setTranslate(swiper) {
|
40325 | swiper.scrollbar.setTranslate();
|
40326 | },
|
40327 | setTransition: function setTransition(swiper, duration) {
|
40328 | swiper.scrollbar.setTransition(duration);
|
40329 | },
|
40330 | 'enable disable': function enableDisable(swiper) {
|
40331 | var $el = swiper.scrollbar.$el;
|
40332 |
|
40333 | if ($el) {
|
40334 | $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);
|
40335 | }
|
40336 | },
|
40337 | destroy: function destroy(swiper) {
|
40338 | swiper.scrollbar.destroy();
|
40339 | }
|
40340 | }
|
40341 | };
|
40342 |
|
40343 | function _extends$c() {
|
40344 | _extends$c = Object.assign || function (target) {
|
40345 | for (var i = 1; i < arguments.length; i++) {
|
40346 | var source = arguments[i];
|
40347 |
|
40348 | for (var key in source) {
|
40349 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
40350 | target[key] = source[key];
|
40351 | }
|
40352 | }
|
40353 | }
|
40354 |
|
40355 | return target;
|
40356 | };
|
40357 |
|
40358 | return _extends$c.apply(this, arguments);
|
40359 | }
|
40360 | var Parallax = {
|
40361 | setTransform: function setTransform(el, progress) {
|
40362 | var swiper = this;
|
40363 | var rtl = swiper.rtl;
|
40364 | var $el = $$1(el);
|
40365 | var rtlFactor = rtl ? -1 : 1;
|
40366 | var p = $el.attr('data-swiper-parallax') || '0';
|
40367 | var x = $el.attr('data-swiper-parallax-x');
|
40368 | var y = $el.attr('data-swiper-parallax-y');
|
40369 | var scale = $el.attr('data-swiper-parallax-scale');
|
40370 | var opacity = $el.attr('data-swiper-parallax-opacity');
|
40371 |
|
40372 | if (x || y) {
|
40373 | x = x || '0';
|
40374 | y = y || '0';
|
40375 | } else if (swiper.isHorizontal()) {
|
40376 | x = p;
|
40377 | y = '0';
|
40378 | } else {
|
40379 | y = p;
|
40380 | x = '0';
|
40381 | }
|
40382 |
|
40383 | if (x.indexOf('%') >= 0) {
|
40384 | x = parseInt(x, 10) * progress * rtlFactor + "%";
|
40385 | } else {
|
40386 | x = x * progress * rtlFactor + "px";
|
40387 | }
|
40388 |
|
40389 | if (y.indexOf('%') >= 0) {
|
40390 | y = parseInt(y, 10) * progress + "%";
|
40391 | } else {
|
40392 | y = y * progress + "px";
|
40393 | }
|
40394 |
|
40395 | if (typeof opacity !== 'undefined' && opacity !== null) {
|
40396 | var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
|
40397 | $el[0].style.opacity = currentOpacity;
|
40398 | }
|
40399 |
|
40400 | if (typeof scale === 'undefined' || scale === null) {
|
40401 | $el.transform("translate3d(" + x + ", " + y + ", 0px)");
|
40402 | } else {
|
40403 | var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
|
40404 | $el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
|
40405 | }
|
40406 | },
|
40407 | setTranslate: function setTranslate() {
|
40408 | var swiper = this;
|
40409 | var $el = swiper.$el,
|
40410 | slides = swiper.slides,
|
40411 | progress = swiper.progress,
|
40412 | snapGrid = swiper.snapGrid;
|
40413 | $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
|
40414 | swiper.parallax.setTransform(el, progress);
|
40415 | });
|
40416 | slides.each(function (slideEl, slideIndex) {
|
40417 | var slideProgress = slideEl.progress;
|
40418 |
|
40419 | if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
|
40420 | slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
|
40421 | }
|
40422 |
|
40423 | slideProgress = Math.min(Math.max(slideProgress, -1), 1);
|
40424 | $$1(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
|
40425 | swiper.parallax.setTransform(el, slideProgress);
|
40426 | });
|
40427 | });
|
40428 | },
|
40429 | setTransition: function setTransition(duration) {
|
40430 | if (duration === void 0) {
|
40431 | duration = this.params.speed;
|
40432 | }
|
40433 |
|
40434 | var swiper = this;
|
40435 | var $el = swiper.$el;
|
40436 | $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
|
40437 | var $parallaxEl = $$1(parallaxEl);
|
40438 | var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
|
40439 | if (duration === 0) parallaxDuration = 0;
|
40440 | $parallaxEl.transition(parallaxDuration);
|
40441 | });
|
40442 | }
|
40443 | };
|
40444 | var Parallax$1 = {
|
40445 | name: 'parallax',
|
40446 | params: {
|
40447 | parallax: {
|
40448 | enabled: false
|
40449 | }
|
40450 | },
|
40451 | create: function create() {
|
40452 | var swiper = this;
|
40453 | bindModuleMethods(swiper, {
|
40454 | parallax: _extends$c({}, Parallax)
|
40455 | });
|
40456 | },
|
40457 | on: {
|
40458 | beforeInit: function beforeInit(swiper) {
|
40459 | if (!swiper.params.parallax.enabled) return;
|
40460 | swiper.params.watchSlidesProgress = true;
|
40461 | swiper.originalParams.watchSlidesProgress = true;
|
40462 | },
|
40463 | init: function init(swiper) {
|
40464 | if (!swiper.params.parallax.enabled) return;
|
40465 | swiper.parallax.setTranslate();
|
40466 | },
|
40467 | setTranslate: function setTranslate(swiper) {
|
40468 | if (!swiper.params.parallax.enabled) return;
|
40469 | swiper.parallax.setTranslate();
|
40470 | },
|
40471 | setTransition: function setTransition(swiper, duration) {
|
40472 | if (!swiper.params.parallax.enabled) return;
|
40473 | swiper.parallax.setTransition(duration);
|
40474 | }
|
40475 | }
|
40476 | };
|
40477 |
|
40478 | function _extends$b() {
|
40479 | _extends$b = Object.assign || function (target) {
|
40480 | for (var i = 1; i < arguments.length; i++) {
|
40481 | var source = arguments[i];
|
40482 |
|
40483 | for (var key in source) {
|
40484 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
40485 | target[key] = source[key];
|
40486 | }
|
40487 | }
|
40488 | }
|
40489 |
|
40490 | return target;
|
40491 | };
|
40492 |
|
40493 | return _extends$b.apply(this, arguments);
|
40494 | }
|
40495 | var Zoom = {
|
40496 |
|
40497 | getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {
|
40498 | if (e.targetTouches.length < 2) return 1;
|
40499 | var x1 = e.targetTouches[0].pageX;
|
40500 | var y1 = e.targetTouches[0].pageY;
|
40501 | var x2 = e.targetTouches[1].pageX;
|
40502 | var y2 = e.targetTouches[1].pageY;
|
40503 | var distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
|
40504 | return distance;
|
40505 | },
|
40506 |
|
40507 | onGestureStart: function onGestureStart(e) {
|
40508 | var swiper = this;
|
40509 | var support = swiper.support;
|
40510 | var params = swiper.params.zoom;
|
40511 | var zoom = swiper.zoom;
|
40512 | var gesture = zoom.gesture;
|
40513 | zoom.fakeGestureTouched = false;
|
40514 | zoom.fakeGestureMoved = false;
|
40515 |
|
40516 | if (!support.gestures) {
|
40517 | if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {
|
40518 | return;
|
40519 | }
|
40520 |
|
40521 | zoom.fakeGestureTouched = true;
|
40522 | gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);
|
40523 | }
|
40524 |
|
40525 | if (!gesture.$slideEl || !gesture.$slideEl.length) {
|
40526 | gesture.$slideEl = $$1(e.target).closest("." + swiper.params.slideClass);
|
40527 | if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
|
40528 | gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
|
40529 | gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
|
40530 | gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
|
40531 |
|
40532 | if (gesture.$imageWrapEl.length === 0) {
|
40533 | gesture.$imageEl = undefined;
|
40534 | return;
|
40535 | }
|
40536 | }
|
40537 |
|
40538 | if (gesture.$imageEl) {
|
40539 | gesture.$imageEl.transition(0);
|
40540 | }
|
40541 |
|
40542 | swiper.zoom.isScaling = true;
|
40543 | },
|
40544 | onGestureChange: function onGestureChange(e) {
|
40545 | var swiper = this;
|
40546 | var support = swiper.support;
|
40547 | var params = swiper.params.zoom;
|
40548 | var zoom = swiper.zoom;
|
40549 | var gesture = zoom.gesture;
|
40550 |
|
40551 | if (!support.gestures) {
|
40552 | if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {
|
40553 | return;
|
40554 | }
|
40555 |
|
40556 | zoom.fakeGestureMoved = true;
|
40557 | gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);
|
40558 | }
|
40559 |
|
40560 | if (!gesture.$imageEl || gesture.$imageEl.length === 0) {
|
40561 | if (e.type === 'gesturechange') zoom.onGestureStart(e);
|
40562 | return;
|
40563 | }
|
40564 |
|
40565 | if (support.gestures) {
|
40566 | zoom.scale = e.scale * zoom.currentScale;
|
40567 | } else {
|
40568 | zoom.scale = gesture.scaleMove / gesture.scaleStart * zoom.currentScale;
|
40569 | }
|
40570 |
|
40571 | if (zoom.scale > gesture.maxRatio) {
|
40572 | zoom.scale = gesture.maxRatio - 1 + Math.pow(zoom.scale - gesture.maxRatio + 1, 0.5);
|
40573 | }
|
40574 |
|
40575 | if (zoom.scale < params.minRatio) {
|
40576 | zoom.scale = params.minRatio + 1 - Math.pow(params.minRatio - zoom.scale + 1, 0.5);
|
40577 | }
|
40578 |
|
40579 | gesture.$imageEl.transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
|
40580 | },
|
40581 | onGestureEnd: function onGestureEnd(e) {
|
40582 | var swiper = this;
|
40583 | var device = swiper.device;
|
40584 | var support = swiper.support;
|
40585 | var params = swiper.params.zoom;
|
40586 | var zoom = swiper.zoom;
|
40587 | var gesture = zoom.gesture;
|
40588 |
|
40589 | if (!support.gestures) {
|
40590 | if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {
|
40591 | return;
|
40592 | }
|
40593 |
|
40594 | if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {
|
40595 | return;
|
40596 | }
|
40597 |
|
40598 | zoom.fakeGestureTouched = false;
|
40599 | zoom.fakeGestureMoved = false;
|
40600 | }
|
40601 |
|
40602 | if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
|
40603 | zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
|
40604 | gesture.$imageEl.transition(swiper.params.speed).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
|
40605 | zoom.currentScale = zoom.scale;
|
40606 | zoom.isScaling = false;
|
40607 | if (zoom.scale === 1) gesture.$slideEl = undefined;
|
40608 | },
|
40609 | onTouchStart: function onTouchStart(e) {
|
40610 | var swiper = this;
|
40611 | var device = swiper.device;
|
40612 | var zoom = swiper.zoom;
|
40613 | var gesture = zoom.gesture,
|
40614 | image = zoom.image;
|
40615 | if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
|
40616 | if (image.isTouched) return;
|
40617 | if (device.android && e.cancelable) e.preventDefault();
|
40618 | image.isTouched = true;
|
40619 | image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
40620 | image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
40621 | },
|
40622 | onTouchMove: function onTouchMove(e) {
|
40623 | var swiper = this;
|
40624 | var zoom = swiper.zoom;
|
40625 | var gesture = zoom.gesture,
|
40626 | image = zoom.image,
|
40627 | velocity = zoom.velocity;
|
40628 | if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
|
40629 | swiper.allowClick = false;
|
40630 | if (!image.isTouched || !gesture.$slideEl) return;
|
40631 |
|
40632 | if (!image.isMoved) {
|
40633 | image.width = gesture.$imageEl[0].offsetWidth;
|
40634 | image.height = gesture.$imageEl[0].offsetHeight;
|
40635 | image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;
|
40636 | image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;
|
40637 | gesture.slideWidth = gesture.$slideEl[0].offsetWidth;
|
40638 | gesture.slideHeight = gesture.$slideEl[0].offsetHeight;
|
40639 | gesture.$imageWrapEl.transition(0);
|
40640 |
|
40641 | if (swiper.rtl) {
|
40642 | image.startX = -image.startX;
|
40643 | image.startY = -image.startY;
|
40644 | }
|
40645 | }
|
40646 |
|
40647 |
|
40648 | var scaledWidth = image.width * zoom.scale;
|
40649 | var scaledHeight = image.height * zoom.scale;
|
40650 | if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;
|
40651 | image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
|
40652 | image.maxX = -image.minX;
|
40653 | image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
|
40654 | image.maxY = -image.minY;
|
40655 | image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
40656 | image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
40657 |
|
40658 | if (!image.isMoved && !zoom.isScaling) {
|
40659 | if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
|
40660 | image.isTouched = false;
|
40661 | return;
|
40662 | }
|
40663 |
|
40664 | if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
|
40665 | image.isTouched = false;
|
40666 | return;
|
40667 | }
|
40668 | }
|
40669 |
|
40670 | if (e.cancelable) {
|
40671 | e.preventDefault();
|
40672 | }
|
40673 |
|
40674 | e.stopPropagation();
|
40675 | image.isMoved = true;
|
40676 | image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;
|
40677 | image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;
|
40678 |
|
40679 | if (image.currentX < image.minX) {
|
40680 | image.currentX = image.minX + 1 - Math.pow(image.minX - image.currentX + 1, 0.8);
|
40681 | }
|
40682 |
|
40683 | if (image.currentX > image.maxX) {
|
40684 | image.currentX = image.maxX - 1 + Math.pow(image.currentX - image.maxX + 1, 0.8);
|
40685 | }
|
40686 |
|
40687 | if (image.currentY < image.minY) {
|
40688 | image.currentY = image.minY + 1 - Math.pow(image.minY - image.currentY + 1, 0.8);
|
40689 | }
|
40690 |
|
40691 | if (image.currentY > image.maxY) {
|
40692 | image.currentY = image.maxY - 1 + Math.pow(image.currentY - image.maxY + 1, 0.8);
|
40693 | }
|
40694 |
|
40695 |
|
40696 | if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
|
40697 | if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
|
40698 | if (!velocity.prevTime) velocity.prevTime = Date.now();
|
40699 | velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
|
40700 | velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
|
40701 | if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
|
40702 | if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
|
40703 | velocity.prevPositionX = image.touchesCurrent.x;
|
40704 | velocity.prevPositionY = image.touchesCurrent.y;
|
40705 | velocity.prevTime = Date.now();
|
40706 | gesture.$imageWrapEl.transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
|
40707 | },
|
40708 | onTouchEnd: function onTouchEnd() {
|
40709 | var swiper = this;
|
40710 | var zoom = swiper.zoom;
|
40711 | var gesture = zoom.gesture,
|
40712 | image = zoom.image,
|
40713 | velocity = zoom.velocity;
|
40714 | if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;
|
40715 |
|
40716 | if (!image.isTouched || !image.isMoved) {
|
40717 | image.isTouched = false;
|
40718 | image.isMoved = false;
|
40719 | return;
|
40720 | }
|
40721 |
|
40722 | image.isTouched = false;
|
40723 | image.isMoved = false;
|
40724 | var momentumDurationX = 300;
|
40725 | var momentumDurationY = 300;
|
40726 | var momentumDistanceX = velocity.x * momentumDurationX;
|
40727 | var newPositionX = image.currentX + momentumDistanceX;
|
40728 | var momentumDistanceY = velocity.y * momentumDurationY;
|
40729 | var newPositionY = image.currentY + momentumDistanceY;
|
40730 |
|
40731 | if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
|
40732 | if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
|
40733 | var momentumDuration = Math.max(momentumDurationX, momentumDurationY);
|
40734 | image.currentX = newPositionX;
|
40735 | image.currentY = newPositionY;
|
40736 |
|
40737 | var scaledWidth = image.width * zoom.scale;
|
40738 | var scaledHeight = image.height * zoom.scale;
|
40739 | image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
|
40740 | image.maxX = -image.minX;
|
40741 | image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
|
40742 | image.maxY = -image.minY;
|
40743 | image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
|
40744 | image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
|
40745 | gesture.$imageWrapEl.transition(momentumDuration).transform("translate3d(" + image.currentX + "px, " + image.currentY + "px,0)");
|
40746 | },
|
40747 | onTransitionEnd: function onTransitionEnd() {
|
40748 | var swiper = this;
|
40749 | var zoom = swiper.zoom;
|
40750 | var gesture = zoom.gesture;
|
40751 |
|
40752 | if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {
|
40753 | if (gesture.$imageEl) {
|
40754 | gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');
|
40755 | }
|
40756 |
|
40757 | if (gesture.$imageWrapEl) {
|
40758 | gesture.$imageWrapEl.transform('translate3d(0,0,0)');
|
40759 | }
|
40760 |
|
40761 | zoom.scale = 1;
|
40762 | zoom.currentScale = 1;
|
40763 | gesture.$slideEl = undefined;
|
40764 | gesture.$imageEl = undefined;
|
40765 | gesture.$imageWrapEl = undefined;
|
40766 | }
|
40767 | },
|
40768 |
|
40769 | toggle: function toggle(e) {
|
40770 | var swiper = this;
|
40771 | var zoom = swiper.zoom;
|
40772 |
|
40773 | if (zoom.scale && zoom.scale !== 1) {
|
40774 |
|
40775 | zoom.out();
|
40776 | } else {
|
40777 |
|
40778 | zoom.in(e);
|
40779 | }
|
40780 | },
|
40781 | in: function _in(e) {
|
40782 | var swiper = this;
|
40783 | var window = getWindow();
|
40784 | var zoom = swiper.zoom;
|
40785 | var params = swiper.params.zoom;
|
40786 | var gesture = zoom.gesture,
|
40787 | image = zoom.image;
|
40788 |
|
40789 | if (!gesture.$slideEl) {
|
40790 | if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
|
40791 | gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
|
40792 | } else {
|
40793 | gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
|
40794 | }
|
40795 |
|
40796 | gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
|
40797 | gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
|
40798 | }
|
40799 |
|
40800 | if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
|
40801 | gesture.$slideEl.addClass("" + params.zoomedSlideClass);
|
40802 | var touchX;
|
40803 | var touchY;
|
40804 | var offsetX;
|
40805 | var offsetY;
|
40806 | var diffX;
|
40807 | var diffY;
|
40808 | var translateX;
|
40809 | var translateY;
|
40810 | var imageWidth;
|
40811 | var imageHeight;
|
40812 | var scaledWidth;
|
40813 | var scaledHeight;
|
40814 | var translateMinX;
|
40815 | var translateMinY;
|
40816 | var translateMaxX;
|
40817 | var translateMaxY;
|
40818 | var slideWidth;
|
40819 | var slideHeight;
|
40820 |
|
40821 | if (typeof image.touchesStart.x === 'undefined' && e) {
|
40822 | touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;
|
40823 | touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;
|
40824 | } else {
|
40825 | touchX = image.touchesStart.x;
|
40826 | touchY = image.touchesStart.y;
|
40827 | }
|
40828 |
|
40829 | zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
|
40830 | zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;
|
40831 |
|
40832 | if (e) {
|
40833 | slideWidth = gesture.$slideEl[0].offsetWidth;
|
40834 | slideHeight = gesture.$slideEl[0].offsetHeight;
|
40835 | offsetX = gesture.$slideEl.offset().left + window.scrollX;
|
40836 | offsetY = gesture.$slideEl.offset().top + window.scrollY;
|
40837 | diffX = offsetX + slideWidth / 2 - touchX;
|
40838 | diffY = offsetY + slideHeight / 2 - touchY;
|
40839 | imageWidth = gesture.$imageEl[0].offsetWidth;
|
40840 | imageHeight = gesture.$imageEl[0].offsetHeight;
|
40841 | scaledWidth = imageWidth * zoom.scale;
|
40842 | scaledHeight = imageHeight * zoom.scale;
|
40843 | translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
|
40844 | translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
|
40845 | translateMaxX = -translateMinX;
|
40846 | translateMaxY = -translateMinY;
|
40847 | translateX = diffX * zoom.scale;
|
40848 | translateY = diffY * zoom.scale;
|
40849 |
|
40850 | if (translateX < translateMinX) {
|
40851 | translateX = translateMinX;
|
40852 | }
|
40853 |
|
40854 | if (translateX > translateMaxX) {
|
40855 | translateX = translateMaxX;
|
40856 | }
|
40857 |
|
40858 | if (translateY < translateMinY) {
|
40859 | translateY = translateMinY;
|
40860 | }
|
40861 |
|
40862 | if (translateY > translateMaxY) {
|
40863 | translateY = translateMaxY;
|
40864 | }
|
40865 | } else {
|
40866 | translateX = 0;
|
40867 | translateY = 0;
|
40868 | }
|
40869 |
|
40870 | gesture.$imageWrapEl.transition(300).transform("translate3d(" + translateX + "px, " + translateY + "px,0)");
|
40871 | gesture.$imageEl.transition(300).transform("translate3d(0,0,0) scale(" + zoom.scale + ")");
|
40872 | },
|
40873 | out: function out() {
|
40874 | var swiper = this;
|
40875 | var zoom = swiper.zoom;
|
40876 | var params = swiper.params.zoom;
|
40877 | var gesture = zoom.gesture;
|
40878 |
|
40879 | if (!gesture.$slideEl) {
|
40880 | if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
|
40881 | gesture.$slideEl = swiper.$wrapperEl.children("." + swiper.params.slideActiveClass);
|
40882 | } else {
|
40883 | gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);
|
40884 | }
|
40885 |
|
40886 | gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');
|
40887 | gesture.$imageWrapEl = gesture.$imageEl.parent("." + params.containerClass);
|
40888 | }
|
40889 |
|
40890 | if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;
|
40891 | zoom.scale = 1;
|
40892 | zoom.currentScale = 1;
|
40893 | gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');
|
40894 | gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');
|
40895 | gesture.$slideEl.removeClass("" + params.zoomedSlideClass);
|
40896 | gesture.$slideEl = undefined;
|
40897 | },
|
40898 | toggleGestures: function toggleGestures(method) {
|
40899 | var swiper = this;
|
40900 | var zoom = swiper.zoom;
|
40901 | var selector = zoom.slideSelector,
|
40902 | passive = zoom.passiveListener;
|
40903 | swiper.$wrapperEl[method]('gesturestart', selector, zoom.onGestureStart, passive);
|
40904 | swiper.$wrapperEl[method]('gesturechange', selector, zoom.onGestureChange, passive);
|
40905 | swiper.$wrapperEl[method]('gestureend', selector, zoom.onGestureEnd, passive);
|
40906 | },
|
40907 | enableGestures: function enableGestures() {
|
40908 | if (this.zoom.gesturesEnabled) return;
|
40909 | this.zoom.gesturesEnabled = true;
|
40910 | this.zoom.toggleGestures('on');
|
40911 | },
|
40912 | disableGestures: function disableGestures() {
|
40913 | if (!this.zoom.gesturesEnabled) return;
|
40914 | this.zoom.gesturesEnabled = false;
|
40915 | this.zoom.toggleGestures('off');
|
40916 | },
|
40917 |
|
40918 | enable: function enable() {
|
40919 | var swiper = this;
|
40920 | var support = swiper.support;
|
40921 | var zoom = swiper.zoom;
|
40922 | if (zoom.enabled) return;
|
40923 | zoom.enabled = true;
|
40924 | var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
|
40925 | passive: true,
|
40926 | capture: false
|
40927 | } : false;
|
40928 | var activeListenerWithCapture = support.passiveListener ? {
|
40929 | passive: false,
|
40930 | capture: true
|
40931 | } : true;
|
40932 | var slideSelector = "." + swiper.params.slideClass;
|
40933 | swiper.zoom.passiveListener = passiveListener;
|
40934 | swiper.zoom.slideSelector = slideSelector;
|
40935 |
|
40936 | if (support.gestures) {
|
40937 | swiper.$wrapperEl.on(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
|
40938 | swiper.$wrapperEl.on(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
|
40939 | } else if (swiper.touchEvents.start === 'touchstart') {
|
40940 | swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
|
40941 | swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
|
40942 | swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
|
40943 |
|
40944 | if (swiper.touchEvents.cancel) {
|
40945 | swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
|
40946 | }
|
40947 | }
|
40948 |
|
40949 |
|
40950 | swiper.$wrapperEl.on(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
|
40951 | },
|
40952 | disable: function disable() {
|
40953 | var swiper = this;
|
40954 | var zoom = swiper.zoom;
|
40955 | if (!zoom.enabled) return;
|
40956 | var support = swiper.support;
|
40957 | swiper.zoom.enabled = false;
|
40958 | var passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {
|
40959 | passive: true,
|
40960 | capture: false
|
40961 | } : false;
|
40962 | var activeListenerWithCapture = support.passiveListener ? {
|
40963 | passive: false,
|
40964 | capture: true
|
40965 | } : true;
|
40966 | var slideSelector = "." + swiper.params.slideClass;
|
40967 |
|
40968 | if (support.gestures) {
|
40969 | swiper.$wrapperEl.off(swiper.touchEvents.start, swiper.zoom.enableGestures, passiveListener);
|
40970 | swiper.$wrapperEl.off(swiper.touchEvents.end, swiper.zoom.disableGestures, passiveListener);
|
40971 | } else if (swiper.touchEvents.start === 'touchstart') {
|
40972 | swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);
|
40973 | swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);
|
40974 | swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);
|
40975 |
|
40976 | if (swiper.touchEvents.cancel) {
|
40977 | swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);
|
40978 | }
|
40979 | }
|
40980 |
|
40981 |
|
40982 | swiper.$wrapperEl.off(swiper.touchEvents.move, "." + swiper.params.zoom.containerClass, zoom.onTouchMove, activeListenerWithCapture);
|
40983 | }
|
40984 | };
|
40985 | var Zoom$1 = {
|
40986 | name: 'zoom',
|
40987 | params: {
|
40988 | zoom: {
|
40989 | enabled: false,
|
40990 | maxRatio: 3,
|
40991 | minRatio: 1,
|
40992 | toggle: true,
|
40993 | containerClass: 'swiper-zoom-container',
|
40994 | zoomedSlideClass: 'swiper-slide-zoomed'
|
40995 | }
|
40996 | },
|
40997 | create: function create() {
|
40998 | var swiper = this;
|
40999 | bindModuleMethods(swiper, {
|
41000 | zoom: _extends$b({
|
41001 | enabled: false,
|
41002 | scale: 1,
|
41003 | currentScale: 1,
|
41004 | isScaling: false,
|
41005 | gesture: {
|
41006 | $slideEl: undefined,
|
41007 | slideWidth: undefined,
|
41008 | slideHeight: undefined,
|
41009 | $imageEl: undefined,
|
41010 | $imageWrapEl: undefined,
|
41011 | maxRatio: 3
|
41012 | },
|
41013 | image: {
|
41014 | isTouched: undefined,
|
41015 | isMoved: undefined,
|
41016 | currentX: undefined,
|
41017 | currentY: undefined,
|
41018 | minX: undefined,
|
41019 | minY: undefined,
|
41020 | maxX: undefined,
|
41021 | maxY: undefined,
|
41022 | width: undefined,
|
41023 | height: undefined,
|
41024 | startX: undefined,
|
41025 | startY: undefined,
|
41026 | touchesStart: {},
|
41027 | touchesCurrent: {}
|
41028 | },
|
41029 | velocity: {
|
41030 | x: undefined,
|
41031 | y: undefined,
|
41032 | prevPositionX: undefined,
|
41033 | prevPositionY: undefined,
|
41034 | prevTime: undefined
|
41035 | }
|
41036 | }, Zoom)
|
41037 | });
|
41038 | var scale = 1;
|
41039 | Object.defineProperty(swiper.zoom, 'scale', {
|
41040 | get: function get() {
|
41041 | return scale;
|
41042 | },
|
41043 | set: function set(value) {
|
41044 | if (scale !== value) {
|
41045 | var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;
|
41046 | var slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;
|
41047 | swiper.emit('zoomChange', value, imageEl, slideEl);
|
41048 | }
|
41049 |
|
41050 | scale = value;
|
41051 | }
|
41052 | });
|
41053 | },
|
41054 | on: {
|
41055 | init: function init(swiper) {
|
41056 | if (swiper.params.zoom.enabled) {
|
41057 | swiper.zoom.enable();
|
41058 | }
|
41059 | },
|
41060 | destroy: function destroy(swiper) {
|
41061 | swiper.zoom.disable();
|
41062 | },
|
41063 | touchStart: function touchStart(swiper, e) {
|
41064 | if (!swiper.zoom.enabled) return;
|
41065 | swiper.zoom.onTouchStart(e);
|
41066 | },
|
41067 | touchEnd: function touchEnd(swiper, e) {
|
41068 | if (!swiper.zoom.enabled) return;
|
41069 | swiper.zoom.onTouchEnd(e);
|
41070 | },
|
41071 | doubleTap: function doubleTap(swiper, e) {
|
41072 | if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
|
41073 | swiper.zoom.toggle(e);
|
41074 | }
|
41075 | },
|
41076 | transitionEnd: function transitionEnd(swiper) {
|
41077 | if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
|
41078 | swiper.zoom.onTransitionEnd();
|
41079 | }
|
41080 | },
|
41081 | slideChange: function slideChange(swiper) {
|
41082 | if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
|
41083 | swiper.zoom.onTransitionEnd();
|
41084 | }
|
41085 | }
|
41086 | }
|
41087 | };
|
41088 |
|
41089 | function _extends$a() {
|
41090 | _extends$a = Object.assign || function (target) {
|
41091 | for (var i = 1; i < arguments.length; i++) {
|
41092 | var source = arguments[i];
|
41093 |
|
41094 | for (var key in source) {
|
41095 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
41096 | target[key] = source[key];
|
41097 | }
|
41098 | }
|
41099 | }
|
41100 |
|
41101 | return target;
|
41102 | };
|
41103 |
|
41104 | return _extends$a.apply(this, arguments);
|
41105 | }
|
41106 | var Lazy = {
|
41107 | loadInSlide: function loadInSlide(index, loadInDuplicate) {
|
41108 | if (loadInDuplicate === void 0) {
|
41109 | loadInDuplicate = true;
|
41110 | }
|
41111 |
|
41112 | var swiper = this;
|
41113 | var params = swiper.params.lazy;
|
41114 | if (typeof index === 'undefined') return;
|
41115 | if (swiper.slides.length === 0) return;
|
41116 | var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
|
41117 | var $slideEl = isVirtual ? swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-swiper-slide-index=\"" + index + "\"]") : swiper.slides.eq(index);
|
41118 | var $images = $slideEl.find("." + params.elementClass + ":not(." + params.loadedClass + "):not(." + params.loadingClass + ")");
|
41119 |
|
41120 | if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {
|
41121 | $images.push($slideEl[0]);
|
41122 | }
|
41123 |
|
41124 | if ($images.length === 0) return;
|
41125 | $images.each(function (imageEl) {
|
41126 | var $imageEl = $$1(imageEl);
|
41127 | $imageEl.addClass(params.loadingClass);
|
41128 | var background = $imageEl.attr('data-background');
|
41129 | var src = $imageEl.attr('data-src');
|
41130 | var srcset = $imageEl.attr('data-srcset');
|
41131 | var sizes = $imageEl.attr('data-sizes');
|
41132 | var $pictureEl = $imageEl.parent('picture');
|
41133 | swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, function () {
|
41134 | if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;
|
41135 |
|
41136 | if (background) {
|
41137 | $imageEl.css('background-image', "url(\"" + background + "\")");
|
41138 | $imageEl.removeAttr('data-background');
|
41139 | } else {
|
41140 | if (srcset) {
|
41141 | $imageEl.attr('srcset', srcset);
|
41142 | $imageEl.removeAttr('data-srcset');
|
41143 | }
|
41144 |
|
41145 | if (sizes) {
|
41146 | $imageEl.attr('sizes', sizes);
|
41147 | $imageEl.removeAttr('data-sizes');
|
41148 | }
|
41149 |
|
41150 | if ($pictureEl.length) {
|
41151 | $pictureEl.children('source').each(function (sourceEl) {
|
41152 | var $source = $$1(sourceEl);
|
41153 |
|
41154 | if ($source.attr('data-srcset')) {
|
41155 | $source.attr('srcset', $source.attr('data-srcset'));
|
41156 | $source.removeAttr('data-srcset');
|
41157 | }
|
41158 | });
|
41159 | }
|
41160 |
|
41161 | if (src) {
|
41162 | $imageEl.attr('src', src);
|
41163 | $imageEl.removeAttr('data-src');
|
41164 | }
|
41165 | }
|
41166 |
|
41167 | $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);
|
41168 | $slideEl.find("." + params.preloaderClass).remove();
|
41169 |
|
41170 | if (swiper.params.loop && loadInDuplicate) {
|
41171 | var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');
|
41172 |
|
41173 | if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {
|
41174 | var originalSlide = swiper.$wrapperEl.children("[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]:not(." + swiper.params.slideDuplicateClass + ")");
|
41175 | swiper.lazy.loadInSlide(originalSlide.index(), false);
|
41176 | } else {
|
41177 | var duplicatedSlide = swiper.$wrapperEl.children("." + swiper.params.slideDuplicateClass + "[data-swiper-slide-index=\"" + slideOriginalIndex + "\"]");
|
41178 | swiper.lazy.loadInSlide(duplicatedSlide.index(), false);
|
41179 | }
|
41180 | }
|
41181 |
|
41182 | swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);
|
41183 |
|
41184 | if (swiper.params.autoHeight) {
|
41185 | swiper.updateAutoHeight();
|
41186 | }
|
41187 | });
|
41188 | swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);
|
41189 | });
|
41190 | },
|
41191 | load: function load() {
|
41192 | var swiper = this;
|
41193 | var $wrapperEl = swiper.$wrapperEl,
|
41194 | swiperParams = swiper.params,
|
41195 | slides = swiper.slides,
|
41196 | activeIndex = swiper.activeIndex;
|
41197 | var isVirtual = swiper.virtual && swiperParams.virtual.enabled;
|
41198 | var params = swiperParams.lazy;
|
41199 | var slidesPerView = swiperParams.slidesPerView;
|
41200 |
|
41201 | if (slidesPerView === 'auto') {
|
41202 | slidesPerView = 0;
|
41203 | }
|
41204 |
|
41205 | function slideExist(index) {
|
41206 | if (isVirtual) {
|
41207 | if ($wrapperEl.children("." + swiperParams.slideClass + "[data-swiper-slide-index=\"" + index + "\"]").length) {
|
41208 | return true;
|
41209 | }
|
41210 | } else if (slides[index]) return true;
|
41211 |
|
41212 | return false;
|
41213 | }
|
41214 |
|
41215 | function slideIndex(slideEl) {
|
41216 | if (isVirtual) {
|
41217 | return $$1(slideEl).attr('data-swiper-slide-index');
|
41218 | }
|
41219 |
|
41220 | return $$1(slideEl).index();
|
41221 | }
|
41222 |
|
41223 | if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;
|
41224 |
|
41225 | if (swiper.params.watchSlidesVisibility) {
|
41226 | $wrapperEl.children("." + swiperParams.slideVisibleClass).each(function (slideEl) {
|
41227 | var index = isVirtual ? $$1(slideEl).attr('data-swiper-slide-index') : $$1(slideEl).index();
|
41228 | swiper.lazy.loadInSlide(index);
|
41229 | });
|
41230 | } else if (slidesPerView > 1) {
|
41231 | for (var i = activeIndex; i < activeIndex + slidesPerView; i += 1) {
|
41232 | if (slideExist(i)) swiper.lazy.loadInSlide(i);
|
41233 | }
|
41234 | } else {
|
41235 | swiper.lazy.loadInSlide(activeIndex);
|
41236 | }
|
41237 |
|
41238 | if (params.loadPrevNext) {
|
41239 | if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
|
41240 | var amount = params.loadPrevNextAmount;
|
41241 | var spv = slidesPerView;
|
41242 | var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
|
41243 | var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);
|
41244 |
|
41245 | for (var _i = activeIndex + slidesPerView; _i < maxIndex; _i += 1) {
|
41246 | if (slideExist(_i)) swiper.lazy.loadInSlide(_i);
|
41247 | }
|
41248 |
|
41249 |
|
41250 | for (var _i2 = minIndex; _i2 < activeIndex; _i2 += 1) {
|
41251 | if (slideExist(_i2)) swiper.lazy.loadInSlide(_i2);
|
41252 | }
|
41253 | } else {
|
41254 | var nextSlide = $wrapperEl.children("." + swiperParams.slideNextClass);
|
41255 | if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));
|
41256 | var prevSlide = $wrapperEl.children("." + swiperParams.slidePrevClass);
|
41257 | if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));
|
41258 | }
|
41259 | }
|
41260 | },
|
41261 | checkInViewOnLoad: function checkInViewOnLoad() {
|
41262 | var window = getWindow();
|
41263 | var swiper = this;
|
41264 | if (!swiper || swiper.destroyed) return;
|
41265 | var $scrollElement = swiper.params.lazy.scrollingElement ? $$1(swiper.params.lazy.scrollingElement) : $$1(window);
|
41266 | var isWindow = $scrollElement[0] === window;
|
41267 | var scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;
|
41268 | var scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;
|
41269 | var swiperOffset = swiper.$el.offset();
|
41270 | var rtl = swiper.rtlTranslate;
|
41271 | var inView = false;
|
41272 | if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;
|
41273 | var swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];
|
41274 |
|
41275 | for (var i = 0; i < swiperCoord.length; i += 1) {
|
41276 | var point = swiperCoord[i];
|
41277 |
|
41278 | if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {
|
41279 | if (point[0] === 0 && point[1] === 0) continue;
|
41280 |
|
41281 | inView = true;
|
41282 | }
|
41283 | }
|
41284 |
|
41285 | if (inView) {
|
41286 | swiper.lazy.load();
|
41287 | $scrollElement.off('scroll', swiper.lazy.checkInViewOnLoad);
|
41288 | } else if (!swiper.lazy.scrollHandlerAttached) {
|
41289 | swiper.lazy.scrollHandlerAttached = true;
|
41290 | $scrollElement.on('scroll', swiper.lazy.checkInViewOnLoad);
|
41291 | }
|
41292 | }
|
41293 | };
|
41294 | var Lazy$1 = {
|
41295 | name: 'lazy',
|
41296 | params: {
|
41297 | lazy: {
|
41298 | checkInView: false,
|
41299 | enabled: false,
|
41300 | loadPrevNext: false,
|
41301 | loadPrevNextAmount: 1,
|
41302 | loadOnTransitionStart: false,
|
41303 | scrollingElement: '',
|
41304 | elementClass: 'swiper-lazy',
|
41305 | loadingClass: 'swiper-lazy-loading',
|
41306 | loadedClass: 'swiper-lazy-loaded',
|
41307 | preloaderClass: 'swiper-lazy-preloader'
|
41308 | }
|
41309 | },
|
41310 | create: function create() {
|
41311 | var swiper = this;
|
41312 | bindModuleMethods(swiper, {
|
41313 | lazy: _extends$a({
|
41314 | initialImageLoaded: false
|
41315 | }, Lazy)
|
41316 | });
|
41317 | },
|
41318 | on: {
|
41319 | beforeInit: function beforeInit(swiper) {
|
41320 | if (swiper.params.lazy.enabled && swiper.params.preloadImages) {
|
41321 | swiper.params.preloadImages = false;
|
41322 | }
|
41323 | },
|
41324 | init: function init(swiper) {
|
41325 | if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {
|
41326 | if (swiper.params.lazy.checkInView) {
|
41327 | swiper.lazy.checkInViewOnLoad();
|
41328 | } else {
|
41329 | swiper.lazy.load();
|
41330 | }
|
41331 | }
|
41332 | },
|
41333 | scroll: function scroll(swiper) {
|
41334 | if (swiper.params.freeMode && !swiper.params.freeModeSticky) {
|
41335 | swiper.lazy.load();
|
41336 | }
|
41337 | },
|
41338 | 'scrollbarDragMove resize _freeModeNoMomentumRelease': function lazyLoad(swiper) {
|
41339 | if (swiper.params.lazy.enabled) {
|
41340 | swiper.lazy.load();
|
41341 | }
|
41342 | },
|
41343 | transitionStart: function transitionStart(swiper) {
|
41344 | if (swiper.params.lazy.enabled) {
|
41345 | if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded) {
|
41346 | swiper.lazy.load();
|
41347 | }
|
41348 | }
|
41349 | },
|
41350 | transitionEnd: function transitionEnd(swiper) {
|
41351 | if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {
|
41352 | swiper.lazy.load();
|
41353 | }
|
41354 | },
|
41355 | slideChange: function slideChange(swiper) {
|
41356 | if (swiper.params.lazy.enabled && swiper.params.cssMode) {
|
41357 | swiper.lazy.load();
|
41358 | }
|
41359 | }
|
41360 | }
|
41361 | };
|
41362 |
|
41363 | function _extends$9() {
|
41364 | _extends$9 = Object.assign || function (target) {
|
41365 | for (var i = 1; i < arguments.length; i++) {
|
41366 | var source = arguments[i];
|
41367 |
|
41368 | for (var key in source) {
|
41369 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
41370 | target[key] = source[key];
|
41371 | }
|
41372 | }
|
41373 | }
|
41374 |
|
41375 | return target;
|
41376 | };
|
41377 |
|
41378 | return _extends$9.apply(this, arguments);
|
41379 | }
|
41380 | var Controller = {
|
41381 | LinearSpline: function LinearSpline(x, y) {
|
41382 | var binarySearch = function search() {
|
41383 | var maxIndex;
|
41384 | var minIndex;
|
41385 | var guess;
|
41386 | return function (array, val) {
|
41387 | minIndex = -1;
|
41388 | maxIndex = array.length;
|
41389 |
|
41390 | while (maxIndex - minIndex > 1) {
|
41391 | guess = maxIndex + minIndex >> 1;
|
41392 |
|
41393 | if (array[guess] <= val) {
|
41394 | minIndex = guess;
|
41395 | } else {
|
41396 | maxIndex = guess;
|
41397 | }
|
41398 | }
|
41399 |
|
41400 | return maxIndex;
|
41401 | };
|
41402 | }();
|
41403 |
|
41404 | this.x = x;
|
41405 | this.y = y;
|
41406 | this.lastIndex = x.length - 1;
|
41407 |
|
41408 |
|
41409 |
|
41410 | var i1;
|
41411 | var i3;
|
41412 |
|
41413 | this.interpolate = function interpolate(x2) {
|
41414 | if (!x2) return 0;
|
41415 |
|
41416 | i3 = binarySearch(this.x, x2);
|
41417 | i1 = i3 - 1;
|
41418 |
|
41419 |
|
41420 | return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];
|
41421 | };
|
41422 |
|
41423 | return this;
|
41424 | },
|
41425 |
|
41426 | getInterpolateFunction: function getInterpolateFunction(c) {
|
41427 | var swiper = this;
|
41428 |
|
41429 | if (!swiper.controller.spline) {
|
41430 | swiper.controller.spline = swiper.params.loop ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid) : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);
|
41431 | }
|
41432 | },
|
41433 | setTranslate: function setTranslate(_setTranslate, byController) {
|
41434 | var swiper = this;
|
41435 | var controlled = swiper.controller.control;
|
41436 | var multiplier;
|
41437 | var controlledTranslate;
|
41438 | var Swiper = swiper.constructor;
|
41439 |
|
41440 | function setControlledTranslate(c) {
|
41441 |
|
41442 |
|
41443 |
|
41444 |
|
41445 | var translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;
|
41446 |
|
41447 | if (swiper.params.controller.by === 'slide') {
|
41448 | swiper.controller.getInterpolateFunction(c);
|
41449 |
|
41450 |
|
41451 | controlledTranslate = -swiper.controller.spline.interpolate(-translate);
|
41452 | }
|
41453 |
|
41454 | if (!controlledTranslate || swiper.params.controller.by === 'container') {
|
41455 | multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());
|
41456 | controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();
|
41457 | }
|
41458 |
|
41459 | if (swiper.params.controller.inverse) {
|
41460 | controlledTranslate = c.maxTranslate() - controlledTranslate;
|
41461 | }
|
41462 |
|
41463 | c.updateProgress(controlledTranslate);
|
41464 | c.setTranslate(controlledTranslate, swiper);
|
41465 | c.updateActiveIndex();
|
41466 | c.updateSlidesClasses();
|
41467 | }
|
41468 |
|
41469 | if (Array.isArray(controlled)) {
|
41470 | for (var i = 0; i < controlled.length; i += 1) {
|
41471 | if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
|
41472 | setControlledTranslate(controlled[i]);
|
41473 | }
|
41474 | }
|
41475 | } else if (controlled instanceof Swiper && byController !== controlled) {
|
41476 | setControlledTranslate(controlled);
|
41477 | }
|
41478 | },
|
41479 | setTransition: function setTransition(duration, byController) {
|
41480 | var swiper = this;
|
41481 | var Swiper = swiper.constructor;
|
41482 | var controlled = swiper.controller.control;
|
41483 | var i;
|
41484 |
|
41485 | function setControlledTransition(c) {
|
41486 | c.setTransition(duration, swiper);
|
41487 |
|
41488 | if (duration !== 0) {
|
41489 | c.transitionStart();
|
41490 |
|
41491 | if (c.params.autoHeight) {
|
41492 | nextTick(function () {
|
41493 | c.updateAutoHeight();
|
41494 | });
|
41495 | }
|
41496 |
|
41497 | c.$wrapperEl.transitionEnd(function () {
|
41498 | if (!controlled) return;
|
41499 |
|
41500 | if (c.params.loop && swiper.params.controller.by === 'slide') {
|
41501 | c.loopFix();
|
41502 | }
|
41503 |
|
41504 | c.transitionEnd();
|
41505 | });
|
41506 | }
|
41507 | }
|
41508 |
|
41509 | if (Array.isArray(controlled)) {
|
41510 | for (i = 0; i < controlled.length; i += 1) {
|
41511 | if (controlled[i] !== byController && controlled[i] instanceof Swiper) {
|
41512 | setControlledTransition(controlled[i]);
|
41513 | }
|
41514 | }
|
41515 | } else if (controlled instanceof Swiper && byController !== controlled) {
|
41516 | setControlledTransition(controlled);
|
41517 | }
|
41518 | }
|
41519 | };
|
41520 | var Controller$1 = {
|
41521 | name: 'controller',
|
41522 | params: {
|
41523 | controller: {
|
41524 | control: undefined,
|
41525 | inverse: false,
|
41526 | by: 'slide'
|
41527 |
|
41528 | }
|
41529 | },
|
41530 | create: function create() {
|
41531 | var swiper = this;
|
41532 | bindModuleMethods(swiper, {
|
41533 | controller: _extends$9({
|
41534 | control: swiper.params.controller.control
|
41535 | }, Controller)
|
41536 | });
|
41537 | },
|
41538 | on: {
|
41539 | update: function update(swiper) {
|
41540 | if (!swiper.controller.control) return;
|
41541 |
|
41542 | if (swiper.controller.spline) {
|
41543 | swiper.controller.spline = undefined;
|
41544 | delete swiper.controller.spline;
|
41545 | }
|
41546 | },
|
41547 | resize: function resize(swiper) {
|
41548 | if (!swiper.controller.control) return;
|
41549 |
|
41550 | if (swiper.controller.spline) {
|
41551 | swiper.controller.spline = undefined;
|
41552 | delete swiper.controller.spline;
|
41553 | }
|
41554 | },
|
41555 | observerUpdate: function observerUpdate(swiper) {
|
41556 | if (!swiper.controller.control) return;
|
41557 |
|
41558 | if (swiper.controller.spline) {
|
41559 | swiper.controller.spline = undefined;
|
41560 | delete swiper.controller.spline;
|
41561 | }
|
41562 | },
|
41563 | setTranslate: function setTranslate(swiper, translate, byController) {
|
41564 | if (!swiper.controller.control) return;
|
41565 | swiper.controller.setTranslate(translate, byController);
|
41566 | },
|
41567 | setTransition: function setTransition(swiper, duration, byController) {
|
41568 | if (!swiper.controller.control) return;
|
41569 | swiper.controller.setTransition(duration, byController);
|
41570 | }
|
41571 | }
|
41572 | };
|
41573 |
|
41574 | function _extends$8() {
|
41575 | _extends$8 = Object.assign || function (target) {
|
41576 | for (var i = 1; i < arguments.length; i++) {
|
41577 | var source = arguments[i];
|
41578 |
|
41579 | for (var key in source) {
|
41580 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
41581 | target[key] = source[key];
|
41582 | }
|
41583 | }
|
41584 | }
|
41585 |
|
41586 | return target;
|
41587 | };
|
41588 |
|
41589 | return _extends$8.apply(this, arguments);
|
41590 | }
|
41591 | var A11y = {
|
41592 | getRandomNumber: function getRandomNumber(size) {
|
41593 | if (size === void 0) {
|
41594 | size = 16;
|
41595 | }
|
41596 |
|
41597 | var randomChar = function randomChar() {
|
41598 | return Math.round(16 * Math.random()).toString(16);
|
41599 | };
|
41600 |
|
41601 | return 'x'.repeat(size).replace(/x/g, randomChar);
|
41602 | },
|
41603 | makeElFocusable: function makeElFocusable($el) {
|
41604 | $el.attr('tabIndex', '0');
|
41605 | return $el;
|
41606 | },
|
41607 | makeElNotFocusable: function makeElNotFocusable($el) {
|
41608 | $el.attr('tabIndex', '-1');
|
41609 | return $el;
|
41610 | },
|
41611 | addElRole: function addElRole($el, role) {
|
41612 | $el.attr('role', role);
|
41613 | return $el;
|
41614 | },
|
41615 | addElRoleDescription: function addElRoleDescription($el, description) {
|
41616 | $el.attr('aria-roledescription', description);
|
41617 | return $el;
|
41618 | },
|
41619 | addElControls: function addElControls($el, controls) {
|
41620 | $el.attr('aria-controls', controls);
|
41621 | return $el;
|
41622 | },
|
41623 | addElLabel: function addElLabel($el, label) {
|
41624 | $el.attr('aria-label', label);
|
41625 | return $el;
|
41626 | },
|
41627 | addElId: function addElId($el, id) {
|
41628 | $el.attr('id', id);
|
41629 | return $el;
|
41630 | },
|
41631 | addElLive: function addElLive($el, live) {
|
41632 | $el.attr('aria-live', live);
|
41633 | return $el;
|
41634 | },
|
41635 | disableEl: function disableEl($el) {
|
41636 | $el.attr('aria-disabled', true);
|
41637 | return $el;
|
41638 | },
|
41639 | enableEl: function enableEl($el) {
|
41640 | $el.attr('aria-disabled', false);
|
41641 | return $el;
|
41642 | },
|
41643 | onEnterOrSpaceKey: function onEnterOrSpaceKey(e) {
|
41644 | if (e.keyCode !== 13 && e.keyCode !== 32) return;
|
41645 | var swiper = this;
|
41646 | var params = swiper.params.a11y;
|
41647 | var $targetEl = $$1(e.target);
|
41648 |
|
41649 | if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {
|
41650 | if (!(swiper.isEnd && !swiper.params.loop)) {
|
41651 | swiper.slideNext();
|
41652 | }
|
41653 |
|
41654 | if (swiper.isEnd) {
|
41655 | swiper.a11y.notify(params.lastSlideMessage);
|
41656 | } else {
|
41657 | swiper.a11y.notify(params.nextSlideMessage);
|
41658 | }
|
41659 | }
|
41660 |
|
41661 | if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {
|
41662 | if (!(swiper.isBeginning && !swiper.params.loop)) {
|
41663 | swiper.slidePrev();
|
41664 | }
|
41665 |
|
41666 | if (swiper.isBeginning) {
|
41667 | swiper.a11y.notify(params.firstSlideMessage);
|
41668 | } else {
|
41669 | swiper.a11y.notify(params.prevSlideMessage);
|
41670 | }
|
41671 | }
|
41672 |
|
41673 | if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {
|
41674 | $targetEl[0].click();
|
41675 | }
|
41676 | },
|
41677 | notify: function notify(message) {
|
41678 | var swiper = this;
|
41679 | var notification = swiper.a11y.liveRegion;
|
41680 | if (notification.length === 0) return;
|
41681 | notification.html('');
|
41682 | notification.html(message);
|
41683 | },
|
41684 | updateNavigation: function updateNavigation() {
|
41685 | var swiper = this;
|
41686 | if (swiper.params.loop || !swiper.navigation) return;
|
41687 | var _swiper$navigation = swiper.navigation,
|
41688 | $nextEl = _swiper$navigation.$nextEl,
|
41689 | $prevEl = _swiper$navigation.$prevEl;
|
41690 |
|
41691 | if ($prevEl && $prevEl.length > 0) {
|
41692 | if (swiper.isBeginning) {
|
41693 | swiper.a11y.disableEl($prevEl);
|
41694 | swiper.a11y.makeElNotFocusable($prevEl);
|
41695 | } else {
|
41696 | swiper.a11y.enableEl($prevEl);
|
41697 | swiper.a11y.makeElFocusable($prevEl);
|
41698 | }
|
41699 | }
|
41700 |
|
41701 | if ($nextEl && $nextEl.length > 0) {
|
41702 | if (swiper.isEnd) {
|
41703 | swiper.a11y.disableEl($nextEl);
|
41704 | swiper.a11y.makeElNotFocusable($nextEl);
|
41705 | } else {
|
41706 | swiper.a11y.enableEl($nextEl);
|
41707 | swiper.a11y.makeElFocusable($nextEl);
|
41708 | }
|
41709 | }
|
41710 | },
|
41711 | updatePagination: function updatePagination() {
|
41712 | var swiper = this;
|
41713 | var params = swiper.params.a11y;
|
41714 |
|
41715 | if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
|
41716 | swiper.pagination.bullets.each(function (bulletEl) {
|
41717 | var $bulletEl = $$1(bulletEl);
|
41718 | swiper.a11y.makeElFocusable($bulletEl);
|
41719 |
|
41720 | if (!swiper.params.pagination.renderBullet) {
|
41721 | swiper.a11y.addElRole($bulletEl, 'button');
|
41722 | swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1));
|
41723 | }
|
41724 | });
|
41725 | }
|
41726 | },
|
41727 | init: function init() {
|
41728 | var swiper = this;
|
41729 | var params = swiper.params.a11y;
|
41730 | swiper.$el.append(swiper.a11y.liveRegion);
|
41731 |
|
41732 | var $containerEl = swiper.$el;
|
41733 |
|
41734 | if (params.containerRoleDescriptionMessage) {
|
41735 | swiper.a11y.addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);
|
41736 | }
|
41737 |
|
41738 | if (params.containerMessage) {
|
41739 | swiper.a11y.addElLabel($containerEl, params.containerMessage);
|
41740 | }
|
41741 |
|
41742 |
|
41743 | var $wrapperEl = swiper.$wrapperEl;
|
41744 | var wrapperId = $wrapperEl.attr('id') || "swiper-wrapper-" + swiper.a11y.getRandomNumber(16);
|
41745 | var live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';
|
41746 | swiper.a11y.addElId($wrapperEl, wrapperId);
|
41747 | swiper.a11y.addElLive($wrapperEl, live);
|
41748 |
|
41749 | if (params.itemRoleDescriptionMessage) {
|
41750 | swiper.a11y.addElRoleDescription($$1(swiper.slides), params.itemRoleDescriptionMessage);
|
41751 | }
|
41752 |
|
41753 | swiper.a11y.addElRole($$1(swiper.slides), params.slideRole);
|
41754 | swiper.slides.each(function (slideEl) {
|
41755 | var $slideEl = $$1(slideEl);
|
41756 | var ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, $slideEl.index() + 1).replace(/\{\{slidesLength\}\}/, swiper.slides.length);
|
41757 | swiper.a11y.addElLabel($slideEl, ariaLabelMessage);
|
41758 | });
|
41759 |
|
41760 | var $nextEl;
|
41761 | var $prevEl;
|
41762 |
|
41763 | if (swiper.navigation && swiper.navigation.$nextEl) {
|
41764 | $nextEl = swiper.navigation.$nextEl;
|
41765 | }
|
41766 |
|
41767 | if (swiper.navigation && swiper.navigation.$prevEl) {
|
41768 | $prevEl = swiper.navigation.$prevEl;
|
41769 | }
|
41770 |
|
41771 | if ($nextEl && $nextEl.length) {
|
41772 | swiper.a11y.makeElFocusable($nextEl);
|
41773 |
|
41774 | if ($nextEl[0].tagName !== 'BUTTON') {
|
41775 | swiper.a11y.addElRole($nextEl, 'button');
|
41776 | $nextEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);
|
41777 | }
|
41778 |
|
41779 | swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);
|
41780 | swiper.a11y.addElControls($nextEl, wrapperId);
|
41781 | }
|
41782 |
|
41783 | if ($prevEl && $prevEl.length) {
|
41784 | swiper.a11y.makeElFocusable($prevEl);
|
41785 |
|
41786 | if ($prevEl[0].tagName !== 'BUTTON') {
|
41787 | swiper.a11y.addElRole($prevEl, 'button');
|
41788 | $prevEl.on('keydown', swiper.a11y.onEnterOrSpaceKey);
|
41789 | }
|
41790 |
|
41791 | swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);
|
41792 | swiper.a11y.addElControls($prevEl, wrapperId);
|
41793 | }
|
41794 |
|
41795 |
|
41796 | if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
|
41797 | swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), swiper.a11y.onEnterOrSpaceKey);
|
41798 | }
|
41799 | },
|
41800 | destroy: function destroy() {
|
41801 | var swiper = this;
|
41802 | if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();
|
41803 | var $nextEl;
|
41804 | var $prevEl;
|
41805 |
|
41806 | if (swiper.navigation && swiper.navigation.$nextEl) {
|
41807 | $nextEl = swiper.navigation.$nextEl;
|
41808 | }
|
41809 |
|
41810 | if (swiper.navigation && swiper.navigation.$prevEl) {
|
41811 | $prevEl = swiper.navigation.$prevEl;
|
41812 | }
|
41813 |
|
41814 | if ($nextEl) {
|
41815 | $nextEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);
|
41816 | }
|
41817 |
|
41818 | if ($prevEl) {
|
41819 | $prevEl.off('keydown', swiper.a11y.onEnterOrSpaceKey);
|
41820 | }
|
41821 |
|
41822 |
|
41823 | if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {
|
41824 | swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), swiper.a11y.onEnterOrSpaceKey);
|
41825 | }
|
41826 | }
|
41827 | };
|
41828 | var A11y$1 = {
|
41829 | name: 'a11y',
|
41830 | params: {
|
41831 | a11y: {
|
41832 | enabled: true,
|
41833 | notificationClass: 'swiper-notification',
|
41834 | prevSlideMessage: 'Previous slide',
|
41835 | nextSlideMessage: 'Next slide',
|
41836 | firstSlideMessage: 'This is the first slide',
|
41837 | lastSlideMessage: 'This is the last slide',
|
41838 | paginationBulletMessage: 'Go to slide {{index}}',
|
41839 | slideLabelMessage: '{{index}} / {{slidesLength}}',
|
41840 | containerMessage: null,
|
41841 | containerRoleDescriptionMessage: null,
|
41842 | itemRoleDescriptionMessage: null,
|
41843 | slideRole: 'group'
|
41844 | }
|
41845 | },
|
41846 | create: function create() {
|
41847 | var swiper = this;
|
41848 | bindModuleMethods(swiper, {
|
41849 | a11y: _extends$8({}, A11y, {
|
41850 | liveRegion: $$1("<span class=\"" + swiper.params.a11y.notificationClass + "\" aria-live=\"assertive\" aria-atomic=\"true\"></span>")
|
41851 | })
|
41852 | });
|
41853 | },
|
41854 | on: {
|
41855 | afterInit: function afterInit(swiper) {
|
41856 | if (!swiper.params.a11y.enabled) return;
|
41857 | swiper.a11y.init();
|
41858 | swiper.a11y.updateNavigation();
|
41859 | },
|
41860 | toEdge: function toEdge(swiper) {
|
41861 | if (!swiper.params.a11y.enabled) return;
|
41862 | swiper.a11y.updateNavigation();
|
41863 | },
|
41864 | fromEdge: function fromEdge(swiper) {
|
41865 | if (!swiper.params.a11y.enabled) return;
|
41866 | swiper.a11y.updateNavigation();
|
41867 | },
|
41868 | paginationUpdate: function paginationUpdate(swiper) {
|
41869 | if (!swiper.params.a11y.enabled) return;
|
41870 | swiper.a11y.updatePagination();
|
41871 | },
|
41872 | destroy: function destroy(swiper) {
|
41873 | if (!swiper.params.a11y.enabled) return;
|
41874 | swiper.a11y.destroy();
|
41875 | }
|
41876 | }
|
41877 | };
|
41878 |
|
41879 | function _extends$7() {
|
41880 | _extends$7 = Object.assign || function (target) {
|
41881 | for (var i = 1; i < arguments.length; i++) {
|
41882 | var source = arguments[i];
|
41883 |
|
41884 | for (var key in source) {
|
41885 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
41886 | target[key] = source[key];
|
41887 | }
|
41888 | }
|
41889 | }
|
41890 |
|
41891 | return target;
|
41892 | };
|
41893 |
|
41894 | return _extends$7.apply(this, arguments);
|
41895 | }
|
41896 | var History = {
|
41897 | init: function init() {
|
41898 | var swiper = this;
|
41899 | var window = getWindow();
|
41900 | if (!swiper.params.history) return;
|
41901 |
|
41902 | if (!window.history || !window.history.pushState) {
|
41903 | swiper.params.history.enabled = false;
|
41904 | swiper.params.hashNavigation.enabled = true;
|
41905 | return;
|
41906 | }
|
41907 |
|
41908 | var history = swiper.history;
|
41909 | history.initialized = true;
|
41910 | history.paths = History.getPathValues(swiper.params.url);
|
41911 | if (!history.paths.key && !history.paths.value) return;
|
41912 | history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);
|
41913 |
|
41914 | if (!swiper.params.history.replaceState) {
|
41915 | window.addEventListener('popstate', swiper.history.setHistoryPopState);
|
41916 | }
|
41917 | },
|
41918 | destroy: function destroy() {
|
41919 | var swiper = this;
|
41920 | var window = getWindow();
|
41921 |
|
41922 | if (!swiper.params.history.replaceState) {
|
41923 | window.removeEventListener('popstate', swiper.history.setHistoryPopState);
|
41924 | }
|
41925 | },
|
41926 | setHistoryPopState: function setHistoryPopState() {
|
41927 | var swiper = this;
|
41928 | swiper.history.paths = History.getPathValues(swiper.params.url);
|
41929 | swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);
|
41930 | },
|
41931 | getPathValues: function getPathValues(urlOverride) {
|
41932 | var window = getWindow();
|
41933 | var location;
|
41934 |
|
41935 | if (urlOverride) {
|
41936 | location = new URL(urlOverride);
|
41937 | } else {
|
41938 | location = window.location;
|
41939 | }
|
41940 |
|
41941 | var pathArray = location.pathname.slice(1).split('/').filter(function (part) {
|
41942 | return part !== '';
|
41943 | });
|
41944 | var total = pathArray.length;
|
41945 | var key = pathArray[total - 2];
|
41946 | var value = pathArray[total - 1];
|
41947 | return {
|
41948 | key: key,
|
41949 | value: value
|
41950 | };
|
41951 | },
|
41952 | setHistory: function setHistory(key, index) {
|
41953 | var swiper = this;
|
41954 | var window = getWindow();
|
41955 | if (!swiper.history.initialized || !swiper.params.history.enabled) return;
|
41956 | var location;
|
41957 |
|
41958 | if (swiper.params.url) {
|
41959 | location = new URL(swiper.params.url);
|
41960 | } else {
|
41961 | location = window.location;
|
41962 | }
|
41963 |
|
41964 | var slide = swiper.slides.eq(index);
|
41965 | var value = History.slugify(slide.attr('data-history'));
|
41966 |
|
41967 | if (swiper.params.history.root.length > 0) {
|
41968 | var root = swiper.params.history.root;
|
41969 | if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);
|
41970 | value = root + "/" + key + "/" + value;
|
41971 | } else if (!location.pathname.includes(key)) {
|
41972 | value = key + "/" + value;
|
41973 | }
|
41974 |
|
41975 | var currentState = window.history.state;
|
41976 |
|
41977 | if (currentState && currentState.value === value) {
|
41978 | return;
|
41979 | }
|
41980 |
|
41981 | if (swiper.params.history.replaceState) {
|
41982 | window.history.replaceState({
|
41983 | value: value
|
41984 | }, null, value);
|
41985 | } else {
|
41986 | window.history.pushState({
|
41987 | value: value
|
41988 | }, null, value);
|
41989 | }
|
41990 | },
|
41991 | slugify: function slugify(text) {
|
41992 | return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');
|
41993 | },
|
41994 | scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {
|
41995 | var swiper = this;
|
41996 |
|
41997 | if (value) {
|
41998 | for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
|
41999 | var slide = swiper.slides.eq(i);
|
42000 | var slideHistory = History.slugify(slide.attr('data-history'));
|
42001 |
|
42002 | if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {
|
42003 | var index = slide.index();
|
42004 | swiper.slideTo(index, speed, runCallbacks);
|
42005 | }
|
42006 | }
|
42007 | } else {
|
42008 | swiper.slideTo(0, speed, runCallbacks);
|
42009 | }
|
42010 | }
|
42011 | };
|
42012 | var History$1 = {
|
42013 | name: 'history',
|
42014 | params: {
|
42015 | history: {
|
42016 | enabled: false,
|
42017 | root: '',
|
42018 | replaceState: false,
|
42019 | key: 'slides'
|
42020 | }
|
42021 | },
|
42022 | create: function create() {
|
42023 | var swiper = this;
|
42024 | bindModuleMethods(swiper, {
|
42025 | history: _extends$7({}, History)
|
42026 | });
|
42027 | },
|
42028 | on: {
|
42029 | init: function init(swiper) {
|
42030 | if (swiper.params.history.enabled) {
|
42031 | swiper.history.init();
|
42032 | }
|
42033 | },
|
42034 | destroy: function destroy(swiper) {
|
42035 | if (swiper.params.history.enabled) {
|
42036 | swiper.history.destroy();
|
42037 | }
|
42038 | },
|
42039 | 'transitionEnd _freeModeNoMomentumRelease': function transitionEnd_freeModeNoMomentumRelease(swiper) {
|
42040 | if (swiper.history.initialized) {
|
42041 | swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
|
42042 | }
|
42043 | },
|
42044 | slideChange: function slideChange(swiper) {
|
42045 | if (swiper.history.initialized && swiper.params.cssMode) {
|
42046 | swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);
|
42047 | }
|
42048 | }
|
42049 | }
|
42050 | };
|
42051 |
|
42052 | function _extends$6() {
|
42053 | _extends$6 = Object.assign || function (target) {
|
42054 | for (var i = 1; i < arguments.length; i++) {
|
42055 | var source = arguments[i];
|
42056 |
|
42057 | for (var key in source) {
|
42058 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
42059 | target[key] = source[key];
|
42060 | }
|
42061 | }
|
42062 | }
|
42063 |
|
42064 | return target;
|
42065 | };
|
42066 |
|
42067 | return _extends$6.apply(this, arguments);
|
42068 | }
|
42069 | var HashNavigation = {
|
42070 | onHashCange: function onHashCange() {
|
42071 | var swiper = this;
|
42072 | var document = getDocument();
|
42073 | swiper.emit('hashChange');
|
42074 | var newHash = document.location.hash.replace('#', '');
|
42075 | var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');
|
42076 |
|
42077 | if (newHash !== activeSlideHash) {
|
42078 | var newIndex = swiper.$wrapperEl.children("." + swiper.params.slideClass + "[data-hash=\"" + newHash + "\"]").index();
|
42079 | if (typeof newIndex === 'undefined') return;
|
42080 | swiper.slideTo(newIndex);
|
42081 | }
|
42082 | },
|
42083 | setHash: function setHash() {
|
42084 | var swiper = this;
|
42085 | var window = getWindow();
|
42086 | var document = getDocument();
|
42087 | if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;
|
42088 |
|
42089 | if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {
|
42090 | window.history.replaceState(null, null, "#" + swiper.slides.eq(swiper.activeIndex).attr('data-hash') || '');
|
42091 | swiper.emit('hashSet');
|
42092 | } else {
|
42093 | var slide = swiper.slides.eq(swiper.activeIndex);
|
42094 | var hash = slide.attr('data-hash') || slide.attr('data-history');
|
42095 | document.location.hash = hash || '';
|
42096 | swiper.emit('hashSet');
|
42097 | }
|
42098 | },
|
42099 | init: function init() {
|
42100 | var swiper = this;
|
42101 | var document = getDocument();
|
42102 | var window = getWindow();
|
42103 | if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
|
42104 | swiper.hashNavigation.initialized = true;
|
42105 | var hash = document.location.hash.replace('#', '');
|
42106 |
|
42107 | if (hash) {
|
42108 | var speed = 0;
|
42109 |
|
42110 | for (var i = 0, length = swiper.slides.length; i < length; i += 1) {
|
42111 | var slide = swiper.slides.eq(i);
|
42112 | var slideHash = slide.attr('data-hash') || slide.attr('data-history');
|
42113 |
|
42114 | if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {
|
42115 | var index = slide.index();
|
42116 | swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);
|
42117 | }
|
42118 | }
|
42119 | }
|
42120 |
|
42121 | if (swiper.params.hashNavigation.watchState) {
|
42122 | $$1(window).on('hashchange', swiper.hashNavigation.onHashCange);
|
42123 | }
|
42124 | },
|
42125 | destroy: function destroy() {
|
42126 | var swiper = this;
|
42127 | var window = getWindow();
|
42128 |
|
42129 | if (swiper.params.hashNavigation.watchState) {
|
42130 | $$1(window).off('hashchange', swiper.hashNavigation.onHashCange);
|
42131 | }
|
42132 | }
|
42133 | };
|
42134 | var HashNavigation$1 = {
|
42135 | name: 'hash-navigation',
|
42136 | params: {
|
42137 | hashNavigation: {
|
42138 | enabled: false,
|
42139 | replaceState: false,
|
42140 | watchState: false
|
42141 | }
|
42142 | },
|
42143 | create: function create() {
|
42144 | var swiper = this;
|
42145 | bindModuleMethods(swiper, {
|
42146 | hashNavigation: _extends$6({
|
42147 | initialized: false
|
42148 | }, HashNavigation)
|
42149 | });
|
42150 | },
|
42151 | on: {
|
42152 | init: function init(swiper) {
|
42153 | if (swiper.params.hashNavigation.enabled) {
|
42154 | swiper.hashNavigation.init();
|
42155 | }
|
42156 | },
|
42157 | destroy: function destroy(swiper) {
|
42158 | if (swiper.params.hashNavigation.enabled) {
|
42159 | swiper.hashNavigation.destroy();
|
42160 | }
|
42161 | },
|
42162 | 'transitionEnd _freeModeNoMomentumRelease': function transitionEnd_freeModeNoMomentumRelease(swiper) {
|
42163 | if (swiper.hashNavigation.initialized) {
|
42164 | swiper.hashNavigation.setHash();
|
42165 | }
|
42166 | },
|
42167 | slideChange: function slideChange(swiper) {
|
42168 | if (swiper.hashNavigation.initialized && swiper.params.cssMode) {
|
42169 | swiper.hashNavigation.setHash();
|
42170 | }
|
42171 | }
|
42172 | }
|
42173 | };
|
42174 |
|
42175 | function _extends$5() {
|
42176 | _extends$5 = Object.assign || function (target) {
|
42177 | for (var i = 1; i < arguments.length; i++) {
|
42178 | var source = arguments[i];
|
42179 |
|
42180 | for (var key in source) {
|
42181 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
42182 | target[key] = source[key];
|
42183 | }
|
42184 | }
|
42185 | }
|
42186 |
|
42187 | return target;
|
42188 | };
|
42189 |
|
42190 | return _extends$5.apply(this, arguments);
|
42191 | }
|
42192 | var Autoplay = {
|
42193 | run: function run() {
|
42194 | var swiper = this;
|
42195 | var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
|
42196 | var delay = swiper.params.autoplay.delay;
|
42197 |
|
42198 | if ($activeSlideEl.attr('data-swiper-autoplay')) {
|
42199 | delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;
|
42200 | }
|
42201 |
|
42202 | clearTimeout(swiper.autoplay.timeout);
|
42203 | swiper.autoplay.timeout = nextTick(function () {
|
42204 | var autoplayResult;
|
42205 |
|
42206 | if (swiper.params.autoplay.reverseDirection) {
|
42207 | if (swiper.params.loop) {
|
42208 | swiper.loopFix();
|
42209 | autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
|
42210 | swiper.emit('autoplay');
|
42211 | } else if (!swiper.isBeginning) {
|
42212 | autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);
|
42213 | swiper.emit('autoplay');
|
42214 | } else if (!swiper.params.autoplay.stopOnLastSlide) {
|
42215 | autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);
|
42216 | swiper.emit('autoplay');
|
42217 | } else {
|
42218 | swiper.autoplay.stop();
|
42219 | }
|
42220 | } else if (swiper.params.loop) {
|
42221 | swiper.loopFix();
|
42222 | autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
|
42223 | swiper.emit('autoplay');
|
42224 | } else if (!swiper.isEnd) {
|
42225 | autoplayResult = swiper.slideNext(swiper.params.speed, true, true);
|
42226 | swiper.emit('autoplay');
|
42227 | } else if (!swiper.params.autoplay.stopOnLastSlide) {
|
42228 | autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);
|
42229 | swiper.emit('autoplay');
|
42230 | } else {
|
42231 | swiper.autoplay.stop();
|
42232 | }
|
42233 |
|
42234 | if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();else if (autoplayResult === false) {
|
42235 | swiper.autoplay.run();
|
42236 | }
|
42237 | }, delay);
|
42238 | },
|
42239 | start: function start() {
|
42240 | var swiper = this;
|
42241 | if (typeof swiper.autoplay.timeout !== 'undefined') return false;
|
42242 | if (swiper.autoplay.running) return false;
|
42243 | swiper.autoplay.running = true;
|
42244 | swiper.emit('autoplayStart');
|
42245 | swiper.autoplay.run();
|
42246 | return true;
|
42247 | },
|
42248 | stop: function stop() {
|
42249 | var swiper = this;
|
42250 | if (!swiper.autoplay.running) return false;
|
42251 | if (typeof swiper.autoplay.timeout === 'undefined') return false;
|
42252 |
|
42253 | if (swiper.autoplay.timeout) {
|
42254 | clearTimeout(swiper.autoplay.timeout);
|
42255 | swiper.autoplay.timeout = undefined;
|
42256 | }
|
42257 |
|
42258 | swiper.autoplay.running = false;
|
42259 | swiper.emit('autoplayStop');
|
42260 | return true;
|
42261 | },
|
42262 | pause: function pause(speed) {
|
42263 | var swiper = this;
|
42264 | if (!swiper.autoplay.running) return;
|
42265 | if (swiper.autoplay.paused) return;
|
42266 | if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);
|
42267 | swiper.autoplay.paused = true;
|
42268 |
|
42269 | if (speed === 0 || !swiper.params.autoplay.waitForTransition) {
|
42270 | swiper.autoplay.paused = false;
|
42271 | swiper.autoplay.run();
|
42272 | } else {
|
42273 | ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {
|
42274 | swiper.$wrapperEl[0].addEventListener(event, swiper.autoplay.onTransitionEnd);
|
42275 | });
|
42276 | }
|
42277 | },
|
42278 | onVisibilityChange: function onVisibilityChange() {
|
42279 | var swiper = this;
|
42280 | var document = getDocument();
|
42281 |
|
42282 | if (document.visibilityState === 'hidden' && swiper.autoplay.running) {
|
42283 | swiper.autoplay.pause();
|
42284 | }
|
42285 |
|
42286 | if (document.visibilityState === 'visible' && swiper.autoplay.paused) {
|
42287 | swiper.autoplay.run();
|
42288 | swiper.autoplay.paused = false;
|
42289 | }
|
42290 | },
|
42291 | onTransitionEnd: function onTransitionEnd(e) {
|
42292 | var swiper = this;
|
42293 | if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;
|
42294 | if (e.target !== swiper.$wrapperEl[0]) return;
|
42295 | ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {
|
42296 | swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);
|
42297 | });
|
42298 | swiper.autoplay.paused = false;
|
42299 |
|
42300 | if (!swiper.autoplay.running) {
|
42301 | swiper.autoplay.stop();
|
42302 | } else {
|
42303 | swiper.autoplay.run();
|
42304 | }
|
42305 | },
|
42306 | onMouseEnter: function onMouseEnter() {
|
42307 | var swiper = this;
|
42308 | swiper.autoplay.pause();
|
42309 | ['transitionend', 'webkitTransitionEnd'].forEach(function (event) {
|
42310 | swiper.$wrapperEl[0].removeEventListener(event, swiper.autoplay.onTransitionEnd);
|
42311 | });
|
42312 | },
|
42313 | onMouseLeave: function onMouseLeave() {
|
42314 | var swiper = this;
|
42315 | swiper.autoplay.paused = false;
|
42316 | swiper.autoplay.run();
|
42317 | },
|
42318 | attachMouseEvents: function attachMouseEvents() {
|
42319 | var swiper = this;
|
42320 |
|
42321 | if (swiper.params.autoplay.pauseOnMouseEnter) {
|
42322 | swiper.$el.on('mouseenter', swiper.autoplay.onMouseEnter);
|
42323 | swiper.$el.on('mouseleave', swiper.autoplay.onMouseLeave);
|
42324 | }
|
42325 | },
|
42326 | detachMouseEvents: function detachMouseEvents() {
|
42327 | var swiper = this;
|
42328 | swiper.$el.off('mouseenter', swiper.autoplay.onMouseEnter);
|
42329 | swiper.$el.off('mouseleave', swiper.autoplay.onMouseLeave);
|
42330 | }
|
42331 | };
|
42332 | var Autoplay$1 = {
|
42333 | name: 'autoplay',
|
42334 | params: {
|
42335 | autoplay: {
|
42336 | enabled: false,
|
42337 | delay: 3000,
|
42338 | waitForTransition: true,
|
42339 | disableOnInteraction: true,
|
42340 | stopOnLastSlide: false,
|
42341 | reverseDirection: false,
|
42342 | pauseOnMouseEnter: false
|
42343 | }
|
42344 | },
|
42345 | create: function create() {
|
42346 | var swiper = this;
|
42347 | bindModuleMethods(swiper, {
|
42348 | autoplay: _extends$5({}, Autoplay, {
|
42349 | running: false,
|
42350 | paused: false
|
42351 | })
|
42352 | });
|
42353 | },
|
42354 | on: {
|
42355 | init: function init(swiper) {
|
42356 | if (swiper.params.autoplay.enabled) {
|
42357 | swiper.autoplay.start();
|
42358 | var document = getDocument();
|
42359 | document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
|
42360 | swiper.autoplay.attachMouseEvents();
|
42361 | }
|
42362 | },
|
42363 | beforeTransitionStart: function beforeTransitionStart(swiper, speed, internal) {
|
42364 | if (swiper.autoplay.running) {
|
42365 | if (internal || !swiper.params.autoplay.disableOnInteraction) {
|
42366 | swiper.autoplay.pause(speed);
|
42367 | } else {
|
42368 | swiper.autoplay.stop();
|
42369 | }
|
42370 | }
|
42371 | },
|
42372 | sliderFirstMove: function sliderFirstMove(swiper) {
|
42373 | if (swiper.autoplay.running) {
|
42374 | if (swiper.params.autoplay.disableOnInteraction) {
|
42375 | swiper.autoplay.stop();
|
42376 | } else {
|
42377 | swiper.autoplay.pause();
|
42378 | }
|
42379 | }
|
42380 | },
|
42381 | touchEnd: function touchEnd(swiper) {
|
42382 | if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {
|
42383 | swiper.autoplay.run();
|
42384 | }
|
42385 | },
|
42386 | destroy: function destroy(swiper) {
|
42387 | swiper.autoplay.detachMouseEvents();
|
42388 |
|
42389 | if (swiper.autoplay.running) {
|
42390 | swiper.autoplay.stop();
|
42391 | }
|
42392 |
|
42393 | var document = getDocument();
|
42394 | document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);
|
42395 | }
|
42396 | }
|
42397 | };
|
42398 |
|
42399 | function _extends$4() {
|
42400 | _extends$4 = Object.assign || function (target) {
|
42401 | for (var i = 1; i < arguments.length; i++) {
|
42402 | var source = arguments[i];
|
42403 |
|
42404 | for (var key in source) {
|
42405 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
42406 | target[key] = source[key];
|
42407 | }
|
42408 | }
|
42409 | }
|
42410 |
|
42411 | return target;
|
42412 | };
|
42413 |
|
42414 | return _extends$4.apply(this, arguments);
|
42415 | }
|
42416 | var Fade = {
|
42417 | setTranslate: function setTranslate() {
|
42418 | var swiper = this;
|
42419 | var slides = swiper.slides;
|
42420 |
|
42421 | for (var i = 0; i < slides.length; i += 1) {
|
42422 | var $slideEl = swiper.slides.eq(i);
|
42423 | var offset = $slideEl[0].swiperSlideOffset;
|
42424 | var tx = -offset;
|
42425 | if (!swiper.params.virtualTranslate) tx -= swiper.translate;
|
42426 | var ty = 0;
|
42427 |
|
42428 | if (!swiper.isHorizontal()) {
|
42429 | ty = tx;
|
42430 | tx = 0;
|
42431 | }
|
42432 |
|
42433 | var slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);
|
42434 | $slideEl.css({
|
42435 | opacity: slideOpacity
|
42436 | }).transform("translate3d(" + tx + "px, " + ty + "px, 0px)");
|
42437 | }
|
42438 | },
|
42439 | setTransition: function setTransition(duration) {
|
42440 | var swiper = this;
|
42441 | var slides = swiper.slides,
|
42442 | $wrapperEl = swiper.$wrapperEl;
|
42443 | slides.transition(duration);
|
42444 |
|
42445 | if (swiper.params.virtualTranslate && duration !== 0) {
|
42446 | var eventTriggered = false;
|
42447 | slides.transitionEnd(function () {
|
42448 | if (eventTriggered) return;
|
42449 | if (!swiper || swiper.destroyed) return;
|
42450 | eventTriggered = true;
|
42451 | swiper.animating = false;
|
42452 | var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
|
42453 |
|
42454 | for (var i = 0; i < triggerEvents.length; i += 1) {
|
42455 | $wrapperEl.trigger(triggerEvents[i]);
|
42456 | }
|
42457 | });
|
42458 | }
|
42459 | }
|
42460 | };
|
42461 | var EffectFade = {
|
42462 | name: 'effect-fade',
|
42463 | params: {
|
42464 | fadeEffect: {
|
42465 | crossFade: false
|
42466 | }
|
42467 | },
|
42468 | create: function create() {
|
42469 | var swiper = this;
|
42470 | bindModuleMethods(swiper, {
|
42471 | fadeEffect: _extends$4({}, Fade)
|
42472 | });
|
42473 | },
|
42474 | on: {
|
42475 | beforeInit: function beforeInit(swiper) {
|
42476 | if (swiper.params.effect !== 'fade') return;
|
42477 | swiper.classNames.push(swiper.params.containerModifierClass + "fade");
|
42478 | var overwriteParams = {
|
42479 | slidesPerView: 1,
|
42480 | slidesPerColumn: 1,
|
42481 | slidesPerGroup: 1,
|
42482 | watchSlidesProgress: true,
|
42483 | spaceBetween: 0,
|
42484 | virtualTranslate: true
|
42485 | };
|
42486 | extend(swiper.params, overwriteParams);
|
42487 | extend(swiper.originalParams, overwriteParams);
|
42488 | },
|
42489 | setTranslate: function setTranslate(swiper) {
|
42490 | if (swiper.params.effect !== 'fade') return;
|
42491 | swiper.fadeEffect.setTranslate();
|
42492 | },
|
42493 | setTransition: function setTransition(swiper, duration) {
|
42494 | if (swiper.params.effect !== 'fade') return;
|
42495 | swiper.fadeEffect.setTransition(duration);
|
42496 | }
|
42497 | }
|
42498 | };
|
42499 |
|
42500 | function _extends$3() {
|
42501 | _extends$3 = Object.assign || function (target) {
|
42502 | for (var i = 1; i < arguments.length; i++) {
|
42503 | var source = arguments[i];
|
42504 |
|
42505 | for (var key in source) {
|
42506 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
42507 | target[key] = source[key];
|
42508 | }
|
42509 | }
|
42510 | }
|
42511 |
|
42512 | return target;
|
42513 | };
|
42514 |
|
42515 | return _extends$3.apply(this, arguments);
|
42516 | }
|
42517 | var Cube = {
|
42518 | setTranslate: function setTranslate() {
|
42519 | var swiper = this;
|
42520 | var $el = swiper.$el,
|
42521 | $wrapperEl = swiper.$wrapperEl,
|
42522 | slides = swiper.slides,
|
42523 | swiperWidth = swiper.width,
|
42524 | swiperHeight = swiper.height,
|
42525 | rtl = swiper.rtlTranslate,
|
42526 | swiperSize = swiper.size,
|
42527 | browser = swiper.browser;
|
42528 | var params = swiper.params.cubeEffect;
|
42529 | var isHorizontal = swiper.isHorizontal();
|
42530 | var isVirtual = swiper.virtual && swiper.params.virtual.enabled;
|
42531 | var wrapperRotate = 0;
|
42532 | var $cubeShadowEl;
|
42533 |
|
42534 | if (params.shadow) {
|
42535 | if (isHorizontal) {
|
42536 | $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');
|
42537 |
|
42538 | if ($cubeShadowEl.length === 0) {
|
42539 | $cubeShadowEl = $$1('<div class="swiper-cube-shadow"></div>');
|
42540 | $wrapperEl.append($cubeShadowEl);
|
42541 | }
|
42542 |
|
42543 | $cubeShadowEl.css({
|
42544 | height: swiperWidth + "px"
|
42545 | });
|
42546 | } else {
|
42547 | $cubeShadowEl = $el.find('.swiper-cube-shadow');
|
42548 |
|
42549 | if ($cubeShadowEl.length === 0) {
|
42550 | $cubeShadowEl = $$1('<div class="swiper-cube-shadow"></div>');
|
42551 | $el.append($cubeShadowEl);
|
42552 | }
|
42553 | }
|
42554 | }
|
42555 |
|
42556 | for (var i = 0; i < slides.length; i += 1) {
|
42557 | var $slideEl = slides.eq(i);
|
42558 | var slideIndex = i;
|
42559 |
|
42560 | if (isVirtual) {
|
42561 | slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);
|
42562 | }
|
42563 |
|
42564 | var slideAngle = slideIndex * 90;
|
42565 | var round = Math.floor(slideAngle / 360);
|
42566 |
|
42567 | if (rtl) {
|
42568 | slideAngle = -slideAngle;
|
42569 | round = Math.floor(-slideAngle / 360);
|
42570 | }
|
42571 |
|
42572 | var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
|
42573 | var tx = 0;
|
42574 | var ty = 0;
|
42575 | var tz = 0;
|
42576 |
|
42577 | if (slideIndex % 4 === 0) {
|
42578 | tx = -round * 4 * swiperSize;
|
42579 | tz = 0;
|
42580 | } else if ((slideIndex - 1) % 4 === 0) {
|
42581 | tx = 0;
|
42582 | tz = -round * 4 * swiperSize;
|
42583 | } else if ((slideIndex - 2) % 4 === 0) {
|
42584 | tx = swiperSize + round * 4 * swiperSize;
|
42585 | tz = swiperSize;
|
42586 | } else if ((slideIndex - 3) % 4 === 0) {
|
42587 | tx = -swiperSize;
|
42588 | tz = 3 * swiperSize + swiperSize * 4 * round;
|
42589 | }
|
42590 |
|
42591 | if (rtl) {
|
42592 | tx = -tx;
|
42593 | }
|
42594 |
|
42595 | if (!isHorizontal) {
|
42596 | ty = tx;
|
42597 | tx = 0;
|
42598 | }
|
42599 |
|
42600 | var transform = "rotateX(" + (isHorizontal ? 0 : -slideAngle) + "deg) rotateY(" + (isHorizontal ? slideAngle : 0) + "deg) translate3d(" + tx + "px, " + ty + "px, " + tz + "px)";
|
42601 |
|
42602 | if (progress <= 1 && progress > -1) {
|
42603 | wrapperRotate = slideIndex * 90 + progress * 90;
|
42604 | if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;
|
42605 | }
|
42606 |
|
42607 | $slideEl.transform(transform);
|
42608 |
|
42609 | if (params.slideShadows) {
|
42610 |
|
42611 | var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
|
42612 | var shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
|
42613 |
|
42614 | if (shadowBefore.length === 0) {
|
42615 | shadowBefore = $$1("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
|
42616 | $slideEl.append(shadowBefore);
|
42617 | }
|
42618 |
|
42619 | if (shadowAfter.length === 0) {
|
42620 | shadowAfter = $$1("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
|
42621 | $slideEl.append(shadowAfter);
|
42622 | }
|
42623 |
|
42624 | if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
|
42625 | if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
|
42626 | }
|
42627 | }
|
42628 |
|
42629 | $wrapperEl.css({
|
42630 | '-webkit-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
|
42631 | '-moz-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
|
42632 | '-ms-transform-origin': "50% 50% -" + swiperSize / 2 + "px",
|
42633 | 'transform-origin': "50% 50% -" + swiperSize / 2 + "px"
|
42634 | });
|
42635 |
|
42636 | if (params.shadow) {
|
42637 | if (isHorizontal) {
|
42638 | $cubeShadowEl.transform("translate3d(0px, " + (swiperWidth / 2 + params.shadowOffset) + "px, " + -swiperWidth / 2 + "px) rotateX(90deg) rotateZ(0deg) scale(" + params.shadowScale + ")");
|
42639 | } else {
|
42640 | var shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;
|
42641 | var multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);
|
42642 | var scale1 = params.shadowScale;
|
42643 | var scale2 = params.shadowScale / multiplier;
|
42644 | var offset = params.shadowOffset;
|
42645 | $cubeShadowEl.transform("scale3d(" + scale1 + ", 1, " + scale2 + ") translate3d(0px, " + (swiperHeight / 2 + offset) + "px, " + -swiperHeight / 2 / scale2 + "px) rotateX(-90deg)");
|
42646 | }
|
42647 | }
|
42648 |
|
42649 | var zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;
|
42650 | $wrapperEl.transform("translate3d(0px,0," + zFactor + "px) rotateX(" + (swiper.isHorizontal() ? 0 : wrapperRotate) + "deg) rotateY(" + (swiper.isHorizontal() ? -wrapperRotate : 0) + "deg)");
|
42651 | },
|
42652 | setTransition: function setTransition(duration) {
|
42653 | var swiper = this;
|
42654 | var $el = swiper.$el,
|
42655 | slides = swiper.slides;
|
42656 | slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
|
42657 |
|
42658 | if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {
|
42659 | $el.find('.swiper-cube-shadow').transition(duration);
|
42660 | }
|
42661 | }
|
42662 | };
|
42663 | var EffectCube = {
|
42664 | name: 'effect-cube',
|
42665 | params: {
|
42666 | cubeEffect: {
|
42667 | slideShadows: true,
|
42668 | shadow: true,
|
42669 | shadowOffset: 20,
|
42670 | shadowScale: 0.94
|
42671 | }
|
42672 | },
|
42673 | create: function create() {
|
42674 | var swiper = this;
|
42675 | bindModuleMethods(swiper, {
|
42676 | cubeEffect: _extends$3({}, Cube)
|
42677 | });
|
42678 | },
|
42679 | on: {
|
42680 | beforeInit: function beforeInit(swiper) {
|
42681 | if (swiper.params.effect !== 'cube') return;
|
42682 | swiper.classNames.push(swiper.params.containerModifierClass + "cube");
|
42683 | swiper.classNames.push(swiper.params.containerModifierClass + "3d");
|
42684 | var overwriteParams = {
|
42685 | slidesPerView: 1,
|
42686 | slidesPerColumn: 1,
|
42687 | slidesPerGroup: 1,
|
42688 | watchSlidesProgress: true,
|
42689 | resistanceRatio: 0,
|
42690 | spaceBetween: 0,
|
42691 | centeredSlides: false,
|
42692 | virtualTranslate: true
|
42693 | };
|
42694 | extend(swiper.params, overwriteParams);
|
42695 | extend(swiper.originalParams, overwriteParams);
|
42696 | },
|
42697 | setTranslate: function setTranslate(swiper) {
|
42698 | if (swiper.params.effect !== 'cube') return;
|
42699 | swiper.cubeEffect.setTranslate();
|
42700 | },
|
42701 | setTransition: function setTransition(swiper, duration) {
|
42702 | if (swiper.params.effect !== 'cube') return;
|
42703 | swiper.cubeEffect.setTransition(duration);
|
42704 | }
|
42705 | }
|
42706 | };
|
42707 |
|
42708 | function _extends$2() {
|
42709 | _extends$2 = Object.assign || function (target) {
|
42710 | for (var i = 1; i < arguments.length; i++) {
|
42711 | var source = arguments[i];
|
42712 |
|
42713 | for (var key in source) {
|
42714 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
42715 | target[key] = source[key];
|
42716 | }
|
42717 | }
|
42718 | }
|
42719 |
|
42720 | return target;
|
42721 | };
|
42722 |
|
42723 | return _extends$2.apply(this, arguments);
|
42724 | }
|
42725 | var Flip = {
|
42726 | setTranslate: function setTranslate() {
|
42727 | var swiper = this;
|
42728 | var slides = swiper.slides,
|
42729 | rtl = swiper.rtlTranslate;
|
42730 |
|
42731 | for (var i = 0; i < slides.length; i += 1) {
|
42732 | var $slideEl = slides.eq(i);
|
42733 | var progress = $slideEl[0].progress;
|
42734 |
|
42735 | if (swiper.params.flipEffect.limitRotation) {
|
42736 | progress = Math.max(Math.min($slideEl[0].progress, 1), -1);
|
42737 | }
|
42738 |
|
42739 | var offset = $slideEl[0].swiperSlideOffset;
|
42740 | var rotate = -180 * progress;
|
42741 | var rotateY = rotate;
|
42742 | var rotateX = 0;
|
42743 | var tx = -offset;
|
42744 | var ty = 0;
|
42745 |
|
42746 | if (!swiper.isHorizontal()) {
|
42747 | ty = tx;
|
42748 | tx = 0;
|
42749 | rotateX = -rotateY;
|
42750 | rotateY = 0;
|
42751 | } else if (rtl) {
|
42752 | rotateY = -rotateY;
|
42753 | }
|
42754 |
|
42755 | $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;
|
42756 |
|
42757 | if (swiper.params.flipEffect.slideShadows) {
|
42758 |
|
42759 | var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
|
42760 | var shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
|
42761 |
|
42762 | if (shadowBefore.length === 0) {
|
42763 | shadowBefore = $$1("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'left' : 'top') + "\"></div>");
|
42764 | $slideEl.append(shadowBefore);
|
42765 | }
|
42766 |
|
42767 | if (shadowAfter.length === 0) {
|
42768 | shadowAfter = $$1("<div class=\"swiper-slide-shadow-" + (swiper.isHorizontal() ? 'right' : 'bottom') + "\"></div>");
|
42769 | $slideEl.append(shadowAfter);
|
42770 | }
|
42771 |
|
42772 | if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);
|
42773 | if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);
|
42774 | }
|
42775 |
|
42776 | $slideEl.transform("translate3d(" + tx + "px, " + ty + "px, 0px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg)");
|
42777 | }
|
42778 | },
|
42779 | setTransition: function setTransition(duration) {
|
42780 | var swiper = this;
|
42781 | var slides = swiper.slides,
|
42782 | activeIndex = swiper.activeIndex,
|
42783 | $wrapperEl = swiper.$wrapperEl;
|
42784 | slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
|
42785 |
|
42786 | if (swiper.params.virtualTranslate && duration !== 0) {
|
42787 | var eventTriggered = false;
|
42788 |
|
42789 | slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {
|
42790 | if (eventTriggered) return;
|
42791 | if (!swiper || swiper.destroyed) return;
|
42792 |
|
42793 | eventTriggered = true;
|
42794 | swiper.animating = false;
|
42795 | var triggerEvents = ['webkitTransitionEnd', 'transitionend'];
|
42796 |
|
42797 | for (var i = 0; i < triggerEvents.length; i += 1) {
|
42798 | $wrapperEl.trigger(triggerEvents[i]);
|
42799 | }
|
42800 | });
|
42801 | }
|
42802 | }
|
42803 | };
|
42804 | var EffectFlip = {
|
42805 | name: 'effect-flip',
|
42806 | params: {
|
42807 | flipEffect: {
|
42808 | slideShadows: true,
|
42809 | limitRotation: true
|
42810 | }
|
42811 | },
|
42812 | create: function create() {
|
42813 | var swiper = this;
|
42814 | bindModuleMethods(swiper, {
|
42815 | flipEffect: _extends$2({}, Flip)
|
42816 | });
|
42817 | },
|
42818 | on: {
|
42819 | beforeInit: function beforeInit(swiper) {
|
42820 | if (swiper.params.effect !== 'flip') return;
|
42821 | swiper.classNames.push(swiper.params.containerModifierClass + "flip");
|
42822 | swiper.classNames.push(swiper.params.containerModifierClass + "3d");
|
42823 | var overwriteParams = {
|
42824 | slidesPerView: 1,
|
42825 | slidesPerColumn: 1,
|
42826 | slidesPerGroup: 1,
|
42827 | watchSlidesProgress: true,
|
42828 | spaceBetween: 0,
|
42829 | virtualTranslate: true
|
42830 | };
|
42831 | extend(swiper.params, overwriteParams);
|
42832 | extend(swiper.originalParams, overwriteParams);
|
42833 | },
|
42834 | setTranslate: function setTranslate(swiper) {
|
42835 | if (swiper.params.effect !== 'flip') return;
|
42836 | swiper.flipEffect.setTranslate();
|
42837 | },
|
42838 | setTransition: function setTransition(swiper, duration) {
|
42839 | if (swiper.params.effect !== 'flip') return;
|
42840 | swiper.flipEffect.setTransition(duration);
|
42841 | }
|
42842 | }
|
42843 | };
|
42844 |
|
42845 | function _extends$1() {
|
42846 | _extends$1 = Object.assign || function (target) {
|
42847 | for (var i = 1; i < arguments.length; i++) {
|
42848 | var source = arguments[i];
|
42849 |
|
42850 | for (var key in source) {
|
42851 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
42852 | target[key] = source[key];
|
42853 | }
|
42854 | }
|
42855 | }
|
42856 |
|
42857 | return target;
|
42858 | };
|
42859 |
|
42860 | return _extends$1.apply(this, arguments);
|
42861 | }
|
42862 | var Coverflow = {
|
42863 | setTranslate: function setTranslate() {
|
42864 | var swiper = this;
|
42865 | var swiperWidth = swiper.width,
|
42866 | swiperHeight = swiper.height,
|
42867 | slides = swiper.slides,
|
42868 | slidesSizesGrid = swiper.slidesSizesGrid;
|
42869 | var params = swiper.params.coverflowEffect;
|
42870 | var isHorizontal = swiper.isHorizontal();
|
42871 | var transform = swiper.translate;
|
42872 | var center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;
|
42873 | var rotate = isHorizontal ? params.rotate : -params.rotate;
|
42874 | var translate = params.depth;
|
42875 |
|
42876 | for (var i = 0, length = slides.length; i < length; i += 1) {
|
42877 | var $slideEl = slides.eq(i);
|
42878 | var slideSize = slidesSizesGrid[i];
|
42879 | var slideOffset = $slideEl[0].swiperSlideOffset;
|
42880 | var offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;
|
42881 | var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;
|
42882 | var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;
|
42883 |
|
42884 | var translateZ = -translate * Math.abs(offsetMultiplier);
|
42885 | var stretch = params.stretch;
|
42886 |
|
42887 | if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {
|
42888 | stretch = parseFloat(params.stretch) / 100 * slideSize;
|
42889 | }
|
42890 |
|
42891 | var translateY = isHorizontal ? 0 : stretch * offsetMultiplier;
|
42892 | var translateX = isHorizontal ? stretch * offsetMultiplier : 0;
|
42893 | var scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);
|
42894 |
|
42895 | if (Math.abs(translateX) < 0.001) translateX = 0;
|
42896 | if (Math.abs(translateY) < 0.001) translateY = 0;
|
42897 | if (Math.abs(translateZ) < 0.001) translateZ = 0;
|
42898 | if (Math.abs(rotateY) < 0.001) rotateY = 0;
|
42899 | if (Math.abs(rotateX) < 0.001) rotateX = 0;
|
42900 | if (Math.abs(scale) < 0.001) scale = 0;
|
42901 | var slideTransform = "translate3d(" + translateX + "px," + translateY + "px," + translateZ + "px) rotateX(" + rotateX + "deg) rotateY(" + rotateY + "deg) scale(" + scale + ")";
|
42902 | $slideEl.transform(slideTransform);
|
42903 | $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;
|
42904 |
|
42905 | if (params.slideShadows) {
|
42906 |
|
42907 | var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');
|
42908 | var $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');
|
42909 |
|
42910 | if ($shadowBeforeEl.length === 0) {
|
42911 | $shadowBeforeEl = $$1("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'left' : 'top') + "\"></div>");
|
42912 | $slideEl.append($shadowBeforeEl);
|
42913 | }
|
42914 |
|
42915 | if ($shadowAfterEl.length === 0) {
|
42916 | $shadowAfterEl = $$1("<div class=\"swiper-slide-shadow-" + (isHorizontal ? 'right' : 'bottom') + "\"></div>");
|
42917 | $slideEl.append($shadowAfterEl);
|
42918 | }
|
42919 |
|
42920 | if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;
|
42921 | if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;
|
42922 | }
|
42923 | }
|
42924 | },
|
42925 | setTransition: function setTransition(duration) {
|
42926 | var swiper = this;
|
42927 | swiper.slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);
|
42928 | }
|
42929 | };
|
42930 | var EffectCoverflow = {
|
42931 | name: 'effect-coverflow',
|
42932 | params: {
|
42933 | coverflowEffect: {
|
42934 | rotate: 50,
|
42935 | stretch: 0,
|
42936 | depth: 100,
|
42937 | scale: 1,
|
42938 | modifier: 1,
|
42939 | slideShadows: true
|
42940 | }
|
42941 | },
|
42942 | create: function create() {
|
42943 | var swiper = this;
|
42944 | bindModuleMethods(swiper, {
|
42945 | coverflowEffect: _extends$1({}, Coverflow)
|
42946 | });
|
42947 | },
|
42948 | on: {
|
42949 | beforeInit: function beforeInit(swiper) {
|
42950 | if (swiper.params.effect !== 'coverflow') return;
|
42951 | swiper.classNames.push(swiper.params.containerModifierClass + "coverflow");
|
42952 | swiper.classNames.push(swiper.params.containerModifierClass + "3d");
|
42953 | swiper.params.watchSlidesProgress = true;
|
42954 | swiper.originalParams.watchSlidesProgress = true;
|
42955 | },
|
42956 | setTranslate: function setTranslate(swiper) {
|
42957 | if (swiper.params.effect !== 'coverflow') return;
|
42958 | swiper.coverflowEffect.setTranslate();
|
42959 | },
|
42960 | setTransition: function setTransition(swiper, duration) {
|
42961 | if (swiper.params.effect !== 'coverflow') return;
|
42962 | swiper.coverflowEffect.setTransition(duration);
|
42963 | }
|
42964 | }
|
42965 | };
|
42966 |
|
42967 | function _extends() {
|
42968 | _extends = Object.assign || function (target) {
|
42969 | for (var i = 1; i < arguments.length; i++) {
|
42970 | var source = arguments[i];
|
42971 |
|
42972 | for (var key in source) {
|
42973 | if (Object.prototype.hasOwnProperty.call(source, key)) {
|
42974 | target[key] = source[key];
|
42975 | }
|
42976 | }
|
42977 | }
|
42978 |
|
42979 | return target;
|
42980 | };
|
42981 |
|
42982 | return _extends.apply(this, arguments);
|
42983 | }
|
42984 | var Thumbs = {
|
42985 | init: function init() {
|
42986 | var swiper = this;
|
42987 | var thumbsParams = swiper.params.thumbs;
|
42988 | if (swiper.thumbs.initialized) return false;
|
42989 | swiper.thumbs.initialized = true;
|
42990 | var SwiperClass = swiper.constructor;
|
42991 |
|
42992 | if (thumbsParams.swiper instanceof SwiperClass) {
|
42993 | swiper.thumbs.swiper = thumbsParams.swiper;
|
42994 | extend(swiper.thumbs.swiper.originalParams, {
|
42995 | watchSlidesProgress: true,
|
42996 | slideToClickedSlide: false
|
42997 | });
|
42998 | extend(swiper.thumbs.swiper.params, {
|
42999 | watchSlidesProgress: true,
|
43000 | slideToClickedSlide: false
|
43001 | });
|
43002 | } else if (isObject(thumbsParams.swiper)) {
|
43003 | swiper.thumbs.swiper = new SwiperClass(extend({}, thumbsParams.swiper, {
|
43004 | watchSlidesVisibility: true,
|
43005 | watchSlidesProgress: true,
|
43006 | slideToClickedSlide: false
|
43007 | }));
|
43008 | swiper.thumbs.swiperCreated = true;
|
43009 | }
|
43010 |
|
43011 | swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);
|
43012 | swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);
|
43013 | return true;
|
43014 | },
|
43015 | onThumbClick: function onThumbClick() {
|
43016 | var swiper = this;
|
43017 | var thumbsSwiper = swiper.thumbs.swiper;
|
43018 | if (!thumbsSwiper) return;
|
43019 | var clickedIndex = thumbsSwiper.clickedIndex;
|
43020 | var clickedSlide = thumbsSwiper.clickedSlide;
|
43021 | if (clickedSlide && $$1(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;
|
43022 | if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;
|
43023 | var slideToIndex;
|
43024 |
|
43025 | if (thumbsSwiper.params.loop) {
|
43026 | slideToIndex = parseInt($$1(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);
|
43027 | } else {
|
43028 | slideToIndex = clickedIndex;
|
43029 | }
|
43030 |
|
43031 | if (swiper.params.loop) {
|
43032 | var currentIndex = swiper.activeIndex;
|
43033 |
|
43034 | if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {
|
43035 | swiper.loopFix();
|
43036 |
|
43037 | swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;
|
43038 | currentIndex = swiper.activeIndex;
|
43039 | }
|
43040 |
|
43041 | var prevIndex = swiper.slides.eq(currentIndex).prevAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
|
43042 | var nextIndex = swiper.slides.eq(currentIndex).nextAll("[data-swiper-slide-index=\"" + slideToIndex + "\"]").eq(0).index();
|
43043 | if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;
|
43044 | }
|
43045 |
|
43046 | swiper.slideTo(slideToIndex);
|
43047 | },
|
43048 | update: function update(initial) {
|
43049 | var swiper = this;
|
43050 | var thumbsSwiper = swiper.thumbs.swiper;
|
43051 | if (!thumbsSwiper) return;
|
43052 | var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
|
43053 | var autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
|
43054 | var useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
|
43055 |
|
43056 | if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {
|
43057 | var currentThumbsIndex = thumbsSwiper.activeIndex;
|
43058 | var newThumbsIndex;
|
43059 | var direction;
|
43060 |
|
43061 | if (thumbsSwiper.params.loop) {
|
43062 | if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {
|
43063 | thumbsSwiper.loopFix();
|
43064 |
|
43065 | thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;
|
43066 | currentThumbsIndex = thumbsSwiper.activeIndex;
|
43067 | }
|
43068 |
|
43069 |
|
43070 | var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
|
43071 | var nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll("[data-swiper-slide-index=\"" + swiper.realIndex + "\"]").eq(0).index();
|
43072 | if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;else newThumbsIndex = prevThumbsIndex;
|
43073 | direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';
|
43074 | } else {
|
43075 | newThumbsIndex = swiper.realIndex;
|
43076 | direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';
|
43077 | }
|
43078 |
|
43079 | if (useOffset) {
|
43080 | newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;
|
43081 | }
|
43082 |
|
43083 | if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {
|
43084 | if (thumbsSwiper.params.centeredSlides) {
|
43085 | if (newThumbsIndex > currentThumbsIndex) {
|
43086 | newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;
|
43087 | } else {
|
43088 | newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;
|
43089 | }
|
43090 | } else if (newThumbsIndex > currentThumbsIndex) {
|
43091 | newThumbsIndex = newThumbsIndex - slidesPerView + 1;
|
43092 | }
|
43093 |
|
43094 | thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
|
43095 | }
|
43096 | }
|
43097 |
|
43098 |
|
43099 | var thumbsToActivate = 1;
|
43100 | var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
|
43101 |
|
43102 | if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
|
43103 | thumbsToActivate = swiper.params.slidesPerView;
|
43104 | }
|
43105 |
|
43106 | if (!swiper.params.thumbs.multipleActiveThumbs) {
|
43107 | thumbsToActivate = 1;
|
43108 | }
|
43109 |
|
43110 | thumbsToActivate = Math.floor(thumbsToActivate);
|
43111 | thumbsSwiper.slides.removeClass(thumbActiveClass);
|
43112 |
|
43113 | if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
|
43114 | for (var i = 0; i < thumbsToActivate; i += 1) {
|
43115 | thumbsSwiper.$wrapperEl.children("[data-swiper-slide-index=\"" + (swiper.realIndex + i) + "\"]").addClass(thumbActiveClass);
|
43116 | }
|
43117 | } else {
|
43118 | for (var _i = 0; _i < thumbsToActivate; _i += 1) {
|
43119 | thumbsSwiper.slides.eq(swiper.realIndex + _i).addClass(thumbActiveClass);
|
43120 | }
|
43121 | }
|
43122 | }
|
43123 | };
|
43124 | var Thumbs$1 = {
|
43125 | name: 'thumbs',
|
43126 | params: {
|
43127 | thumbs: {
|
43128 | swiper: null,
|
43129 | multipleActiveThumbs: true,
|
43130 | autoScrollOffset: 0,
|
43131 | slideThumbActiveClass: 'swiper-slide-thumb-active',
|
43132 | thumbsContainerClass: 'swiper-container-thumbs'
|
43133 | }
|
43134 | },
|
43135 | create: function create() {
|
43136 | var swiper = this;
|
43137 | bindModuleMethods(swiper, {
|
43138 | thumbs: _extends({
|
43139 | swiper: null,
|
43140 | initialized: false
|
43141 | }, Thumbs)
|
43142 | });
|
43143 | },
|
43144 | on: {
|
43145 | beforeInit: function beforeInit(swiper) {
|
43146 | var thumbs = swiper.params.thumbs;
|
43147 | if (!thumbs || !thumbs.swiper) return;
|
43148 | swiper.thumbs.init();
|
43149 | swiper.thumbs.update(true);
|
43150 | },
|
43151 | slideChange: function slideChange(swiper) {
|
43152 | if (!swiper.thumbs.swiper) return;
|
43153 | swiper.thumbs.update();
|
43154 | },
|
43155 | update: function update(swiper) {
|
43156 | if (!swiper.thumbs.swiper) return;
|
43157 | swiper.thumbs.update();
|
43158 | },
|
43159 | resize: function resize(swiper) {
|
43160 | if (!swiper.thumbs.swiper) return;
|
43161 | swiper.thumbs.update();
|
43162 | },
|
43163 | observerUpdate: function observerUpdate(swiper) {
|
43164 | if (!swiper.thumbs.swiper) return;
|
43165 | swiper.thumbs.update();
|
43166 | },
|
43167 | setTransition: function setTransition(swiper, duration) {
|
43168 | var thumbsSwiper = swiper.thumbs.swiper;
|
43169 | if (!thumbsSwiper) return;
|
43170 | thumbsSwiper.setTransition(duration);
|
43171 | },
|
43172 | beforeDestroy: function beforeDestroy(swiper) {
|
43173 | var thumbsSwiper = swiper.thumbs.swiper;
|
43174 | if (!thumbsSwiper) return;
|
43175 |
|
43176 | if (swiper.thumbs.swiperCreated && thumbsSwiper) {
|
43177 | thumbsSwiper.destroy();
|
43178 | }
|
43179 | }
|
43180 | }
|
43181 | };
|
43182 |
|
43183 | |
43184 |
|
43185 |
|
43186 |
|
43187 |
|
43188 |
|
43189 |
|
43190 |
|
43191 |
|
43192 |
|
43193 |
|
43194 |
|
43195 | var components = [Virtual$1, Keyboard$1, Mousewheel$1, Navigation$1, Pagination$1, Scrollbar$1, Parallax$1, Zoom$1, Lazy$1, Controller$1, A11y$1, History$1, HashNavigation$1, Autoplay$1, EffectFade, EffectCube, EffectFlip, EffectCoverflow, Thumbs$1];
|
43196 | Swiper$1.use(components);
|
43197 |
|
43198 |
|
43199 |
|
43200 | if (!window.Swiper) {
|
43201 | window.Swiper = Swiper$1;
|
43202 | }
|
43203 |
|
43204 |
|
43205 |
|
43206 |
|
43207 | function initSwiper(swiperEl) {
|
43208 | var app = this;
|
43209 | var $swiperEl = $(swiperEl);
|
43210 | if ($swiperEl.length === 0) return;
|
43211 | if ($swiperEl[0].swiper) return;
|
43212 | var initialSlide;
|
43213 | var params = {};
|
43214 | var isTabs;
|
43215 | var isRoutableTabs;
|
43216 |
|
43217 | if ($swiperEl.hasClass('tabs-swipeable-wrap')) {
|
43218 | $swiperEl.addClass('swiper-container').children('.tabs').addClass('swiper-wrapper').children('.tab').addClass('swiper-slide');
|
43219 | initialSlide = $swiperEl.children('.tabs').children('.tab-active').index();
|
43220 | isTabs = true;
|
43221 | isRoutableTabs = $swiperEl.find('.tabs-routable').length > 0;
|
43222 | }
|
43223 |
|
43224 | if ($swiperEl.attr('data-swiper')) {
|
43225 | params = JSON.parse($swiperEl.attr('data-swiper'));
|
43226 | } else if ($swiperEl[0].f7SwiperParams) {
|
43227 | params = $swiperEl[0].f7SwiperParams;
|
43228 | } else {
|
43229 | params = $swiperEl.dataset();
|
43230 | Object.keys(params).forEach(function (key) {
|
43231 | var value = params[key];
|
43232 |
|
43233 | if (typeof value === 'string' && value.indexOf('{') === 0 && value.indexOf('}') > 0) {
|
43234 | try {
|
43235 | params[key] = JSON.parse(value);
|
43236 | } catch (e) {
|
43237 | }
|
43238 | }
|
43239 | });
|
43240 | }
|
43241 |
|
43242 | if (typeof params.initialSlide === 'undefined' && typeof initialSlide !== 'undefined') {
|
43243 | params.initialSlide = initialSlide;
|
43244 | }
|
43245 |
|
43246 | var swiper = app.swiper.create($swiperEl[0], params);
|
43247 |
|
43248 | function updateSwiper() {
|
43249 | swiper.update();
|
43250 | }
|
43251 |
|
43252 | var $tabEl = $swiperEl.parents('.tab').filter(function (tabEl) {
|
43253 | return $(tabEl).parent('.tabs').parent('.tabs-animated-wrap, .tabs-swipeable-wrap').length === 0;
|
43254 | }).eq(0);
|
43255 | $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').on('modal:open', updateSwiper);
|
43256 | $swiperEl.parents('.panel').on('panel:open', updateSwiper);
|
43257 |
|
43258 | if ($tabEl && $tabEl.length) {
|
43259 | $tabEl.on('tab:show', updateSwiper);
|
43260 | }
|
43261 |
|
43262 | swiper.on('beforeDestroy', function () {
|
43263 | $swiperEl.parents('.popup, .login-screen, .sheet-modal, .popover').off('modal:open', updateSwiper);
|
43264 | $swiperEl.parents('.panel').off('panel:open', updateSwiper);
|
43265 |
|
43266 | if ($tabEl && $tabEl.length) {
|
43267 | $tabEl.off('tab:show', updateSwiper);
|
43268 | }
|
43269 | });
|
43270 |
|
43271 | if (isTabs) {
|
43272 | swiper.on('slideChange', function () {
|
43273 | if (isRoutableTabs) {
|
43274 | var view = app.views.get($swiperEl.parents('.view'));
|
43275 | if (!view) view = app.views.main;
|
43276 | var router = view.router;
|
43277 | var tabRouteUrl = router.findTabRouteUrl(swiper.slides.eq(swiper.activeIndex)[0]);
|
43278 |
|
43279 | if (tabRouteUrl) {
|
43280 | setTimeout(function () {
|
43281 | router.navigate(tabRouteUrl);
|
43282 | }, 0);
|
43283 | }
|
43284 | } else {
|
43285 | app.tab.show({
|
43286 | tabEl: swiper.slides.eq(swiper.activeIndex)
|
43287 | });
|
43288 | }
|
43289 | });
|
43290 | }
|
43291 | }
|
43292 |
|
43293 | var Swiper = {
|
43294 | name: 'swiper',
|
43295 | static: {
|
43296 | Swiper: Swiper$1
|
43297 | },
|
43298 | create: function create() {
|
43299 | var app = this;
|
43300 | app.swiper = ConstructorMethods({
|
43301 | defaultSelector: '.swiper-container',
|
43302 | constructor: Swiper$1,
|
43303 | domProp: 'swiper'
|
43304 | });
|
43305 | },
|
43306 | on: {
|
43307 | pageBeforeRemove: function pageBeforeRemove(page) {
|
43308 | var app = this;
|
43309 | page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
|
43310 | app.swiper.destroy(swiperEl);
|
43311 | });
|
43312 | },
|
43313 | pageMounted: function pageMounted(page) {
|
43314 | var app = this;
|
43315 | page.$el.find('.tabs-swipeable-wrap').each(function (swiperEl) {
|
43316 | initSwiper.call(app, swiperEl);
|
43317 | });
|
43318 | },
|
43319 | pageInit: function pageInit(page) {
|
43320 | var app = this;
|
43321 | page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
|
43322 | initSwiper.call(app, swiperEl);
|
43323 | });
|
43324 | },
|
43325 | pageReinit: function pageReinit(page) {
|
43326 | var app = this;
|
43327 | page.$el.find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
|
43328 | var swiper = app.swiper.get(swiperEl);
|
43329 | if (swiper && swiper.update) swiper.update();
|
43330 | });
|
43331 | },
|
43332 | tabMounted: function tabMounted(tabEl) {
|
43333 | var app = this;
|
43334 | $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
|
43335 | initSwiper.call(app, swiperEl);
|
43336 | });
|
43337 | },
|
43338 | tabShow: function tabShow(tabEl) {
|
43339 | var app = this;
|
43340 | $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
|
43341 | var swiper = app.swiper.get(swiperEl);
|
43342 | if (swiper && swiper.update) swiper.update();
|
43343 | });
|
43344 | },
|
43345 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
43346 | var app = this;
|
43347 | $(tabEl).find('.swiper-init, .tabs-swipeable-wrap').each(function (swiperEl) {
|
43348 | app.swiper.destroy(swiperEl);
|
43349 | });
|
43350 | }
|
43351 | },
|
43352 | vnode: {
|
43353 | 'swiper-init': {
|
43354 | insert: function insert(vnode) {
|
43355 | var app = this;
|
43356 | var swiperEl = vnode.elm;
|
43357 | initSwiper.call(app, swiperEl);
|
43358 | },
|
43359 | destroy: function destroy(vnode) {
|
43360 | var app = this;
|
43361 | var swiperEl = vnode.elm;
|
43362 | app.swiper.destroy(swiperEl);
|
43363 | }
|
43364 | },
|
43365 | 'tabs-swipeable-wrap': {
|
43366 | insert: function insert(vnode) {
|
43367 | var app = this;
|
43368 | var swiperEl = vnode.elm;
|
43369 | initSwiper.call(app, swiperEl);
|
43370 | },
|
43371 | destroy: function destroy(vnode) {
|
43372 | var app = this;
|
43373 | var swiperEl = vnode.elm;
|
43374 | app.swiper.destroy(swiperEl);
|
43375 | }
|
43376 | }
|
43377 | }
|
43378 | };
|
43379 |
|
43380 | var PhotoBrowser$1 = function (_Framework7Class) {
|
43381 | _inheritsLoose(PhotoBrowser, _Framework7Class);
|
43382 |
|
43383 | function PhotoBrowser(app, params) {
|
43384 | var _this;
|
43385 |
|
43386 | if (params === void 0) {
|
43387 | params = {};
|
43388 | }
|
43389 |
|
43390 | _this = _Framework7Class.call(this, params, [app]) || this;
|
43391 |
|
43392 | var pb = _assertThisInitialized(_this);
|
43393 |
|
43394 | pb.app = app;
|
43395 | var defaults = extend$1({
|
43396 | on: {}
|
43397 | }, app.params.photoBrowser);
|
43398 |
|
43399 | pb.useModulesParams(defaults);
|
43400 | pb.params = extend$1(defaults, params);
|
43401 | extend$1(pb, {
|
43402 | exposed: false,
|
43403 | opened: false,
|
43404 | activeIndex: pb.params.swiper.initialSlide,
|
43405 | url: pb.params.url,
|
43406 | swipeToClose: {
|
43407 | allow: true,
|
43408 | isTouched: false,
|
43409 | diff: undefined,
|
43410 | start: undefined,
|
43411 | current: undefined,
|
43412 | started: false,
|
43413 | activeSlide: undefined,
|
43414 | timeStart: undefined
|
43415 | }
|
43416 | });
|
43417 |
|
43418 | pb.useModules();
|
43419 |
|
43420 | pb.init();
|
43421 | return _this;
|
43422 | }
|
43423 |
|
43424 | var _proto = PhotoBrowser.prototype;
|
43425 |
|
43426 | _proto.onSlideChange = function onSlideChange(swiper) {
|
43427 | var pb = this;
|
43428 | pb.activeIndex = swiper.activeIndex;
|
43429 | var current = swiper.activeIndex + 1;
|
43430 | var total = pb.params.virtualSlides ? pb.params.photos.length : swiper.slides.length;
|
43431 |
|
43432 | if (swiper.params.loop) {
|
43433 | total -= 2;
|
43434 | current -= swiper.loopedSlides;
|
43435 | if (current < 1) current = total + current;
|
43436 | if (current > total) current -= total;
|
43437 | }
|
43438 |
|
43439 | var $activeSlideEl = pb.params.virtualSlides ? swiper.$wrapperEl.find(".swiper-slide[data-swiper-slide-index=\"" + swiper.activeIndex + "\"]") : swiper.slides.eq(swiper.activeIndex);
|
43440 | var $previousSlideEl = pb.params.virtualSlides ? swiper.$wrapperEl.find(".swiper-slide[data-swiper-slide-index=\"" + swiper.previousIndex + "\"]") : swiper.slides.eq(swiper.previousIndex);
|
43441 | var $currentEl = pb.$el.find('.photo-browser-current');
|
43442 | var $totalEl = pb.$el.find('.photo-browser-total');
|
43443 | var navbarEl;
|
43444 |
|
43445 | if (pb.params.type === 'page' && pb.params.navbar && $currentEl.length === 0 && pb.app.theme === 'ios') {
|
43446 | navbarEl = pb.app.navbar.getElByPage(pb.$el);
|
43447 |
|
43448 | if (navbarEl) {
|
43449 | $currentEl = $(navbarEl).find('.photo-browser-current');
|
43450 | $totalEl = $(navbarEl).find('.photo-browser-total');
|
43451 | }
|
43452 | }
|
43453 |
|
43454 | if ($currentEl.length && $totalEl.length) {
|
43455 | $currentEl.text(current);
|
43456 | $totalEl.text(total);
|
43457 | if (!navbarEl) navbarEl = $currentEl.parents('.navbar')[0];
|
43458 |
|
43459 | if (navbarEl) {
|
43460 | pb.app.navbar.size(navbarEl);
|
43461 | }
|
43462 | }
|
43463 |
|
43464 |
|
43465 | if (pb.captions.length > 0) {
|
43466 | var captionIndex = swiper.params.loop ? $activeSlideEl.attr('data-swiper-slide-index') : pb.activeIndex;
|
43467 | pb.$captionsContainerEl.find('.photo-browser-caption-active').removeClass('photo-browser-caption-active');
|
43468 | pb.$captionsContainerEl.find("[data-caption-index=\"" + captionIndex + "\"]").addClass('photo-browser-caption-active');
|
43469 | }
|
43470 |
|
43471 |
|
43472 | var previousSlideVideo = $previousSlideEl.find('video');
|
43473 |
|
43474 | if (previousSlideVideo.length > 0) {
|
43475 | if ('pause' in previousSlideVideo[0]) previousSlideVideo[0].pause();
|
43476 | }
|
43477 | };
|
43478 |
|
43479 | _proto.onTouchStart = function onTouchStart() {
|
43480 | var pb = this;
|
43481 | var swipeToClose = pb.swipeToClose;
|
43482 | if (!swipeToClose.allow) return;
|
43483 | swipeToClose.isTouched = true;
|
43484 | };
|
43485 |
|
43486 | _proto.onTouchMove = function onTouchMove(e) {
|
43487 | var pb = this;
|
43488 | var swipeToClose = pb.swipeToClose;
|
43489 | if (!swipeToClose.isTouched) return;
|
43490 |
|
43491 | if (!swipeToClose.started) {
|
43492 | swipeToClose.started = true;
|
43493 | swipeToClose.start = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
43494 |
|
43495 | if (pb.params.virtualSlides) {
|
43496 | swipeToClose.activeSlide = pb.swiper.$wrapperEl.children('.swiper-slide-active');
|
43497 | } else {
|
43498 | swipeToClose.activeSlide = pb.swiper.slides.eq(pb.swiper.activeIndex);
|
43499 | }
|
43500 |
|
43501 | swipeToClose.timeStart = now$1();
|
43502 | }
|
43503 |
|
43504 | e.preventDefault();
|
43505 | swipeToClose.current = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
43506 | swipeToClose.diff = swipeToClose.start - swipeToClose.current;
|
43507 | pb.$el.transition(0).transform("translate3d(0," + -swipeToClose.diff + "px,0)");
|
43508 | };
|
43509 |
|
43510 | _proto.onTouchEnd = function onTouchEnd() {
|
43511 | var pb = this;
|
43512 | var swipeToClose = pb.swipeToClose;
|
43513 | swipeToClose.isTouched = false;
|
43514 |
|
43515 | if (!swipeToClose.started) {
|
43516 | swipeToClose.started = false;
|
43517 | return;
|
43518 | }
|
43519 |
|
43520 | swipeToClose.started = false;
|
43521 | swipeToClose.allow = false;
|
43522 | var diff = Math.abs(swipeToClose.diff);
|
43523 | var timeDiff = new Date().getTime() - swipeToClose.timeStart;
|
43524 |
|
43525 | if (timeDiff < 300 && diff > 20 || timeDiff >= 300 && diff > 100) {
|
43526 | nextTick$1(function () {
|
43527 | if (pb.$el) {
|
43528 | if (swipeToClose.diff < 0) pb.$el.addClass('swipe-close-to-bottom');else pb.$el.addClass('swipe-close-to-top');
|
43529 | }
|
43530 |
|
43531 | pb.emit('local::swipeToClose', pb);
|
43532 | pb.$el.transform('').transition('');
|
43533 | pb.close();
|
43534 | swipeToClose.allow = true;
|
43535 | });
|
43536 | return;
|
43537 | }
|
43538 |
|
43539 | if (diff !== 0) {
|
43540 | pb.$el.addClass('photo-browser-transitioning').transitionEnd(function () {
|
43541 | swipeToClose.allow = true;
|
43542 | pb.$el.removeClass('photo-browser-transitioning');
|
43543 | });
|
43544 | } else {
|
43545 | swipeToClose.allow = true;
|
43546 | }
|
43547 |
|
43548 | nextTick$1(function () {
|
43549 | pb.$el.transform('').transition('');
|
43550 | });
|
43551 | }
|
43552 | ;
|
43553 |
|
43554 | _proto.renderNavbar = function renderNavbar() {
|
43555 | var pb = this;
|
43556 | if (pb.params.renderNavbar) return pb.params.renderNavbar.call(pb);
|
43557 | var iconsColor = pb.params.iconsColor;
|
43558 | if (!pb.params.iconsColor && pb.params.theme === 'dark') iconsColor = 'white';
|
43559 | var pageBackLinkText = (pb.app.theme === 'ios' || pb.app.theme === 'aurora') && pb.params.pageBackLinkText ? pb.params.pageBackLinkText : '';
|
43560 | var renderNavbarCount = typeof pb.params.navbarShowCount === 'undefined' ? pb.params.photos.length > 1 : pb.params.navbarShowCount;
|
43561 | var isPopup = pb.params.type !== 'page';
|
43562 | return $jsx("div", {
|
43563 | class: "navbar navbar-photo-browser " + (pb.params.theme === 'dark' ? 'navbar-photo-browser-dark' : '')
|
43564 | }, $jsx("div", {
|
43565 | class: "navbar-bg"
|
43566 | }), $jsx("div", {
|
43567 | class: "navbar-inner navbar-inner-centered-title sliding"
|
43568 | }, !isPopup && $jsx("div", {
|
43569 | class: "left"
|
43570 | }, $jsx("a", {
|
43571 | class: "link " + (!pageBackLinkText ? 'icon-only' : '') + " back"
|
43572 | }, $jsx("i", {
|
43573 | class: "icon icon-back " + (iconsColor ? "color-" + iconsColor : '')
|
43574 | }), pageBackLinkText && $jsx("span", null, pageBackLinkText))), renderNavbarCount && $jsx("div", {
|
43575 | class: "title"
|
43576 | }, $jsx("span", {
|
43577 | class: "photo-browser-current"
|
43578 | }), $jsx("span", {
|
43579 | class: "photo-browser-of"
|
43580 | }, pb.params.navbarOfText), $jsx("span", {
|
43581 | class: "photo-browser-total"
|
43582 | })), isPopup && $jsx("div", {
|
43583 | class: "right"
|
43584 | }, $jsx("a", {
|
43585 | class: "link popup-close",
|
43586 | "data-popup": ".photo-browser-popup"
|
43587 | }, $jsx("span", null, pb.params.popupCloseLinkText)))));
|
43588 | };
|
43589 |
|
43590 | _proto.renderToolbar = function renderToolbar() {
|
43591 | var pb = this;
|
43592 | if (pb.params.renderToolbar) return pb.params.renderToolbar.call(pb);
|
43593 | var iconsColor = pb.params.iconsColor;
|
43594 | if (!pb.params.iconsColor && pb.params.theme === 'dark') iconsColor = 'white';
|
43595 | return $jsx("div", {
|
43596 | class: "toolbar toolbar-bottom tabbar"
|
43597 | }, $jsx("div", {
|
43598 | class: "toolbar-inner"
|
43599 | }, $jsx("a", {
|
43600 | class: "link photo-browser-prev"
|
43601 | }, $jsx("i", {
|
43602 | class: "icon icon-back " + (iconsColor ? "color-" + iconsColor : '')
|
43603 | })), $jsx("a", {
|
43604 | class: "link photo-browser-next"
|
43605 | }, $jsx("i", {
|
43606 | class: "icon icon-forward " + (iconsColor ? "color-" + iconsColor : '')
|
43607 | }))));
|
43608 | };
|
43609 |
|
43610 | _proto.renderCaption = function renderCaption(caption, index) {
|
43611 | var pb = this;
|
43612 | if (pb.params.renderCaption) return pb.params.renderCaption.call(pb, caption, index);
|
43613 | return $jsx("div", {
|
43614 | class: "photo-browser-caption",
|
43615 | "data-caption-index": index
|
43616 | }, caption);
|
43617 | };
|
43618 |
|
43619 | _proto.renderObject = function renderObject(photo, index) {
|
43620 | var pb = this;
|
43621 | if (pb.params.renderObject) return pb.params.renderObject.call(pb, photo, index);
|
43622 | return $jsx("div", {
|
43623 | class: "photo-browser-slide photo-browser-object-slide swiper-slide",
|
43624 | "data-swiper-slide-index": index
|
43625 | }, photo.html ? photo.html : photo);
|
43626 | };
|
43627 |
|
43628 | _proto.renderLazyPhoto = function renderLazyPhoto(photo, index) {
|
43629 | var pb = this;
|
43630 | if (pb.params.renderLazyPhoto) return pb.params.renderLazyPhoto.call(pb, photo, index);
|
43631 | return $jsx("div", {
|
43632 | class: "photo-browser-slide photo-browser-slide-lazy swiper-slide",
|
43633 | "data-swiper-slide-index": index
|
43634 | }, $jsx("div", {
|
43635 | class: "swiper-lazy-preloader"
|
43636 | }), $jsx("span", {
|
43637 | class: "swiper-zoom-container"
|
43638 | }, $jsx("img", {
|
43639 | "data-src": photo.url ? photo.url : photo,
|
43640 | class: "swiper-lazy"
|
43641 | })));
|
43642 | };
|
43643 |
|
43644 | _proto.renderPhoto = function renderPhoto(photo, index) {
|
43645 | var pb = this;
|
43646 | if (pb.params.renderPhoto) return pb.params.renderPhoto.call(pb, photo, index);
|
43647 | return $jsx("div", {
|
43648 | class: "photo-browser-slide swiper-slide",
|
43649 | "data-swiper-slide-index": index
|
43650 | }, $jsx("span", {
|
43651 | class: "swiper-zoom-container"
|
43652 | }, $jsx("img", {
|
43653 | src: photo.url ? photo.url : photo
|
43654 | })));
|
43655 | };
|
43656 |
|
43657 | _proto.render = function render() {
|
43658 | var pb = this;
|
43659 | if (pb.params.render) return pb.params.render.call(pb, pb.params);
|
43660 | return $jsx("div", {
|
43661 | class: "photo-browser photo-browser-" + pb.params.theme
|
43662 | }, $jsx("div", {
|
43663 | class: "view"
|
43664 | }, $jsx("div", {
|
43665 | class: "page photo-browser-page photo-browser-page-" + pb.params.theme + " no-toolbar " + (!pb.params.navbar ? 'no-navbar' : ''),
|
43666 | "data-name": "photo-browser-page"
|
43667 | }, pb.params.navbar && pb.renderNavbar(), pb.params.toolbar && pb.renderToolbar(), $jsx("div", {
|
43668 | class: "photo-browser-captions photo-browser-captions-" + (pb.params.captionsTheme || pb.params.theme)
|
43669 | }, pb.params.photos.map(function (photo, index) {
|
43670 | if (photo.caption) return pb.renderCaption(photo.caption, index);
|
43671 | return '';
|
43672 | })), $jsx("div", {
|
43673 | class: "photo-browser-swiper-container swiper-container"
|
43674 | }, $jsx("div", {
|
43675 | class: "photo-browser-swiper-wrapper swiper-wrapper"
|
43676 | }, !pb.params.virtualSlides && pb.params.photos.map(function (photo, index) {
|
43677 | if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {
|
43678 | return pb.renderObject(photo, index);
|
43679 | }
|
43680 |
|
43681 | if (pb.params.swiper.lazy === true || pb.params.swiper.lazy && pb.params.swiper.lazy.enabled) {
|
43682 | return pb.renderLazyPhoto(photo, index);
|
43683 | }
|
43684 |
|
43685 | return pb.renderPhoto(photo, index);
|
43686 | }))))));
|
43687 | };
|
43688 |
|
43689 | _proto.renderStandalone = function renderStandalone() {
|
43690 | var pb = this;
|
43691 | if (pb.params.renderStandalone) return pb.params.renderStandalone.call(pb);
|
43692 | var standaloneHtml = "<div class=\"popup photo-browser-popup photo-browser-standalone popup-tablet-fullscreen\">" + pb.render() + "</div>";
|
43693 | return standaloneHtml;
|
43694 | };
|
43695 |
|
43696 | _proto.renderPage = function renderPage() {
|
43697 | var pb = this;
|
43698 | if (pb.params.renderPage) return pb.params.renderPage.call(pb);
|
43699 | var pageHtml = pb.render();
|
43700 | return pageHtml;
|
43701 | };
|
43702 |
|
43703 | _proto.renderPopup = function renderPopup() {
|
43704 | var pb = this;
|
43705 | if (pb.params.renderPopup) return pb.params.renderPopup.call(pb);
|
43706 | var popupHtml = "<div class=\"popup photo-browser-popup\">" + pb.render() + "</div>";
|
43707 | return popupHtml;
|
43708 | }
|
43709 | ;
|
43710 |
|
43711 | _proto.onOpen = function onOpen(type, el) {
|
43712 | var pb = this;
|
43713 | var app = pb.app;
|
43714 | var $el = $(el);
|
43715 | $el[0].f7PhotoBrowser = pb;
|
43716 | pb.$el = $el;
|
43717 | pb.el = $el[0];
|
43718 | pb.openedIn = type;
|
43719 | pb.opened = true;
|
43720 | pb.$swiperContainerEl = pb.$el.find('.photo-browser-swiper-container');
|
43721 | pb.$swiperWrapperEl = pb.$el.find('.photo-browser-swiper-wrapper');
|
43722 | pb.slides = pb.$el.find('.photo-browser-slide');
|
43723 | pb.$captionsContainerEl = pb.$el.find('.photo-browser-captions');
|
43724 | pb.captions = pb.$el.find('.photo-browser-caption');
|
43725 |
|
43726 | var clickTimeout;
|
43727 | var swiperParams = extend$1({}, pb.params.swiper, {
|
43728 | initialSlide: pb.activeIndex,
|
43729 | on: {
|
43730 | click: function click(e) {
|
43731 | clearTimeout(clickTimeout);
|
43732 |
|
43733 | if (pb.params.exposition) {
|
43734 | clickTimeout = setTimeout(function () {
|
43735 | pb.expositionToggle();
|
43736 | }, 350);
|
43737 | }
|
43738 |
|
43739 | pb.emit('local::tap', e);
|
43740 | pb.emit('local::click', e);
|
43741 | },
|
43742 | doubleClick: function doubleClick(e) {
|
43743 | clearTimeout(clickTimeout);
|
43744 | pb.emit('local::doubleTap', e);
|
43745 | pb.emit('local::doubleClick', e);
|
43746 | },
|
43747 | slideChange: function slideChange() {
|
43748 | var swiper = this;
|
43749 | pb.onSlideChange(swiper);
|
43750 |
|
43751 | for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
43752 | args[_key] = arguments[_key];
|
43753 | }
|
43754 |
|
43755 | pb.emit.apply(pb, ['local::slideChange'].concat(args));
|
43756 | },
|
43757 | transitionStart: function transitionStart() {
|
43758 | for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
43759 | args[_key2] = arguments[_key2];
|
43760 | }
|
43761 |
|
43762 | pb.emit.apply(pb, ['local::transitionStart'].concat(args));
|
43763 | },
|
43764 | transitionEnd: function transitionEnd() {
|
43765 | for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
43766 | args[_key3] = arguments[_key3];
|
43767 | }
|
43768 |
|
43769 | pb.emit.apply(pb, ['local::transitionEnd'].concat(args));
|
43770 | },
|
43771 | slideChangeTransitionStart: function slideChangeTransitionStart() {
|
43772 | var swiper = this;
|
43773 | pb.onSlideChange(swiper);
|
43774 |
|
43775 | for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
43776 | args[_key4] = arguments[_key4];
|
43777 | }
|
43778 |
|
43779 | pb.emit.apply(pb, ['local::slideChangeTransitionStart'].concat(args));
|
43780 | },
|
43781 | slideChangeTransitionEnd: function slideChangeTransitionEnd() {
|
43782 | for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
43783 | args[_key5] = arguments[_key5];
|
43784 | }
|
43785 |
|
43786 | pb.emit.apply(pb, ['local::slideChangeTransitionEnd'].concat(args));
|
43787 | },
|
43788 | lazyImageLoad: function lazyImageLoad() {
|
43789 | for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
43790 | args[_key6] = arguments[_key6];
|
43791 | }
|
43792 |
|
43793 | pb.emit.apply(pb, ['local::lazyImageLoad'].concat(args));
|
43794 | },
|
43795 | lazyImageReady: function lazyImageReady() {
|
43796 | for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
43797 | args[_key7] = arguments[_key7];
|
43798 | }
|
43799 |
|
43800 | var slideEl = args[0];
|
43801 | $(slideEl).removeClass('photo-browser-slide-lazy');
|
43802 | pb.emit.apply(pb, ['local::lazyImageReady'].concat(args));
|
43803 | }
|
43804 | }
|
43805 | });
|
43806 |
|
43807 | if (pb.params.swipeToClose && pb.params.type !== 'page') {
|
43808 | extend$1(swiperParams.on, {
|
43809 | touchStart: function touchStart(swiper, e) {
|
43810 | pb.onTouchStart(e);
|
43811 | pb.emit('local::touchStart', e);
|
43812 | },
|
43813 | touchMoveOpposite: function touchMoveOpposite(swiper, e) {
|
43814 | pb.onTouchMove(e);
|
43815 | pb.emit('local::touchMoveOpposite', e);
|
43816 | },
|
43817 | touchEnd: function touchEnd(swiper, e) {
|
43818 | pb.onTouchEnd(e);
|
43819 | pb.emit('local::touchEnd', e);
|
43820 | }
|
43821 | });
|
43822 | }
|
43823 |
|
43824 | if (pb.params.virtualSlides) {
|
43825 | extend$1(swiperParams, {
|
43826 | virtual: {
|
43827 | slides: pb.params.photos,
|
43828 | renderSlide: function renderSlide(photo, index) {
|
43829 | if (photo.html || (typeof photo === 'string' || photo instanceof String) && photo.indexOf('<') >= 0 && photo.indexOf('>') >= 0) {
|
43830 | return pb.renderObject(photo, index);
|
43831 | }
|
43832 |
|
43833 | if (pb.params.swiper.lazy === true || pb.params.swiper.lazy && pb.params.swiper.lazy.enabled) {
|
43834 | return pb.renderLazyPhoto(photo, index);
|
43835 | }
|
43836 |
|
43837 | return pb.renderPhoto(photo, index);
|
43838 | }
|
43839 | }
|
43840 | });
|
43841 | }
|
43842 |
|
43843 | var window = getWindow();
|
43844 | pb.swiper = app.swiper ? app.swiper.create(pb.$swiperContainerEl, swiperParams) : new window.Swiper(pb.$swiperContainerEl, swiperParams);
|
43845 |
|
43846 | if (pb.activeIndex === 0) {
|
43847 | pb.onSlideChange(pb.swiper);
|
43848 | }
|
43849 |
|
43850 | if (pb.$el) {
|
43851 | pb.$el.trigger('photobrowser:open');
|
43852 | }
|
43853 |
|
43854 | pb.emit('local::open photoBrowserOpen', pb);
|
43855 | };
|
43856 |
|
43857 | _proto.onOpened = function onOpened() {
|
43858 | var pb = this;
|
43859 |
|
43860 | if (pb.$el && pb.params.type === 'standalone') {
|
43861 | pb.$el.css('animation', 'none');
|
43862 | }
|
43863 |
|
43864 | if (pb.$el) {
|
43865 | pb.$el.trigger('photobrowser:opened');
|
43866 | }
|
43867 |
|
43868 | pb.emit('local::opened photoBrowserOpened', pb);
|
43869 | };
|
43870 |
|
43871 | _proto.onClose = function onClose() {
|
43872 | var pb = this;
|
43873 | if (pb.destroyed) return;
|
43874 |
|
43875 | if (pb.swiper && pb.swiper.destroy) {
|
43876 | pb.swiper.destroy(true, false);
|
43877 | pb.swiper = null;
|
43878 | delete pb.swiper;
|
43879 | }
|
43880 |
|
43881 | if (pb.$el) {
|
43882 | pb.$el.trigger('photobrowser:close');
|
43883 | }
|
43884 |
|
43885 | pb.emit('local::close photoBrowserClose', pb);
|
43886 | };
|
43887 |
|
43888 | _proto.onClosed = function onClosed() {
|
43889 | var pb = this;
|
43890 | if (pb.destroyed) return;
|
43891 | pb.opened = false;
|
43892 | pb.$el = null;
|
43893 | pb.el = null;
|
43894 | delete pb.$el;
|
43895 | delete pb.el;
|
43896 |
|
43897 | if (pb.$el) {
|
43898 | pb.$el.trigger('photobrowser:closed');
|
43899 | }
|
43900 |
|
43901 | pb.emit('local::closed photoBrowserClosed', pb);
|
43902 | }
|
43903 | ;
|
43904 |
|
43905 | _proto.openPage = function openPage() {
|
43906 | var pb = this;
|
43907 | if (pb.opened) return pb;
|
43908 | var pageHtml = pb.renderPage();
|
43909 | pb.view.router.navigate({
|
43910 | url: pb.url,
|
43911 | route: {
|
43912 | content: pageHtml,
|
43913 | path: pb.url,
|
43914 | on: {
|
43915 | pageBeforeIn: function pageBeforeIn(e, page) {
|
43916 | pb.view.$el.addClass("with-photo-browser-page with-photo-browser-page-" + pb.params.theme);
|
43917 | pb.onOpen('page', page.el);
|
43918 | },
|
43919 | pageAfterIn: function pageAfterIn(e, page) {
|
43920 | pb.onOpened('page', page.el);
|
43921 | },
|
43922 | pageBeforeOut: function pageBeforeOut(e, page) {
|
43923 | pb.view.$el.removeClass("with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-" + pb.params.theme);
|
43924 | pb.onClose('page', page.el);
|
43925 | },
|
43926 | pageAfterOut: function pageAfterOut(e, page) {
|
43927 | pb.onClosed('page', page.el);
|
43928 | }
|
43929 | }
|
43930 | }
|
43931 | });
|
43932 | return pb;
|
43933 | };
|
43934 |
|
43935 | _proto.openStandalone = function openStandalone() {
|
43936 | var pb = this;
|
43937 | if (pb.opened) return pb;
|
43938 | var standaloneHtml = pb.renderStandalone();
|
43939 | var popupParams = {
|
43940 | backdrop: false,
|
43941 | content: standaloneHtml,
|
43942 | on: {
|
43943 | popupOpen: function popupOpen(popup) {
|
43944 | pb.onOpen('popup', popup.el);
|
43945 | },
|
43946 | popupOpened: function popupOpened(popup) {
|
43947 | pb.onOpened('popup', popup.el);
|
43948 | },
|
43949 | popupClose: function popupClose(popup) {
|
43950 | pb.onClose('popup', popup.el);
|
43951 | },
|
43952 | popupClosed: function popupClosed(popup) {
|
43953 | pb.onClosed('popup', popup.el);
|
43954 | }
|
43955 | }
|
43956 | };
|
43957 |
|
43958 | if (pb.params.routableModals && pb.view) {
|
43959 | pb.view.router.navigate({
|
43960 | url: pb.url,
|
43961 | route: {
|
43962 | path: pb.url,
|
43963 | popup: popupParams
|
43964 | }
|
43965 | });
|
43966 | } else {
|
43967 | pb.modal = pb.app.popup.create(popupParams).open();
|
43968 | }
|
43969 |
|
43970 | return pb;
|
43971 | };
|
43972 |
|
43973 | _proto.openPopup = function openPopup() {
|
43974 | var pb = this;
|
43975 | if (pb.opened) return pb;
|
43976 | var popupHtml = pb.renderPopup();
|
43977 | var popupParams = {
|
43978 | content: popupHtml,
|
43979 | push: pb.params.popupPush,
|
43980 | on: {
|
43981 | popupOpen: function popupOpen(popup) {
|
43982 | pb.onOpen('popup', popup.el);
|
43983 | },
|
43984 | popupOpened: function popupOpened(popup) {
|
43985 | pb.onOpened('popup', popup.el);
|
43986 | },
|
43987 | popupClose: function popupClose(popup) {
|
43988 | pb.onClose('popup', popup.el);
|
43989 | },
|
43990 | popupClosed: function popupClosed(popup) {
|
43991 | pb.onClosed('popup', popup.el);
|
43992 | }
|
43993 | }
|
43994 | };
|
43995 |
|
43996 | if (pb.params.routableModals && pb.view) {
|
43997 | pb.view.router.navigate({
|
43998 | url: pb.url,
|
43999 | route: {
|
44000 | path: pb.url,
|
44001 | popup: popupParams
|
44002 | }
|
44003 | });
|
44004 | } else {
|
44005 | pb.modal = pb.app.popup.create(popupParams).open();
|
44006 | }
|
44007 |
|
44008 | return pb;
|
44009 | }
|
44010 | ;
|
44011 |
|
44012 | _proto.expositionEnable = function expositionEnable() {
|
44013 | var pb = this;
|
44014 |
|
44015 | if (pb.params.type === 'page') {
|
44016 | pb.view.$el.addClass('with-photo-browser-page-exposed');
|
44017 | }
|
44018 |
|
44019 | if (pb.$el) pb.$el.addClass('photo-browser-exposed');
|
44020 | if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.addClass('photo-browser-captions-exposed');
|
44021 | pb.exposed = true;
|
44022 | return pb;
|
44023 | };
|
44024 |
|
44025 | _proto.expositionDisable = function expositionDisable() {
|
44026 | var pb = this;
|
44027 |
|
44028 | if (pb.params.type === 'page') {
|
44029 | pb.view.$el.removeClass('with-photo-browser-page-exposed');
|
44030 | }
|
44031 |
|
44032 | if (pb.$el) pb.$el.removeClass('photo-browser-exposed');
|
44033 | if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.removeClass('photo-browser-captions-exposed');
|
44034 | pb.exposed = false;
|
44035 | return pb;
|
44036 | };
|
44037 |
|
44038 | _proto.expositionToggle = function expositionToggle() {
|
44039 | var pb = this;
|
44040 |
|
44041 | if (pb.params.type === 'page') {
|
44042 | pb.view.$el.toggleClass('with-photo-browser-page-exposed');
|
44043 | }
|
44044 |
|
44045 | if (pb.$el) pb.$el.toggleClass('photo-browser-exposed');
|
44046 | if (pb.params.expositionHideCaptions) pb.$captionsContainerEl.toggleClass('photo-browser-captions-exposed');
|
44047 | pb.exposed = !pb.exposed;
|
44048 | return pb;
|
44049 | };
|
44050 |
|
44051 | _proto.open = function open(index) {
|
44052 | var pb = this;
|
44053 | var type = pb.params.type;
|
44054 |
|
44055 | if (pb.opened) {
|
44056 | if (pb.swiper && typeof index !== 'undefined') {
|
44057 | pb.swiper.slideTo(parseInt(index, 10));
|
44058 | }
|
44059 |
|
44060 | return pb;
|
44061 | }
|
44062 |
|
44063 | if (typeof index !== 'undefined') {
|
44064 | pb.activeIndex = index;
|
44065 | }
|
44066 |
|
44067 | if (type === 'standalone') {
|
44068 | pb.openStandalone();
|
44069 | }
|
44070 |
|
44071 | if (type === 'page') {
|
44072 | pb.openPage();
|
44073 | }
|
44074 |
|
44075 | if (type === 'popup') {
|
44076 | pb.openPopup();
|
44077 | }
|
44078 |
|
44079 | return pb;
|
44080 | };
|
44081 |
|
44082 | _proto.close = function close() {
|
44083 | var pb = this;
|
44084 | if (!pb.opened) return pb;
|
44085 |
|
44086 | if (pb.params.routableModals && pb.view || pb.openedIn === 'page') {
|
44087 | pb.view.router.back();
|
44088 | } else {
|
44089 | pb.modal.once('modalClosed', function () {
|
44090 | nextTick$1(function () {
|
44091 | if (pb.destroyed) return;
|
44092 | pb.modal.destroy();
|
44093 | delete pb.modal;
|
44094 | });
|
44095 | });
|
44096 | pb.modal.close();
|
44097 | }
|
44098 |
|
44099 | return pb;
|
44100 | }
|
44101 | ;
|
44102 |
|
44103 | _proto.init = function init() {};
|
44104 |
|
44105 | _proto.destroy = function destroy() {
|
44106 | var pb = this;
|
44107 | pb.emit('local::beforeDestroy photoBrowserBeforeDestroy', pb);
|
44108 |
|
44109 | if (pb.$el) {
|
44110 | pb.$el.trigger('photobrowser:beforedestroy');
|
44111 | pb.$el[0].f7PhotoBrowser = null;
|
44112 | delete pb.$el[0].f7PhotoBrowser;
|
44113 | }
|
44114 |
|
44115 | deleteProps$1(pb);
|
44116 | pb.destroyed = true;
|
44117 | pb = null;
|
44118 | };
|
44119 |
|
44120 | _createClass$1(PhotoBrowser, [{
|
44121 | key: "view",
|
44122 | get: function get() {
|
44123 | var params = this.params,
|
44124 | app = this.app;
|
44125 | return params.view || app.views.main;
|
44126 | }
|
44127 | }]);
|
44128 |
|
44129 | return PhotoBrowser;
|
44130 | }(Framework7Class);
|
44131 |
|
44132 | var PhotoBrowser = {
|
44133 | name: 'photoBrowser',
|
44134 | params: {
|
44135 | photoBrowser: {
|
44136 | photos: [],
|
44137 | exposition: true,
|
44138 | expositionHideCaptions: false,
|
44139 | type: 'standalone',
|
44140 | navbar: true,
|
44141 | toolbar: true,
|
44142 | theme: 'light',
|
44143 | captionsTheme: undefined,
|
44144 | iconsColor: undefined,
|
44145 | popupPush: false,
|
44146 | swipeToClose: true,
|
44147 | pageBackLinkText: 'Back',
|
44148 | popupCloseLinkText: 'Close',
|
44149 | navbarOfText: 'of',
|
44150 | navbarShowCount: undefined,
|
44151 | view: undefined,
|
44152 | url: 'photos/',
|
44153 | routableModals: false,
|
44154 | virtualSlides: true,
|
44155 | renderNavbar: undefined,
|
44156 | renderToolbar: undefined,
|
44157 | renderCaption: undefined,
|
44158 | renderObject: undefined,
|
44159 | renderLazyPhoto: undefined,
|
44160 | renderPhoto: undefined,
|
44161 | renderPage: undefined,
|
44162 | renderPopup: undefined,
|
44163 | renderStandalone: undefined,
|
44164 | swiper: {
|
44165 | initialSlide: 0,
|
44166 | spaceBetween: 20,
|
44167 | speed: 300,
|
44168 | loop: false,
|
44169 | preloadImages: true,
|
44170 | navigation: {
|
44171 | nextEl: '.photo-browser-next',
|
44172 | prevEl: '.photo-browser-prev'
|
44173 | },
|
44174 | zoom: {
|
44175 | enabled: true,
|
44176 | maxRatio: 3,
|
44177 | minRatio: 1
|
44178 | },
|
44179 | lazy: {
|
44180 | enabled: true
|
44181 | }
|
44182 | }
|
44183 | }
|
44184 | },
|
44185 | create: function create() {
|
44186 | var app = this;
|
44187 | app.photoBrowser = ConstructorMethods({
|
44188 | defaultSelector: '.photo-browser-popup, .photo-browser-page',
|
44189 | constructor: PhotoBrowser$1,
|
44190 | app: app,
|
44191 | domProp: 'f7PhotoBrowser'
|
44192 | });
|
44193 | },
|
44194 | static: {
|
44195 | PhotoBrowser: PhotoBrowser$1
|
44196 | }
|
44197 | };
|
44198 |
|
44199 | var Notification$1 = function (_Modal) {
|
44200 | _inheritsLoose(Notification, _Modal);
|
44201 |
|
44202 | function Notification(app, params) {
|
44203 | var _this;
|
44204 |
|
44205 | var extendedParams = extend$1({
|
44206 | on: {}
|
44207 | }, app.params.notification, params);
|
44208 |
|
44209 | _this = _Modal.call(this, app, extendedParams) || this;
|
44210 |
|
44211 | var notification = _assertThisInitialized(_this);
|
44212 |
|
44213 | notification.app = app;
|
44214 | notification.params = extendedParams;
|
44215 | var _notification$params = notification.params,
|
44216 | icon = _notification$params.icon,
|
44217 | title = _notification$params.title,
|
44218 | titleRightText = _notification$params.titleRightText,
|
44219 | subtitle = _notification$params.subtitle,
|
44220 | text = _notification$params.text,
|
44221 | closeButton = _notification$params.closeButton,
|
44222 | closeTimeout = _notification$params.closeTimeout,
|
44223 | cssClass = _notification$params.cssClass,
|
44224 | closeOnClick = _notification$params.closeOnClick;
|
44225 | var $el;
|
44226 |
|
44227 | if (!notification.params.el) {
|
44228 |
|
44229 | var notificationHtml = notification.render({
|
44230 | icon: icon,
|
44231 | title: title,
|
44232 | titleRightText: titleRightText,
|
44233 | subtitle: subtitle,
|
44234 | text: text,
|
44235 | closeButton: closeButton,
|
44236 | cssClass: cssClass
|
44237 | });
|
44238 | $el = $(notificationHtml);
|
44239 | } else {
|
44240 | $el = $(notification.params.el);
|
44241 | }
|
44242 |
|
44243 | if ($el && $el.length > 0 && $el[0].f7Modal) {
|
44244 | return $el[0].f7Modal || _assertThisInitialized(_this);
|
44245 | }
|
44246 |
|
44247 | if ($el.length === 0) {
|
44248 | return notification.destroy() || _assertThisInitialized(_this);
|
44249 | }
|
44250 |
|
44251 | extend$1(notification, {
|
44252 | $el: $el,
|
44253 | el: $el[0],
|
44254 | type: 'notification'
|
44255 | });
|
44256 | $el[0].f7Modal = notification;
|
44257 |
|
44258 | if (closeButton) {
|
44259 | $el.find('.notification-close-button').on('click', function () {
|
44260 | notification.close();
|
44261 | });
|
44262 | }
|
44263 |
|
44264 | $el.on('click', function (e) {
|
44265 | if (closeButton && $(e.target).closest('.notification-close-button').length) {
|
44266 | return;
|
44267 | }
|
44268 |
|
44269 | notification.emit('local::click notificationClick', notification);
|
44270 | if (closeOnClick) notification.close();
|
44271 | });
|
44272 | notification.on('beforeDestroy', function () {
|
44273 | $el.off('click');
|
44274 | });
|
44275 |
|
44276 |
|
44277 | var isTouched;
|
44278 | var isMoved;
|
44279 | var isScrolling;
|
44280 | var touchesDiff;
|
44281 | var touchStartTime;
|
44282 | var notificationHeight;
|
44283 | var touchesStart = {};
|
44284 |
|
44285 | function handleTouchStart(e) {
|
44286 | if (isTouched) return;
|
44287 | isTouched = true;
|
44288 | isMoved = false;
|
44289 | isScrolling = undefined;
|
44290 | touchStartTime = now$1();
|
44291 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
44292 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
44293 | }
|
44294 |
|
44295 | function handleTouchMove(e) {
|
44296 | if (!isTouched) return;
|
44297 | var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
44298 | var pageY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
44299 |
|
44300 | if (typeof isScrolling === 'undefined') {
|
44301 | isScrolling = !!(isScrolling || Math.abs(pageY - touchesStart.y) < Math.abs(pageX - touchesStart.x));
|
44302 | }
|
44303 |
|
44304 | if (isScrolling) {
|
44305 | isTouched = false;
|
44306 | return;
|
44307 | }
|
44308 |
|
44309 | e.preventDefault();
|
44310 |
|
44311 | if (!isMoved) {
|
44312 | notification.$el.removeClass('notification-transitioning');
|
44313 | notification.$el.transition(0);
|
44314 | notificationHeight = notification.$el[0].offsetHeight / 2;
|
44315 | }
|
44316 |
|
44317 | isMoved = true;
|
44318 | touchesDiff = pageY - touchesStart.y;
|
44319 | var newTranslate = touchesDiff;
|
44320 |
|
44321 | if (touchesDiff > 0) {
|
44322 | newTranslate = Math.pow(touchesDiff, 0.8);
|
44323 | }
|
44324 |
|
44325 | notification.$el.transform("translate3d(0, " + newTranslate + "px, 0)");
|
44326 | }
|
44327 |
|
44328 | function handleTouchEnd() {
|
44329 | if (!isTouched || !isMoved) {
|
44330 | isTouched = false;
|
44331 | isMoved = false;
|
44332 | return;
|
44333 | }
|
44334 |
|
44335 | isTouched = false;
|
44336 | isMoved = false;
|
44337 |
|
44338 | if (touchesDiff === 0) {
|
44339 | return;
|
44340 | }
|
44341 |
|
44342 | var timeDiff = now$1() - touchStartTime;
|
44343 | notification.$el.transition('');
|
44344 | notification.$el.addClass('notification-transitioning');
|
44345 | notification.$el.transform('');
|
44346 |
|
44347 | if (touchesDiff < -10 && timeDiff < 300 || -touchesDiff >= notificationHeight / 1) {
|
44348 | notification.close();
|
44349 | }
|
44350 | }
|
44351 |
|
44352 | function attachTouchEvents() {
|
44353 | notification.$el.on(app.touchEvents.start, handleTouchStart, {
|
44354 | passive: true
|
44355 | });
|
44356 | app.on('touchmove:active', handleTouchMove);
|
44357 | app.on('touchend:passive', handleTouchEnd);
|
44358 | }
|
44359 |
|
44360 | function detachTouchEvents() {
|
44361 | notification.$el.off(app.touchEvents.start, handleTouchStart, {
|
44362 | passive: true
|
44363 | });
|
44364 | app.off('touchmove:active', handleTouchMove);
|
44365 | app.off('touchend:passive', handleTouchEnd);
|
44366 | }
|
44367 |
|
44368 | var timeoutId;
|
44369 |
|
44370 | function closeOnTimeout() {
|
44371 | timeoutId = nextTick$1(function () {
|
44372 | if (isTouched && isMoved) {
|
44373 | closeOnTimeout();
|
44374 | return;
|
44375 | }
|
44376 |
|
44377 | notification.close();
|
44378 | }, closeTimeout);
|
44379 | }
|
44380 |
|
44381 | notification.on('open', function () {
|
44382 | if (notification.params.swipeToClose) {
|
44383 | attachTouchEvents();
|
44384 | }
|
44385 |
|
44386 | $('.notification.modal-in').each(function (openedEl) {
|
44387 | var notificationInstance = app.notification.get(openedEl);
|
44388 |
|
44389 | if (openedEl !== notification.el && notificationInstance) {
|
44390 | notificationInstance.close();
|
44391 | }
|
44392 | });
|
44393 |
|
44394 | if (closeTimeout) {
|
44395 | closeOnTimeout();
|
44396 | }
|
44397 | });
|
44398 | notification.on('close beforeDestroy', function () {
|
44399 | if (notification.params.swipeToClose) {
|
44400 | detachTouchEvents();
|
44401 | }
|
44402 |
|
44403 | clearTimeout(timeoutId);
|
44404 | });
|
44405 | return notification || _assertThisInitialized(_this);
|
44406 | }
|
44407 |
|
44408 | var _proto = Notification.prototype;
|
44409 |
|
44410 | _proto.render = function render() {
|
44411 | var notification = this;
|
44412 | if (notification.params.render) return notification.params.render.call(notification, notification);
|
44413 | var _notification$params2 = notification.params,
|
44414 | icon = _notification$params2.icon,
|
44415 | title = _notification$params2.title,
|
44416 | titleRightText = _notification$params2.titleRightText,
|
44417 | subtitle = _notification$params2.subtitle,
|
44418 | text = _notification$params2.text,
|
44419 | closeButton = _notification$params2.closeButton,
|
44420 | cssClass = _notification$params2.cssClass;
|
44421 | return $jsx("div", {
|
44422 | class: "notification " + (cssClass || '')
|
44423 | }, $jsx("div", {
|
44424 | class: "notification-header"
|
44425 | }, icon && $jsx("div", {
|
44426 | class: "notification-icon"
|
44427 | }, icon), title && $jsx("div", {
|
44428 | class: "notification-title"
|
44429 | }, title), titleRightText && $jsx("div", {
|
44430 | class: "notification-title-right-text"
|
44431 | }, titleRightText), closeButton && $jsx("span", {
|
44432 | class: "notification-close-button"
|
44433 | })), $jsx("div", {
|
44434 | class: "notification-content"
|
44435 | }, subtitle && $jsx("div", {
|
44436 | class: "notification-subtitle"
|
44437 | }, subtitle), text && $jsx("div", {
|
44438 | class: "notification-text"
|
44439 | }, text)));
|
44440 | };
|
44441 |
|
44442 | return Notification;
|
44443 | }(Modal$1);
|
44444 |
|
44445 | var Notification = {
|
44446 | name: 'notification',
|
44447 | static: {
|
44448 | Notification: Notification$1
|
44449 | },
|
44450 | create: function create() {
|
44451 | var app = this;
|
44452 | app.notification = extend$1({}, ModalMethods({
|
44453 | app: app,
|
44454 | constructor: Notification$1,
|
44455 | defaultSelector: '.notification.modal-in'
|
44456 | }));
|
44457 | },
|
44458 | params: {
|
44459 | notification: {
|
44460 | icon: null,
|
44461 | title: null,
|
44462 | titleRightText: null,
|
44463 | subtitle: null,
|
44464 | text: null,
|
44465 | closeButton: false,
|
44466 | closeTimeout: null,
|
44467 | closeOnClick: false,
|
44468 | swipeToClose: true,
|
44469 | cssClass: null,
|
44470 | render: null,
|
44471 | containerEl: null
|
44472 | }
|
44473 | }
|
44474 | };
|
44475 |
|
44476 | var Autocomplete$1 = function (_Framework7Class) {
|
44477 | _inheritsLoose(Autocomplete, _Framework7Class);
|
44478 |
|
44479 | function Autocomplete(app, params) {
|
44480 | var _this;
|
44481 |
|
44482 | if (params === void 0) {
|
44483 | params = {};
|
44484 | }
|
44485 |
|
44486 | _this = _Framework7Class.call(this, params, [app]) || this;
|
44487 |
|
44488 | var ac = _assertThisInitialized(_this);
|
44489 |
|
44490 | ac.app = app;
|
44491 | var device = getDevice$1();
|
44492 | var defaults = extend$1({
|
44493 | on: {}
|
44494 | }, app.params.autocomplete);
|
44495 |
|
44496 | if (typeof defaults.searchbarDisableButton === 'undefined') {
|
44497 | defaults.searchbarDisableButton = app.theme !== 'aurora';
|
44498 | }
|
44499 |
|
44500 |
|
44501 | ac.useModulesParams(defaults);
|
44502 | ac.params = extend$1(defaults, params);
|
44503 | var $openerEl;
|
44504 |
|
44505 | if (ac.params.openerEl) {
|
44506 | $openerEl = $(ac.params.openerEl);
|
44507 | if ($openerEl.length) $openerEl[0].f7Autocomplete = ac;
|
44508 | }
|
44509 |
|
44510 | var $inputEl;
|
44511 |
|
44512 | if (ac.params.inputEl) {
|
44513 | $inputEl = $(ac.params.inputEl);
|
44514 | if ($inputEl.length) $inputEl[0].f7Autocomplete = ac;
|
44515 | }
|
44516 |
|
44517 | var uniqueId = id();
|
44518 | var url = params.url;
|
44519 |
|
44520 | if (!url && $openerEl && $openerEl.length) {
|
44521 | if ($openerEl.attr('href')) url = $openerEl.attr('href');else if ($openerEl.find('a').length > 0) {
|
44522 | url = $openerEl.find('a').attr('href');
|
44523 | }
|
44524 | }
|
44525 |
|
44526 | if (!url || url === '#' || url === '') url = ac.params.url;
|
44527 | var inputType = ac.params.multiple ? 'checkbox' : 'radio';
|
44528 | extend$1(ac, {
|
44529 | $openerEl: $openerEl,
|
44530 | openerEl: $openerEl && $openerEl[0],
|
44531 | $inputEl: $inputEl,
|
44532 | inputEl: $inputEl && $inputEl[0],
|
44533 | id: uniqueId,
|
44534 | url: url,
|
44535 | value: ac.params.value || [],
|
44536 | inputType: inputType,
|
44537 | inputName: inputType + "-" + uniqueId,
|
44538 | $modalEl: undefined,
|
44539 | $dropdownEl: undefined
|
44540 | });
|
44541 | var previousQuery = '';
|
44542 |
|
44543 | function onInputChange() {
|
44544 | var query = ac.$inputEl.val().trim();
|
44545 | if (!ac.params.source) return;
|
44546 | ac.params.source.call(ac, query, function (items) {
|
44547 | var itemsHTML = '';
|
44548 | var limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;
|
44549 | ac.items = items;
|
44550 | var regExp;
|
44551 |
|
44552 | if (ac.params.highlightMatches) {
|
44553 | query = query.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
|
44554 | regExp = new RegExp("(" + query + ")", 'i');
|
44555 | }
|
44556 |
|
44557 | var firstValue;
|
44558 | var firstItem;
|
44559 |
|
44560 | for (var i = 0; i < limit; i += 1) {
|
44561 | var itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];
|
44562 | var itemText = typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i];
|
44563 |
|
44564 | if (i === 0) {
|
44565 | firstValue = itemValue;
|
44566 | firstItem = ac.items[i];
|
44567 | }
|
44568 |
|
44569 | itemsHTML += ac.renderItem({
|
44570 | value: itemValue,
|
44571 | text: ac.params.highlightMatches ? itemText.replace(regExp, '<b>$1</b>') : itemText
|
44572 | }, i);
|
44573 | }
|
44574 |
|
44575 | if (itemsHTML === '' && query === '' && ac.params.dropdownPlaceholderText) {
|
44576 | itemsHTML += ac.renderItem({
|
44577 | placeholder: true,
|
44578 | text: ac.params.dropdownPlaceholderText
|
44579 | });
|
44580 | }
|
44581 |
|
44582 | ac.$dropdownEl.find('ul').html(itemsHTML);
|
44583 |
|
44584 | if (ac.params.typeahead) {
|
44585 | if (!firstValue || !firstItem) {
|
44586 | return;
|
44587 | }
|
44588 |
|
44589 | if (firstValue.toLowerCase().indexOf(query.toLowerCase()) !== 0) {
|
44590 | return;
|
44591 | }
|
44592 |
|
44593 | if (previousQuery.toLowerCase() === query.toLowerCase()) {
|
44594 | ac.value = [];
|
44595 | return;
|
44596 | }
|
44597 |
|
44598 | if (previousQuery.toLowerCase().indexOf(query.toLowerCase()) === 0) {
|
44599 | previousQuery = query;
|
44600 | ac.value = [];
|
44601 | return;
|
44602 | }
|
44603 |
|
44604 | $inputEl.val(firstValue);
|
44605 | $inputEl[0].setSelectionRange(query.length, firstValue.length);
|
44606 | var previousValue = typeof ac.value[0] === 'object' ? ac.value[0][ac.params.valueProperty] : ac.value[0];
|
44607 |
|
44608 | if (!previousValue || firstValue.toLowerCase() !== previousValue.toLowerCase()) {
|
44609 | ac.value = [firstItem];
|
44610 | ac.emit('local::change autocompleteChange', [firstItem]);
|
44611 | }
|
44612 | }
|
44613 |
|
44614 | previousQuery = query;
|
44615 | });
|
44616 | }
|
44617 |
|
44618 | function onPageInputChange() {
|
44619 | var inputEl = this;
|
44620 | var value = inputEl.value;
|
44621 | var isValues = $(inputEl).parents('.autocomplete-values').length > 0;
|
44622 | var item;
|
44623 | var itemValue;
|
44624 | var aValue;
|
44625 |
|
44626 | if (isValues) {
|
44627 | if (ac.inputType === 'checkbox' && !inputEl.checked) {
|
44628 | for (var i = 0; i < ac.value.length; i += 1) {
|
44629 | aValue = typeof ac.value[i] === 'string' ? ac.value[i] : ac.value[i][ac.params.valueProperty];
|
44630 |
|
44631 | if (aValue === value || aValue * 1 === value * 1) {
|
44632 | ac.value.splice(i, 1);
|
44633 | }
|
44634 | }
|
44635 |
|
44636 | ac.updateValues();
|
44637 | ac.emit('local::change autocompleteChange', ac.value);
|
44638 | }
|
44639 |
|
44640 | return;
|
44641 | }
|
44642 |
|
44643 |
|
44644 | for (var _i = 0; _i < ac.items.length; _i += 1) {
|
44645 | itemValue = typeof ac.items[_i] === 'object' ? ac.items[_i][ac.params.valueProperty] : ac.items[_i];
|
44646 | if (itemValue === value || itemValue * 1 === value * 1) item = ac.items[_i];
|
44647 | }
|
44648 |
|
44649 | if (ac.inputType === 'radio') {
|
44650 | ac.value = [item];
|
44651 | } else if (inputEl.checked) {
|
44652 | ac.value.push(item);
|
44653 | } else {
|
44654 | for (var _i2 = 0; _i2 < ac.value.length; _i2 += 1) {
|
44655 | aValue = typeof ac.value[_i2] === 'object' ? ac.value[_i2][ac.params.valueProperty] : ac.value[_i2];
|
44656 |
|
44657 | if (aValue === value || aValue * 1 === value * 1) {
|
44658 | ac.value.splice(_i2, 1);
|
44659 | }
|
44660 | }
|
44661 | }
|
44662 |
|
44663 |
|
44664 | ac.updateValues();
|
44665 |
|
44666 | if (ac.inputType === 'radio' && inputEl.checked || ac.inputType === 'checkbox') {
|
44667 | ac.emit('local::change autocompleteChange', ac.value);
|
44668 | }
|
44669 | }
|
44670 |
|
44671 | function onHtmlClick(e) {
|
44672 | var $targetEl = $(e.target);
|
44673 | if ($targetEl.is(ac.$inputEl[0]) || ac.$dropdownEl && $targetEl.closest(ac.$dropdownEl[0]).length) return;
|
44674 | ac.close();
|
44675 | }
|
44676 |
|
44677 | function onOpenerClick() {
|
44678 | ac.open();
|
44679 | }
|
44680 |
|
44681 | function onInputFocus() {
|
44682 | ac.open();
|
44683 | }
|
44684 |
|
44685 | function onInputBlur() {
|
44686 | if (ac.$dropdownEl.find('label.active-state').length > 0) return;
|
44687 | setTimeout(function () {
|
44688 | ac.close();
|
44689 | }, 0);
|
44690 | }
|
44691 |
|
44692 | function onResize() {
|
44693 | ac.positionDropdown();
|
44694 | }
|
44695 |
|
44696 | function onKeyDown(e) {
|
44697 | if (!ac.opened) return;
|
44698 |
|
44699 | if (e.keyCode === 27) {
|
44700 |
|
44701 | e.preventDefault();
|
44702 | ac.$inputEl.blur();
|
44703 | return;
|
44704 | }
|
44705 |
|
44706 | if (e.keyCode === 13) {
|
44707 |
|
44708 | var $selectedItemLabel = ac.$dropdownEl.find('.autocomplete-dropdown-selected label');
|
44709 |
|
44710 | if ($selectedItemLabel.length) {
|
44711 | e.preventDefault();
|
44712 | $selectedItemLabel.trigger('click');
|
44713 | ac.$inputEl.blur();
|
44714 | return;
|
44715 | }
|
44716 |
|
44717 | if (ac.params.typeahead) {
|
44718 | e.preventDefault();
|
44719 | ac.$inputEl.blur();
|
44720 | }
|
44721 |
|
44722 | return;
|
44723 | }
|
44724 |
|
44725 | if (e.keyCode !== 40 && e.keyCode !== 38) return;
|
44726 | e.preventDefault();
|
44727 | var $selectedItem = ac.$dropdownEl.find('.autocomplete-dropdown-selected');
|
44728 | var $newItem;
|
44729 |
|
44730 | if ($selectedItem.length) {
|
44731 | $newItem = $selectedItem[e.keyCode === 40 ? 'next' : 'prev']('li');
|
44732 |
|
44733 | if (!$newItem.length) {
|
44734 | $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);
|
44735 | }
|
44736 | } else {
|
44737 | $newItem = ac.$dropdownEl.find('li').eq(e.keyCode === 40 ? 0 : ac.$dropdownEl.find('li').length - 1);
|
44738 | }
|
44739 |
|
44740 | if ($newItem.hasClass('autocomplete-dropdown-placeholder')) return;
|
44741 | $selectedItem.removeClass('autocomplete-dropdown-selected');
|
44742 | $newItem.addClass('autocomplete-dropdown-selected');
|
44743 | }
|
44744 |
|
44745 | function onDropdownClick() {
|
44746 | var $clickedEl = $(this);
|
44747 | var clickedItem;
|
44748 |
|
44749 | for (var i = 0; i < ac.items.length; i += 1) {
|
44750 | var itemValue = typeof ac.items[i] === 'object' ? ac.items[i][ac.params.valueProperty] : ac.items[i];
|
44751 | var value = $clickedEl.attr('data-value');
|
44752 |
|
44753 | if (itemValue === value || itemValue * 1 === value * 1) {
|
44754 | clickedItem = ac.items[i];
|
44755 | }
|
44756 | }
|
44757 |
|
44758 | if (ac.params.updateInputValueOnSelect) {
|
44759 | ac.$inputEl.val(typeof clickedItem === 'object' ? clickedItem[ac.params.valueProperty] : clickedItem);
|
44760 | ac.$inputEl.trigger('input change');
|
44761 | }
|
44762 |
|
44763 | ac.value = [clickedItem];
|
44764 | ac.emit('local::change autocompleteChange', [clickedItem]);
|
44765 | ac.close();
|
44766 | }
|
44767 |
|
44768 | ac.attachEvents = function attachEvents() {
|
44769 | if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {
|
44770 | ac.$openerEl.on('click', onOpenerClick);
|
44771 | }
|
44772 |
|
44773 | if (ac.params.openIn === 'dropdown' && ac.$inputEl) {
|
44774 | ac.$inputEl.on('focus', onInputFocus);
|
44775 | ac.$inputEl.on(ac.params.inputEvents, onInputChange);
|
44776 |
|
44777 | if (device.android) {
|
44778 | $('html').on('click', onHtmlClick);
|
44779 | } else {
|
44780 | ac.$inputEl.on('blur', onInputBlur);
|
44781 | }
|
44782 |
|
44783 | ac.$inputEl.on('keydown', onKeyDown);
|
44784 | }
|
44785 | };
|
44786 |
|
44787 | ac.detachEvents = function attachEvents() {
|
44788 | if (ac.params.openIn !== 'dropdown' && ac.$openerEl) {
|
44789 | ac.$openerEl.off('click', onOpenerClick);
|
44790 | }
|
44791 |
|
44792 | if (ac.params.openIn === 'dropdown' && ac.$inputEl) {
|
44793 | ac.$inputEl.off('focus', onInputFocus);
|
44794 | ac.$inputEl.off(ac.params.inputEvents, onInputChange);
|
44795 |
|
44796 | if (device.android) {
|
44797 | $('html').off('click', onHtmlClick);
|
44798 | } else {
|
44799 | ac.$inputEl.off('blur', onInputBlur);
|
44800 | }
|
44801 |
|
44802 | ac.$inputEl.off('keydown', onKeyDown);
|
44803 | }
|
44804 | };
|
44805 |
|
44806 | ac.attachDropdownEvents = function attachDropdownEvents() {
|
44807 | ac.$dropdownEl.on('click', 'label', onDropdownClick);
|
44808 | app.on('resize', onResize);
|
44809 | };
|
44810 |
|
44811 | ac.detachDropdownEvents = function detachDropdownEvents() {
|
44812 | ac.$dropdownEl.off('click', 'label', onDropdownClick);
|
44813 | app.off('resize', onResize);
|
44814 | };
|
44815 |
|
44816 | ac.attachPageEvents = function attachPageEvents() {
|
44817 | ac.$el.on('change', 'input[type="radio"], input[type="checkbox"]', onPageInputChange);
|
44818 |
|
44819 | if (ac.params.closeOnSelect && !ac.params.multiple) {
|
44820 | ac.$el.once('click', '.list label', function () {
|
44821 | nextTick$1(function () {
|
44822 | ac.close();
|
44823 | });
|
44824 | });
|
44825 | }
|
44826 | };
|
44827 |
|
44828 | ac.detachPageEvents = function detachPageEvents() {
|
44829 | ac.$el.off('change', 'input[type="radio"], input[type="checkbox"]', onPageInputChange);
|
44830 | };
|
44831 |
|
44832 |
|
44833 | ac.useModules();
|
44834 |
|
44835 | ac.init();
|
44836 | return ac || _assertThisInitialized(_this);
|
44837 | }
|
44838 |
|
44839 | var _proto = Autocomplete.prototype;
|
44840 |
|
44841 | _proto.positionDropdown = function positionDropdown() {
|
44842 | var _$dropdownEl$children;
|
44843 |
|
44844 | var ac = this;
|
44845 | var $inputEl = ac.$inputEl,
|
44846 | app = ac.app,
|
44847 | $dropdownEl = ac.$dropdownEl;
|
44848 | var $pageContentEl = $inputEl.parents('.page-content');
|
44849 | if ($pageContentEl.length === 0) return;
|
44850 | var inputOffset = $inputEl.offset();
|
44851 | var inputOffsetWidth = $inputEl[0].offsetWidth;
|
44852 | var inputOffsetHeight = $inputEl[0].offsetHeight;
|
44853 | var $listEl = $inputEl.parents('.list');
|
44854 | var $listParent;
|
44855 | $listEl.parents().each(function (parentEl) {
|
44856 | if ($listParent) return;
|
44857 | var $parentEl = $(parentEl);
|
44858 | if ($parentEl.parent($pageContentEl).length) $listParent = $parentEl;
|
44859 | });
|
44860 | var listOffset = $listEl.offset();
|
44861 | var paddingBottom = parseInt($pageContentEl.css('padding-bottom'), 10);
|
44862 | var listOffsetLeft = $listEl.length > 0 ? listOffset.left - $pageContentEl.offset().left : 0;
|
44863 | var inputOffsetLeft = inputOffset.left - ($listEl.length > 0 ? listOffset.left : 0) - (app.rtl ? 0 : 0);
|
44864 | var inputOffsetTop = inputOffset.top - ($pageContentEl.offset().top - $pageContentEl[0].scrollTop);
|
44865 | var maxHeight = $pageContentEl[0].scrollHeight - paddingBottom - (inputOffsetTop + $pageContentEl[0].scrollTop) - $inputEl[0].offsetHeight;
|
44866 | var paddingProp = app.rtl ? 'padding-right' : 'padding-left';
|
44867 | var paddingValue;
|
44868 |
|
44869 | if ($listEl.length && !ac.params.expandInput) {
|
44870 | paddingValue = (app.rtl ? $listEl[0].offsetWidth - inputOffsetLeft - inputOffsetWidth : inputOffsetLeft) - (app.theme === 'md' ? 16 : 15);
|
44871 | }
|
44872 |
|
44873 | $dropdownEl.css({
|
44874 | left: ($listEl.length > 0 ? listOffsetLeft : inputOffsetLeft) + "px",
|
44875 | top: inputOffsetTop + $pageContentEl[0].scrollTop + inputOffsetHeight + "px",
|
44876 | width: ($listEl.length > 0 ? $listEl[0].offsetWidth : inputOffsetWidth) + "px"
|
44877 | });
|
44878 | $dropdownEl.children('.autocomplete-dropdown-inner').css((_$dropdownEl$children = {
|
44879 | maxHeight: maxHeight + "px"
|
44880 | }, _$dropdownEl$children[paddingProp] = $listEl.length > 0 && !ac.params.expandInput ? paddingValue + "px" : '', _$dropdownEl$children));
|
44881 | };
|
44882 |
|
44883 | _proto.focus = function focus() {
|
44884 | var ac = this;
|
44885 | ac.$el.find('input[type=search]').focus();
|
44886 | };
|
44887 |
|
44888 | _proto.source = function source(query) {
|
44889 | var ac = this;
|
44890 | if (!ac.params.source) return;
|
44891 | var $el = ac.$el;
|
44892 | ac.params.source.call(ac, query, function (items) {
|
44893 | var itemsHTML = '';
|
44894 | var limit = ac.params.limit ? Math.min(ac.params.limit, items.length) : items.length;
|
44895 | ac.items = items;
|
44896 |
|
44897 | for (var i = 0; i < limit; i += 1) {
|
44898 | var selected = false;
|
44899 | var itemValue = typeof items[i] === 'object' ? items[i][ac.params.valueProperty] : items[i];
|
44900 |
|
44901 | for (var j = 0; j < ac.value.length; j += 1) {
|
44902 | var aValue = typeof ac.value[j] === 'object' ? ac.value[j][ac.params.valueProperty] : ac.value[j];
|
44903 | if (aValue === itemValue || aValue * 1 === itemValue * 1) selected = true;
|
44904 | }
|
44905 |
|
44906 | itemsHTML += ac.renderItem({
|
44907 | value: itemValue,
|
44908 | text: typeof items[i] === 'object' ? items[i][ac.params.textProperty] : items[i],
|
44909 | inputType: ac.inputType,
|
44910 | id: ac.id,
|
44911 | inputName: ac.inputName,
|
44912 | selected: selected
|
44913 | }, i);
|
44914 | }
|
44915 |
|
44916 | $el.find('.autocomplete-found ul').html(itemsHTML);
|
44917 |
|
44918 | if (items.length === 0) {
|
44919 | if (query.length !== 0) {
|
44920 | $el.find('.autocomplete-not-found').show();
|
44921 | $el.find('.autocomplete-found, .autocomplete-values').hide();
|
44922 | } else {
|
44923 | $el.find('.autocomplete-values').show();
|
44924 | $el.find('.autocomplete-found, .autocomplete-not-found').hide();
|
44925 | }
|
44926 | } else {
|
44927 | $el.find('.autocomplete-found').show();
|
44928 | $el.find('.autocomplete-not-found, .autocomplete-values').hide();
|
44929 | }
|
44930 | });
|
44931 | };
|
44932 |
|
44933 | _proto.updateValues = function updateValues() {
|
44934 | var ac = this;
|
44935 | var valuesHTML = '';
|
44936 |
|
44937 | for (var i = 0; i < ac.value.length; i += 1) {
|
44938 | valuesHTML += ac.renderItem({
|
44939 | value: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.valueProperty] : ac.value[i],
|
44940 | text: typeof ac.value[i] === 'object' ? ac.value[i][ac.params.textProperty] : ac.value[i],
|
44941 | inputType: ac.inputType,
|
44942 | id: ac.id,
|
44943 | inputName: ac.inputName + "-checked}",
|
44944 | selected: true
|
44945 | }, i);
|
44946 | }
|
44947 |
|
44948 | ac.$el.find('.autocomplete-values ul').html(valuesHTML);
|
44949 | };
|
44950 |
|
44951 | _proto.preloaderHide = function preloaderHide() {
|
44952 | var ac = this;
|
44953 |
|
44954 | if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {
|
44955 | ac.$dropdownEl.find('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');
|
44956 | } else {
|
44957 | $('.autocomplete-preloader').removeClass('autocomplete-preloader-visible');
|
44958 | }
|
44959 | };
|
44960 |
|
44961 | _proto.preloaderShow = function preloaderShow() {
|
44962 | var ac = this;
|
44963 |
|
44964 | if (ac.params.openIn === 'dropdown' && ac.$dropdownEl) {
|
44965 | ac.$dropdownEl.find('.autocomplete-preloader').addClass('autocomplete-preloader-visible');
|
44966 | } else {
|
44967 | $('.autocomplete-preloader').addClass('autocomplete-preloader-visible');
|
44968 | }
|
44969 | };
|
44970 |
|
44971 | _proto.renderPreloader = function renderPreloader() {
|
44972 | var ac = this;
|
44973 | var preloaders = {
|
44974 | iosPreloaderContent: iosPreloaderContent,
|
44975 | mdPreloaderContent: mdPreloaderContent,
|
44976 | auroraPreloaderContent: auroraPreloaderContent
|
44977 | };
|
44978 | return $jsx("div", {
|
44979 | class: "autocomplete-preloader preloader " + (ac.params.preloaderColor ? "color-" + ac.params.preloaderColor : '')
|
44980 | }, preloaders[ac.app.theme + "PreloaderContent"] || '');
|
44981 | };
|
44982 |
|
44983 | _proto.renderSearchbar = function renderSearchbar() {
|
44984 | var ac = this;
|
44985 | if (ac.params.renderSearchbar) return ac.params.renderSearchbar.call(ac);
|
44986 | return $jsx("form", {
|
44987 | class: "searchbar"
|
44988 | }, $jsx("div", {
|
44989 | class: "searchbar-inner"
|
44990 | }, $jsx("div", {
|
44991 | class: "searchbar-input-wrap"
|
44992 | }, $jsx("input", {
|
44993 | type: "search",
|
44994 | spellcheck: ac.params.searchbarSpellcheck || 'false',
|
44995 | placeholder: ac.params.searchbarPlaceholder
|
44996 | }), $jsx("i", {
|
44997 | class: "searchbar-icon"
|
44998 | }), $jsx("span", {
|
44999 | class: "input-clear-button"
|
45000 | })), ac.params.searchbarDisableButton && $jsx("span", {
|
45001 | class: "searchbar-disable-button"
|
45002 | }, ac.params.searchbarDisableText)));
|
45003 | };
|
45004 |
|
45005 | _proto.renderItem = function renderItem(item, index) {
|
45006 | var ac = this;
|
45007 | if (ac.params.renderItem) return ac.params.renderItem.call(ac, item, index);
|
45008 | var itemValue = item.value && typeof item.value === 'string' ? item.value.replace(/"/g, '"') : item.value;
|
45009 |
|
45010 | if (ac.params.openIn !== 'dropdown') {
|
45011 | return $jsx("li", null, $jsx("label", {
|
45012 | class: "item-" + item.inputType + " item-content"
|
45013 | }, $jsx("input", {
|
45014 | type: item.inputType,
|
45015 | name: item.inputName,
|
45016 | value: itemValue,
|
45017 | _checked: item.selected
|
45018 | }), $jsx("i", {
|
45019 | class: "icon icon-" + item.inputType
|
45020 | }), $jsx("div", {
|
45021 | class: "item-inner"
|
45022 | }, $jsx("div", {
|
45023 | class: "item-title"
|
45024 | }, item.text))));
|
45025 | }
|
45026 |
|
45027 |
|
45028 | if (!item.placeholder) {
|
45029 | return $jsx("li", null, $jsx("label", {
|
45030 | class: "item-radio item-content",
|
45031 | "data-value": itemValue
|
45032 | }, $jsx("div", {
|
45033 | class: "item-inner"
|
45034 | }, $jsx("div", {
|
45035 | class: "item-title"
|
45036 | }, item.text))));
|
45037 | }
|
45038 |
|
45039 |
|
45040 | return $jsx("li", {
|
45041 | class: "autocomplete-dropdown-placeholder"
|
45042 | }, $jsx("label", {
|
45043 | class: "item-content"
|
45044 | }, $jsx("div", {
|
45045 | class: "item-inner"
|
45046 | }, $jsx("div", {
|
45047 | class: "item-title"
|
45048 | }, item.text))));
|
45049 | };
|
45050 |
|
45051 | _proto.renderNavbar = function renderNavbar() {
|
45052 | var ac = this;
|
45053 | if (ac.params.renderNavbar) return ac.params.renderNavbar.call(ac);
|
45054 | var pageTitle = ac.params.pageTitle;
|
45055 |
|
45056 | if (typeof pageTitle === 'undefined' && ac.$openerEl && ac.$openerEl.length) {
|
45057 | pageTitle = ac.$openerEl.find('.item-title').text().trim();
|
45058 | }
|
45059 |
|
45060 | var inPopup = ac.params.openIn === 'popup';
|
45061 |
|
45062 | var navbarLeft = inPopup ? ac.params.preloader && $jsx("div", {
|
45063 | class: "left"
|
45064 | }, ac.renderPreloader()) : $jsx("div", {
|
45065 | class: "left sliding"
|
45066 | }, $jsx("a", {
|
45067 | class: "link back"
|
45068 | }, $jsx("i", {
|
45069 | class: "icon icon-back"
|
45070 | }), $jsx("span", {
|
45071 | class: "if-not-md"
|
45072 | }, ac.params.pageBackLinkText)));
|
45073 | var navbarRight = inPopup ? $jsx("div", {
|
45074 | class: "right"
|
45075 | }, $jsx("a", {
|
45076 | class: "link popup-close",
|
45077 | "data-popup": ".autocomplete-popup"
|
45078 | }, ac.params.popupCloseLinkText)) : ac.params.preloader && $jsx("div", {
|
45079 | class: "right"
|
45080 | }, ac.renderPreloader());
|
45081 | return $jsx("div", {
|
45082 | class: "navbar " + (ac.params.navbarColorTheme ? "color-" + ac.params.navbarColorTheme : '')
|
45083 | }, $jsx("div", {
|
45084 | class: "navbar-bg"
|
45085 | }), $jsx("div", {
|
45086 | class: "navbar-inner " + (ac.params.navbarColorTheme ? "color-" + ac.params.navbarColorTheme : '')
|
45087 | }, navbarLeft, pageTitle && $jsx("div", {
|
45088 | class: "title sliding"
|
45089 | }, pageTitle), navbarRight, $jsx("div", {
|
45090 | class: "subnavbar sliding"
|
45091 | }, ac.renderSearchbar())));
|
45092 | };
|
45093 |
|
45094 | _proto.renderDropdown = function renderDropdown() {
|
45095 | var ac = this;
|
45096 | if (ac.params.renderDropdown) return ac.params.renderDropdown.call(ac, ac.items);
|
45097 | return $jsx("div", {
|
45098 | class: "autocomplete-dropdown"
|
45099 | }, $jsx("div", {
|
45100 | class: "autocomplete-dropdown-inner"
|
45101 | }, $jsx("div", {
|
45102 | class: "list " + (!ac.params.expandInput ? 'no-safe-areas' : '')
|
45103 | }, $jsx("ul", null))), ac.params.preloader && ac.renderPreloader());
|
45104 | };
|
45105 |
|
45106 | _proto.renderPage = function renderPage(inPopup) {
|
45107 | var ac = this;
|
45108 | if (ac.params.renderPage) return ac.params.renderPage.call(ac, ac.items);
|
45109 | return $jsx("div", {
|
45110 | class: "page page-with-subnavbar autocomplete-page",
|
45111 | "data-name": "autocomplete-page"
|
45112 | }, ac.renderNavbar(inPopup), $jsx("div", {
|
45113 | class: "searchbar-backdrop"
|
45114 | }), $jsx("div", {
|
45115 | class: "page-content"
|
45116 | }, $jsx("div", {
|
45117 | class: "list autocomplete-list autocomplete-found autocomplete-list-" + ac.id + " " + (ac.params.formColorTheme ? "color-" + ac.params.formColorTheme : '')
|
45118 | }, $jsx("ul", null)), $jsx("div", {
|
45119 | class: "list autocomplete-not-found"
|
45120 | }, $jsx("ul", null, $jsx("li", {
|
45121 | class: "item-content"
|
45122 | }, $jsx("div", {
|
45123 | class: "item-inner"
|
45124 | }, $jsx("div", {
|
45125 | class: "item-title"
|
45126 | }, ac.params.notFoundText))))), $jsx("div", {
|
45127 | class: "list autocomplete-values"
|
45128 | }, $jsx("ul", null))));
|
45129 | };
|
45130 |
|
45131 | _proto.renderPopup = function renderPopup() {
|
45132 | var ac = this;
|
45133 | if (ac.params.renderPopup) return ac.params.renderPopup.call(ac, ac.items);
|
45134 | return $jsx("div", {
|
45135 | class: "popup autocomplete-popup"
|
45136 | }, $jsx("div", {
|
45137 | class: "view"
|
45138 | }, ac.renderPage(true), ";"));
|
45139 | };
|
45140 |
|
45141 | _proto.onOpen = function onOpen(type, el) {
|
45142 | var ac = this;
|
45143 | var app = ac.app;
|
45144 | var $el = $(el);
|
45145 | ac.$el = $el;
|
45146 | ac.el = $el[0];
|
45147 | ac.openedIn = type;
|
45148 | ac.opened = true;
|
45149 |
|
45150 | if (ac.params.openIn === 'dropdown') {
|
45151 | ac.attachDropdownEvents();
|
45152 | ac.$dropdownEl.addClass('autocomplete-dropdown-in');
|
45153 | ac.$inputEl.trigger('input');
|
45154 | } else {
|
45155 |
|
45156 | var $searchbarEl = $el.find('.searchbar');
|
45157 |
|
45158 | if (ac.params.openIn === 'page' && app.theme === 'ios' && $searchbarEl.length === 0) {
|
45159 | $searchbarEl = $(app.navbar.getElByPage($el)).find('.searchbar');
|
45160 | }
|
45161 |
|
45162 | ac.searchbar = app.searchbar.create({
|
45163 | el: $searchbarEl,
|
45164 | backdropEl: $el.find('.searchbar-backdrop'),
|
45165 | customSearch: true,
|
45166 | on: {
|
45167 | search: function search(sb, query) {
|
45168 | if (query.length === 0 && ac.searchbar.enabled) {
|
45169 | ac.searchbar.backdropShow();
|
45170 | } else {
|
45171 | ac.searchbar.backdropHide();
|
45172 | }
|
45173 |
|
45174 | ac.source(query);
|
45175 | }
|
45176 | }
|
45177 | });
|
45178 |
|
45179 | ac.attachPageEvents();
|
45180 |
|
45181 | ac.updateValues();
|
45182 |
|
45183 | if (ac.params.requestSourceOnOpen) ac.source('');
|
45184 | }
|
45185 |
|
45186 | ac.emit('local::open autocompleteOpen', ac);
|
45187 | };
|
45188 |
|
45189 | _proto.autoFocus = function autoFocus() {
|
45190 | var ac = this;
|
45191 |
|
45192 | if (ac.searchbar && ac.searchbar.$inputEl) {
|
45193 | ac.searchbar.$inputEl.focus();
|
45194 | }
|
45195 |
|
45196 | return ac;
|
45197 | };
|
45198 |
|
45199 | _proto.onOpened = function onOpened() {
|
45200 | var ac = this;
|
45201 |
|
45202 | if (ac.params.openIn !== 'dropdown' && ac.params.autoFocus) {
|
45203 | ac.autoFocus();
|
45204 | }
|
45205 |
|
45206 | ac.emit('local::opened autocompleteOpened', ac);
|
45207 | };
|
45208 |
|
45209 | _proto.onClose = function onClose() {
|
45210 | var ac = this;
|
45211 | if (ac.destroyed) return;
|
45212 |
|
45213 | if (ac.searchbar && ac.searchbar.destroy) {
|
45214 | ac.searchbar.destroy();
|
45215 | ac.searchbar = null;
|
45216 | delete ac.searchbar;
|
45217 | }
|
45218 |
|
45219 | if (ac.params.openIn === 'dropdown') {
|
45220 | ac.detachDropdownEvents();
|
45221 | ac.$dropdownEl.removeClass('autocomplete-dropdown-in').remove();
|
45222 | ac.$inputEl.parents('.item-content-dropdown-expanded').removeClass('item-content-dropdown-expanded');
|
45223 | } else {
|
45224 | ac.detachPageEvents();
|
45225 | }
|
45226 |
|
45227 | ac.emit('local::close autocompleteClose', ac);
|
45228 | };
|
45229 |
|
45230 | _proto.onClosed = function onClosed() {
|
45231 | var ac = this;
|
45232 | if (ac.destroyed) return;
|
45233 | ac.opened = false;
|
45234 | ac.$el = null;
|
45235 | ac.el = null;
|
45236 | delete ac.$el;
|
45237 | delete ac.el;
|
45238 | ac.emit('local::closed autocompleteClosed', ac);
|
45239 | };
|
45240 |
|
45241 | _proto.openPage = function openPage() {
|
45242 | var ac = this;
|
45243 | if (ac.opened) return ac;
|
45244 | var pageHtml = ac.renderPage();
|
45245 | ac.view.router.navigate({
|
45246 | url: ac.url,
|
45247 | route: {
|
45248 | content: pageHtml,
|
45249 | path: ac.url,
|
45250 | on: {
|
45251 | pageBeforeIn: function pageBeforeIn(e, page) {
|
45252 | ac.onOpen('page', page.el);
|
45253 | },
|
45254 | pageAfterIn: function pageAfterIn(e, page) {
|
45255 | ac.onOpened('page', page.el);
|
45256 | },
|
45257 | pageBeforeOut: function pageBeforeOut(e, page) {
|
45258 | ac.onClose('page', page.el);
|
45259 | },
|
45260 | pageAfterOut: function pageAfterOut(e, page) {
|
45261 | ac.onClosed('page', page.el);
|
45262 | }
|
45263 | },
|
45264 | options: {
|
45265 | animate: ac.params.animate
|
45266 | }
|
45267 | }
|
45268 | });
|
45269 | return ac;
|
45270 | };
|
45271 |
|
45272 | _proto.openPopup = function openPopup() {
|
45273 | var ac = this;
|
45274 | if (ac.opened) return ac;
|
45275 | var popupHtml = ac.renderPopup();
|
45276 | var popupParams = {
|
45277 | content: popupHtml,
|
45278 | animate: ac.params.animate,
|
45279 | push: ac.params.popupPush,
|
45280 | swipeToClose: ac.params.popupSwipeToClose,
|
45281 | on: {
|
45282 | popupOpen: function popupOpen(popup) {
|
45283 | ac.onOpen('popup', popup.el);
|
45284 | },
|
45285 | popupOpened: function popupOpened(popup) {
|
45286 | ac.onOpened('popup', popup.el);
|
45287 | },
|
45288 | popupClose: function popupClose(popup) {
|
45289 | ac.onClose('popup', popup.el);
|
45290 | },
|
45291 | popupClosed: function popupClosed(popup) {
|
45292 | ac.onClosed('popup', popup.el);
|
45293 | }
|
45294 | }
|
45295 | };
|
45296 |
|
45297 | if (ac.params.routableModals && ac.view) {
|
45298 | ac.view.router.navigate({
|
45299 | url: ac.url,
|
45300 | route: {
|
45301 | path: ac.url,
|
45302 | popup: popupParams
|
45303 | }
|
45304 | });
|
45305 | } else {
|
45306 | ac.modal = ac.app.popup.create(popupParams).open(ac.params.animate);
|
45307 | }
|
45308 |
|
45309 | return ac;
|
45310 | };
|
45311 |
|
45312 | _proto.openDropdown = function openDropdown() {
|
45313 | var ac = this;
|
45314 |
|
45315 | if (!ac.$dropdownEl) {
|
45316 | ac.$dropdownEl = $(ac.renderDropdown());
|
45317 | }
|
45318 |
|
45319 | var $listEl = ac.$inputEl.parents('.list');
|
45320 |
|
45321 | if ($listEl.length && ac.$inputEl.parents('.item-content').length > 0 && ac.params.expandInput) {
|
45322 | ac.$inputEl.parents('.item-content').addClass('item-content-dropdown-expanded');
|
45323 | }
|
45324 |
|
45325 | var $pageContentEl = ac.$inputEl.parents('.page-content');
|
45326 |
|
45327 | if (ac.params.dropdownContainerEl) {
|
45328 | $(ac.params.dropdownContainerEl).append(ac.$dropdownEl);
|
45329 | } else if ($pageContentEl.length === 0) {
|
45330 | ac.$dropdownEl.insertAfter(ac.$inputEl);
|
45331 | } else {
|
45332 | ac.positionDropdown();
|
45333 | $pageContentEl.append(ac.$dropdownEl);
|
45334 | }
|
45335 |
|
45336 | ac.onOpen('dropdown', ac.$dropdownEl);
|
45337 | ac.onOpened('dropdown', ac.$dropdownEl);
|
45338 | };
|
45339 |
|
45340 | _proto.open = function open() {
|
45341 | var ac = this;
|
45342 | if (ac.opened) return ac;
|
45343 | var openIn = ac.params.openIn;
|
45344 | ac["open" + openIn.split('').map(function (el, index) {
|
45345 | if (index === 0) return el.toUpperCase();
|
45346 | return el;
|
45347 | }).join('')]();
|
45348 | return ac;
|
45349 | };
|
45350 |
|
45351 | _proto.close = function close() {
|
45352 | var ac = this;
|
45353 | if (!ac.opened) return ac;
|
45354 |
|
45355 | if (ac.params.openIn === 'dropdown') {
|
45356 | ac.onClose();
|
45357 | ac.onClosed();
|
45358 | } else if (ac.params.routableModals && ac.view || ac.openedIn === 'page') {
|
45359 | ac.view.router.back({
|
45360 | animate: ac.params.animate
|
45361 | });
|
45362 | } else {
|
45363 | ac.modal.once('modalClosed', function () {
|
45364 | nextTick$1(function () {
|
45365 | if (ac.destroyed) return;
|
45366 | ac.modal.destroy();
|
45367 | delete ac.modal;
|
45368 | });
|
45369 | });
|
45370 | ac.modal.close();
|
45371 | }
|
45372 |
|
45373 | return ac;
|
45374 | };
|
45375 |
|
45376 | _proto.init = function init() {
|
45377 | var ac = this;
|
45378 | ac.attachEvents();
|
45379 | };
|
45380 |
|
45381 | _proto.destroy = function destroy() {
|
45382 | var ac = this;
|
45383 | ac.emit('local::beforeDestroy autocompleteBeforeDestroy', ac);
|
45384 | ac.detachEvents();
|
45385 |
|
45386 | if (ac.$inputEl && ac.$inputEl[0]) {
|
45387 | delete ac.$inputEl[0].f7Autocomplete;
|
45388 | }
|
45389 |
|
45390 | if (ac.$openerEl && ac.$openerEl[0]) {
|
45391 | delete ac.$openerEl[0].f7Autocomplete;
|
45392 | }
|
45393 |
|
45394 | deleteProps$1(ac);
|
45395 | ac.destroyed = true;
|
45396 | };
|
45397 |
|
45398 | _createClass$1(Autocomplete, [{
|
45399 | key: "view",
|
45400 | get: function get() {
|
45401 | var ac = this;
|
45402 | var $openerEl = ac.$openerEl,
|
45403 | $inputEl = ac.$inputEl,
|
45404 | app = ac.app;
|
45405 | var view;
|
45406 |
|
45407 | if (ac.params.view) {
|
45408 | view = ac.params.view;
|
45409 | } else if ($openerEl || $inputEl) {
|
45410 | var $el = $openerEl || $inputEl;
|
45411 | view = $el.closest('.view').length && $el.closest('.view')[0].f7View;
|
45412 | }
|
45413 |
|
45414 | if (!view) view = app.views.main;
|
45415 | return view;
|
45416 | }
|
45417 | }]);
|
45418 |
|
45419 | return Autocomplete;
|
45420 | }(Framework7Class);
|
45421 |
|
45422 | var Autocomplete = {
|
45423 | name: 'autocomplete',
|
45424 | params: {
|
45425 | autocomplete: {
|
45426 | openerEl: undefined,
|
45427 | inputEl: undefined,
|
45428 | view: undefined,
|
45429 |
|
45430 | dropdownContainerEl: undefined,
|
45431 | dropdownPlaceholderText: undefined,
|
45432 | typeahead: false,
|
45433 | highlightMatches: true,
|
45434 | expandInput: false,
|
45435 | updateInputValueOnSelect: true,
|
45436 | inputEvents: 'input',
|
45437 | value: undefined,
|
45438 | multiple: false,
|
45439 | source: undefined,
|
45440 | limit: undefined,
|
45441 | valueProperty: 'id',
|
45442 | textProperty: 'text',
|
45443 | openIn: 'page',
|
45444 |
|
45445 | pageBackLinkText: 'Back',
|
45446 | popupCloseLinkText: 'Close',
|
45447 | pageTitle: undefined,
|
45448 | searchbarPlaceholder: 'Search...',
|
45449 | searchbarDisableText: 'Cancel',
|
45450 | searchbarDisableButton: undefined,
|
45451 | searchbarSpellcheck: false,
|
45452 | popupPush: false,
|
45453 | popupSwipeToClose: undefined,
|
45454 | animate: true,
|
45455 | autoFocus: false,
|
45456 | closeOnSelect: false,
|
45457 | notFoundText: 'Nothing found',
|
45458 | requestSourceOnOpen: false,
|
45459 |
|
45460 | preloaderColor: undefined,
|
45461 | preloader: false,
|
45462 |
|
45463 | formColorTheme: undefined,
|
45464 | navbarColorTheme: undefined,
|
45465 |
|
45466 | routableModals: false,
|
45467 | url: 'select/',
|
45468 |
|
45469 | renderDropdown: undefined,
|
45470 | renderPage: undefined,
|
45471 | renderPopup: undefined,
|
45472 | renderItem: undefined,
|
45473 | renderSearchbar: undefined,
|
45474 | renderNavbar: undefined
|
45475 | }
|
45476 | },
|
45477 | static: {
|
45478 | Autocomplete: Autocomplete$1
|
45479 | },
|
45480 | create: function create() {
|
45481 | var app = this;
|
45482 | app.autocomplete = extend$1(ConstructorMethods({
|
45483 | defaultSelector: undefined,
|
45484 | constructor: Autocomplete$1,
|
45485 | app: app,
|
45486 | domProp: 'f7Autocomplete'
|
45487 | }), {
|
45488 | open: function open(autocompleteEl) {
|
45489 | var ac = app.autocomplete.get(autocompleteEl);
|
45490 | if (ac && ac.open) return ac.open();
|
45491 | return undefined;
|
45492 | },
|
45493 | close: function close(autocompleteEl) {
|
45494 | var ac = app.autocomplete.get(autocompleteEl);
|
45495 | if (ac && ac.close) return ac.close();
|
45496 | return undefined;
|
45497 | }
|
45498 | });
|
45499 | }
|
45500 | };
|
45501 |
|
45502 | var Tooltip$1 = function (_Framework7Class) {
|
45503 | _inheritsLoose(Tooltip, _Framework7Class);
|
45504 |
|
45505 | function Tooltip(app, params) {
|
45506 | var _this;
|
45507 |
|
45508 | if (params === void 0) {
|
45509 | params = {};
|
45510 | }
|
45511 |
|
45512 | _this = _Framework7Class.call(this, params, [app]) || this;
|
45513 |
|
45514 | var tooltip = _assertThisInitialized(_this);
|
45515 |
|
45516 | var support = getSupport$1();
|
45517 | var defaults = extend$1({}, app.params.tooltip);
|
45518 | var document = getDocument();
|
45519 |
|
45520 | tooltip.useModulesParams(defaults);
|
45521 | tooltip.params = extend$1(defaults, params);
|
45522 |
|
45523 | if (typeof params.offset === 'undefined' && support.touch && tooltip.params.trigger === 'hover') {
|
45524 | tooltip.params.offset = 10;
|
45525 | }
|
45526 |
|
45527 | var _tooltip$params = tooltip.params,
|
45528 | targetEl = _tooltip$params.targetEl,
|
45529 | containerEl = _tooltip$params.containerEl;
|
45530 | if (!targetEl && !tooltip.params.delegated) return tooltip || _assertThisInitialized(_this);
|
45531 | var $targetEl = $(targetEl);
|
45532 | if ($targetEl.length === 0 && !tooltip.params.delegated) return tooltip || _assertThisInitialized(_this);
|
45533 | if ($targetEl[0] && $targetEl[0].f7Tooltip && !tooltip.params.delegated) return $targetEl[0].f7Tooltip || _assertThisInitialized(_this);
|
45534 | var $containerEl = $(containerEl || app.$el).eq(0);
|
45535 |
|
45536 | if ($containerEl.length === 0) {
|
45537 | $containerEl = app.$el;
|
45538 | }
|
45539 |
|
45540 | var $el = $(tooltip.render()).eq(0);
|
45541 | extend$1(tooltip, {
|
45542 | app: app,
|
45543 | $targetEl: $targetEl,
|
45544 | targetEl: $targetEl && $targetEl[0],
|
45545 | $containerEl: $containerEl,
|
45546 | containerEl: $containerEl && $containerEl[0],
|
45547 | $el: $el,
|
45548 | el: $el && $el[0],
|
45549 | text: tooltip.params.text || '',
|
45550 | visible: false,
|
45551 | opened: false
|
45552 | });
|
45553 | if ($targetEl[0]) $targetEl[0].f7Tooltip = tooltip;
|
45554 | var touchesStart = {};
|
45555 | var isTouched;
|
45556 |
|
45557 | function handleClick() {
|
45558 | if (tooltip.opened) tooltip.hide();else tooltip.show(this);
|
45559 | }
|
45560 |
|
45561 | function handleClickOut(e) {
|
45562 | if (tooltip.opened && ($(e.target).closest($targetEl).length || $(e.target).closest(tooltip.$el).length)) return;
|
45563 | tooltip.hide();
|
45564 | }
|
45565 |
|
45566 | function handleTouchStart(e) {
|
45567 | if (isTouched) return;
|
45568 | isTouched = true;
|
45569 | touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
45570 | touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
45571 | tooltip.show(this);
|
45572 | }
|
45573 |
|
45574 | function handleTouchMove(e) {
|
45575 | if (!isTouched) return;
|
45576 | var x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
45577 | var y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
45578 | var distance = Math.pow(Math.pow(x - touchesStart.x, 2) + Math.pow(y - touchesStart.y, 2), 0.5);
|
45579 |
|
45580 | if (distance > 50) {
|
45581 | isTouched = false;
|
45582 | tooltip.hide();
|
45583 | }
|
45584 | }
|
45585 |
|
45586 | function handleTouchEnd() {
|
45587 | if (!isTouched) return;
|
45588 | isTouched = false;
|
45589 | tooltip.hide();
|
45590 | }
|
45591 |
|
45592 | function handleMouseEnter() {
|
45593 | tooltip.show(this);
|
45594 | }
|
45595 |
|
45596 | function handleMouseLeave() {
|
45597 | tooltip.hide();
|
45598 | }
|
45599 |
|
45600 | function handleTransitionEnd() {
|
45601 | if (!$el.hasClass('tooltip-in')) {
|
45602 | $el.removeClass('tooltip-out').remove();
|
45603 | }
|
45604 | }
|
45605 |
|
45606 | tooltip.attachEvents = function attachEvents() {
|
45607 | $el.on('transitionend', handleTransitionEnd);
|
45608 |
|
45609 | if (tooltip.params.trigger === 'click') {
|
45610 | if (tooltip.params.delegated) {
|
45611 | $(document).on('click', tooltip.params.targetEl, handleClick);
|
45612 | } else {
|
45613 | tooltip.$targetEl.on('click', handleClick);
|
45614 | }
|
45615 |
|
45616 | $('html').on('click', handleClickOut);
|
45617 | return;
|
45618 | }
|
45619 |
|
45620 | if (tooltip.params.trigger === 'manual') return;
|
45621 |
|
45622 | if (support.touch) {
|
45623 | var passive = support.passiveListener ? {
|
45624 | passive: true
|
45625 | } : false;
|
45626 |
|
45627 | if (tooltip.params.delegated) {
|
45628 | $(document).on(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);
|
45629 | } else {
|
45630 | tooltip.$targetEl.on(app.touchEvents.start, handleTouchStart, passive);
|
45631 | }
|
45632 |
|
45633 | app.on('touchmove', handleTouchMove);
|
45634 | app.on('touchend:passive', handleTouchEnd);
|
45635 | } else {
|
45636 |
|
45637 | if (tooltip.params.delegated) {
|
45638 | $(document).on(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);
|
45639 | $(document).on(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);
|
45640 | } else {
|
45641 | tooltip.$targetEl.on(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);
|
45642 | tooltip.$targetEl.on(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);
|
45643 | }
|
45644 | }
|
45645 | };
|
45646 |
|
45647 | tooltip.detachEvents = function detachEvents() {
|
45648 | $el.off('transitionend', handleTransitionEnd);
|
45649 |
|
45650 | if (tooltip.params.trigger === 'click') {
|
45651 | if (tooltip.params.delegated) {
|
45652 | $(document).on('click', tooltip.params.targetEl, handleClick);
|
45653 | } else {
|
45654 | tooltip.$targetEl.off('click', handleClick);
|
45655 | }
|
45656 |
|
45657 | $('html').off('click', handleClickOut);
|
45658 | return;
|
45659 | }
|
45660 |
|
45661 | if (tooltip.params.trigger === 'manual') return;
|
45662 |
|
45663 | if (support.touch) {
|
45664 | var passive = support.passiveListener ? {
|
45665 | passive: true
|
45666 | } : false;
|
45667 |
|
45668 | if (tooltip.params.delegated) {
|
45669 | $(document).off(app.touchEvents.start, tooltip.params.targetEl, handleTouchStart, passive);
|
45670 | } else {
|
45671 | tooltip.$targetEl.off(app.touchEvents.start, handleTouchStart, passive);
|
45672 | }
|
45673 |
|
45674 | app.off('touchmove', handleTouchMove);
|
45675 | app.off('touchend:passive', handleTouchEnd);
|
45676 | } else {
|
45677 |
|
45678 | if (tooltip.params.delegated) {
|
45679 | $(document).off(support.pointerEvents ? 'pointerenter' : 'mouseenter', tooltip.params.targetEl, handleMouseEnter, true);
|
45680 | $(document).off(support.pointerEvents ? 'pointerleave' : 'mouseleave', tooltip.params.targetEl, handleMouseLeave, true);
|
45681 | } else {
|
45682 | tooltip.$targetEl.off(support.pointerEvents ? 'pointerenter' : 'mouseenter', handleMouseEnter);
|
45683 | tooltip.$targetEl.off(support.pointerEvents ? 'pointerleave' : 'mouseleave', handleMouseLeave);
|
45684 | }
|
45685 | }
|
45686 | };
|
45687 |
|
45688 |
|
45689 | tooltip.useModules();
|
45690 | tooltip.init();
|
45691 | return tooltip || _assertThisInitialized(_this);
|
45692 | }
|
45693 |
|
45694 | var _proto = Tooltip.prototype;
|
45695 |
|
45696 | _proto.setTargetEl = function setTargetEl(targetEl) {
|
45697 | var tooltip = this;
|
45698 | tooltip.detachEvents();
|
45699 | tooltip.$targetEl = $(targetEl);
|
45700 | tooltip.targetEl = tooltip.$targetEl[0];
|
45701 | tooltip.attachEvents();
|
45702 | return tooltip;
|
45703 | };
|
45704 |
|
45705 | _proto.position = function position(targetEl) {
|
45706 | var tooltip = this;
|
45707 | var $el = tooltip.$el,
|
45708 | app = tooltip.app,
|
45709 | $containerEl = tooltip.$containerEl;
|
45710 | var hasContainerEl = !!tooltip.params.containerEl;
|
45711 | var tooltipOffset = tooltip.params.offset || 0;
|
45712 | $el.css({
|
45713 | left: '',
|
45714 | top: ''
|
45715 | });
|
45716 | var $targetEl = $(targetEl || tooltip.targetEl);
|
45717 | var _ref = [$el.width(), $el.height()],
|
45718 | width = _ref[0],
|
45719 | height = _ref[1];
|
45720 | $el.css({
|
45721 | left: '',
|
45722 | top: ''
|
45723 | });
|
45724 | var targetWidth;
|
45725 | var targetHeight;
|
45726 | var targetOffsetLeft;
|
45727 | var targetOffsetTop;
|
45728 | var boundaries = hasContainerEl && $containerEl.length ? $containerEl[0].getBoundingClientRect() : app;
|
45729 |
|
45730 | if ($targetEl && $targetEl.length > 0) {
|
45731 | targetWidth = $targetEl.outerWidth();
|
45732 | targetHeight = $targetEl.outerHeight();
|
45733 |
|
45734 | if (typeof targetWidth === 'undefined' && typeof targetHeight === 'undefined') {
|
45735 | var clientRect = $targetEl[0].getBoundingClientRect();
|
45736 | targetWidth = clientRect.width;
|
45737 | targetHeight = clientRect.height;
|
45738 | }
|
45739 |
|
45740 | var targetOffset = $targetEl.offset();
|
45741 | targetOffsetLeft = targetOffset.left - boundaries.left;
|
45742 | targetOffsetTop = targetOffset.top - boundaries.top;
|
45743 | var targetParentPage = $targetEl.parents('.page');
|
45744 |
|
45745 | if (targetParentPage.length > 0) {
|
45746 | targetOffsetTop -= targetParentPage[0].scrollTop;
|
45747 | }
|
45748 | }
|
45749 |
|
45750 | var _ref2 = [0, 0, 0],
|
45751 | left = _ref2[0],
|
45752 | top = _ref2[1];
|
45753 |
|
45754 | var position = 'top';
|
45755 |
|
45756 | if (height + tooltipOffset < targetOffsetTop) {
|
45757 |
|
45758 | top = targetOffsetTop - height - tooltipOffset;
|
45759 | } else if (height < boundaries.height - targetOffsetTop - targetHeight) {
|
45760 |
|
45761 | position = 'bottom';
|
45762 | top = targetOffsetTop + targetHeight + tooltipOffset;
|
45763 | } else {
|
45764 |
|
45765 | position = 'middle';
|
45766 | top = targetHeight / 2 + targetOffsetTop - height / 2;
|
45767 |
|
45768 | if (top <= 0) {
|
45769 | top = 8;
|
45770 | } else if (top + height >= boundaries.height) {
|
45771 | top = boundaries.height - height - 8;
|
45772 | }
|
45773 | }
|
45774 |
|
45775 |
|
45776 | if (position === 'top' || position === 'bottom') {
|
45777 | left = targetWidth / 2 + targetOffsetLeft - width / 2;
|
45778 | if (left < 8) left = 8;
|
45779 | if (left + width > boundaries.width) left = boundaries.width - width - 8;
|
45780 | if (left < 0) left = 0;
|
45781 | } else if (position === 'middle') {
|
45782 | left = targetOffsetLeft - width;
|
45783 |
|
45784 | if (left < 8 || left + width > boundaries.width) {
|
45785 | if (left < 8) left = targetOffsetLeft + targetWidth;
|
45786 | if (left + width > boundaries.width) left = boundaries.width - width - 8;
|
45787 | }
|
45788 | }
|
45789 |
|
45790 |
|
45791 | $el.css({
|
45792 | top: top + "px",
|
45793 | left: left + "px"
|
45794 | });
|
45795 | };
|
45796 |
|
45797 | _proto.show = function show(aroundEl) {
|
45798 | var tooltip = this;
|
45799 | var $el = tooltip.$el,
|
45800 | $targetEl = tooltip.$targetEl,
|
45801 | $containerEl = tooltip.$containerEl;
|
45802 |
|
45803 | if ($containerEl[0] && $el[0] && !$containerEl[0].contains($el[0])) {
|
45804 | $containerEl.append($el);
|
45805 | }
|
45806 |
|
45807 | tooltip.position(aroundEl);
|
45808 | var $aroundEl = $(aroundEl);
|
45809 | tooltip.visible = true;
|
45810 | tooltip.opened = true;
|
45811 | $targetEl.trigger('tooltip:show');
|
45812 | $el.trigger('tooltip:show');
|
45813 |
|
45814 | if ($aroundEl.length && $aroundEl[0] !== $targetEl[0]) {
|
45815 | $aroundEl.trigger('tooltip:show');
|
45816 | }
|
45817 |
|
45818 | tooltip.emit('local::show tooltipShow', tooltip);
|
45819 | $el.removeClass('tooltip-out').addClass('tooltip-in');
|
45820 | return tooltip;
|
45821 | };
|
45822 |
|
45823 | _proto.hide = function hide() {
|
45824 | var tooltip = this;
|
45825 | var $el = tooltip.$el,
|
45826 | $targetEl = tooltip.$targetEl;
|
45827 | tooltip.visible = false;
|
45828 | tooltip.opened = false;
|
45829 | $targetEl.trigger('tooltip:hide');
|
45830 | $el.trigger('tooltip:hide');
|
45831 | tooltip.emit('local::hide tooltipHide', tooltip);
|
45832 | $el.addClass('tooltip-out').removeClass('tooltip-in');
|
45833 | return tooltip;
|
45834 | };
|
45835 |
|
45836 | _proto.render = function render() {
|
45837 | var tooltip = this;
|
45838 | if (tooltip.params.render) return tooltip.params.render.call(tooltip, tooltip);
|
45839 | var _tooltip$params2 = tooltip.params,
|
45840 | cssClass = _tooltip$params2.cssClass,
|
45841 | text = _tooltip$params2.text;
|
45842 | return ("\n <div class=\"tooltip " + (cssClass || '') + "\">\n <div class=\"tooltip-content\">" + (text || '') + "</div>\n </div>\n ").trim();
|
45843 | };
|
45844 |
|
45845 | _proto.setText = function setText(newText) {
|
45846 | var tooltip = this;
|
45847 |
|
45848 | if (typeof newText === 'undefined') {
|
45849 | return tooltip;
|
45850 | }
|
45851 |
|
45852 | tooltip.params.text = newText;
|
45853 | tooltip.text = newText;
|
45854 |
|
45855 | if (tooltip.$el) {
|
45856 | tooltip.$el.children('.tooltip-content').html(newText);
|
45857 | }
|
45858 |
|
45859 | if (tooltip.opened) {
|
45860 | tooltip.position();
|
45861 | }
|
45862 |
|
45863 | return tooltip;
|
45864 | };
|
45865 |
|
45866 | _proto.init = function init() {
|
45867 | var tooltip = this;
|
45868 | tooltip.attachEvents();
|
45869 | };
|
45870 |
|
45871 | _proto.destroy = function destroy() {
|
45872 | var tooltip = this;
|
45873 | if (!tooltip.$targetEl || tooltip.destroyed) return;
|
45874 | tooltip.$targetEl.trigger('tooltip:beforedestroy');
|
45875 | tooltip.emit('local::beforeDestroy tooltipBeforeDestroy', tooltip);
|
45876 | tooltip.$el.remove();
|
45877 | if (tooltip.$targetEl[0]) delete tooltip.$targetEl[0].f7Tooltip;
|
45878 | tooltip.detachEvents();
|
45879 | deleteProps$1(tooltip);
|
45880 | tooltip.destroyed = true;
|
45881 | };
|
45882 |
|
45883 | return Tooltip;
|
45884 | }(Framework7Class);
|
45885 |
|
45886 | var Tooltip = {
|
45887 | name: 'tooltip',
|
45888 | static: {
|
45889 | Tooltip: Tooltip$1
|
45890 | },
|
45891 | create: function create() {
|
45892 | var app = this;
|
45893 | app.tooltip = ConstructorMethods({
|
45894 | defaultSelector: '.tooltip',
|
45895 | constructor: Tooltip$1,
|
45896 | app: app,
|
45897 | domProp: 'f7Tooltip'
|
45898 | });
|
45899 |
|
45900 | app.tooltip.show = function show(el) {
|
45901 | var $el = $(el);
|
45902 | if ($el.length === 0) return undefined;
|
45903 | var tooltip = $el[0].f7Tooltip;
|
45904 | if (!tooltip) return undefined;
|
45905 | tooltip.show($el[0]);
|
45906 | return tooltip;
|
45907 | };
|
45908 |
|
45909 | app.tooltip.hide = function hide(el) {
|
45910 | var $el = $(el);
|
45911 | if ($el.length === 0) return undefined;
|
45912 | var tooltip = $el[0].f7Tooltip;
|
45913 | if (!tooltip) return undefined;
|
45914 | tooltip.hide();
|
45915 | return tooltip;
|
45916 | };
|
45917 |
|
45918 | app.tooltip.setText = function text(el, newText) {
|
45919 | var $el = $(el);
|
45920 | if ($el.length === 0) return undefined;
|
45921 | var tooltip = $el[0].f7Tooltip;
|
45922 | if (!tooltip) return undefined;
|
45923 | tooltip.setText(newText);
|
45924 | return tooltip;
|
45925 | };
|
45926 | },
|
45927 | params: {
|
45928 | tooltip: {
|
45929 | targetEl: null,
|
45930 | delegated: false,
|
45931 | text: null,
|
45932 | cssClass: null,
|
45933 | render: null,
|
45934 | offset: 0,
|
45935 | trigger: 'hover',
|
45936 | containerEl: undefined
|
45937 | }
|
45938 | },
|
45939 | on: {
|
45940 | tabMounted: function tabMounted(tabEl) {
|
45941 | var app = this;
|
45942 | $(tabEl).find('.tooltip-init').each(function (el) {
|
45943 | var text = $(el).attr('data-tooltip');
|
45944 | if (!text) return;
|
45945 | app.tooltip.create({
|
45946 | targetEl: el,
|
45947 | text: text
|
45948 | });
|
45949 | });
|
45950 | },
|
45951 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
45952 | $(tabEl).find('.tooltip-init').each(function (el) {
|
45953 | if (el.f7Tooltip) el.f7Tooltip.destroy();
|
45954 | });
|
45955 | },
|
45956 | pageInit: function pageInit(page) {
|
45957 | var app = this;
|
45958 | page.$el.find('.tooltip-init').each(function (el) {
|
45959 | var text = $(el).attr('data-tooltip');
|
45960 | if (!text) return;
|
45961 | app.tooltip.create({
|
45962 | targetEl: el,
|
45963 | text: text
|
45964 | });
|
45965 | });
|
45966 |
|
45967 | if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {
|
45968 | page.$navbarEl.find('.tooltip-init').each(function (el) {
|
45969 | var text = $(el).attr('data-tooltip');
|
45970 | if (!text) return;
|
45971 | app.tooltip.create({
|
45972 | targetEl: el,
|
45973 | text: text
|
45974 | });
|
45975 | });
|
45976 | }
|
45977 | },
|
45978 | pageBeforeRemove: function pageBeforeRemove(page) {
|
45979 | var app = this;
|
45980 | page.$el.find('.tooltip-init').each(function (el) {
|
45981 | if (el.f7Tooltip) el.f7Tooltip.destroy();
|
45982 | });
|
45983 |
|
45984 | if (app.theme === 'ios' && page.view && page.view.router.dynamicNavbar && page.$navbarEl && page.$navbarEl.length > 0) {
|
45985 | page.$navbarEl.find('.tooltip-init').each(function (el) {
|
45986 | if (el.f7Tooltip) el.f7Tooltip.destroy();
|
45987 | });
|
45988 | }
|
45989 | }
|
45990 | },
|
45991 | vnode: {
|
45992 | 'tooltip-init': {
|
45993 | insert: function insert(vnode) {
|
45994 | var app = this;
|
45995 | var el = vnode.elm;
|
45996 | var text = $(el).attr('data-tooltip');
|
45997 | if (!text) return;
|
45998 | app.tooltip.create({
|
45999 | targetEl: el,
|
46000 | text: text
|
46001 | });
|
46002 | },
|
46003 | update: function update(vnode) {
|
46004 | var el = vnode.elm;
|
46005 | if (!el.f7Tooltip) return;
|
46006 |
|
46007 | if (vnode && vnode.data && vnode.data.attrs && vnode.data.attrs['data-tooltip']) {
|
46008 | el.f7Tooltip.setText(vnode.data.attrs['data-tooltip']);
|
46009 | }
|
46010 | },
|
46011 | destroy: function destroy(vnode) {
|
46012 | var el = vnode.elm;
|
46013 | if (el.f7Tooltip) el.f7Tooltip.destroy();
|
46014 | }
|
46015 | }
|
46016 | }
|
46017 | };
|
46018 |
|
46019 | var Gauge$1 = function (_Framework7Class) {
|
46020 | _inheritsLoose(Gauge, _Framework7Class);
|
46021 |
|
46022 | function Gauge(app, params) {
|
46023 | var _this;
|
46024 |
|
46025 | if (params === void 0) {
|
46026 | params = {};
|
46027 | }
|
46028 |
|
46029 | _this = _Framework7Class.call(this, params, [app]) || this;
|
46030 |
|
46031 | var self = _assertThisInitialized(_this);
|
46032 |
|
46033 | var defaults = extend$1({}, app.params.gauge);
|
46034 |
|
46035 | self.useModulesParams(defaults);
|
46036 | self.params = extend$1(defaults, params);
|
46037 | var el = self.params.el;
|
46038 | if (!el) return self || _assertThisInitialized(_this);
|
46039 | var $el = $(el);
|
46040 | if ($el.length === 0) return self || _assertThisInitialized(_this);
|
46041 | if ($el[0].f7Gauge) return $el[0].f7Gauge || _assertThisInitialized(_this);
|
46042 | extend$1(self, {
|
46043 | app: app,
|
46044 | $el: $el,
|
46045 | el: $el && $el[0]
|
46046 | });
|
46047 | $el[0].f7Gauge = self;
|
46048 |
|
46049 | self.useModules();
|
46050 | self.init();
|
46051 | return self || _assertThisInitialized(_this);
|
46052 | }
|
46053 |
|
46054 | var _proto = Gauge.prototype;
|
46055 |
|
46056 | _proto.calcRadius = function calcRadius() {
|
46057 | var self = this;
|
46058 | var _self$params = self.params,
|
46059 | size = _self$params.size,
|
46060 | borderWidth = _self$params.borderWidth;
|
46061 | return size / 2 - borderWidth / 2;
|
46062 | };
|
46063 |
|
46064 | _proto.calcBorderLength = function calcBorderLength() {
|
46065 | var self = this;
|
46066 | var radius = self.calcRadius();
|
46067 | return 2 * Math.PI * radius;
|
46068 | };
|
46069 |
|
46070 | _proto.render = function render() {
|
46071 | var self = this;
|
46072 | if (self.params.render) return self.params.render.call(self, self);
|
46073 | var _self$params2 = self.params,
|
46074 | type = _self$params2.type,
|
46075 | value = _self$params2.value,
|
46076 | size = _self$params2.size,
|
46077 | bgColor = _self$params2.bgColor,
|
46078 | borderBgColor = _self$params2.borderBgColor,
|
46079 | borderColor = _self$params2.borderColor,
|
46080 | borderWidth = _self$params2.borderWidth,
|
46081 | valueText = _self$params2.valueText,
|
46082 | valueTextColor = _self$params2.valueTextColor,
|
46083 | valueFontSize = _self$params2.valueFontSize,
|
46084 | valueFontWeight = _self$params2.valueFontWeight,
|
46085 | labelText = _self$params2.labelText,
|
46086 | labelTextColor = _self$params2.labelTextColor,
|
46087 | labelFontSize = _self$params2.labelFontSize,
|
46088 | labelFontWeight = _self$params2.labelFontWeight;
|
46089 | var semiCircle = type === 'semicircle';
|
46090 | var radius = self.calcRadius();
|
46091 | var length = self.calcBorderLength();
|
46092 | var progress = Math.max(Math.min(value, 1), 0);
|
46093 | return $jsx("svg", {
|
46094 | class: "gauge-svg",
|
46095 | width: size + "px",
|
46096 | height: (semiCircle ? size / 2 : size) + "px",
|
46097 | viewBox: "0 0 " + size + " " + (semiCircle ? size / 2 : size)
|
46098 | }, semiCircle && $jsx("path", {
|
46099 | class: "gauge-back-semi",
|
46100 | d: "M" + (size - borderWidth / 2) + "," + size / 2 + " a1,1 0 0,0 -" + (size - borderWidth) + ",0",
|
46101 | stroke: borderBgColor,
|
46102 | "stroke-width": borderWidth,
|
46103 | fill: bgColor || 'none'
|
46104 | }), semiCircle && $jsx("path", {
|
46105 | class: "gauge-front-semi",
|
46106 | d: "M" + (size - borderWidth / 2) + "," + size / 2 + " a1,1 0 0,0 -" + (size - borderWidth) + ",0",
|
46107 | stroke: borderColor,
|
46108 | "stroke-width": borderWidth,
|
46109 | "stroke-dasharray": length / 2,
|
46110 | "stroke-dashoffset": length / 2 * (1 + progress),
|
46111 | fill: borderBgColor ? 'none' : bgColor || 'none'
|
46112 | }), !semiCircle && borderBgColor && $jsx("circle", {
|
46113 | class: "gauge-back-circle",
|
46114 | stroke: borderBgColor,
|
46115 | "stroke-width": borderWidth,
|
46116 | fill: bgColor || 'none',
|
46117 | cx: size / 2,
|
46118 | cy: size / 2,
|
46119 | r: radius
|
46120 | }), !semiCircle && $jsx("circle", {
|
46121 | class: "gauge-front-circle",
|
46122 | transform: "rotate(-90 " + size / 2 + " " + size / 2 + ")",
|
46123 | stroke: borderColor,
|
46124 | "stroke-width": borderWidth,
|
46125 | "stroke-dasharray": length,
|
46126 | "stroke-dashoffset": length * (1 - progress),
|
46127 | fill: borderBgColor ? 'none' : bgColor || 'none',
|
46128 | cx: size / 2,
|
46129 | cy: size / 2,
|
46130 | r: radius
|
46131 | }), valueText && $jsx("text", {
|
46132 | class: "gauge-value-text",
|
46133 | x: "50%",
|
46134 | y: semiCircle ? '100%' : '50%',
|
46135 | "font-weight": valueFontWeight,
|
46136 | "font-size": valueFontSize,
|
46137 | fill: valueTextColor,
|
46138 | dy: semiCircle ? labelText ? -labelFontSize - 15 : -5 : 0,
|
46139 | "text-anchor": "middle",
|
46140 | "dominant-baseline": !semiCircle && 'middle'
|
46141 | }, valueText), labelText && $jsx("text", {
|
46142 | class: "gauge-label-text",
|
46143 | x: "50%",
|
46144 | y: semiCircle ? '100%' : '50%',
|
46145 | "font-weight": labelFontWeight,
|
46146 | "font-size": labelFontSize,
|
46147 | fill: labelTextColor,
|
46148 | dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,
|
46149 | "text-anchor": "middle",
|
46150 | "dominant-baseline": !semiCircle && 'middle'
|
46151 | }, labelText));
|
46152 | };
|
46153 |
|
46154 | _proto.update = function update(newParams) {
|
46155 | if (newParams === void 0) {
|
46156 | newParams = {};
|
46157 | }
|
46158 |
|
46159 | var self = this;
|
46160 | var document = getDocument();
|
46161 | var params = self.params,
|
46162 | $svgEl = self.$svgEl;
|
46163 | Object.keys(newParams).forEach(function (param) {
|
46164 | if (typeof newParams[param] !== 'undefined') {
|
46165 | params[param] = newParams[param];
|
46166 | }
|
46167 | });
|
46168 | if ($svgEl.length === 0) return self;
|
46169 | var value = params.value,
|
46170 | size = params.size,
|
46171 | bgColor = params.bgColor,
|
46172 | borderBgColor = params.borderBgColor,
|
46173 | borderColor = params.borderColor,
|
46174 | borderWidth = params.borderWidth,
|
46175 | valueText = params.valueText,
|
46176 | valueTextColor = params.valueTextColor,
|
46177 | valueFontSize = params.valueFontSize,
|
46178 | valueFontWeight = params.valueFontWeight,
|
46179 | labelText = params.labelText,
|
46180 | labelTextColor = params.labelTextColor,
|
46181 | labelFontSize = params.labelFontSize,
|
46182 | labelFontWeight = params.labelFontWeight;
|
46183 | var length = self.calcBorderLength();
|
46184 | var progress = Math.max(Math.min(value, 1), 0);
|
46185 | var radius = self.calcRadius();
|
46186 | var semiCircle = params.type === 'semicircle';
|
46187 | var svgAttrs = {
|
46188 | width: size + "px",
|
46189 | height: (semiCircle ? size / 2 : size) + "px",
|
46190 | viewBox: "0 0 " + size + " " + (semiCircle ? size / 2 : size)
|
46191 | };
|
46192 | Object.keys(svgAttrs).forEach(function (attr) {
|
46193 | $svgEl.attr(attr, svgAttrs[attr]);
|
46194 | });
|
46195 |
|
46196 | if (semiCircle) {
|
46197 | var backAttrs = {
|
46198 | d: "M" + (size - borderWidth / 2) + "," + size / 2 + " a1,1 0 0,0 -" + (size - borderWidth) + ",0",
|
46199 | stroke: borderBgColor,
|
46200 | 'stroke-width': borderWidth,
|
46201 | fill: bgColor || 'none'
|
46202 | };
|
46203 | var frontAttrs = {
|
46204 | d: "M" + (size - borderWidth / 2) + "," + size / 2 + " a1,1 0 0,0 -" + (size - borderWidth) + ",0",
|
46205 | stroke: borderColor,
|
46206 | 'stroke-width': borderWidth,
|
46207 | 'stroke-dasharray': length / 2,
|
46208 | 'stroke-dashoffset': length / 2 * (1 + progress),
|
46209 | fill: borderBgColor ? 'none' : bgColor || 'none'
|
46210 | };
|
46211 | Object.keys(backAttrs).forEach(function (attr) {
|
46212 | $svgEl.find('.gauge-back-semi').attr(attr, backAttrs[attr]);
|
46213 | });
|
46214 | Object.keys(frontAttrs).forEach(function (attr) {
|
46215 | $svgEl.find('.gauge-front-semi').attr(attr, frontAttrs[attr]);
|
46216 | });
|
46217 | } else {
|
46218 | var _backAttrs = {
|
46219 | stroke: borderBgColor,
|
46220 | 'stroke-width': borderWidth,
|
46221 | fill: bgColor || 'none',
|
46222 | cx: size / 2,
|
46223 | cy: size / 2,
|
46224 | r: radius
|
46225 | };
|
46226 | var _frontAttrs = {
|
46227 | transform: "rotate(-90 " + size / 2 + " " + size / 2 + ")",
|
46228 | stroke: borderColor,
|
46229 | 'stroke-width': borderWidth,
|
46230 | 'stroke-dasharray': length,
|
46231 | 'stroke-dashoffset': length * (1 - progress),
|
46232 | fill: borderBgColor ? 'none' : bgColor || 'none',
|
46233 | cx: size / 2,
|
46234 | cy: size / 2,
|
46235 | r: radius
|
46236 | };
|
46237 | Object.keys(_backAttrs).forEach(function (attr) {
|
46238 | $svgEl.find('.gauge-back-circle').attr(attr, _backAttrs[attr]);
|
46239 | });
|
46240 | Object.keys(_frontAttrs).forEach(function (attr) {
|
46241 | $svgEl.find('.gauge-front-circle').attr(attr, _frontAttrs[attr]);
|
46242 | });
|
46243 | }
|
46244 |
|
46245 | if (valueText) {
|
46246 | if (!$svgEl.find('.gauge-value-text').length) {
|
46247 | var textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');
|
46248 | textEl.classList.add('gauge-value-text');
|
46249 | $svgEl.append(textEl);
|
46250 | }
|
46251 |
|
46252 | var textAttrs = {
|
46253 | x: '50%',
|
46254 | y: semiCircle ? '100%' : '50%',
|
46255 | 'font-weight': valueFontWeight,
|
46256 | 'font-size': valueFontSize,
|
46257 | fill: valueTextColor,
|
46258 | dy: semiCircle ? labelText ? -labelFontSize - 15 : -5 : 0,
|
46259 | 'text-anchor': 'middle',
|
46260 | 'dominant-baseline': !semiCircle && 'middle'
|
46261 | };
|
46262 | Object.keys(textAttrs).forEach(function (attr) {
|
46263 | $svgEl.find('.gauge-value-text').attr(attr, textAttrs[attr]);
|
46264 | });
|
46265 | $svgEl.find('.gauge-value-text').text(valueText);
|
46266 | } else {
|
46267 | $svgEl.find('.gauge-value-text').remove();
|
46268 | }
|
46269 |
|
46270 | if (labelText) {
|
46271 | if (!$svgEl.find('.gauge-label-text').length) {
|
46272 | var _textEl = document.createElementNS('http://www.w3.org/2000/svg', 'text');
|
46273 |
|
46274 | _textEl.classList.add('gauge-label-text');
|
46275 |
|
46276 | $svgEl.append(_textEl);
|
46277 | }
|
46278 |
|
46279 | var labelAttrs = {
|
46280 | x: '50%',
|
46281 | y: semiCircle ? '100%' : '50%',
|
46282 | 'font-weight': labelFontWeight,
|
46283 | 'font-size': labelFontSize,
|
46284 | fill: labelTextColor,
|
46285 | dy: semiCircle ? -5 : valueText ? valueFontSize / 2 + 10 : 0,
|
46286 | 'text-anchor': 'middle',
|
46287 | 'dominant-baseline': !semiCircle && 'middle'
|
46288 | };
|
46289 | Object.keys(labelAttrs).forEach(function (attr) {
|
46290 | $svgEl.find('.gauge-label-text').attr(attr, labelAttrs[attr]);
|
46291 | });
|
46292 | $svgEl.find('.gauge-label-text').text(labelText);
|
46293 | } else {
|
46294 | $svgEl.find('.gauge-label-text').remove();
|
46295 | }
|
46296 |
|
46297 | return self;
|
46298 | };
|
46299 |
|
46300 | _proto.init = function init() {
|
46301 | var self = this;
|
46302 | var $svgEl = $(self.render()).eq(0);
|
46303 | $svgEl.f7Gauge = self;
|
46304 | extend$1(self, {
|
46305 | $svgEl: $svgEl,
|
46306 | svgEl: $svgEl && $svgEl[0]
|
46307 | });
|
46308 | self.$el.append($svgEl);
|
46309 | return self;
|
46310 | };
|
46311 |
|
46312 | _proto.destroy = function destroy() {
|
46313 | var self = this;
|
46314 | if (!self.$el || self.destroyed) return;
|
46315 | self.$el.trigger('gauge:beforedestroy');
|
46316 | self.emit('local::beforeDestroy gaugeBeforeDestroy', self);
|
46317 | self.$svgEl.remove();
|
46318 | delete self.$el[0].f7Gauge;
|
46319 | deleteProps$1(self);
|
46320 | self.destroyed = true;
|
46321 | };
|
46322 |
|
46323 | return Gauge;
|
46324 | }(Framework7Class);
|
46325 |
|
46326 | var Gauge = {
|
46327 | name: 'gauge',
|
46328 | static: {
|
46329 | Gauge: Gauge$1
|
46330 | },
|
46331 | create: function create() {
|
46332 | var app = this;
|
46333 | app.gauge = ConstructorMethods({
|
46334 | defaultSelector: '.gauge',
|
46335 | constructor: Gauge$1,
|
46336 | app: app,
|
46337 | domProp: 'f7Gauge'
|
46338 | });
|
46339 |
|
46340 | app.gauge.update = function update(el, newParams) {
|
46341 | var $el = $(el);
|
46342 | if ($el.length === 0) return undefined;
|
46343 | var gauge = app.gauge.get(el);
|
46344 | if (!gauge) return undefined;
|
46345 | gauge.update(newParams);
|
46346 | return gauge;
|
46347 | };
|
46348 | },
|
46349 | params: {
|
46350 | gauge: {
|
46351 | el: null,
|
46352 | type: 'circle',
|
46353 | value: 0,
|
46354 | size: 200,
|
46355 | bgColor: 'transparent',
|
46356 | borderBgColor: '#eeeeee',
|
46357 | borderColor: '#000000',
|
46358 | borderWidth: 10,
|
46359 | valueText: null,
|
46360 | valueTextColor: '#000000',
|
46361 | valueFontSize: 31,
|
46362 | valueFontWeight: 500,
|
46363 | labelText: null,
|
46364 | labelTextColor: '#888888',
|
46365 | labelFontSize: 14,
|
46366 | labelFontWeight: 400
|
46367 | }
|
46368 | },
|
46369 | on: {
|
46370 | tabMounted: function tabMounted(tabEl) {
|
46371 | var app = this;
|
46372 | $(tabEl).find('.gauge-init').each(function (el) {
|
46373 | app.gauge.create(extend$1({
|
46374 | el: el
|
46375 | }, $(el).dataset() || {}));
|
46376 | });
|
46377 | },
|
46378 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
46379 | $(tabEl).find('.gauge-init').each(function (el) {
|
46380 | if (el.f7Gauge) el.f7Gauge.destroy();
|
46381 | });
|
46382 | },
|
46383 | pageInit: function pageInit(page) {
|
46384 | var app = this;
|
46385 | page.$el.find('.gauge-init').each(function (el) {
|
46386 | app.gauge.create(extend$1({
|
46387 | el: el
|
46388 | }, $(el).dataset() || {}));
|
46389 | });
|
46390 | },
|
46391 | pageBeforeRemove: function pageBeforeRemove(page) {
|
46392 | page.$el.find('.gauge-init').each(function (el) {
|
46393 | if (el.f7Gauge) el.f7Gauge.destroy();
|
46394 | });
|
46395 | }
|
46396 | },
|
46397 | vnode: {
|
46398 | 'gauge-init': {
|
46399 | insert: function insert(vnode) {
|
46400 | var app = this;
|
46401 | var el = vnode.elm;
|
46402 | app.gauge.create(extend$1({
|
46403 | el: el
|
46404 | }, $(el).dataset() || {}));
|
46405 | },
|
46406 | destroy: function destroy(vnode) {
|
46407 | var el = vnode.elm;
|
46408 | if (el.f7Gauge) el.f7Gauge.destroy();
|
46409 | }
|
46410 | }
|
46411 | }
|
46412 | };
|
46413 |
|
46414 | var Skeleton = {
|
46415 | name: 'skeleton'
|
46416 | };
|
46417 |
|
46418 | var Menu = {
|
46419 | open: function open(el) {
|
46420 | if (el === void 0) {
|
46421 | el = '.menu-item-dropdown';
|
46422 | }
|
46423 |
|
46424 | var app = this;
|
46425 | if (!el) return;
|
46426 | var $el = $(el).closest('.menu-item-dropdown');
|
46427 | if (!$el.length) return;
|
46428 | var $menuEl = $el.closest('.menu').eq(0);
|
46429 |
|
46430 | if ($menuEl.length) {
|
46431 | var zIndex = $menuEl.css('z-index');
|
46432 | var originalZIndex = $menuEl[0].style.zIndex;
|
46433 | $menuEl.css('z-index', parseInt(zIndex || 0, 10) + 1);
|
46434 | $menuEl[0].f7MenuZIndex = originalZIndex;
|
46435 | }
|
46436 |
|
46437 | $el.eq(0).addClass('menu-item-dropdown-opened').trigger('menu:opened');
|
46438 | app.emit('menuOpened', $el.eq(0)[0]);
|
46439 | },
|
46440 | close: function close(el) {
|
46441 | if (el === void 0) {
|
46442 | el = '.menu-item-dropdown-opened';
|
46443 | }
|
46444 |
|
46445 | var app = this;
|
46446 | if (!el) return;
|
46447 | var $el = $(el).closest('.menu-item-dropdown-opened');
|
46448 | if (!$el.length) return;
|
46449 | var $menuEl = $el.closest('.menu').eq(0);
|
46450 |
|
46451 | if ($menuEl.length) {
|
46452 | var zIndex = $menuEl[0].f7MenuZIndex;
|
46453 | $menuEl.css('z-index', zIndex);
|
46454 | delete $menuEl[0].f7MenuZIndex;
|
46455 | }
|
46456 |
|
46457 | $el.eq(0).removeClass('menu-item-dropdown-opened').trigger('menu:closed');
|
46458 | app.emit('menuClosed', $el.eq(0)[0]);
|
46459 | }
|
46460 | };
|
46461 | var Menu$1 = {
|
46462 | name: 'menu',
|
46463 | create: function create() {
|
46464 | var app = this;
|
46465 | bindMethods(app, {
|
46466 | menu: Menu
|
46467 | });
|
46468 | },
|
46469 | on: {
|
46470 | click: function click(e) {
|
46471 | var app = this;
|
46472 | var openedMenus = $('.menu-item-dropdown-opened');
|
46473 | if (!openedMenus.length) return;
|
46474 | openedMenus.each(function (el) {
|
46475 | if (!$(e.target).closest('.menu-item-dropdown-opened').length) {
|
46476 | app.menu.close(el);
|
46477 | }
|
46478 | });
|
46479 | }
|
46480 | },
|
46481 | clicks: {
|
46482 | '.menu-item-dropdown': function onClick($clickedEl, dataset, e) {
|
46483 | var app = this;
|
46484 |
|
46485 | if ($clickedEl.hasClass('menu-item-dropdown-opened')) {
|
46486 | if ($(e.target).closest('.menu-dropdown').length) return;
|
46487 | app.menu.close($clickedEl);
|
46488 | } else {
|
46489 | app.menu.open($clickedEl);
|
46490 | }
|
46491 | },
|
46492 | '.menu-close': function onClick() {
|
46493 | var app = this;
|
46494 | app.menu.close();
|
46495 | }
|
46496 | }
|
46497 | };
|
46498 |
|
46499 |
|
46500 | var moduleAlphaSlider = {
|
46501 | render: function render(self) {
|
46502 | var _self$params = self.params,
|
46503 | sliderLabel = _self$params.sliderLabel,
|
46504 | sliderValue = _self$params.sliderValue,
|
46505 | sliderValueEditable = _self$params.sliderValueEditable,
|
46506 | alphaLabelText = _self$params.alphaLabelText;
|
46507 | return $jsx("div", {
|
46508 | class: "color-picker-module color-picker-module-alpha-slider"
|
46509 | }, $jsx("div", {
|
46510 | class: "color-picker-slider-wrap"
|
46511 | }, sliderLabel && $jsx("div", {
|
46512 | class: "color-picker-slider-label"
|
46513 | }, alphaLabelText), $jsx("div", {
|
46514 | class: "range-slider color-picker-slider color-picker-slider-alpha"
|
46515 | }), sliderValue && $jsx("div", {
|
46516 | class: "color-picker-slider-value"
|
46517 | }, sliderValueEditable ? $jsx("input", {
|
46518 | type: "number",
|
46519 | step: "0.01",
|
46520 | min: "0",
|
46521 | max: "1",
|
46522 | class: "color-picker-value-alpha"
|
46523 | }) : $jsx("span", {
|
46524 | class: "color-picker-value-alpha"
|
46525 | }))));
|
46526 | },
|
46527 | init: function init(self) {
|
46528 | self.alphaRangeSlider = self.app.range.create({
|
46529 | el: self.$el.find('.color-picker-slider-alpha'),
|
46530 | min: 0,
|
46531 | max: 1,
|
46532 | step: 0.01,
|
46533 | value: 1,
|
46534 | on: {
|
46535 | change: function change(range, value) {
|
46536 | var alpha = Math.floor(value * 100) / 100;
|
46537 | self.setValue({
|
46538 | alpha: alpha
|
46539 | });
|
46540 | }
|
46541 | }
|
46542 | });
|
46543 |
|
46544 | function handleInputChange(e) {
|
46545 | var alpha = self.value.alpha;
|
46546 | var value = parseFloat(e.target.value);
|
46547 |
|
46548 | if (Number.isNaN(value)) {
|
46549 | e.target.value = alpha;
|
46550 | return;
|
46551 | }
|
46552 |
|
46553 | value = Math.max(0, Math.min(1, value));
|
46554 | self.setValue({
|
46555 | alpha: value
|
46556 | });
|
46557 | }
|
46558 |
|
46559 | self.$el.on('change', '.color-picker-module-alpha-slider input', handleInputChange);
|
46560 |
|
46561 | self.destroyAlphaSliderEvents = function destroyAlphaSliderEvents() {
|
46562 | self.$el.off('change', '.color-picker-module-alpha-slider input', handleInputChange);
|
46563 | };
|
46564 | },
|
46565 | update: function update(self) {
|
46566 | var value = self.value;
|
46567 | var _self$params2 = self.params,
|
46568 | sliderValue = _self$params2.sliderValue,
|
46569 | sliderValueEditable = _self$params2.sliderValueEditable;
|
46570 | var alpha = value.alpha;
|
46571 | self.alphaRangeSlider.value = alpha;
|
46572 | self.alphaRangeSlider.layout();
|
46573 |
|
46574 | if (sliderValue && sliderValueEditable) {
|
46575 | self.$el.find('input.color-picker-value-alpha').val(alpha);
|
46576 | } else {
|
46577 | self.$el.find('span.color-picker-value-alpha').text(alpha);
|
46578 | }
|
46579 | },
|
46580 | destroy: function destroy(self) {
|
46581 | if (self.alphaRangeSlider && self.alphaRangeSlider.destroy) {
|
46582 | self.alphaRangeSlider.destroy();
|
46583 | }
|
46584 |
|
46585 | delete self.alphaRangeSlider;
|
46586 | if (self.destroyAlphaSliderEvents) self.destroyAlphaSliderEvents();
|
46587 | delete self.destroyAlphaSliderEvents;
|
46588 | }
|
46589 | };
|
46590 |
|
46591 |
|
46592 | var moduleCurrentColor = {
|
46593 | render: function render() {
|
46594 | return $jsx("div", {
|
46595 | class: "color-picker-module color-picker-module-current-color"
|
46596 | }, $jsx("div", {
|
46597 | class: "color-picker-current-color"
|
46598 | }));
|
46599 | },
|
46600 | update: function update(self) {
|
46601 | self.$el.find('.color-picker-module-current-color .color-picker-current-color').css('background-color', self.value.hex);
|
46602 | }
|
46603 | };
|
46604 |
|
46605 |
|
46606 | var moduleHex = {
|
46607 | render: function render(self) {
|
46608 | var _self$params = self.params,
|
46609 | hexLabel = _self$params.hexLabel,
|
46610 | hexLabelText = _self$params.hexLabelText,
|
46611 | hexValueEditable = _self$params.hexValueEditable;
|
46612 | return $jsx("div", {
|
46613 | class: "color-picker-module color-picker-module-hex"
|
46614 | }, $jsx("div", {
|
46615 | class: "color-picker-hex-wrap"
|
46616 | }, hexLabel && $jsx("div", {
|
46617 | class: "color-picker-hex-label"
|
46618 | }, hexLabelText), $jsx("div", {
|
46619 | class: "color-picker-hex-value"
|
46620 | }, hexValueEditable ? $jsx("input", {
|
46621 | type: "text",
|
46622 | class: "color-picker-value-hex"
|
46623 | }) : $jsx("span", {
|
46624 | class: "color-picker-value-hex"
|
46625 | }))));
|
46626 | },
|
46627 | init: function init(self) {
|
46628 | function handleInputChange(e) {
|
46629 | var hex = self.value.hex;
|
46630 | var value = e.target.value.replace(/#/g, '');
|
46631 |
|
46632 | if (Number.isNaN(value) || !value || value.length !== 3 && value.length !== 6) {
|
46633 | e.target.value = hex;
|
46634 | return;
|
46635 | }
|
46636 |
|
46637 | var min = 0;
|
46638 | var current = parseInt(value, 16);
|
46639 | var max = parseInt('ffffff', 16);
|
46640 |
|
46641 | if (current > max) {
|
46642 | value = 'fff';
|
46643 | }
|
46644 |
|
46645 | if (current < min) {
|
46646 | value = '000';
|
46647 | }
|
46648 |
|
46649 | self.setValue({
|
46650 | hex: value
|
46651 | });
|
46652 | }
|
46653 |
|
46654 | self.$el.on('change', '.color-picker-module-hex input', handleInputChange);
|
46655 |
|
46656 | self.destroyHexEvents = function destroyHexEvents() {
|
46657 | self.$el.off('change', '.color-picker-module-hex input', handleInputChange);
|
46658 | };
|
46659 | },
|
46660 | update: function update(self) {
|
46661 | var value = self.value;
|
46662 | var hexValueEditable = self.params.hexValueEditable;
|
46663 | var hex = value.hex;
|
46664 |
|
46665 | if (hexValueEditable) {
|
46666 | self.$el.find('input.color-picker-value-hex').val(hex);
|
46667 | } else {
|
46668 | self.$el.find('span.color-picker-value-hex').text(hex);
|
46669 | }
|
46670 | },
|
46671 | destroy: function destroy(self) {
|
46672 | if (self.destroyHexEvents) self.destroyHexEvents();
|
46673 | delete self.destroyHexEvents;
|
46674 | }
|
46675 | };
|
46676 |
|
46677 | var moduleHsbSliders = {
|
46678 | render: function render(self) {
|
46679 | var _self$params = self.params,
|
46680 | sliderLabel = _self$params.sliderLabel,
|
46681 | sliderValue = _self$params.sliderValue,
|
46682 | sliderValueEditable = _self$params.sliderValueEditable,
|
46683 | hueLabelText = _self$params.hueLabelText,
|
46684 | saturationLabelText = _self$params.saturationLabelText,
|
46685 | brightnessLabelText = _self$params.brightnessLabelText;
|
46686 | return $jsx("div", {
|
46687 | class: "color-picker-module color-picker-module-hsb-sliders"
|
46688 | }, $jsx("div", {
|
46689 | class: "color-picker-slider-wrap"
|
46690 | }, sliderLabel && $jsx("div", {
|
46691 | class: "color-picker-slider-label"
|
46692 | }, hueLabelText), $jsx("div", {
|
46693 | class: "range-slider color-picker-slider color-picker-slider-hue"
|
46694 | }), sliderValue && $jsx("div", {
|
46695 | class: "color-picker-slider-value"
|
46696 | }, sliderValueEditable ? $jsx("input", {
|
46697 | type: "number",
|
46698 | step: "0.1",
|
46699 | min: "0",
|
46700 | max: "360",
|
46701 | class: "color-picker-value-hue",
|
46702 | "data-color-index": "0"
|
46703 | }) : $jsx("span", {
|
46704 | class: "color-picker-value-hue"
|
46705 | }))), $jsx("div", {
|
46706 | class: "color-picker-slider-wrap"
|
46707 | }, sliderLabel && $jsx("div", {
|
46708 | class: "color-picker-slider-label"
|
46709 | }, saturationLabelText), $jsx("div", {
|
46710 | class: "range-slider color-picker-slider color-picker-slider-saturation"
|
46711 | }), sliderValue && $jsx("div", {
|
46712 | class: "color-picker-slider-value"
|
46713 | }, sliderValueEditable ? $jsx("input", {
|
46714 | type: "number",
|
46715 | step: "0.1",
|
46716 | min: "0",
|
46717 | max: "100",
|
46718 | class: "color-picker-value-saturation",
|
46719 | "data-color-index": "1"
|
46720 | }) : $jsx("span", {
|
46721 | class: "color-picker-value-saturation"
|
46722 | }))), $jsx("div", {
|
46723 | class: "color-picker-slider-wrap"
|
46724 | }, sliderLabel && $jsx("div", {
|
46725 | class: "color-picker-slider-label"
|
46726 | }, brightnessLabelText), $jsx("div", {
|
46727 | class: "range-slider color-picker-slider color-picker-slider-brightness"
|
46728 | }), sliderValue && $jsx("div", {
|
46729 | class: "color-picker-slider-value"
|
46730 | }, sliderValueEditable ? $jsx("input", {
|
46731 | type: "number",
|
46732 | step: "0.1",
|
46733 | min: "0",
|
46734 | max: "100",
|
46735 | class: "color-picker-value-brightness",
|
46736 | "data-color-index": "2"
|
46737 | }) : $jsx("span", {
|
46738 | class: "color-picker-value-brightness"
|
46739 | }))));
|
46740 | },
|
46741 | init: function init(self) {
|
46742 | self.hueRangeSlider = self.app.range.create({
|
46743 | el: self.$el.find('.color-picker-slider-hue'),
|
46744 | min: 0,
|
46745 | max: 360,
|
46746 | step: 0.1,
|
46747 | value: 0,
|
46748 | on: {
|
46749 | change: function change(range, value) {
|
46750 | self.setValue({
|
46751 | hue: value
|
46752 | });
|
46753 | }
|
46754 | }
|
46755 | });
|
46756 | self.saturationRangeSlider = self.app.range.create({
|
46757 | el: self.$el.find('.color-picker-slider-saturation'),
|
46758 | min: 0,
|
46759 | max: 1,
|
46760 | step: 0.001,
|
46761 | value: 0,
|
46762 | on: {
|
46763 | change: function change(range, value) {
|
46764 | var s = Math.floor(value * 1000) / 1000;
|
46765 | self.setValue({
|
46766 | hsb: [self.value.hsb[0], s, self.value.hsb[2]]
|
46767 | });
|
46768 | }
|
46769 | }
|
46770 | });
|
46771 | self.brightnessRangeSlider = self.app.range.create({
|
46772 | el: self.$el.find('.color-picker-slider-brightness'),
|
46773 | min: 0,
|
46774 | max: 1,
|
46775 | step: 0.001,
|
46776 | value: 0,
|
46777 | on: {
|
46778 | change: function change(range, value) {
|
46779 | var b = Math.floor(value * 1000) / 1000;
|
46780 | self.setValue({
|
46781 | hsb: [self.value.hsb[0], self.value.hsb[1], b]
|
46782 | });
|
46783 | }
|
46784 | }
|
46785 | });
|
46786 |
|
46787 | function handleInputChange(e) {
|
46788 | var hsb = [].concat(self.value.hsb);
|
46789 | var index = parseInt($(e.target).attr('data-color-index'), 10);
|
46790 | var value = parseFloat(e.target.value);
|
46791 |
|
46792 | if (Number.isNaN(value)) {
|
46793 | e.target.value = hsb[index];
|
46794 | return;
|
46795 | }
|
46796 |
|
46797 | if (index === 0) {
|
46798 | value = Math.max(0, Math.min(360, value));
|
46799 | } else {
|
46800 | value = Math.max(0, Math.min(100, value)) / 100;
|
46801 | }
|
46802 |
|
46803 | hsb[index] = value;
|
46804 | self.setValue({
|
46805 | hsb: hsb
|
46806 | });
|
46807 | }
|
46808 |
|
46809 | self.$el.on('change', '.color-picker-module-hsb-sliders input', handleInputChange);
|
46810 |
|
46811 | self.destroyHsbSlidersEvents = function destroyHsbSlidersEvents() {
|
46812 | self.$el.off('change', '.color-picker-module-hsb-sliders input', handleInputChange);
|
46813 | };
|
46814 | },
|
46815 | update: function update(self) {
|
46816 | var app = self.app,
|
46817 | value = self.value;
|
46818 | var _self$params2 = self.params,
|
46819 | sliderValue = _self$params2.sliderValue,
|
46820 | sliderValueEditable = _self$params2.sliderValueEditable;
|
46821 | var hsb = value.hsb,
|
46822 | hue = value.hue;
|
46823 | self.hueRangeSlider.value = hue;
|
46824 | self.saturationRangeSlider.value = hsb[1];
|
46825 | self.brightnessRangeSlider.value = hsb[2];
|
46826 | self.hueRangeSlider.layout();
|
46827 | self.saturationRangeSlider.layout();
|
46828 | self.brightnessRangeSlider.layout();
|
46829 | var hslCurrent = colorHsbToHsl(hsb[0], hsb[1], 1);
|
46830 | var hslLeft = colorHsbToHsl(hsb[0], 0, 1);
|
46831 | var hslRight = colorHsbToHsl(hsb[0], 1, 1);
|
46832 | var brightness = hsb[2];
|
46833 | self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "hsl(" + hue + ", 100%, 50%)");
|
46834 | self.saturationRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "hsl(" + hslCurrent[0] + ", " + hslCurrent[1] * 100 + "%, " + hslCurrent[2] * 100 + "%)");
|
46835 | self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "rgb(" + brightness * 255 + ", " + brightness * 255 + ", " + brightness * 255 + ")");
|
46836 | self.saturationRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + (app.rtl ? 'to left' : 'to right') + ", hsl(" + hslLeft[0] + ", " + hslLeft[1] * 100 + "%, " + hslLeft[2] * 100 + "%), hsl(" + hslRight[0] + ", " + hslRight[1] * 100 + "%, " + hslRight[2] * 100 + "%))");
|
46837 |
|
46838 | if (sliderValue && sliderValueEditable) {
|
46839 | self.$el.find('input.color-picker-value-hue').val("" + hue);
|
46840 | self.$el.find('input.color-picker-value-saturation').val("" + hsb[1] * 1000 / 10);
|
46841 | self.$el.find('input.color-picker-value-brightness').val("" + hsb[2] * 1000 / 10);
|
46842 | } else if (sliderValue) {
|
46843 | self.$el.find('span.color-picker-value-hue').text("" + hue);
|
46844 | self.$el.find('span.color-picker-value-saturation').text("" + hsb[1] * 1000 / 10);
|
46845 | self.$el.find('span.color-picker-value-brightness').text("" + hsb[2] * 1000 / 10);
|
46846 | }
|
46847 | },
|
46848 | destroy: function destroy(self) {
|
46849 | if (self.hueRangeSlider && self.hueRangeSlider.destroy) {
|
46850 | self.hueRangeSlider.destroy();
|
46851 | }
|
46852 |
|
46853 | if (self.saturationRangeSlider && self.saturationRangeSlider.destroy) {
|
46854 | self.saturationRangeSlider.destroy();
|
46855 | }
|
46856 |
|
46857 | if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {
|
46858 | self.brightnessRangeSlider.destroy();
|
46859 | }
|
46860 |
|
46861 | delete self.hueRangeSlider;
|
46862 | delete self.saturationRangeSlider;
|
46863 | delete self.brightnessRangeSlider;
|
46864 | if (self.destroyHsbSlidersEvents) self.destroyHsbSlidersEvents();
|
46865 | delete self.destroyHsbSlidersEvents;
|
46866 | }
|
46867 | };
|
46868 |
|
46869 |
|
46870 | var moduleHueSlider = {
|
46871 | render: function render(self) {
|
46872 | var _self$params = self.params,
|
46873 | sliderLabel = _self$params.sliderLabel,
|
46874 | sliderValue = _self$params.sliderValue,
|
46875 | sliderValueEditable = _self$params.sliderValueEditable,
|
46876 | hueLabelText = _self$params.hueLabelText;
|
46877 | return $jsx("div", {
|
46878 | class: "color-picker-module color-picker-module-hue-slider"
|
46879 | }, $jsx("div", {
|
46880 | class: "color-picker-slider-wrap"
|
46881 | }, sliderLabel && $jsx("div", {
|
46882 | class: "color-picker-slider-label"
|
46883 | }, hueLabelText), $jsx("div", {
|
46884 | class: "range-slider color-picker-slider color-picker-slider-hue"
|
46885 | }), sliderValue && $jsx("div", {
|
46886 | class: "color-picker-slider-value"
|
46887 | }, sliderValueEditable ? $jsx("input", {
|
46888 | type: "number",
|
46889 | step: "0.1",
|
46890 | min: "0",
|
46891 | max: "360",
|
46892 | class: "color-picker-value-hue"
|
46893 | }) : $jsx("span", {
|
46894 | class: "color-picker-value-hue"
|
46895 | }))));
|
46896 | },
|
46897 | init: function init(self) {
|
46898 | self.hueRangeSlider = self.app.range.create({
|
46899 | el: self.$el.find('.color-picker-slider-hue'),
|
46900 | min: 0,
|
46901 | max: 360,
|
46902 | step: 0.1,
|
46903 | value: 0,
|
46904 | on: {
|
46905 | change: function change(range, value) {
|
46906 | self.setValue({
|
46907 | hue: value
|
46908 | });
|
46909 | }
|
46910 | }
|
46911 | });
|
46912 | },
|
46913 | update: function update(self) {
|
46914 | var value = self.value;
|
46915 | var _self$params2 = self.params,
|
46916 | sliderValue = _self$params2.sliderValue,
|
46917 | sliderValueEditable = _self$params2.sliderValueEditable;
|
46918 | var hue = value.hue;
|
46919 | self.hueRangeSlider.value = hue;
|
46920 | self.hueRangeSlider.layout();
|
46921 | self.hueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "hsl(" + hue + ", 100%, 50%)");
|
46922 |
|
46923 | if (sliderValue && sliderValueEditable) {
|
46924 | self.$el.find('input.color-picker-value-hue').val("" + hue);
|
46925 | } else if (sliderValue) {
|
46926 | self.$el.find('span.color-picker-value-hue').text("" + hue);
|
46927 | }
|
46928 | },
|
46929 | destroy: function destroy(self) {
|
46930 | if (self.hueRangeSlider && self.hueRangeSlider.destroy) {
|
46931 | self.hueRangeSlider.destroy();
|
46932 | }
|
46933 |
|
46934 | delete self.hueRangeSlider;
|
46935 | }
|
46936 | };
|
46937 |
|
46938 | var moduleBrightnessSlider = {
|
46939 | render: function render(self) {
|
46940 | var _self$params = self.params,
|
46941 | sliderLabel = _self$params.sliderLabel,
|
46942 | sliderValue = _self$params.sliderValue,
|
46943 | sliderValueEditable = _self$params.sliderValueEditable,
|
46944 | brightnessLabelText = _self$params.brightnessLabelText;
|
46945 | return $jsx("div", {
|
46946 | class: "color-picker-module color-picker-module-brightness-slider"
|
46947 | }, $jsx("div", {
|
46948 | class: "color-picker-slider-wrap"
|
46949 | }, sliderLabel && $jsx("div", {
|
46950 | class: "color-picker-slider-label"
|
46951 | }, brightnessLabelText), $jsx("div", {
|
46952 | class: "range-slider color-picker-slider color-picker-slider-brightness"
|
46953 | }), sliderValue && $jsx("div", {
|
46954 | class: "color-picker-slider-value"
|
46955 | }, sliderValueEditable ? $jsx("input", {
|
46956 | type: "number",
|
46957 | step: "0.1",
|
46958 | min: "0",
|
46959 | max: "100",
|
46960 | class: "color-picker-value-brightness"
|
46961 | }) : $jsx("span", {
|
46962 | class: "color-picker-value-brightness"
|
46963 | }))));
|
46964 | },
|
46965 | init: function init(self) {
|
46966 | self.brightnessRangeSlider = self.app.range.create({
|
46967 | el: self.$el.find('.color-picker-slider-brightness'),
|
46968 | min: 0,
|
46969 | max: 1,
|
46970 | step: 0.001,
|
46971 | value: 0,
|
46972 | on: {
|
46973 | change: function change(range, value) {
|
46974 | var b = Math.floor(value * 1000) / 1000;
|
46975 | self.setValue({
|
46976 | hsb: [self.value.hsb[0], self.value.hsb[1], b]
|
46977 | });
|
46978 | }
|
46979 | }
|
46980 | });
|
46981 | },
|
46982 | update: function update(self) {
|
46983 | var value = self.value,
|
46984 | app = self.app;
|
46985 | var _self$params2 = self.params,
|
46986 | sliderValue = _self$params2.sliderValue,
|
46987 | sliderValueEditable = _self$params2.sliderValueEditable;
|
46988 | var hsb = value.hsb;
|
46989 | self.brightnessRangeSlider.value = hsb[2];
|
46990 | self.brightnessRangeSlider.layout();
|
46991 | var hslCurrent = colorHsbToHsl(hsb[0], hsb[1], hsb[2]);
|
46992 | var hslLeft = colorHsbToHsl(hsb[0], hsb[1], 0);
|
46993 | var hslRight = colorHsbToHsl(hsb[0], hsb[1], 1);
|
46994 | self.brightnessRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "hsl(" + hslCurrent[0] + ", " + hslCurrent[1] * 100 + "%, " + hslCurrent[2] * 100 + "%)");
|
46995 | self.brightnessRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + (app.rtl ? 'to left' : 'to right') + ", hsl(" + hslLeft[0] + ", " + hslLeft[1] * 100 + "%, " + hslLeft[2] * 100 + "%), hsl(" + hslRight[0] + ", " + hslRight[1] * 100 + "%, " + hslRight[2] * 100 + "%))");
|
46996 |
|
46997 | if (sliderValue && sliderValueEditable) {
|
46998 | self.$el.find('input.color-picker-value-brightness').val("" + hsb[2] * 1000 / 10);
|
46999 | } else if (sliderValue) {
|
47000 | self.$el.find('span.color-picker-value-brightness').text("" + hsb[2] * 1000 / 10);
|
47001 | }
|
47002 | },
|
47003 | destroy: function destroy(self) {
|
47004 | if (self.brightnessRangeSlider && self.brightnessRangeSlider.destroy) {
|
47005 | self.brightnessRangeSlider.destroy();
|
47006 | }
|
47007 |
|
47008 | delete self.brightnessRangeSlider;
|
47009 | }
|
47010 | };
|
47011 |
|
47012 |
|
47013 | var modulePalette = {
|
47014 | render: function render(self) {
|
47015 | return $jsx("div", {
|
47016 | class: "color-picker-module color-picker-module-palette"
|
47017 | }, $jsx("div", {
|
47018 | class: "color-picker-palette"
|
47019 | }, self.params.palette.map(function (p) {
|
47020 | if (Array.isArray(p)) {
|
47021 | var row = '<div class="color-picker-palette-row">';
|
47022 |
|
47023 | row += p.map(function (c) {
|
47024 | return "\n <div class=\"color-picker-palette-value\" data-palette-color=\"" + c + "\" style=\"background-color: " + c + "\"></div>\n ";
|
47025 | }).join('');
|
47026 | row += '</div>';
|
47027 | return row;
|
47028 | }
|
47029 |
|
47030 | return $jsx("div", {
|
47031 | class: "color-picker-palette-value",
|
47032 | "data-palette-color": p,
|
47033 | style: "background-color: " + p
|
47034 | });
|
47035 | })));
|
47036 | },
|
47037 | init: function init(self) {
|
47038 | function handlePaletteClick(e) {
|
47039 | var hex = $(e.target).attr('data-palette-color');
|
47040 | self.setValue({
|
47041 | hex: hex
|
47042 | });
|
47043 | }
|
47044 |
|
47045 | self.$el.on('click', '.color-picker-module-palette .color-picker-palette-value', handlePaletteClick);
|
47046 |
|
47047 | self.destroyPaletteEvents = function destroyPaletteEvents() {
|
47048 | self.$el.off('click', '.color-picker-module-hex input', handlePaletteClick);
|
47049 | };
|
47050 | },
|
47051 | destroy: function destroy(self) {
|
47052 | if (self.destroyPaletteEvents) {
|
47053 | self.destroyPaletteEvents();
|
47054 | }
|
47055 |
|
47056 | delete self.destroyPaletteEvents;
|
47057 | }
|
47058 | };
|
47059 |
|
47060 |
|
47061 | var moduleInitialCurrentColors = {
|
47062 | render: function render() {
|
47063 | return $jsx("div", {
|
47064 | class: "color-picker-module color-picker-module-initial-current-colors"
|
47065 | }, $jsx("div", {
|
47066 | class: "color-picker-initial-current-colors"
|
47067 | }, $jsx("div", {
|
47068 | class: "color-picker-initial-color"
|
47069 | }), $jsx("div", {
|
47070 | class: "color-picker-current-color"
|
47071 | })));
|
47072 | },
|
47073 | init: function init(self) {
|
47074 | function handleInitialColorClick() {
|
47075 | if (self.initialValue) {
|
47076 | var _self$initialValue = self.initialValue,
|
47077 | hex = _self$initialValue.hex,
|
47078 | alpha = _self$initialValue.alpha;
|
47079 | self.setValue({
|
47080 | hex: hex,
|
47081 | alpha: alpha
|
47082 | });
|
47083 | }
|
47084 | }
|
47085 |
|
47086 | self.$el.on('click', '.color-picker-initial-color', handleInitialColorClick);
|
47087 |
|
47088 | self.destroyInitialCurrentEvents = function destroyInitialCurrentEvents() {
|
47089 | self.$el.off('click', '.color-picker-initial-color', handleInitialColorClick);
|
47090 | };
|
47091 | },
|
47092 | update: function update(self) {
|
47093 | self.$el.find('.color-picker-module-initial-current-colors .color-picker-initial-color').css('background-color', self.initialValue.hex);
|
47094 | self.$el.find('.color-picker-module-initial-current-colors .color-picker-current-color').css('background-color', self.value.hex);
|
47095 | },
|
47096 | destroy: function destroy(self) {
|
47097 | if (self.destroyInitialCurrentEvents) {
|
47098 | self.destroyInitialCurrentEvents();
|
47099 | }
|
47100 |
|
47101 | delete self.destroyInitialCurrentEvents;
|
47102 | }
|
47103 | };
|
47104 |
|
47105 | var moduleRgbBars = {
|
47106 | render: function render(self) {
|
47107 | var _self$params = self.params,
|
47108 | barLabel = _self$params.barLabel,
|
47109 | barValue = _self$params.barValue,
|
47110 | barValueEditable = _self$params.barValueEditable,
|
47111 | redLabelText = _self$params.redLabelText,
|
47112 | greenLabelText = _self$params.greenLabelText,
|
47113 | blueLabelText = _self$params.blueLabelText;
|
47114 | return $jsx("div", {
|
47115 | class: "color-picker-module color-picker-module-rgb-bars"
|
47116 | }, $jsx("div", {
|
47117 | class: "color-picker-bar-wrap"
|
47118 | }, barLabel && $jsx("div", {
|
47119 | class: "color-picker-bar-label"
|
47120 | }, redLabelText), $jsx("div", {
|
47121 | class: "range-slider color-picker-bar color-picker-bar-red"
|
47122 | }), barValue && $jsx("div", {
|
47123 | class: "color-picker-bar-value"
|
47124 | }, barValueEditable ? $jsx("input", {
|
47125 | type: "number",
|
47126 | step: "1",
|
47127 | min: "0",
|
47128 | max: "255",
|
47129 | class: "color-picker-value-bar-red",
|
47130 | "data-color-index": "0"
|
47131 | }) : $jsx("span", {
|
47132 | class: "color-picker-value-bar-red"
|
47133 | }))), $jsx("div", {
|
47134 | class: "color-picker-bar-wrap"
|
47135 | }, barLabel && $jsx("div", {
|
47136 | class: "color-picker-bar-label"
|
47137 | }, greenLabelText), $jsx("div", {
|
47138 | class: "range-slider color-picker-bar color-picker-bar-green"
|
47139 | }), barValue && $jsx("div", {
|
47140 | class: "color-picker-bar-value"
|
47141 | }, barValueEditable ? $jsx("input", {
|
47142 | type: "number",
|
47143 | step: "1",
|
47144 | min: "0",
|
47145 | max: "255",
|
47146 | class: "color-picker-value-bar-green",
|
47147 | "data-color-index": "1"
|
47148 | }) : $jsx("span", {
|
47149 | class: "color-picker-value-bar-green"
|
47150 | }))), $jsx("div", {
|
47151 | class: "color-picker-bar-wrap"
|
47152 | }, barLabel && $jsx("div", {
|
47153 | class: "color-picker-bar-label"
|
47154 | }, blueLabelText), $jsx("div", {
|
47155 | class: "range-slider color-picker-bar color-picker-bar-blue"
|
47156 | }), barValue && $jsx("div", {
|
47157 | class: "color-picker-bar-value"
|
47158 | }, barValueEditable ? $jsx("input", {
|
47159 | type: "number",
|
47160 | step: "1",
|
47161 | min: "0",
|
47162 | max: "255",
|
47163 | class: "color-picker-value-bar-blue",
|
47164 | "data-color-index": "2"
|
47165 | }) : $jsx("span", {
|
47166 | class: "color-picker-value-bar-blue"
|
47167 | }))));
|
47168 | },
|
47169 | init: function init(self) {
|
47170 | self.redBar = self.app.range.create({
|
47171 | el: self.$el.find('.color-picker-bar-red'),
|
47172 | min: 0,
|
47173 | max: 255,
|
47174 | step: 1,
|
47175 | value: 0,
|
47176 | vertical: true,
|
47177 | on: {
|
47178 | change: function change(range, value) {
|
47179 | self.setValue({
|
47180 | rgb: [value, self.value.rgb[1], self.value.rgb[2]]
|
47181 | });
|
47182 | }
|
47183 | }
|
47184 | });
|
47185 | self.greenBar = self.app.range.create({
|
47186 | el: self.$el.find('.color-picker-bar-green'),
|
47187 | min: 0,
|
47188 | max: 255,
|
47189 | step: 1,
|
47190 | value: 0,
|
47191 | vertical: true,
|
47192 | on: {
|
47193 | change: function change(range, value) {
|
47194 | self.setValue({
|
47195 | rgb: [self.value.rgb[0], value, self.value.rgb[2]]
|
47196 | });
|
47197 | }
|
47198 | }
|
47199 | });
|
47200 | self.blueBar = self.app.range.create({
|
47201 | el: self.$el.find('.color-picker-bar-blue'),
|
47202 | min: 0,
|
47203 | max: 255,
|
47204 | step: 1,
|
47205 | value: 0,
|
47206 | vertical: true,
|
47207 | on: {
|
47208 | change: function change(range, value) {
|
47209 | self.setValue({
|
47210 | rgb: [self.value.rgb[0], self.value.rgb[1], value]
|
47211 | });
|
47212 | }
|
47213 | }
|
47214 | });
|
47215 |
|
47216 | function handleInputChange(e) {
|
47217 | var rgb = [].concat(self.value.rgb);
|
47218 | var index = parseInt($(e.target).attr('data-color-index'), 10);
|
47219 | var value = parseInt(e.target.value, 10);
|
47220 |
|
47221 | if (Number.isNaN(value)) {
|
47222 | e.target.value = rgb[index];
|
47223 | return;
|
47224 | }
|
47225 |
|
47226 | value = Math.max(0, Math.min(255, value));
|
47227 | rgb[index] = value;
|
47228 | self.setValue({
|
47229 | rgb: rgb
|
47230 | });
|
47231 | }
|
47232 |
|
47233 | self.$el.on('change', '.color-picker-module-rgb-bars input', handleInputChange);
|
47234 |
|
47235 | self.destroyRgbBarsEvents = function destroyRgbBarsEvents() {
|
47236 | self.$el.off('change', '.color-picker-module-rgb-bars input', handleInputChange);
|
47237 | };
|
47238 | },
|
47239 | update: function update(self) {
|
47240 | var value = self.value,
|
47241 | redBar = self.redBar,
|
47242 | greenBar = self.greenBar,
|
47243 | blueBar = self.blueBar;
|
47244 | var _self$params2 = self.params,
|
47245 | barValue = _self$params2.barValue,
|
47246 | barValueEditable = _self$params2.barValueEditable;
|
47247 | var rgb = value.rgb;
|
47248 | redBar.value = rgb[0];
|
47249 | greenBar.value = rgb[1];
|
47250 | blueBar.value = rgb[2];
|
47251 | redBar.layout();
|
47252 | greenBar.layout();
|
47253 | blueBar.layout();
|
47254 | redBar.$el.find('.range-bar').css('background-image', "linear-gradient(to top, rgb(0, " + rgb[1] + ", " + rgb[2] + "), rgb(255, " + rgb[1] + ", " + rgb[2] + "))");
|
47255 | greenBar.$el.find('.range-bar').css('background-image', "linear-gradient(to top, rgb(" + rgb[0] + ", 0, " + rgb[2] + "), rgb(" + rgb[0] + ", 255, " + rgb[2] + "))");
|
47256 | blueBar.$el.find('.range-bar').css('background-image', "linear-gradient(to top, rgb(" + rgb[0] + ", " + rgb[1] + ", 0), rgb(" + rgb[0] + ", " + rgb[1] + ", 255))");
|
47257 |
|
47258 | if (barValue && barValueEditable) {
|
47259 | self.$el.find('input.color-picker-value-bar-red').val(rgb[0]);
|
47260 | self.$el.find('input.color-picker-value-bar-green').val(rgb[1]);
|
47261 | self.$el.find('input.color-picker-value-bar-blue').val(rgb[2]);
|
47262 | } else if (barValue) {
|
47263 | self.$el.find('span.color-picker-value-bar-red').text(rgb[0]);
|
47264 | self.$el.find('span.color-picker-value-bar-green').text(rgb[1]);
|
47265 | self.$el.find('span.color-picker-value-bar-blue').text(rgb[2]);
|
47266 | }
|
47267 | },
|
47268 | destroy: function destroy(self) {
|
47269 | if (self.redBar && self.redBar.destroy) {
|
47270 | self.redBar.destroy();
|
47271 | }
|
47272 |
|
47273 | if (self.greenBar && self.greenBar.destroy) {
|
47274 | self.greenBar.destroy();
|
47275 | }
|
47276 |
|
47277 | if (self.blueBar && self.blueBar.destroy) {
|
47278 | self.blueBar.destroy();
|
47279 | }
|
47280 |
|
47281 | delete self.redBar;
|
47282 | delete self.greenBar;
|
47283 | delete self.blueBar;
|
47284 | if (self.destroyRgbBarsEvents) self.destroyRgbBarsEvents();
|
47285 | delete self.destroyRgbBarsEvents;
|
47286 | }
|
47287 | };
|
47288 |
|
47289 | var moduleRgbSliders = {
|
47290 | render: function render(self) {
|
47291 | var _self$params = self.params,
|
47292 | sliderLabel = _self$params.sliderLabel,
|
47293 | sliderValue = _self$params.sliderValue,
|
47294 | sliderValueEditable = _self$params.sliderValueEditable,
|
47295 | redLabelText = _self$params.redLabelText,
|
47296 | greenLabelText = _self$params.greenLabelText,
|
47297 | blueLabelText = _self$params.blueLabelText;
|
47298 | return $jsx("div", {
|
47299 | class: "color-picker-module color-picker-module-rgb-sliders"
|
47300 | }, $jsx("div", {
|
47301 | class: "color-picker-slider-wrap"
|
47302 | }, sliderLabel && $jsx("div", {
|
47303 | class: "color-picker-slider-label"
|
47304 | }, redLabelText), $jsx("div", {
|
47305 | class: "range-slider color-picker-slider color-picker-slider-red"
|
47306 | }), sliderValue && $jsx("div", {
|
47307 | class: "color-picker-slider-value"
|
47308 | }, sliderValueEditable ? $jsx("input", {
|
47309 | type: "number",
|
47310 | step: "1",
|
47311 | min: "0",
|
47312 | max: "255",
|
47313 | class: "color-picker-value-red",
|
47314 | "data-color-index": "0"
|
47315 | }) : $jsx("span", {
|
47316 | class: "color-picker-value-red"
|
47317 | }))), $jsx("div", {
|
47318 | class: "color-picker-slider-wrap"
|
47319 | }, sliderLabel && $jsx("div", {
|
47320 | class: "color-picker-slider-label"
|
47321 | }, greenLabelText), $jsx("div", {
|
47322 | class: "range-slider color-picker-slider color-picker-slider-green"
|
47323 | }), sliderValue && $jsx("div", {
|
47324 | class: "color-picker-slider-value"
|
47325 | }, sliderValueEditable ? $jsx("input", {
|
47326 | type: "number",
|
47327 | step: "1",
|
47328 | min: "0",
|
47329 | max: "255",
|
47330 | class: "color-picker-value-green",
|
47331 | "data-color-index": "1"
|
47332 | }) : $jsx("span", {
|
47333 | class: "color-picker-value-green"
|
47334 | }))), $jsx("div", {
|
47335 | class: "color-picker-slider-wrap"
|
47336 | }, sliderLabel && $jsx("div", {
|
47337 | class: "color-picker-slider-label"
|
47338 | }, blueLabelText), $jsx("div", {
|
47339 | class: "range-slider color-picker-slider color-picker-slider-blue"
|
47340 | }), sliderValue && $jsx("div", {
|
47341 | class: "color-picker-slider-value"
|
47342 | }, sliderValueEditable ? $jsx("input", {
|
47343 | type: "number",
|
47344 | step: "1",
|
47345 | min: "0",
|
47346 | max: "255",
|
47347 | class: "color-picker-value-blue",
|
47348 | "data-color-index": "2"
|
47349 | }) : $jsx("span", {
|
47350 | class: "color-picker-value-blue"
|
47351 | }))));
|
47352 | },
|
47353 | init: function init(self) {
|
47354 | self.redRangeSlider = self.app.range.create({
|
47355 | el: self.$el.find('.color-picker-slider-red'),
|
47356 | min: 0,
|
47357 | max: 255,
|
47358 | step: 1,
|
47359 | value: 0,
|
47360 | on: {
|
47361 | change: function change(range, value) {
|
47362 | self.setValue({
|
47363 | rgb: [value, self.value.rgb[1], self.value.rgb[2]]
|
47364 | });
|
47365 | }
|
47366 | }
|
47367 | });
|
47368 | self.greenRangeSlider = self.app.range.create({
|
47369 | el: self.$el.find('.color-picker-slider-green'),
|
47370 | min: 0,
|
47371 | max: 255,
|
47372 | step: 1,
|
47373 | value: 0,
|
47374 | on: {
|
47375 | change: function change(range, value) {
|
47376 | self.setValue({
|
47377 | rgb: [self.value.rgb[0], value, self.value.rgb[2]]
|
47378 | });
|
47379 | }
|
47380 | }
|
47381 | });
|
47382 | self.blueRangeSlider = self.app.range.create({
|
47383 | el: self.$el.find('.color-picker-slider-blue'),
|
47384 | min: 0,
|
47385 | max: 255,
|
47386 | step: 1,
|
47387 | value: 0,
|
47388 | on: {
|
47389 | change: function change(range, value) {
|
47390 | self.setValue({
|
47391 | rgb: [self.value.rgb[0], self.value.rgb[1], value]
|
47392 | });
|
47393 | }
|
47394 | }
|
47395 | });
|
47396 |
|
47397 | function handleInputChange(e) {
|
47398 | var rgb = [].concat(self.value.rgb);
|
47399 | var index = parseInt($(e.target).attr('data-color-index'), 10);
|
47400 | var value = parseInt(e.target.value, 10);
|
47401 |
|
47402 | if (Number.isNaN(value)) {
|
47403 | e.target.value = rgb[index];
|
47404 | return;
|
47405 | }
|
47406 |
|
47407 | value = Math.max(0, Math.min(255, value));
|
47408 | rgb[index] = value;
|
47409 | self.setValue({
|
47410 | rgb: rgb
|
47411 | });
|
47412 | }
|
47413 |
|
47414 | self.$el.on('change', '.color-picker-module-rgb-sliders input', handleInputChange);
|
47415 |
|
47416 | self.destroyRgbSlidersEvents = function destroyRgbSlidersEvents() {
|
47417 | self.$el.off('change', '.color-picker-module-rgb-sliders input', handleInputChange);
|
47418 | };
|
47419 | },
|
47420 | update: function update(self) {
|
47421 | var app = self.app,
|
47422 | value = self.value,
|
47423 | redRangeSlider = self.redRangeSlider,
|
47424 | greenRangeSlider = self.greenRangeSlider,
|
47425 | blueRangeSlider = self.blueRangeSlider;
|
47426 | var _self$params2 = self.params,
|
47427 | sliderValue = _self$params2.sliderValue,
|
47428 | sliderValueEditable = _self$params2.sliderValueEditable;
|
47429 | var rgb = value.rgb;
|
47430 | redRangeSlider.value = rgb[0];
|
47431 | greenRangeSlider.value = rgb[1];
|
47432 | blueRangeSlider.value = rgb[2];
|
47433 | redRangeSlider.layout();
|
47434 | greenRangeSlider.layout();
|
47435 | blueRangeSlider.layout();
|
47436 | redRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "rgb(" + rgb[0] + ", " + rgb[1] + ", " + rgb[2] + ")");
|
47437 | greenRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "rgb(" + rgb[0] + ", " + rgb[1] + ", " + rgb[2] + ")");
|
47438 | blueRangeSlider.$el[0].style.setProperty('--f7-range-knob-color', "rgb(" + rgb[0] + ", " + rgb[1] + ", " + rgb[2] + ")");
|
47439 | var direction = app.rtl ? 'to left' : 'to right';
|
47440 | redRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + direction + ", rgb(0, " + rgb[1] + ", " + rgb[2] + "), rgb(255, " + rgb[1] + ", " + rgb[2] + "))");
|
47441 | greenRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + direction + ", rgb(" + rgb[0] + ", 0, " + rgb[2] + "), rgb(" + rgb[0] + ", 255, " + rgb[2] + "))");
|
47442 | blueRangeSlider.$el.find('.range-bar').css('background-image', "linear-gradient(" + direction + ", rgb(" + rgb[0] + ", " + rgb[1] + ", 0), rgb(" + rgb[0] + ", " + rgb[1] + ", 255))");
|
47443 |
|
47444 | if (sliderValue && sliderValueEditable) {
|
47445 | self.$el.find('input.color-picker-value-red').val(rgb[0]);
|
47446 | self.$el.find('input.color-picker-value-green').val(rgb[1]);
|
47447 | self.$el.find('input.color-picker-value-blue').val(rgb[2]);
|
47448 | } else if (sliderValue) {
|
47449 | self.$el.find('span.color-picker-value-red').text(rgb[0]);
|
47450 | self.$el.find('span.color-picker-value-green').text(rgb[1]);
|
47451 | self.$el.find('span.color-picker-value-blue').text(rgb[2]);
|
47452 | }
|
47453 | },
|
47454 | destroy: function destroy(self) {
|
47455 | if (self.redRangeSlider && self.redRangeSlider.destroy) {
|
47456 | self.redRangeSlider.destroy();
|
47457 | }
|
47458 |
|
47459 | if (self.greenRangeSlider && self.greenRangeSlider.destroy) {
|
47460 | self.greenRangeSlider.destroy();
|
47461 | }
|
47462 |
|
47463 | if (self.blueRangeSlider && self.blueRangeSlider.destroy) {
|
47464 | self.blueRangeSlider.destroy();
|
47465 | }
|
47466 |
|
47467 | delete self.redRangeSlider;
|
47468 | delete self.greenRangeSlider;
|
47469 | delete self.blueRangeSlider;
|
47470 | if (self.destroyRgbSlidersEvents) self.destroyRgbSlidersEvents();
|
47471 | delete self.destroyRgbSlidersEvents;
|
47472 | }
|
47473 | };
|
47474 |
|
47475 | var moduleSbSpectrum = {
|
47476 | render: function render() {
|
47477 | return $jsx("div", {
|
47478 | class: "color-picker-module color-picker-module-sb-spectrum"
|
47479 | }, $jsx("div", {
|
47480 | class: "color-picker-sb-spectrum",
|
47481 | style: "background-color: hsl(0, 100%, 50%)"
|
47482 | }, $jsx("div", {
|
47483 | class: "color-picker-sb-spectrum-handle"
|
47484 | })));
|
47485 | },
|
47486 | init: function init(self) {
|
47487 | var app = self.app;
|
47488 | var isTouched;
|
47489 | var isMoved;
|
47490 | var touchStartX;
|
47491 | var touchStartY;
|
47492 | var touchCurrentX;
|
47493 | var touchCurrentY;
|
47494 | var specterRect;
|
47495 | var specterIsTouched;
|
47496 | var specterHandleIsTouched;
|
47497 | var $el = self.$el;
|
47498 |
|
47499 | function setSBFromSpecterCoords(x, y) {
|
47500 | var s = (x - specterRect.left) / specterRect.width;
|
47501 | var b = (y - specterRect.top) / specterRect.height;
|
47502 | s = Math.max(0, Math.min(1, s));
|
47503 | b = 1 - Math.max(0, Math.min(1, b));
|
47504 | self.setValue({
|
47505 | hsb: [self.value.hue, s, b]
|
47506 | });
|
47507 | }
|
47508 |
|
47509 | function handleTouchStart(e) {
|
47510 | if (isMoved || isTouched) return;
|
47511 | touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
47512 | touchCurrentX = touchStartX;
|
47513 | touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
47514 | touchCurrentY = touchStartY;
|
47515 | var $targetEl = $(e.target);
|
47516 | specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;
|
47517 |
|
47518 | if (!specterHandleIsTouched) {
|
47519 | specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;
|
47520 | }
|
47521 |
|
47522 | if (specterIsTouched) {
|
47523 | specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();
|
47524 | setSBFromSpecterCoords(touchStartX, touchStartY);
|
47525 | }
|
47526 |
|
47527 | if (specterHandleIsTouched || specterIsTouched) {
|
47528 | $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');
|
47529 | }
|
47530 | }
|
47531 |
|
47532 | function handleTouchMove(e) {
|
47533 | if (!(specterIsTouched || specterHandleIsTouched)) return;
|
47534 | touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
47535 | touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
47536 | e.preventDefault();
|
47537 |
|
47538 | if (!isMoved) {
|
47539 |
|
47540 | isMoved = true;
|
47541 |
|
47542 | if (specterHandleIsTouched) {
|
47543 | specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();
|
47544 | }
|
47545 | }
|
47546 |
|
47547 | if (specterIsTouched || specterHandleIsTouched) {
|
47548 | setSBFromSpecterCoords(touchCurrentX, touchCurrentY);
|
47549 | }
|
47550 | }
|
47551 |
|
47552 | function handleTouchEnd() {
|
47553 | isMoved = false;
|
47554 |
|
47555 | if (specterIsTouched || specterHandleIsTouched) {
|
47556 | $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');
|
47557 | }
|
47558 |
|
47559 | specterIsTouched = false;
|
47560 | specterHandleIsTouched = false;
|
47561 | }
|
47562 |
|
47563 | function handleResize() {
|
47564 | self.modules['sb-spectrum'].update(self);
|
47565 | }
|
47566 |
|
47567 | var passiveListener = app.touchEvents.start === 'touchstart' && getSupport$1().passiveListener ? {
|
47568 | passive: true,
|
47569 | capture: false
|
47570 | } : false;
|
47571 | self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);
|
47572 | app.on('touchmove:active', handleTouchMove);
|
47573 | app.on('touchend:passive', handleTouchEnd);
|
47574 | app.on('resize', handleResize);
|
47575 |
|
47576 | self.destroySpectrumEvents = function destroySpectrumEvents() {
|
47577 | self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);
|
47578 | app.off('touchmove:active', handleTouchMove);
|
47579 | app.off('touchend:passive', handleTouchEnd);
|
47580 | app.off('resize', handleResize);
|
47581 | };
|
47582 | },
|
47583 | update: function update(self) {
|
47584 | var value = self.value;
|
47585 | var hsl = value.hsl,
|
47586 | hsb = value.hsb;
|
47587 | var specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;
|
47588 | var specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;
|
47589 | self.$el.find('.color-picker-sb-spectrum').css('background-color', "hsl(" + hsl[0] + ", 100%, 50%)");
|
47590 | self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', "hsl(" + hsl[0] + ", " + hsl[1] * 100 + "%, " + hsl[2] * 100 + "%)").transform("translate(" + specterWidth * hsb[1] + "px, " + specterHeight * (1 - hsb[2]) + "px)");
|
47591 | },
|
47592 | destroy: function destroy(self) {
|
47593 | if (self.destroySpectrumEvents) self.destroySpectrumEvents();
|
47594 | delete self.destroySpectrumEvents;
|
47595 | }
|
47596 | };
|
47597 |
|
47598 | var moduleHsSpectrum = {
|
47599 | render: function render() {
|
47600 | return $jsx("div", {
|
47601 | class: "color-picker-module color-picker-module-hs-spectrum"
|
47602 | }, $jsx("div", {
|
47603 | class: "color-picker-hs-spectrum"
|
47604 | }, $jsx("div", {
|
47605 | class: "color-picker-hs-spectrum-handle"
|
47606 | })));
|
47607 | },
|
47608 | init: function init(self) {
|
47609 | var app = self.app;
|
47610 | var isTouched;
|
47611 | var isMoved;
|
47612 | var touchStartX;
|
47613 | var touchStartY;
|
47614 | var touchCurrentX;
|
47615 | var touchCurrentY;
|
47616 | var specterRect;
|
47617 | var specterIsTouched;
|
47618 | var specterHandleIsTouched;
|
47619 | var $el = self.$el;
|
47620 |
|
47621 | function setHSFromSpecterCoords(x, y) {
|
47622 | var h = (x - specterRect.left) / specterRect.width * 360;
|
47623 | var s = (y - specterRect.top) / specterRect.height;
|
47624 | h = Math.max(0, Math.min(360, h));
|
47625 | s = 1 - Math.max(0, Math.min(1, s));
|
47626 | self.setValue({
|
47627 | hsb: [h, s, self.value.hsb[2]]
|
47628 | });
|
47629 | }
|
47630 |
|
47631 | function handleTouchStart(e) {
|
47632 | if (isMoved || isTouched) return;
|
47633 | touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
47634 | touchCurrentX = touchStartX;
|
47635 | touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
47636 | touchCurrentY = touchStartY;
|
47637 | var $targetEl = $(e.target);
|
47638 | specterHandleIsTouched = $targetEl.closest('.color-picker-hs-spectrum-handle').length > 0;
|
47639 |
|
47640 | if (!specterHandleIsTouched) {
|
47641 | specterIsTouched = $targetEl.closest('.color-picker-hs-spectrum').length > 0;
|
47642 | }
|
47643 |
|
47644 | if (specterIsTouched) {
|
47645 | specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();
|
47646 | setHSFromSpecterCoords(touchStartX, touchStartY);
|
47647 | }
|
47648 |
|
47649 | if (specterHandleIsTouched || specterIsTouched) {
|
47650 | $el.find('.color-picker-hs-spectrum-handle').addClass('color-picker-hs-spectrum-handle-pressed');
|
47651 | }
|
47652 | }
|
47653 |
|
47654 | function handleTouchMove(e) {
|
47655 | if (!(specterIsTouched || specterHandleIsTouched)) return;
|
47656 | touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
47657 | touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
47658 | e.preventDefault();
|
47659 |
|
47660 | if (!isMoved) {
|
47661 |
|
47662 | isMoved = true;
|
47663 |
|
47664 | if (specterHandleIsTouched) {
|
47665 | specterRect = $el.find('.color-picker-hs-spectrum')[0].getBoundingClientRect();
|
47666 | }
|
47667 | }
|
47668 |
|
47669 | if (specterIsTouched || specterHandleIsTouched) {
|
47670 | setHSFromSpecterCoords(touchCurrentX, touchCurrentY);
|
47671 | }
|
47672 | }
|
47673 |
|
47674 | function handleTouchEnd() {
|
47675 | isMoved = false;
|
47676 |
|
47677 | if (specterIsTouched || specterHandleIsTouched) {
|
47678 | $el.find('.color-picker-hs-spectrum-handle').removeClass('color-picker-hs-spectrum-handle-pressed');
|
47679 | }
|
47680 |
|
47681 | specterIsTouched = false;
|
47682 | specterHandleIsTouched = false;
|
47683 | }
|
47684 |
|
47685 | function handleResize() {
|
47686 | self.modules['hs-spectrum'].update(self);
|
47687 | }
|
47688 |
|
47689 | var passiveListener = app.touchEvents.start === 'touchstart' && getSupport$1().passiveListener ? {
|
47690 | passive: true,
|
47691 | capture: false
|
47692 | } : false;
|
47693 | self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);
|
47694 | app.on('touchmove:active', handleTouchMove);
|
47695 | app.on('touchend:passive', handleTouchEnd);
|
47696 | app.on('resize', handleResize);
|
47697 |
|
47698 | self.destroySpectrumEvents = function destroySpectrumEvents() {
|
47699 | self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);
|
47700 | app.off('touchmove:active', handleTouchMove);
|
47701 | app.off('touchend:passive', handleTouchEnd);
|
47702 | app.off('resize', handleResize);
|
47703 | };
|
47704 | },
|
47705 | update: function update(self) {
|
47706 | var value = self.value;
|
47707 | var hsb = value.hsb;
|
47708 | var specterWidth = self.$el.find('.color-picker-hs-spectrum')[0].offsetWidth;
|
47709 | var specterHeight = self.$el.find('.color-picker-hs-spectrum')[0].offsetHeight;
|
47710 | var hslBright = colorHsbToHsl(hsb[0], hsb[1], 1);
|
47711 | self.$el.find('.color-picker-hs-spectrum-handle').css('background-color', "hsl(" + hslBright[0] + ", " + hslBright[1] * 100 + "%, " + hslBright[2] * 100 + "%)").transform("translate(" + specterWidth * (hsb[0] / 360) + "px, " + specterHeight * (1 - hsb[1]) + "px)");
|
47712 | },
|
47713 | destroy: function destroy(self) {
|
47714 | if (self.destroySpectrumEvents) self.destroySpectrumEvents();
|
47715 | delete self.destroySpectrumEvents;
|
47716 | }
|
47717 | };
|
47718 |
|
47719 | function svgWheelCircles() {
|
47720 | var total = 256;
|
47721 | var circles = '';
|
47722 |
|
47723 | for (var i = total; i > 0; i -= 1) {
|
47724 | var angle = i * Math.PI / (total / 2);
|
47725 | var hue = 360 / total * i;
|
47726 | circles += "<circle cx=\"" + (150 - Math.sin(angle) * 125) + "\" cy=\"" + (150 - Math.cos(angle) * 125) + "\" r=\"25\" fill=\"hsl(" + hue + ", 100%, 50%)\"></circle>";
|
47727 | }
|
47728 |
|
47729 | return circles;
|
47730 | }
|
47731 |
|
47732 | var moduleWheel = {
|
47733 | render: function render() {
|
47734 | return $jsx("div", {
|
47735 | class: "color-picker-module color-picker-module-wheel"
|
47736 | }, $jsx("div", {
|
47737 | class: "color-picker-wheel"
|
47738 | }, $jsx("svg", {
|
47739 | viewBox: "0 0 300 300",
|
47740 | width: "300",
|
47741 | height: "300"
|
47742 | }, svgWheelCircles()), $jsx("div", {
|
47743 | class: "color-picker-wheel-handle"
|
47744 | }), $jsx("div", {
|
47745 | class: "color-picker-sb-spectrum",
|
47746 | style: "background-color: hsl(0, 100%, 50%)"
|
47747 | }, $jsx("div", {
|
47748 | class: "color-picker-sb-spectrum-handle"
|
47749 | }))));
|
47750 | },
|
47751 | init: function init(self) {
|
47752 | var app = self.app;
|
47753 | var isTouched;
|
47754 | var isMoved;
|
47755 | var touchStartX;
|
47756 | var touchStartY;
|
47757 | var touchCurrentX;
|
47758 | var touchCurrentY;
|
47759 | var wheelRect;
|
47760 | var wheelIsTouched;
|
47761 | var wheelHandleIsTouched;
|
47762 | var specterRect;
|
47763 | var specterIsTouched;
|
47764 | var specterHandleIsTouched;
|
47765 | var $el = self.$el;
|
47766 |
|
47767 | function setHueFromWheelCoords(x, y) {
|
47768 | var wheelCenterX = wheelRect.left + wheelRect.width / 2;
|
47769 | var wheelCenterY = wheelRect.top + wheelRect.height / 2;
|
47770 | var angleRad = Math.atan2(y - wheelCenterY, x - wheelCenterX);
|
47771 | var angleDeg = angleRad * 180 / Math.PI + 90;
|
47772 | if (angleDeg < 0) angleDeg += 360;
|
47773 | angleDeg = 360 - angleDeg;
|
47774 | self.setValue({
|
47775 | hue: angleDeg
|
47776 | });
|
47777 | }
|
47778 |
|
47779 | function setSBFromSpecterCoords(x, y) {
|
47780 | var s = (x - specterRect.left) / specterRect.width;
|
47781 | var b = (y - specterRect.top) / specterRect.height;
|
47782 | s = Math.max(0, Math.min(1, s));
|
47783 | b = 1 - Math.max(0, Math.min(1, b));
|
47784 | self.setValue({
|
47785 | hsb: [self.value.hue, s, b]
|
47786 | });
|
47787 | }
|
47788 |
|
47789 | function handleTouchStart(e) {
|
47790 | if (isMoved || isTouched) return;
|
47791 | touchStartX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;
|
47792 | touchCurrentX = touchStartX;
|
47793 | touchStartY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;
|
47794 | touchCurrentY = touchStartY;
|
47795 | var $targetEl = $(e.target);
|
47796 | wheelHandleIsTouched = $targetEl.closest('.color-picker-wheel-handle').length > 0;
|
47797 | wheelIsTouched = $targetEl.closest('circle').length > 0;
|
47798 | specterHandleIsTouched = $targetEl.closest('.color-picker-sb-spectrum-handle').length > 0;
|
47799 |
|
47800 | if (!specterHandleIsTouched) {
|
47801 | specterIsTouched = $targetEl.closest('.color-picker-sb-spectrum').length > 0;
|
47802 | }
|
47803 |
|
47804 | if (wheelIsTouched) {
|
47805 | wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();
|
47806 | setHueFromWheelCoords(touchStartX, touchStartY);
|
47807 | }
|
47808 |
|
47809 | if (specterIsTouched) {
|
47810 | specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();
|
47811 | setSBFromSpecterCoords(touchStartX, touchStartY);
|
47812 | }
|
47813 |
|
47814 | if (specterHandleIsTouched || specterIsTouched) {
|
47815 | $el.find('.color-picker-sb-spectrum-handle').addClass('color-picker-sb-spectrum-handle-pressed');
|
47816 | }
|
47817 | }
|
47818 |
|
47819 | function handleTouchMove(e) {
|
47820 | if (!(wheelIsTouched || wheelHandleIsTouched) && !(specterIsTouched || specterHandleIsTouched)) return;
|
47821 | touchCurrentX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;
|
47822 | touchCurrentY = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;
|
47823 | e.preventDefault();
|
47824 |
|
47825 | if (!isMoved) {
|
47826 |
|
47827 | isMoved = true;
|
47828 |
|
47829 | if (wheelHandleIsTouched) {
|
47830 | wheelRect = $el.find('.color-picker-wheel')[0].getBoundingClientRect();
|
47831 | }
|
47832 |
|
47833 | if (specterHandleIsTouched) {
|
47834 | specterRect = $el.find('.color-picker-sb-spectrum')[0].getBoundingClientRect();
|
47835 | }
|
47836 | }
|
47837 |
|
47838 | if (wheelIsTouched || wheelHandleIsTouched) {
|
47839 | setHueFromWheelCoords(touchCurrentX, touchCurrentY);
|
47840 | }
|
47841 |
|
47842 | if (specterIsTouched || specterHandleIsTouched) {
|
47843 | setSBFromSpecterCoords(touchCurrentX, touchCurrentY);
|
47844 | }
|
47845 | }
|
47846 |
|
47847 | function handleTouchEnd() {
|
47848 | isMoved = false;
|
47849 |
|
47850 | if (specterIsTouched || specterHandleIsTouched) {
|
47851 | $el.find('.color-picker-sb-spectrum-handle').removeClass('color-picker-sb-spectrum-handle-pressed');
|
47852 | }
|
47853 |
|
47854 | wheelIsTouched = false;
|
47855 | wheelHandleIsTouched = false;
|
47856 | specterIsTouched = false;
|
47857 | specterHandleIsTouched = false;
|
47858 | }
|
47859 |
|
47860 | function handleResize() {
|
47861 | self.modules.wheel.update(self);
|
47862 | }
|
47863 |
|
47864 | var passiveListener = app.touchEvents.start === 'touchstart' && getSupport$1().passiveListener ? {
|
47865 | passive: true,
|
47866 | capture: false
|
47867 | } : false;
|
47868 | self.$el.on(app.touchEvents.start, handleTouchStart, passiveListener);
|
47869 | app.on('touchmove:active', handleTouchMove);
|
47870 | app.on('touchend:passive', handleTouchEnd);
|
47871 | app.on('resize', handleResize);
|
47872 |
|
47873 | self.destroyWheelEvents = function destroyWheelEvents() {
|
47874 | self.$el.off(app.touchEvents.start, handleTouchStart, passiveListener);
|
47875 | app.off('touchmove:active', handleTouchMove);
|
47876 | app.off('touchend:passive', handleTouchEnd);
|
47877 | app.off('resize', handleResize);
|
47878 | };
|
47879 | },
|
47880 | update: function update(self) {
|
47881 | var value = self.value;
|
47882 | var hsl = value.hsl,
|
47883 | hsb = value.hsb;
|
47884 | var specterWidth = self.$el.find('.color-picker-sb-spectrum')[0].offsetWidth;
|
47885 | var specterHeight = self.$el.find('.color-picker-sb-spectrum')[0].offsetHeight;
|
47886 | var wheelSize = self.$el.find('.color-picker-wheel')[0].offsetWidth;
|
47887 | var wheelHalfSize = wheelSize / 2;
|
47888 | var angleRad = value.hue * Math.PI / 180;
|
47889 | var handleSize = wheelSize / 6;
|
47890 | var handleHalfSize = handleSize / 2;
|
47891 | var tX = wheelHalfSize - Math.sin(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;
|
47892 | var tY = wheelHalfSize - Math.cos(angleRad) * (wheelHalfSize - handleHalfSize) - handleHalfSize;
|
47893 | self.$el.find('.color-picker-wheel-handle').css('background-color', "hsl(" + hsl[0] + ", 100%, 50%)").transform("translate(" + tX + "px, " + tY + "px)");
|
47894 | self.$el.find('.color-picker-sb-spectrum').css('background-color', "hsl(" + hsl[0] + ", 100%, 50%)");
|
47895 | self.$el.find('.color-picker-sb-spectrum-handle').css('background-color', "hsl(" + hsl[0] + ", " + hsl[1] * 100 + "%, " + hsl[2] * 100 + "%)").transform("translate(" + specterWidth * hsb[1] + "px, " + specterHeight * (1 - hsb[2]) + "px)");
|
47896 | },
|
47897 | destroy: function destroy(self) {
|
47898 | if (self.destroyWheelEvents) self.destroyWheelEvents();
|
47899 | delete self.destroyWheelEvents;
|
47900 | }
|
47901 | };
|
47902 |
|
47903 | var ColorPicker$1 = function (_Framework7Class) {
|
47904 | _inheritsLoose(ColorPicker, _Framework7Class);
|
47905 |
|
47906 | function ColorPicker(app, params) {
|
47907 | var _this;
|
47908 |
|
47909 | if (params === void 0) {
|
47910 | params = {};
|
47911 | }
|
47912 |
|
47913 | _this = _Framework7Class.call(this, params, [app]) || this;
|
47914 |
|
47915 | var self = _assertThisInitialized(_this);
|
47916 |
|
47917 | self.params = extend$1({}, app.params.colorPicker, params);
|
47918 | var $containerEl;
|
47919 |
|
47920 | if (self.params.containerEl) {
|
47921 | $containerEl = $(self.params.containerEl);
|
47922 | if ($containerEl.length === 0) return self || _assertThisInitialized(_this);
|
47923 | }
|
47924 |
|
47925 | var $inputEl;
|
47926 |
|
47927 | if (self.params.inputEl) {
|
47928 | $inputEl = $(self.params.inputEl);
|
47929 | }
|
47930 |
|
47931 | var $targetEl;
|
47932 |
|
47933 | if (self.params.targetEl) {
|
47934 | $targetEl = $(self.params.targetEl);
|
47935 | }
|
47936 |
|
47937 | extend$1(self, {
|
47938 | app: app,
|
47939 | $containerEl: $containerEl,
|
47940 | containerEl: $containerEl && $containerEl[0],
|
47941 | inline: $containerEl && $containerEl.length > 0,
|
47942 | $inputEl: $inputEl,
|
47943 | inputEl: $inputEl && $inputEl[0],
|
47944 | $targetEl: $targetEl,
|
47945 | targetEl: $targetEl && $targetEl[0],
|
47946 | initialized: false,
|
47947 | opened: false,
|
47948 | url: self.params.url,
|
47949 | modules: {
|
47950 | 'alpha-slider': moduleAlphaSlider,
|
47951 | 'current-color': moduleCurrentColor,
|
47952 | hex: moduleHex,
|
47953 |
|
47954 | 'hsb-sliders': moduleHsbSliders,
|
47955 | 'hue-slider': moduleHueSlider,
|
47956 | 'brightness-slider': moduleBrightnessSlider,
|
47957 | palette: modulePalette,
|
47958 |
|
47959 | 'initial-current-colors': moduleInitialCurrentColors,
|
47960 | 'rgb-bars': moduleRgbBars,
|
47961 | 'rgb-sliders': moduleRgbSliders,
|
47962 | 'sb-spectrum': moduleSbSpectrum,
|
47963 | 'hs-spectrum': moduleHsSpectrum,
|
47964 | wheel: moduleWheel
|
47965 |
|
47966 | }
|
47967 | });
|
47968 |
|
47969 | function onInputClick() {
|
47970 | self.open();
|
47971 | }
|
47972 |
|
47973 | function onInputFocus(e) {
|
47974 | e.preventDefault();
|
47975 | }
|
47976 |
|
47977 | function onTargetClick() {
|
47978 | self.open();
|
47979 | }
|
47980 |
|
47981 | function onHtmlClick(e) {
|
47982 | if (self.destroyed || !self.params) return;
|
47983 | if (self.params.openIn === 'page') return;
|
47984 | var $clickTargetEl = $(e.target);
|
47985 | if (!self.opened || self.closing) return;
|
47986 | if ($clickTargetEl.closest('[class*="backdrop"]').length) return;
|
47987 | if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;
|
47988 |
|
47989 | if ($inputEl && $inputEl.length > 0) {
|
47990 | if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {
|
47991 | self.close();
|
47992 | }
|
47993 | } else if ($(e.target).closest('.sheet-modal').length === 0) {
|
47994 | self.close();
|
47995 | }
|
47996 | }
|
47997 |
|
47998 |
|
47999 | extend$1(self, {
|
48000 | attachInputEvents: function attachInputEvents() {
|
48001 | self.$inputEl.on('click', onInputClick);
|
48002 |
|
48003 | if (self.params.inputReadOnly) {
|
48004 | self.$inputEl.on('focus mousedown', onInputFocus);
|
48005 |
|
48006 | if (self.$inputEl[0]) {
|
48007 | self.$inputEl[0].f7ValidateReadonly = true;
|
48008 | }
|
48009 | }
|
48010 | },
|
48011 | detachInputEvents: function detachInputEvents() {
|
48012 | self.$inputEl.off('click', onInputClick);
|
48013 |
|
48014 | if (self.params.inputReadOnly) {
|
48015 | self.$inputEl.off('focus mousedown', onInputFocus);
|
48016 |
|
48017 | if (self.$inputEl[0]) {
|
48018 | delete self.$inputEl[0].f7ValidateReadonly;
|
48019 | }
|
48020 | }
|
48021 | },
|
48022 | attachTargetEvents: function attachTargetEvents() {
|
48023 | self.$targetEl.on('click', onTargetClick);
|
48024 | },
|
48025 | detachTargetEvents: function detachTargetEvents() {
|
48026 | self.$targetEl.off('click', onTargetClick);
|
48027 | },
|
48028 | attachHtmlEvents: function attachHtmlEvents() {
|
48029 | app.on('click', onHtmlClick);
|
48030 | },
|
48031 | detachHtmlEvents: function detachHtmlEvents() {
|
48032 | app.off('click', onHtmlClick);
|
48033 | }
|
48034 | });
|
48035 | self.init();
|
48036 | return self || _assertThisInitialized(_this);
|
48037 | }
|
48038 |
|
48039 | var _proto = ColorPicker.prototype;
|
48040 |
|
48041 | _proto.attachEvents = function attachEvents() {
|
48042 | var self = this;
|
48043 | self.centerModules = self.centerModules.bind(self);
|
48044 |
|
48045 | if (self.params.centerModules) {
|
48046 | self.app.on('resize', self.centerModules);
|
48047 | }
|
48048 | };
|
48049 |
|
48050 | _proto.detachEvents = function detachEvents() {
|
48051 | var self = this;
|
48052 |
|
48053 | if (self.params.centerModules) {
|
48054 | self.app.off('resize', self.centerModules);
|
48055 | }
|
48056 | };
|
48057 |
|
48058 | _proto.centerModules = function centerModules() {
|
48059 | var self = this;
|
48060 | if (!self.opened || !self.$el || self.inline) return;
|
48061 | var $pageContentEl = self.$el.find('.page-content');
|
48062 | if (!$pageContentEl.length) return;
|
48063 | var _$pageContentEl$ = $pageContentEl[0],
|
48064 | scrollHeight = _$pageContentEl$.scrollHeight,
|
48065 | offsetHeight = _$pageContentEl$.offsetHeight;
|
48066 |
|
48067 | if (scrollHeight <= offsetHeight) {
|
48068 | $pageContentEl.addClass('justify-content-center');
|
48069 | } else {
|
48070 | $pageContentEl.removeClass('justify-content-center');
|
48071 | }
|
48072 | };
|
48073 |
|
48074 | _proto.initInput = function initInput() {
|
48075 | var self = this;
|
48076 | if (!self.$inputEl) return;
|
48077 | if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);
|
48078 | };
|
48079 |
|
48080 | _proto.getModalType = function getModalType() {
|
48081 | var self = this;
|
48082 | var app = self.app,
|
48083 | modal = self.modal,
|
48084 | params = self.params;
|
48085 | var openIn = params.openIn,
|
48086 | openInPhone = params.openInPhone;
|
48087 | var device = getDevice$1();
|
48088 | if (modal && modal.type) return modal.type;
|
48089 | if (openIn !== 'auto') return openIn;
|
48090 | if (self.inline) return null;
|
48091 |
|
48092 | if (device.ios) {
|
48093 | return device.ipad ? 'popover' : openInPhone;
|
48094 | }
|
48095 |
|
48096 | if (app.width >= 768 || device.desktop && app.theme === 'aurora') {
|
48097 | return 'popover';
|
48098 | }
|
48099 |
|
48100 | return openInPhone;
|
48101 | };
|
48102 |
|
48103 | _proto.formatValue = function formatValue() {
|
48104 | var self = this;
|
48105 | var value = self.value;
|
48106 |
|
48107 | if (self.params.formatValue) {
|
48108 | return self.params.formatValue.call(self, value);
|
48109 | }
|
48110 |
|
48111 | return value.hex;
|
48112 | }
|
48113 | ;
|
48114 |
|
48115 | _proto.normalizeHsValues = function normalizeHsValues(arr) {
|
48116 | return [Math.floor(arr[0] * 10) / 10, Math.floor(arr[1] * 1000) / 1000, Math.floor(arr[2] * 1000) / 1000];
|
48117 | };
|
48118 |
|
48119 | _proto.setValue = function setValue(value, updateModules) {
|
48120 | if (value === void 0) {
|
48121 | value = {};
|
48122 | }
|
48123 |
|
48124 | if (updateModules === void 0) {
|
48125 | updateModules = true;
|
48126 | }
|
48127 |
|
48128 | var self = this;
|
48129 | if (typeof value === 'undefined') return;
|
48130 |
|
48131 | var _ref = self.value || {},
|
48132 | hex = _ref.hex,
|
48133 | rgb = _ref.rgb,
|
48134 | hsl = _ref.hsl,
|
48135 | hsb = _ref.hsb,
|
48136 | _ref$alpha = _ref.alpha,
|
48137 | alpha = _ref$alpha === void 0 ? 1 : _ref$alpha,
|
48138 | hue = _ref.hue,
|
48139 | rgba = _ref.rgba,
|
48140 | hsla = _ref.hsla;
|
48141 |
|
48142 | var needChangeEvent = self.value || !self.value && !self.params.value;
|
48143 | var valueChanged;
|
48144 | Object.keys(value).forEach(function (k) {
|
48145 | if (!self.value || typeof self.value[k] === 'undefined') {
|
48146 | valueChanged = true;
|
48147 | return;
|
48148 | }
|
48149 |
|
48150 | var v = value[k];
|
48151 |
|
48152 | if (Array.isArray(v)) {
|
48153 | v.forEach(function (subV, subIndex) {
|
48154 | if (subV !== self.value[k][subIndex]) {
|
48155 | valueChanged = true;
|
48156 | }
|
48157 | });
|
48158 | } else if (v !== self.value[k]) {
|
48159 | valueChanged = true;
|
48160 | }
|
48161 | });
|
48162 | if (!valueChanged) return;
|
48163 |
|
48164 | if (value.rgb || value.rgba) {
|
48165 | var _ref2 = value.rgb || value.rgba,
|
48166 | r = _ref2[0],
|
48167 | g = _ref2[1],
|
48168 | b = _ref2[2],
|
48169 | _ref2$ = _ref2[3],
|
48170 | a = _ref2$ === void 0 ? alpha : _ref2$;
|
48171 |
|
48172 | rgb = [r, g, b];
|
48173 | hex = colorRgbToHex.apply(void 0, rgb);
|
48174 | hsl = colorRgbToHsl.apply(void 0, rgb);
|
48175 | hsb = colorHslToHsb.apply(void 0, hsl);
|
48176 | hsl = self.normalizeHsValues(hsl);
|
48177 | hsb = self.normalizeHsValues(hsb);
|
48178 | hue = hsb[0];
|
48179 | alpha = a;
|
48180 | rgba = [rgb[0], rgb[1], rgb[2], a];
|
48181 | hsla = [hsl[0], hsl[1], hsl[2], a];
|
48182 | }
|
48183 |
|
48184 | if (value.hsl || value.hsla) {
|
48185 | var _ref3 = value.hsl || value.hsla,
|
48186 | h = _ref3[0],
|
48187 | s = _ref3[1],
|
48188 | l = _ref3[2],
|
48189 | _ref3$ = _ref3[3],
|
48190 | _a = _ref3$ === void 0 ? alpha : _ref3$;
|
48191 |
|
48192 | hsl = [h, s, l];
|
48193 | rgb = colorHslToRgb.apply(void 0, hsl);
|
48194 | hex = colorRgbToHex.apply(void 0, rgb);
|
48195 | hsb = colorHslToHsb.apply(void 0, hsl);
|
48196 | hsl = self.normalizeHsValues(hsl);
|
48197 | hsb = self.normalizeHsValues(hsb);
|
48198 | hue = hsb[0];
|
48199 | alpha = _a;
|
48200 | rgba = [rgb[0], rgb[1], rgb[2], _a];
|
48201 | hsla = [hsl[0], hsl[1], hsl[2], _a];
|
48202 | }
|
48203 |
|
48204 | if (value.hsb) {
|
48205 | var _value$hsb = value.hsb,
|
48206 | _h = _value$hsb[0],
|
48207 | _s = _value$hsb[1],
|
48208 | _b = _value$hsb[2],
|
48209 | _value$hsb$ = _value$hsb[3],
|
48210 | _a2 = _value$hsb$ === void 0 ? alpha : _value$hsb$;
|
48211 |
|
48212 | hsb = [_h, _s, _b];
|
48213 | hsl = colorHsbToHsl.apply(void 0, hsb);
|
48214 | rgb = colorHslToRgb.apply(void 0, hsl);
|
48215 | hex = colorRgbToHex.apply(void 0, rgb);
|
48216 | hsl = self.normalizeHsValues(hsl);
|
48217 | hsb = self.normalizeHsValues(hsb);
|
48218 | hue = hsb[0];
|
48219 | alpha = _a2;
|
48220 | rgba = [rgb[0], rgb[1], rgb[2], _a2];
|
48221 | hsla = [hsl[0], hsl[1], hsl[2], _a2];
|
48222 | }
|
48223 |
|
48224 | if (value.hex) {
|
48225 | rgb = colorHexToRgb(value.hex);
|
48226 | hex = colorRgbToHex.apply(void 0, rgb);
|
48227 | hsl = colorRgbToHsl.apply(void 0, rgb);
|
48228 | hsb = colorHslToHsb.apply(void 0, hsl);
|
48229 | hsl = self.normalizeHsValues(hsl);
|
48230 | hsb = self.normalizeHsValues(hsb);
|
48231 | hue = hsb[0];
|
48232 | rgba = [rgb[0], rgb[1], rgb[2], alpha];
|
48233 | hsla = [hsl[0], hsl[1], hsl[2], alpha];
|
48234 | }
|
48235 |
|
48236 | if (typeof value.alpha !== 'undefined') {
|
48237 | alpha = value.alpha;
|
48238 |
|
48239 | if (typeof rgb !== 'undefined') {
|
48240 | rgba = [rgb[0], rgb[1], rgb[2], alpha];
|
48241 | }
|
48242 |
|
48243 | if (typeof hsl !== 'undefined') {
|
48244 | hsla = [hsl[0], hsl[1], hsl[2], alpha];
|
48245 | }
|
48246 | }
|
48247 |
|
48248 | if (typeof value.hue !== 'undefined') {
|
48249 | var _hsl = hsl,
|
48250 | _h2 = _hsl[0],
|
48251 | _s2 = _hsl[1],
|
48252 | _l = _hsl[2];
|
48253 |
|
48254 | hsl = [value.hue, _s2, _l];
|
48255 | hsb = colorHslToHsb.apply(void 0, hsl);
|
48256 | rgb = colorHslToRgb.apply(void 0, hsl);
|
48257 | hex = colorRgbToHex.apply(void 0, rgb);
|
48258 | hsl = self.normalizeHsValues(hsl);
|
48259 | hsb = self.normalizeHsValues(hsb);
|
48260 | hue = hsb[0];
|
48261 | rgba = [rgb[0], rgb[1], rgb[2], alpha];
|
48262 | hsla = [hsl[0], hsl[1], hsl[2], alpha];
|
48263 | }
|
48264 |
|
48265 | self.value = {
|
48266 | hex: hex,
|
48267 | alpha: alpha,
|
48268 | hue: hue,
|
48269 | rgb: rgb,
|
48270 | hsl: hsl,
|
48271 | hsb: hsb,
|
48272 | rgba: rgba,
|
48273 | hsla: hsla
|
48274 | };
|
48275 | if (!self.initialValue) self.initialValue = extend$1({}, self.value);
|
48276 | self.updateValue(needChangeEvent);
|
48277 |
|
48278 | if (self.opened && updateModules) {
|
48279 | self.updateModules();
|
48280 | }
|
48281 | };
|
48282 |
|
48283 | _proto.getValue = function getValue() {
|
48284 | var self = this;
|
48285 | return self.value;
|
48286 | };
|
48287 |
|
48288 | _proto.updateValue = function updateValue(fireEvents) {
|
48289 | if (fireEvents === void 0) {
|
48290 | fireEvents = true;
|
48291 | }
|
48292 |
|
48293 | var self = this;
|
48294 | var $inputEl = self.$inputEl,
|
48295 | value = self.value,
|
48296 | $targetEl = self.$targetEl;
|
48297 |
|
48298 | if ($targetEl && self.params.targetElSetBackgroundColor) {
|
48299 | var rgba = value.rgba;
|
48300 | $targetEl.css('background-color', "rgba(" + rgba.join(', ') + ")");
|
48301 | }
|
48302 |
|
48303 | if (fireEvents) {
|
48304 | self.emit('local::change colorPickerChange', self, value);
|
48305 | }
|
48306 |
|
48307 | if ($inputEl && $inputEl.length) {
|
48308 | var inputValue = self.formatValue(value);
|
48309 |
|
48310 | if ($inputEl && $inputEl.length) {
|
48311 | $inputEl.val(inputValue);
|
48312 |
|
48313 | if (fireEvents) {
|
48314 | $inputEl.trigger('change');
|
48315 | }
|
48316 | }
|
48317 | }
|
48318 | };
|
48319 |
|
48320 | _proto.updateModules = function updateModules() {
|
48321 | var self = this;
|
48322 | var modules = self.modules;
|
48323 | self.params.modules.forEach(function (m) {
|
48324 | if (typeof m === 'string' && modules[m] && modules[m].update) {
|
48325 | modules[m].update(self);
|
48326 | } else if (m && m.update) {
|
48327 | m.update(self);
|
48328 | }
|
48329 | });
|
48330 | };
|
48331 |
|
48332 | _proto.update = function update() {
|
48333 | var self = this;
|
48334 | self.updateModules();
|
48335 | };
|
48336 |
|
48337 | _proto.renderPicker = function renderPicker() {
|
48338 | var self = this;
|
48339 | var params = self.params,
|
48340 | modules = self.modules;
|
48341 | var html = '';
|
48342 | params.modules.forEach(function (m) {
|
48343 | if (typeof m === 'string' && modules[m] && modules[m].render) {
|
48344 | html += modules[m].render(self);
|
48345 | } else if (m && m.render) {
|
48346 | html += m.render(self);
|
48347 | }
|
48348 | });
|
48349 | return html;
|
48350 | };
|
48351 |
|
48352 | _proto.renderNavbar = function renderNavbar() {
|
48353 | var self = this;
|
48354 |
|
48355 | if (self.params.renderNavbar) {
|
48356 | return self.params.renderNavbar.call(self, self);
|
48357 | }
|
48358 |
|
48359 | var _self$params = self.params,
|
48360 | openIn = _self$params.openIn,
|
48361 | navbarTitleText = _self$params.navbarTitleText,
|
48362 | navbarBackLinkText = _self$params.navbarBackLinkText,
|
48363 | navbarCloseText = _self$params.navbarCloseText;
|
48364 | return $jsx("div", {
|
48365 | class: "navbar"
|
48366 | }, $jsx("div", {
|
48367 | class: "navbar-bg"
|
48368 | }), $jsx("div", {
|
48369 | class: "navbar-inner sliding"
|
48370 | }, openIn === 'page' && $jsx("div", {
|
48371 | class: "left"
|
48372 | }, $jsx("a", {
|
48373 | class: "link back"
|
48374 | }, $jsx("i", {
|
48375 | class: "icon icon-back"
|
48376 | }), $jsx("span", {
|
48377 | class: "if-not-md"
|
48378 | }, navbarBackLinkText))), $jsx("div", {
|
48379 | class: "title"
|
48380 | }, navbarTitleText), openIn !== 'page' && $jsx("div", {
|
48381 | class: "right"
|
48382 | }, $jsx("a", {
|
48383 | class: "link popup-close",
|
48384 | "data-popup": ".color-picker-popup"
|
48385 | }, navbarCloseText))));
|
48386 | };
|
48387 |
|
48388 | _proto.renderToolbar = function renderToolbar() {
|
48389 | var self = this;
|
48390 |
|
48391 | if (self.params.renderToolbar) {
|
48392 | return self.params.renderToolbar.call(self, self);
|
48393 | }
|
48394 |
|
48395 | return $jsx("div", {
|
48396 | class: "toolbar toolbar-top no-shadow"
|
48397 | }, $jsx("div", {
|
48398 | class: "toolbar-inner"
|
48399 | }, $jsx("div", {
|
48400 | class: "left"
|
48401 | }), $jsx("div", {
|
48402 | class: "right"
|
48403 | }, $jsx("a", {
|
48404 | class: "link sheet-close popover-close",
|
48405 | "data-sheet": ".color-picker-sheet-modal",
|
48406 | "data-popover": ".color-picker-popover"
|
48407 | }, self.params.toolbarCloseText))));
|
48408 | };
|
48409 |
|
48410 | _proto.renderInline = function renderInline() {
|
48411 | var self = this;
|
48412 | var _self$params2 = self.params,
|
48413 | cssClass = _self$params2.cssClass,
|
48414 | groupedModules = _self$params2.groupedModules;
|
48415 | return $jsx("div", {
|
48416 | class: "color-picker color-picker-inline " + (groupedModules ? 'color-picker-grouped-modules' : '') + " " + (cssClass || '')
|
48417 | }, self.renderPicker());
|
48418 | };
|
48419 |
|
48420 | _proto.renderSheet = function renderSheet() {
|
48421 | var self = this;
|
48422 | var _self$params3 = self.params,
|
48423 | cssClass = _self$params3.cssClass,
|
48424 | toolbarSheet = _self$params3.toolbarSheet,
|
48425 | groupedModules = _self$params3.groupedModules;
|
48426 | return $jsx("div", {
|
48427 | class: "sheet-modal color-picker color-picker-sheet-modal " + (groupedModules ? 'color-picker-grouped-modules' : '') + " " + (cssClass || '')
|
48428 | }, toolbarSheet && self.renderToolbar(), $jsx("div", {
|
48429 | class: "sheet-modal-inner"
|
48430 | }, $jsx("div", {
|
48431 | class: "page-content"
|
48432 | }, self.renderPicker())));
|
48433 | };
|
48434 |
|
48435 | _proto.renderPopover = function renderPopover() {
|
48436 | var self = this;
|
48437 | var _self$params4 = self.params,
|
48438 | cssClass = _self$params4.cssClass,
|
48439 | toolbarPopover = _self$params4.toolbarPopover,
|
48440 | groupedModules = _self$params4.groupedModules;
|
48441 | return $jsx("div", {
|
48442 | class: "popover color-picker-popover " + (cssClass || '')
|
48443 | }, $jsx("div", {
|
48444 | class: "popover-inner"
|
48445 | }, $jsx("div", {
|
48446 | class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
|
48447 | }, toolbarPopover && self.renderToolbar(), $jsx("div", {
|
48448 | class: "page-content"
|
48449 | }, self.renderPicker()))));
|
48450 | };
|
48451 |
|
48452 | _proto.renderPopup = function renderPopup() {
|
48453 | var self = this;
|
48454 | var _self$params5 = self.params,
|
48455 | cssClass = _self$params5.cssClass,
|
48456 | navbarPopup = _self$params5.navbarPopup,
|
48457 | groupedModules = _self$params5.groupedModules;
|
48458 | return $jsx("div", {
|
48459 | class: "popup color-picker-popup " + (cssClass || '')
|
48460 | }, $jsx("div", {
|
48461 | class: "page"
|
48462 | }, navbarPopup && self.renderNavbar(), $jsx("div", {
|
48463 | class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
|
48464 | }, $jsx("div", {
|
48465 | class: "page-content"
|
48466 | }, self.renderPicker()))));
|
48467 | };
|
48468 |
|
48469 | _proto.renderPage = function renderPage() {
|
48470 | var self = this;
|
48471 | var _self$params6 = self.params,
|
48472 | cssClass = _self$params6.cssClass,
|
48473 | groupedModules = _self$params6.groupedModules;
|
48474 | return $jsx("div", {
|
48475 | class: "page color-picker-page " + (cssClass || ''),
|
48476 | "data-name": "color-picker-page"
|
48477 | }, self.renderNavbar(), $jsx("div", {
|
48478 | class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
|
48479 | }, $jsx("div", {
|
48480 | class: "page-content"
|
48481 | }, self.renderPicker())));
|
48482 | }
|
48483 | ;
|
48484 |
|
48485 | _proto.render = function render() {
|
48486 | var self = this;
|
48487 | var params = self.params;
|
48488 | if (params.render) return params.render.call(self);
|
48489 | if (self.inline) return self.renderInline();
|
48490 |
|
48491 | if (params.openIn === 'page') {
|
48492 | return self.renderPage();
|
48493 | }
|
48494 |
|
48495 | var modalType = self.getModalType();
|
48496 | if (modalType === 'popover') return self.renderPopover();
|
48497 | if (modalType === 'sheet') return self.renderSheet();
|
48498 | if (modalType === 'popup') return self.renderPopup();
|
48499 | };
|
48500 |
|
48501 | _proto.onOpen = function onOpen() {
|
48502 | var self = this;
|
48503 | var initialized = self.initialized,
|
48504 | $el = self.$el,
|
48505 | app = self.app,
|
48506 | $inputEl = self.$inputEl,
|
48507 | inline = self.inline,
|
48508 | value = self.value,
|
48509 | params = self.params,
|
48510 | modules = self.modules;
|
48511 | self.closing = false;
|
48512 | self.opened = true;
|
48513 | self.opening = true;
|
48514 |
|
48515 | self.attachEvents();
|
48516 | params.modules.forEach(function (m) {
|
48517 | if (typeof m === 'string' && modules[m] && modules[m].init) {
|
48518 | modules[m].init(self);
|
48519 | } else if (m && m.init) {
|
48520 | m.init(self);
|
48521 | }
|
48522 | });
|
48523 | var updateValue = !value && params.value;
|
48524 |
|
48525 | if (!initialized) {
|
48526 | if (value) self.setValue(value);else if (params.value) {
|
48527 | self.setValue(params.value, false);
|
48528 | } else if (!params.value) {
|
48529 | self.setValue({
|
48530 | hex: '#ff0000'
|
48531 | }, false);
|
48532 | }
|
48533 | } else if (value) {
|
48534 | self.initialValue = extend$1({}, value);
|
48535 | self.setValue(value, false);
|
48536 | }
|
48537 |
|
48538 |
|
48539 | if (updateValue) self.updateValue();
|
48540 | self.updateModules();
|
48541 |
|
48542 | if (params.centerModules) {
|
48543 | self.centerModules();
|
48544 | }
|
48545 |
|
48546 |
|
48547 | if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {
|
48548 | $inputEl.trigger('focus');
|
48549 | }
|
48550 |
|
48551 | self.initialized = true;
|
48552 |
|
48553 | if ($el) {
|
48554 | $el.trigger('colorpicker:open');
|
48555 | }
|
48556 |
|
48557 | if ($inputEl) {
|
48558 | $inputEl.trigger('colorpicker:open');
|
48559 | }
|
48560 |
|
48561 | self.emit('local::open colorPickerOpen', self);
|
48562 | };
|
48563 |
|
48564 | _proto.onOpened = function onOpened() {
|
48565 | var self = this;
|
48566 | self.opening = false;
|
48567 |
|
48568 | if (self.$el) {
|
48569 | self.$el.trigger('colorpicker:opened');
|
48570 | }
|
48571 |
|
48572 | if (self.$inputEl) {
|
48573 | self.$inputEl.trigger('colorpicker:opened');
|
48574 | }
|
48575 |
|
48576 | self.emit('local::opened colorPickerOpened', self);
|
48577 | };
|
48578 |
|
48579 | _proto.onClose = function onClose() {
|
48580 | var self = this;
|
48581 | var app = self.app,
|
48582 | params = self.params,
|
48583 | modules = self.modules;
|
48584 | self.opening = false;
|
48585 | self.closing = true;
|
48586 |
|
48587 | self.detachEvents();
|
48588 |
|
48589 | if (self.$inputEl) {
|
48590 | if (app.theme === 'md') {
|
48591 | self.$inputEl.trigger('blur');
|
48592 | } else {
|
48593 | var validate = self.$inputEl.attr('validate');
|
48594 | var required = self.$inputEl.attr('required');
|
48595 |
|
48596 | if (validate && required) {
|
48597 | app.input.validate(self.$inputEl);
|
48598 | }
|
48599 | }
|
48600 | }
|
48601 |
|
48602 | params.modules.forEach(function (m) {
|
48603 | if (typeof m === 'string' && modules[m] && modules[m].destroy) {
|
48604 | modules[m].destroy(self);
|
48605 | } else if (m && m.destroy) {
|
48606 | m.destroy(self);
|
48607 | }
|
48608 | });
|
48609 |
|
48610 | if (self.$el) {
|
48611 | self.$el.trigger('colorpicker:close');
|
48612 | }
|
48613 |
|
48614 | if (self.$inputEl) {
|
48615 | self.$inputEl.trigger('colorpicker:close');
|
48616 | }
|
48617 |
|
48618 | self.emit('local::close colorPickerClose', self);
|
48619 | };
|
48620 |
|
48621 | _proto.onClosed = function onClosed() {
|
48622 | var self = this;
|
48623 | self.opened = false;
|
48624 | self.closing = false;
|
48625 |
|
48626 | if (!self.inline) {
|
48627 | nextTick$1(function () {
|
48628 | if (self.modal && self.modal.el && self.modal.destroy) {
|
48629 | if (!self.params.routableModals) {
|
48630 | self.modal.destroy();
|
48631 | }
|
48632 | }
|
48633 |
|
48634 | delete self.modal;
|
48635 | });
|
48636 | }
|
48637 |
|
48638 | if (self.$el) {
|
48639 | self.$el.trigger('colorpicker:closed');
|
48640 | }
|
48641 |
|
48642 | if (self.$inputEl) {
|
48643 | self.$inputEl.trigger('colorpicker:closed');
|
48644 | }
|
48645 |
|
48646 | self.emit('local::closed colorPickerClosed', self);
|
48647 | };
|
48648 |
|
48649 | _proto.open = function open() {
|
48650 | var self = this;
|
48651 | var app = self.app,
|
48652 | opened = self.opened,
|
48653 | inline = self.inline,
|
48654 | $inputEl = self.$inputEl,
|
48655 | $targetEl = self.$targetEl,
|
48656 | params = self.params;
|
48657 | if (opened) return;
|
48658 |
|
48659 | if (inline) {
|
48660 | self.$el = $(self.render());
|
48661 | self.$el[0].f7ColorPicker = self;
|
48662 | self.$containerEl.append(self.$el);
|
48663 | self.onOpen();
|
48664 | self.onOpened();
|
48665 | return;
|
48666 | }
|
48667 |
|
48668 | var colorPickerContent = self.render();
|
48669 |
|
48670 | if (params.openIn === 'page') {
|
48671 | self.view.router.navigate({
|
48672 | url: self.url,
|
48673 | route: {
|
48674 | content: colorPickerContent,
|
48675 | path: self.url,
|
48676 | on: {
|
48677 | pageBeforeIn: function pageBeforeIn(e, page) {
|
48678 | self.$el = page.$el.find('.color-picker');
|
48679 | self.$el[0].f7ColorPicker = self;
|
48680 | self.onOpen();
|
48681 | },
|
48682 | pageAfterIn: function pageAfterIn() {
|
48683 | self.onOpened();
|
48684 | },
|
48685 | pageBeforeOut: function pageBeforeOut() {
|
48686 | self.onClose();
|
48687 | },
|
48688 | pageAfterOut: function pageAfterOut() {
|
48689 | self.onClosed();
|
48690 |
|
48691 | if (self.$el && self.$el[0]) {
|
48692 | self.$el[0].f7ColorPicker = null;
|
48693 | delete self.$el[0].f7ColorPicker;
|
48694 | }
|
48695 | }
|
48696 | }
|
48697 | }
|
48698 | });
|
48699 | } else {
|
48700 | var modalType = self.getModalType();
|
48701 | var backdrop = params.backdrop;
|
48702 |
|
48703 | if (backdrop === null || typeof backdrop === 'undefined') {
|
48704 | if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;
|
48705 | if (modalType === 'popup') backdrop = true;
|
48706 | }
|
48707 |
|
48708 | var modalParams = {
|
48709 | targetEl: $targetEl || $inputEl,
|
48710 | scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,
|
48711 | content: colorPickerContent,
|
48712 | backdrop: backdrop,
|
48713 | closeByBackdropClick: params.closeByBackdropClick,
|
48714 | on: {
|
48715 | open: function open() {
|
48716 | var modal = this;
|
48717 | self.modal = modal;
|
48718 | self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;
|
48719 | self.$el[0].f7ColorPicker = self;
|
48720 | self.onOpen();
|
48721 | },
|
48722 | opened: function opened() {
|
48723 | self.onOpened();
|
48724 | },
|
48725 | close: function close() {
|
48726 | self.onClose();
|
48727 | },
|
48728 | closed: function closed() {
|
48729 | self.onClosed();
|
48730 |
|
48731 | if (self.$el && self.$el[0]) {
|
48732 | self.$el[0].f7ColorPicker = null;
|
48733 | delete self.$el[0].f7ColorPicker;
|
48734 | }
|
48735 | }
|
48736 | }
|
48737 | };
|
48738 |
|
48739 | if (modalType === 'popup') {
|
48740 | modalParams.push = params.popupPush;
|
48741 | modalParams.swipeToClose = params.popupSwipeToClose;
|
48742 | }
|
48743 |
|
48744 | if (modalType === 'sheet') {
|
48745 | modalParams.push = params.sheetPush;
|
48746 | modalParams.swipeToClose = params.sheetSwipeToClose;
|
48747 | }
|
48748 |
|
48749 | if (params.routableModals && self.view) {
|
48750 | var _route;
|
48751 |
|
48752 | self.view.router.navigate({
|
48753 | url: self.url,
|
48754 | route: (_route = {
|
48755 | path: self.url
|
48756 | }, _route[modalType] = modalParams, _route)
|
48757 | });
|
48758 | } else {
|
48759 | self.modal = app[modalType].create(modalParams);
|
48760 | self.modal.open();
|
48761 | }
|
48762 | }
|
48763 | };
|
48764 |
|
48765 | _proto.close = function close() {
|
48766 | var self = this;
|
48767 | var opened = self.opened,
|
48768 | inline = self.inline;
|
48769 | if (!opened) return;
|
48770 |
|
48771 | if (inline) {
|
48772 | self.onClose();
|
48773 | self.onClosed();
|
48774 | return;
|
48775 | }
|
48776 |
|
48777 | if (self.params.routableModals && self.view || self.params.openIn === 'page') {
|
48778 | self.view.router.back();
|
48779 | } else {
|
48780 | self.modal.close();
|
48781 | }
|
48782 | };
|
48783 |
|
48784 | _proto.init = function init() {
|
48785 | var self = this;
|
48786 | self.initInput();
|
48787 |
|
48788 | if (self.inline) {
|
48789 | self.open();
|
48790 | self.emit('local::init colorPickerInit', self);
|
48791 | return;
|
48792 | }
|
48793 |
|
48794 | if (!self.initialized && self.params.value) {
|
48795 | self.setValue(self.params.value);
|
48796 | }
|
48797 |
|
48798 |
|
48799 | if (self.$inputEl) {
|
48800 | self.attachInputEvents();
|
48801 | }
|
48802 |
|
48803 | if (self.$targetEl) {
|
48804 | self.attachTargetEvents();
|
48805 | }
|
48806 |
|
48807 | if (self.params.closeByOutsideClick) {
|
48808 | self.attachHtmlEvents();
|
48809 | }
|
48810 |
|
48811 | self.emit('local::init colorPickerInit', self);
|
48812 | };
|
48813 |
|
48814 | _proto.destroy = function destroy() {
|
48815 | var self = this;
|
48816 | if (self.destroyed) return;
|
48817 | var $el = self.$el;
|
48818 | self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);
|
48819 | if ($el) $el.trigger('colorpicker:beforedestroy');
|
48820 | self.close();
|
48821 |
|
48822 | self.detachEvents();
|
48823 |
|
48824 | if (self.$inputEl) {
|
48825 | self.detachInputEvents();
|
48826 | }
|
48827 |
|
48828 | if (self.$targetEl) {
|
48829 | self.detachTargetEvents();
|
48830 | }
|
48831 |
|
48832 | if (self.params.closeByOutsideClick) {
|
48833 | self.detachHtmlEvents();
|
48834 | }
|
48835 |
|
48836 | if ($el && $el.length) delete self.$el[0].f7ColorPicker;
|
48837 | deleteProps$1(self);
|
48838 | self.destroyed = true;
|
48839 | };
|
48840 |
|
48841 | _createClass$1(ColorPicker, [{
|
48842 | key: "view",
|
48843 | get: function get() {
|
48844 | var $inputEl = this.$inputEl,
|
48845 | $targetEl = this.$targetEl,
|
48846 | app = this.app,
|
48847 | params = this.params;
|
48848 | var view;
|
48849 |
|
48850 | if (params.view) {
|
48851 | view = params.view;
|
48852 | } else {
|
48853 | if ($inputEl) {
|
48854 | view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;
|
48855 | }
|
48856 |
|
48857 | if (!view && $targetEl) {
|
48858 | view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;
|
48859 | }
|
48860 | }
|
48861 |
|
48862 | if (!view) view = app.views.main;
|
48863 | return view;
|
48864 | }
|
48865 | }]);
|
48866 |
|
48867 | return ColorPicker;
|
48868 | }(Framework7Class);
|
48869 |
|
48870 | var ColorPicker = {
|
48871 | name: 'colorPicker',
|
48872 | static: {
|
48873 | ColorPicker: ColorPicker$1
|
48874 | },
|
48875 | create: function create() {
|
48876 | var app = this;
|
48877 | app.colorPicker = ConstructorMethods({
|
48878 | defaultSelector: '.color-picker',
|
48879 | constructor: ColorPicker$1,
|
48880 | app: app,
|
48881 | domProp: 'f7ColorPicker'
|
48882 | });
|
48883 |
|
48884 | app.colorPicker.close = function close(el) {
|
48885 | if (el === void 0) {
|
48886 | el = '.color-picker';
|
48887 | }
|
48888 |
|
48889 | var $el = $(el);
|
48890 | if ($el.length === 0) return;
|
48891 | var colorPicker = $el[0].f7ColorPicker;
|
48892 | if (!colorPicker || colorPicker && !colorPicker.opened) return;
|
48893 | colorPicker.close();
|
48894 | };
|
48895 | },
|
48896 | params: {
|
48897 | colorPicker: {
|
48898 |
|
48899 | value: null,
|
48900 | modules: ['wheel'],
|
48901 | palette: [['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'], ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'], ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'], ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'], ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'], ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'], ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'], ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100']],
|
48902 | groupedModules: false,
|
48903 | centerModules: true,
|
48904 | sliderLabel: false,
|
48905 | sliderValue: false,
|
48906 | sliderValueEdiable: false,
|
48907 | barLabel: false,
|
48908 | barValue: false,
|
48909 | barValueEdiable: false,
|
48910 | hexLabel: false,
|
48911 | hexValueEditable: false,
|
48912 | redLabelText: 'R',
|
48913 | greenLabelText: 'G',
|
48914 | blueLabelText: 'B',
|
48915 | hueLabelText: 'H',
|
48916 | saturationLabelText: 'S',
|
48917 | brightnessLabelText: 'B',
|
48918 | hexLabelText: 'HEX',
|
48919 | alphaLabelText: 'A',
|
48920 |
|
48921 | containerEl: null,
|
48922 | openIn: 'popover',
|
48923 |
|
48924 | openInPhone: 'popup',
|
48925 |
|
48926 | popupPush: false,
|
48927 | popupSwipeToClose: undefined,
|
48928 | sheetPush: false,
|
48929 | sheetSwipeToClose: undefined,
|
48930 | formatValue: null,
|
48931 | targetEl: null,
|
48932 | targetElSetBackgroundColor: false,
|
48933 | inputEl: null,
|
48934 | inputReadOnly: true,
|
48935 | closeByOutsideClick: true,
|
48936 | scrollToInput: true,
|
48937 | toolbarSheet: true,
|
48938 | toolbarPopover: false,
|
48939 | toolbarCloseText: 'Done',
|
48940 | navbarPopup: true,
|
48941 | navbarCloseText: 'Done',
|
48942 | navbarTitleText: 'Color',
|
48943 | navbarBackLinkText: 'Back',
|
48944 | cssClass: null,
|
48945 | routableModals: false,
|
48946 | view: null,
|
48947 | url: 'color/',
|
48948 | backdrop: null,
|
48949 | closeByBackdropClick: true,
|
48950 |
|
48951 | renderToolbar: null,
|
48952 | renderNavbar: null,
|
48953 | renderInline: null,
|
48954 | renderPopover: null,
|
48955 | renderSheet: null,
|
48956 | renderPopup: null,
|
48957 | render: null
|
48958 | }
|
48959 | }
|
48960 | };
|
48961 |
|
48962 | var Treeview = {
|
48963 | open: function open(itemEl) {
|
48964 | var app = this;
|
48965 | var $itemEl = $(itemEl).eq(0);
|
48966 | if (!$itemEl.length) return;
|
48967 | $itemEl.addClass('treeview-item-opened');
|
48968 | $itemEl.trigger('treeview:open');
|
48969 | app.emit('treeviewOpen', $itemEl[0]);
|
48970 |
|
48971 | function done(cancel) {
|
48972 | if (cancel) {
|
48973 | $itemEl.removeClass('treeview-item-opened');
|
48974 | $itemEl.trigger('treeview:close');
|
48975 | app.emit('treeviewClose', $itemEl[0]);
|
48976 | } else {
|
48977 | $itemEl[0].f7TreeviewChildrenLoaded = true;
|
48978 | }
|
48979 |
|
48980 | $itemEl.find('.treeview-toggle').removeClass('treeview-toggle-hidden');
|
48981 | $itemEl.find('.treeview-preloader').remove();
|
48982 | }
|
48983 |
|
48984 | if ($itemEl.hasClass('treeview-load-children') && !$itemEl[0].f7TreeviewChildrenLoaded) {
|
48985 | var preloaders = {
|
48986 | iosPreloaderContent: iosPreloaderContent,
|
48987 | mdPreloaderContent: mdPreloaderContent,
|
48988 | auroraPreloaderContent: auroraPreloaderContent
|
48989 | };
|
48990 | $itemEl.trigger('treeview:loadchildren', done);
|
48991 | app.emit('treeviewLoadChildren', $itemEl[0], done);
|
48992 | $itemEl.find('.treeview-toggle').addClass('treeview-toggle-hidden');
|
48993 | $itemEl.find('.treeview-item-root').prepend("<div class=\"preloader treeview-preloader\">" + preloaders[app.theme + "PreloaderContent"] + "</div>");
|
48994 | }
|
48995 | },
|
48996 | close: function close(itemEl) {
|
48997 | var app = this;
|
48998 | var $itemEl = $(itemEl).eq(0);
|
48999 | if (!$itemEl.length) return;
|
49000 | $itemEl.removeClass('treeview-item-opened');
|
49001 | $itemEl.trigger('treeview:close');
|
49002 | app.emit('treeviewClose', $itemEl[0]);
|
49003 | },
|
49004 | toggle: function toggle(itemEl) {
|
49005 | var app = this;
|
49006 | var $itemEl = $(itemEl).eq(0);
|
49007 | if (!$itemEl.length) return;
|
49008 | var wasOpened = $itemEl.hasClass('treeview-item-opened');
|
49009 | app.treeview[wasOpened ? 'close' : 'open']($itemEl);
|
49010 | }
|
49011 | };
|
49012 | var Treeview$1 = {
|
49013 | name: 'treeview',
|
49014 | create: function create() {
|
49015 | var app = this;
|
49016 | bindMethods(app, {
|
49017 | treeview: Treeview
|
49018 | });
|
49019 | },
|
49020 | clicks: {
|
49021 | '.treeview-toggle': function toggle($clickedEl, clickedData, e) {
|
49022 | var app = this;
|
49023 | if ($clickedEl.parents('.treeview-item-toggle').length) return;
|
49024 | var $treeviewItemEl = $clickedEl.parents('.treeview-item').eq(0);
|
49025 | if (!$treeviewItemEl.length) return;
|
49026 | e.preventF7Router = true;
|
49027 | app.treeview.toggle($treeviewItemEl[0]);
|
49028 | },
|
49029 | '.treeview-item-toggle': function toggle($clickedEl, clickedData, e) {
|
49030 | var app = this;
|
49031 | var $treeviewItemEl = $clickedEl.closest('.treeview-item').eq(0);
|
49032 | if (!$treeviewItemEl.length) return;
|
49033 | e.preventF7Router = true;
|
49034 | app.treeview.toggle($treeviewItemEl[0]);
|
49035 | }
|
49036 | }
|
49037 | };
|
49038 |
|
49039 | var textEditorButtonsMap = {
|
49040 |
|
49041 | bold: ['bold', 'format_bold', 'bold'],
|
49042 | italic: ['italic', 'format_italic', 'italic'],
|
49043 | underline: ['underline', 'format_underlined', 'underline'],
|
49044 | strikeThrough: ['strikethrough', 'strikethrough_s', 'strikeThrough'],
|
49045 | orderedList: ['list_number', 'format_list_numbered', 'insertOrderedList'],
|
49046 | unorderedList: ['list_bullet', 'format_list_bulleted', 'insertUnorderedList'],
|
49047 | link: ['link', 'link', 'createLink'],
|
49048 | image: ['photo', 'image', 'insertImage'],
|
49049 | paragraph: ['paragraph', '<i class="icon">¶</i>', 'formatBlock.P'],
|
49050 | h1: ['<i class="icon">H<sub>1</sub></i>', '<i class="icon">H<sub>1</sub></i>', 'formatBlock.H1'],
|
49051 | h2: ['<i class="icon">H<sub>2</sub></i>', '<i class="icon">H<sub>2</sub></i>', 'formatBlock.H2'],
|
49052 | h3: ['<i class="icon">H<sub>3</sub></i>', '<i class="icon">H<sub>3</sub></i>', 'formatBlock.H3'],
|
49053 | alignLeft: ['text_alignleft', 'format_align_left', 'justifyLeft'],
|
49054 | alignCenter: ['text_aligncenter', 'format_align_center', 'justifyCenter'],
|
49055 | alignRight: ['text_alignright', 'format_align_right', 'justifyRight'],
|
49056 | alignJustify: ['text_justify', 'format_align_justify', 'justifyFull'],
|
49057 | subscript: ['textformat_subscript', '<i class="icon">A<sub>1</sub></i>', 'subscript'],
|
49058 | superscript: ['textformat_superscript', '<i class="icon">A<sup>1</sup></i>', 'superscript'],
|
49059 | indent: ['increase_indent', 'format_indent_increase', 'indent'],
|
49060 | outdent: ['decrease_indent', 'format_indent_decrease', 'outdent']
|
49061 | };
|
49062 |
|
49063 | var TextEditor$1 = function (_Framework7Class) {
|
49064 | _inheritsLoose(TextEditor, _Framework7Class);
|
49065 |
|
49066 | function TextEditor(app, params) {
|
49067 | var _this;
|
49068 |
|
49069 | _this = _Framework7Class.call(this, params, [app]) || this;
|
49070 |
|
49071 | var self = _assertThisInitialized(_this);
|
49072 |
|
49073 | var document = getDocument();
|
49074 | var device = getDevice$1();
|
49075 | var defaults = extend$1({}, app.params.textEditor);
|
49076 |
|
49077 | self.useModulesParams(defaults);
|
49078 | self.params = extend$1(defaults, params);
|
49079 | var el = self.params.el;
|
49080 | if (!el) return self || _assertThisInitialized(_this);
|
49081 | var $el = $(el);
|
49082 | if ($el.length === 0) return self || _assertThisInitialized(_this);
|
49083 | if ($el[0].f7TextEditor) return $el[0].f7TextEditor || _assertThisInitialized(_this);
|
49084 | var $contentEl = $el.children('.text-editor-content');
|
49085 |
|
49086 | if (!$contentEl.length) {
|
49087 | $el.append('<div class="text-editor-content" contenteditable></div>');
|
49088 | $contentEl = $el.children('.text-editor-content');
|
49089 | }
|
49090 |
|
49091 | extend$1(self, {
|
49092 | app: app,
|
49093 | $el: $el,
|
49094 | el: $el[0],
|
49095 | $contentEl: $contentEl,
|
49096 | contentEl: $contentEl[0]
|
49097 | });
|
49098 |
|
49099 | if ('value' in params) {
|
49100 | self.value = self.params.value;
|
49101 | }
|
49102 |
|
49103 | if (self.params.mode === 'keyboard-toolbar') {
|
49104 | if (!(device.cordova || device.capacitor) && !device.android) {
|
49105 | self.params.mode = 'popover';
|
49106 | }
|
49107 | }
|
49108 |
|
49109 | if (typeof self.params.buttons === 'string') {
|
49110 | try {
|
49111 | self.params.buttons = JSON.parse(self.params.buttons);
|
49112 | } catch (err) {
|
49113 | throw new Error('Framework7: TextEditor: wrong "buttons" parameter format');
|
49114 | }
|
49115 | }
|
49116 |
|
49117 | $el[0].f7TextEditor = self;
|
49118 |
|
49119 | self.onButtonClick = self.onButtonClick.bind(self);
|
49120 | self.onFocus = self.onFocus.bind(self);
|
49121 | self.onBlur = self.onBlur.bind(self);
|
49122 | self.onInput = self.onInput.bind(self);
|
49123 | self.onPaste = self.onPaste.bind(self);
|
49124 | self.onSelectionChange = self.onSelectionChange.bind(self);
|
49125 | self.closeKeyboardToolbar = self.closeKeyboardToolbar.bind(self);
|
49126 |
|
49127 | self.attachEvents = function attachEvents() {
|
49128 | if (self.params.mode === 'toolbar') {
|
49129 | self.$el.find('.text-editor-toolbar').on('click', 'button', self.onButtonClick);
|
49130 | }
|
49131 |
|
49132 | if (self.params.mode === 'keyboard-toolbar') {
|
49133 | self.$keyboardToolbarEl.on('click', 'button', self.onButtonClick);
|
49134 | self.$el.parents('.page').on('page:beforeout', self.closeKeyboardToolbar);
|
49135 | }
|
49136 |
|
49137 | if (self.params.mode === 'popover' && self.popover) {
|
49138 | self.popover.$el.on('click', 'button', self.onButtonClick);
|
49139 | }
|
49140 |
|
49141 | self.$contentEl.on('paste', self.onPaste);
|
49142 | self.$contentEl.on('focus', self.onFocus);
|
49143 | self.$contentEl.on('blur', self.onBlur);
|
49144 | self.$contentEl.on('input', self.onInput, true);
|
49145 | $(document).on('selectionchange', self.onSelectionChange);
|
49146 | };
|
49147 |
|
49148 | self.detachEvents = function detachEvents() {
|
49149 | if (self.params.mode === 'toolbar') {
|
49150 | self.$el.find('.text-editor-toolbar').off('click', 'button', self.onButtonClick);
|
49151 | }
|
49152 |
|
49153 | if (self.params.mode === 'keyboard-toolbar') {
|
49154 | self.$keyboardToolbarEl.off('click', 'button', self.onButtonClick);
|
49155 | self.$el.parents('.page').off('page:beforeout', self.closeKeyboardToolbar);
|
49156 | }
|
49157 |
|
49158 | if (self.params.mode === 'popover' && self.popover) {
|
49159 | self.popover.$el.off('click', 'button', self.onButtonClick);
|
49160 | }
|
49161 |
|
49162 | self.$contentEl.off('paste', self.onPaste);
|
49163 | self.$contentEl.off('focus', self.onFocus);
|
49164 | self.$contentEl.off('blur', self.onBlur);
|
49165 | self.$contentEl.off('input', self.onInput, true);
|
49166 | $(document).off('selectionchange', self.onSelectionChange);
|
49167 | };
|
49168 |
|
49169 |
|
49170 | self.useModules();
|
49171 |
|
49172 | self.init();
|
49173 | return self || _assertThisInitialized(_this);
|
49174 | }
|
49175 |
|
49176 | var _proto = TextEditor.prototype;
|
49177 |
|
49178 | _proto.setValue = function setValue(newValue) {
|
49179 | var self = this;
|
49180 | var currentValue = self.value;
|
49181 | if (currentValue === newValue) return self;
|
49182 | self.value = newValue;
|
49183 | self.$contentEl.html(newValue);
|
49184 | self.$el.trigger('texteditor:change', self.value);
|
49185 | self.emit('local::change textEditorChange', self, self.value);
|
49186 | return self;
|
49187 | };
|
49188 |
|
49189 | _proto.getValue = function getValue() {
|
49190 | var self = this;
|
49191 | return self.value;
|
49192 | };
|
49193 |
|
49194 | _proto.clearValue = function clearValue() {
|
49195 | var self = this;
|
49196 | self.setValue('');
|
49197 |
|
49198 | if (self.params.placeholder && !self.$contentEl.html()) {
|
49199 | self.insertPlaceholder();
|
49200 | }
|
49201 |
|
49202 | return self;
|
49203 | };
|
49204 |
|
49205 | _proto.createLink = function createLink() {
|
49206 | var self = this;
|
49207 | var window = getWindow();
|
49208 | var document = getDocument();
|
49209 | var currentSelection = window.getSelection();
|
49210 | var selectedNodes = [];
|
49211 | var $selectedLinks;
|
49212 |
|
49213 | if (currentSelection && currentSelection.anchorNode && $(currentSelection.anchorNode).parents(self.$el).length) {
|
49214 | var anchorNode = currentSelection.anchorNode;
|
49215 |
|
49216 | while (anchorNode) {
|
49217 | selectedNodes.push(anchorNode);
|
49218 |
|
49219 | if (!anchorNode.nextSibling || anchorNode === currentSelection.focusNode) {
|
49220 | anchorNode = null;
|
49221 | }
|
49222 |
|
49223 | if (anchorNode) {
|
49224 | anchorNode = anchorNode.nextSibling;
|
49225 | }
|
49226 | }
|
49227 |
|
49228 | var selectedNodesLinks = [];
|
49229 | var $selectedNodes = $(selectedNodes);
|
49230 |
|
49231 | for (var i = 0; i < $selectedNodes.length; i += 1) {
|
49232 | var childNodes = $selectedNodes[i].children;
|
49233 |
|
49234 | if (childNodes) {
|
49235 | for (var j = 0; j < childNodes.length; j += 1) {
|
49236 | if ($(childNodes[j]).is('a')) {
|
49237 | selectedNodesLinks.push(childNodes[j]);
|
49238 | }
|
49239 | }
|
49240 | }
|
49241 | }
|
49242 |
|
49243 | $selectedLinks = $selectedNodes.closest('a').add($(selectedNodesLinks));
|
49244 | }
|
49245 |
|
49246 | if ($selectedLinks && $selectedLinks.length) {
|
49247 | $selectedLinks.each(function (linkNode) {
|
49248 | var selection = window.getSelection();
|
49249 | var range = document.createRange();
|
49250 | range.selectNodeContents(linkNode);
|
49251 | selection.removeAllRanges();
|
49252 | selection.addRange(range);
|
49253 | document.execCommand('unlink', false);
|
49254 | selection.removeAllRanges();
|
49255 | });
|
49256 | return self;
|
49257 | }
|
49258 |
|
49259 | var currentRange = self.getSelectionRange();
|
49260 | if (!currentRange) return self;
|
49261 | var dialog = self.app.dialog.prompt(self.params.linkUrlText, '', function (link) {
|
49262 | if (link && link.trim().length) {
|
49263 | self.setSelectionRange(currentRange);
|
49264 | document.execCommand('createLink', false, link.trim());
|
49265 | self.$el.trigger('texteditor:insertlink', {
|
49266 | url: link.trim()
|
49267 | });
|
49268 | self.emit('local:insertLink textEditorInsertLink', self, link.trim());
|
49269 | }
|
49270 | });
|
49271 | dialog.$el.find('input').focus();
|
49272 | return self;
|
49273 | };
|
49274 |
|
49275 | _proto.insertImage = function insertImage() {
|
49276 | var self = this;
|
49277 | var document = getDocument();
|
49278 | var currentRange = self.getSelectionRange();
|
49279 | if (!currentRange) return self;
|
49280 | var dialog = self.app.dialog.prompt(self.params.imageUrlText, '', function (imageUrl) {
|
49281 | if (imageUrl && imageUrl.trim().length) {
|
49282 | self.setSelectionRange(currentRange);
|
49283 | document.execCommand('insertImage', false, imageUrl.trim());
|
49284 | self.$el.trigger('texteditor:insertimage', {
|
49285 | url: imageUrl.trim()
|
49286 | });
|
49287 | self.emit('local:insertImage textEditorInsertImage', self, imageUrl.trim());
|
49288 | }
|
49289 | });
|
49290 | dialog.$el.find('input').focus();
|
49291 | return self;
|
49292 | };
|
49293 |
|
49294 | _proto.removePlaceholder = function removePlaceholder() {
|
49295 | var self = this;
|
49296 | self.$contentEl.find('.text-editor-placeholder').remove();
|
49297 | };
|
49298 |
|
49299 | _proto.insertPlaceholder = function insertPlaceholder() {
|
49300 | var self = this;
|
49301 | self.$contentEl.append("<div class=\"text-editor-placeholder\">" + self.params.placeholder + "</div>");
|
49302 | };
|
49303 |
|
49304 | _proto.onSelectionChange = function onSelectionChange() {
|
49305 | var self = this;
|
49306 | var window = getWindow();
|
49307 | var document = getDocument();
|
49308 | if (self.params.mode === 'toolbar') return;
|
49309 | var selection = window.getSelection();
|
49310 | var selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;
|
49311 |
|
49312 | if (self.params.mode === 'keyboard-toolbar') {
|
49313 | if (!selectionIsInContent) {
|
49314 | self.closeKeyboardToolbar();
|
49315 | } else {
|
49316 | self.openKeyboardToolbar();
|
49317 | }
|
49318 |
|
49319 | return;
|
49320 | }
|
49321 |
|
49322 | if (self.params.mode === 'popover') {
|
49323 | var selectionIsInPopover = $(selection.anchorNode).parents(self.popover.el).length || selection.anchorNode === self.popover.el;
|
49324 |
|
49325 | if (!selectionIsInContent && !selectionIsInPopover) {
|
49326 | self.closePopover();
|
49327 | return;
|
49328 | }
|
49329 |
|
49330 | if (!selection.isCollapsed && selection.rangeCount) {
|
49331 | var range = selection.getRangeAt(0);
|
49332 | var rect = range.getBoundingClientRect();
|
49333 | var rootEl = self.app.$el[0] || document.body;
|
49334 | self.openPopover(rect.x + (window.scrollX || 0) - rootEl.offsetLeft, rect.y + (window.scrollY || 0) - rootEl.offsetTop, rect.width, rect.height);
|
49335 | } else if (selection.isCollapsed) {
|
49336 | self.closePopover();
|
49337 | }
|
49338 | }
|
49339 | };
|
49340 |
|
49341 | _proto.onPaste = function onPaste(e) {
|
49342 | var self = this;
|
49343 | var document = getDocument();
|
49344 |
|
49345 | if (self.params.clearFormattingOnPaste && e.clipboardData && e.clipboardData.getData) {
|
49346 | var text = e.clipboardData.getData('text/plain');
|
49347 | e.preventDefault();
|
49348 | document.execCommand('insertText', false, text);
|
49349 | }
|
49350 | };
|
49351 |
|
49352 | _proto.onInput = function onInput() {
|
49353 | var self = this;
|
49354 | var value = self.$contentEl.html();
|
49355 | self.value = value;
|
49356 | self.$el.trigger('texteditor:input');
|
49357 | self.emit('local:input textEditorInput', self, self.value);
|
49358 | self.$el.trigger('texteditor:change', self.value);
|
49359 | self.emit('local::change textEditorChange', self, self.value);
|
49360 | };
|
49361 |
|
49362 | _proto.onFocus = function onFocus() {
|
49363 | var self = this;
|
49364 | self.removePlaceholder();
|
49365 | self.$contentEl.focus();
|
49366 | self.$el.trigger('texteditor:focus');
|
49367 | self.emit('local::focus textEditorFocus', self);
|
49368 | };
|
49369 |
|
49370 | _proto.onBlur = function onBlur() {
|
49371 | var self = this;
|
49372 | var window = getWindow();
|
49373 | var document = getDocument();
|
49374 |
|
49375 | if (self.params.placeholder && self.$contentEl.html() === '') {
|
49376 | self.insertPlaceholder();
|
49377 | }
|
49378 |
|
49379 | if (self.params.mode === 'popover') {
|
49380 | var selection = window.getSelection();
|
49381 | var selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;
|
49382 | var inPopover = document.activeElement && self.popover && $(document.activeElement).closest(self.popover.$el).length;
|
49383 |
|
49384 | if (!inPopover && !selectionIsInContent) {
|
49385 | self.closePopover();
|
49386 | }
|
49387 | }
|
49388 |
|
49389 | if (self.params.mode === 'keyboard-toolbar') {
|
49390 | var _selection = window.getSelection();
|
49391 |
|
49392 | var _selectionIsInContent = $(_selection.anchorNode).parents(self.contentEl).length || _selection.anchorNode === self.contentEl;
|
49393 |
|
49394 | if (!_selectionIsInContent) {
|
49395 | self.closeKeyboardToolbar();
|
49396 | }
|
49397 | }
|
49398 |
|
49399 | self.$el.trigger('texteditor:blur');
|
49400 | self.emit('local::blur textEditorBlur', self);
|
49401 | };
|
49402 |
|
49403 | _proto.onButtonClick = function onButtonClick(e) {
|
49404 | var self = this;
|
49405 | var window = getWindow();
|
49406 | var document = getDocument();
|
49407 | var selection = window.getSelection();
|
49408 | var selectionIsInContent = $(selection.anchorNode).parents(self.contentEl).length || selection.anchorNode === self.contentEl;
|
49409 | if (!selectionIsInContent) return;
|
49410 | var $buttonEl = $(e.target).closest('button');
|
49411 |
|
49412 | if ($buttonEl.parents('form').length) {
|
49413 | e.preventDefault();
|
49414 | }
|
49415 |
|
49416 | var button = $buttonEl.attr('data-button');
|
49417 | var buttonData = self.params.customButtons && self.params.customButtons[button];
|
49418 | if (!button || !(textEditorButtonsMap[button] || buttonData)) return;
|
49419 | $buttonEl.trigger('texteditor:buttonclick', button);
|
49420 | self.emit('local::buttonClick textEditorButtonClick', self, button);
|
49421 |
|
49422 | if (buttonData) {
|
49423 | if (buttonData.onClick) buttonData.onClick(self, $buttonEl[0]);
|
49424 | return;
|
49425 | }
|
49426 |
|
49427 | var command = textEditorButtonsMap[button][2];
|
49428 |
|
49429 | if (command === 'createLink') {
|
49430 | self.createLink();
|
49431 | return;
|
49432 | }
|
49433 |
|
49434 | if (command === 'insertImage') {
|
49435 | self.insertImage();
|
49436 | return;
|
49437 | }
|
49438 |
|
49439 | if (command.indexOf('formatBlock') === 0) {
|
49440 | var tagName = command.split('.')[1];
|
49441 | var $anchorNode = $(selection.anchorNode);
|
49442 |
|
49443 | if ($anchorNode.parents(tagName.toLowerCase()).length || $anchorNode.is(tagName)) {
|
49444 | document.execCommand('formatBlock', false, 'div');
|
49445 | } else {
|
49446 | document.execCommand('formatBlock', false, tagName);
|
49447 | }
|
49448 |
|
49449 | return;
|
49450 | }
|
49451 |
|
49452 | document.execCommand(command, false);
|
49453 | }
|
49454 | ;
|
49455 |
|
49456 | _proto.getSelectionRange = function getSelectionRange() {
|
49457 | var window = getWindow();
|
49458 | var document = getDocument();
|
49459 |
|
49460 | if (window.getSelection) {
|
49461 | var sel = window.getSelection();
|
49462 |
|
49463 | if (sel.getRangeAt && sel.rangeCount) {
|
49464 | return sel.getRangeAt(0);
|
49465 | }
|
49466 | } else if (document.selection && document.selection.createRange) {
|
49467 | return document.selection.createRange();
|
49468 | }
|
49469 |
|
49470 | return null;
|
49471 | }
|
49472 | ;
|
49473 |
|
49474 | _proto.setSelectionRange = function setSelectionRange(range) {
|
49475 | var window = getWindow();
|
49476 | var document = getDocument();
|
49477 |
|
49478 | if (range) {
|
49479 | if (window.getSelection) {
|
49480 | var sel = window.getSelection();
|
49481 | sel.removeAllRanges();
|
49482 | sel.addRange(range);
|
49483 | } else if (document.selection && range.select) {
|
49484 | range.select();
|
49485 | }
|
49486 | }
|
49487 | };
|
49488 |
|
49489 | _proto.renderButtons = function renderButtons() {
|
49490 | var self = this;
|
49491 | var html = '';
|
49492 |
|
49493 | function renderButton(button) {
|
49494 | var iconClass = self.app.theme === 'md' ? 'material-icons' : 'f7-icons';
|
49495 |
|
49496 | if (self.params.customButtons && self.params.customButtons[button]) {
|
49497 | var buttonData = self.params.customButtons[button];
|
49498 | return "<button type=\"button\" class=\"text-editor-button\" data-button=\"" + button + "\">" + (buttonData.content || '') + "</button>";
|
49499 | }
|
49500 |
|
49501 | if (!textEditorButtonsMap[button]) return '';
|
49502 | var iconContent = textEditorButtonsMap[button][self.app.theme === 'md' ? 1 : 0];
|
49503 | return ("<button type=\"button\" class=\"text-editor-button\" data-button=\"" + button + "\">" + (iconContent.indexOf('<') >= 0 ? iconContent : "<i class=\"" + iconClass + "\">" + iconContent + "</i>") + "</button>").trim();
|
49504 | }
|
49505 |
|
49506 | self.params.buttons.forEach(function (button, buttonIndex) {
|
49507 | if (Array.isArray(button)) {
|
49508 | button.forEach(function (b) {
|
49509 | html += renderButton(b);
|
49510 | });
|
49511 |
|
49512 | if (buttonIndex < self.params.buttons.length - 1 && self.params.dividers) {
|
49513 | html += '<div class="text-editor-button-divider"></div>';
|
49514 | }
|
49515 | } else {
|
49516 | html += renderButton(button);
|
49517 | }
|
49518 | });
|
49519 | return html;
|
49520 | };
|
49521 |
|
49522 | _proto.createToolbar = function createToolbar() {
|
49523 | var self = this;
|
49524 | self.$el.prepend("<div class=\"text-editor-toolbar\">" + self.renderButtons() + "</div>");
|
49525 | };
|
49526 |
|
49527 | _proto.createKeyboardToolbar = function createKeyboardToolbar() {
|
49528 | var self = this;
|
49529 | self.$keyboardToolbarEl = $("<div class=\"toolbar toolbar-bottom text-editor-keyboard-toolbar\"><div class=\"toolbar-inner\">" + self.renderButtons() + "</div></div>");
|
49530 | };
|
49531 |
|
49532 | _proto.createPopover = function createPopover() {
|
49533 | var self = this;
|
49534 | self.popover = self.app.popover.create({
|
49535 | content: "\n <div class=\"popover theme-dark text-editor-popover\">\n <div class=\"popover-inner\">" + self.renderButtons() + "</div>\n </div>\n ",
|
49536 | closeByOutsideClick: false,
|
49537 | backdrop: false
|
49538 | });
|
49539 | };
|
49540 |
|
49541 | _proto.openKeyboardToolbar = function openKeyboardToolbar() {
|
49542 | var self = this;
|
49543 | if (self.$keyboardToolbarEl.parent(self.app.$el).length) return;
|
49544 | self.$el.trigger('texteditor:keyboardopen');
|
49545 | self.emit('local::keyboardOpen textEditorKeyboardOpen', self);
|
49546 | self.app.$el.append(self.$keyboardToolbarEl);
|
49547 | };
|
49548 |
|
49549 | _proto.closeKeyboardToolbar = function closeKeyboardToolbar() {
|
49550 | var self = this;
|
49551 | self.$keyboardToolbarEl.remove();
|
49552 | self.$el.trigger('texteditor:keyboardclose');
|
49553 | self.emit('local::keyboardClose textEditorKeyboardClose', self);
|
49554 | };
|
49555 |
|
49556 | _proto.openPopover = function openPopover(targetX, targetY, targetWidth, targetHeight) {
|
49557 | var self = this;
|
49558 | if (!self.popover) return;
|
49559 | Object.assign(self.popover.params, {
|
49560 | targetX: targetX,
|
49561 | targetY: targetY,
|
49562 | targetWidth: targetWidth,
|
49563 | targetHeight: targetHeight
|
49564 | });
|
49565 | clearTimeout(self.popoverTimeout);
|
49566 | self.popoverTimeout = setTimeout(function () {
|
49567 | if (!self.popover) return;
|
49568 |
|
49569 | if (self.popover.opened) {
|
49570 | self.popover.resize();
|
49571 | } else {
|
49572 | self.$el.trigger('texteditor:popoveropen');
|
49573 | self.emit('local::popoverOpen textEditorPopoverOpen', self);
|
49574 | self.popover.open();
|
49575 | }
|
49576 | }, 400);
|
49577 | };
|
49578 |
|
49579 | _proto.closePopover = function closePopover() {
|
49580 | var self = this;
|
49581 | clearTimeout(self.popoverTimeout);
|
49582 | if (!self.popover || !self.popover.opened) return;
|
49583 | self.popoverTimeout = setTimeout(function () {
|
49584 | if (!self.popover) return;
|
49585 | self.$el.trigger('texteditor:popoverclose');
|
49586 | self.emit('local::popoverClose textEditorPopoverClose', self);
|
49587 | self.popover.close();
|
49588 | }, 400);
|
49589 | };
|
49590 |
|
49591 | _proto.init = function init() {
|
49592 | var self = this;
|
49593 |
|
49594 | if (self.value) {
|
49595 | self.$contentEl.html(self.value);
|
49596 | } else {
|
49597 | self.value = self.$contentEl.html();
|
49598 | }
|
49599 |
|
49600 | if (self.params.placeholder && self.value === '') {
|
49601 | self.insertPlaceholder();
|
49602 | }
|
49603 |
|
49604 | if (self.params.mode === 'toolbar') {
|
49605 | self.createToolbar();
|
49606 | } else if (self.params.mode === 'popover') {
|
49607 | self.createPopover();
|
49608 | } else if (self.params.mode === 'keyboard-toolbar') {
|
49609 | self.createKeyboardToolbar();
|
49610 | }
|
49611 |
|
49612 | self.attachEvents();
|
49613 | self.$el.trigger('texteditor:init');
|
49614 | self.emit('local::init textEditorInit', self);
|
49615 | return self;
|
49616 | };
|
49617 |
|
49618 | _proto.destroy = function destroy() {
|
49619 | var self = this;
|
49620 | self.$el.trigger('texteditor:beforedestroy');
|
49621 | self.emit('local::beforeDestroy textEditorBeforeDestroy', self);
|
49622 | self.detachEvents();
|
49623 |
|
49624 | if (self.params.mode === 'keyboard-toolbar' && self.$keyboardToolbarEl) {
|
49625 | self.$keyboardToolbarEl.remove();
|
49626 | }
|
49627 |
|
49628 | if (self.popover) {
|
49629 | self.popover.close(false);
|
49630 | self.popover.destroy();
|
49631 | }
|
49632 |
|
49633 | delete self.$el[0].f7TextEditor;
|
49634 | deleteProps$1(self);
|
49635 | self = null;
|
49636 | };
|
49637 |
|
49638 | return TextEditor;
|
49639 | }(Framework7Class);
|
49640 |
|
49641 | var TextEditor = {
|
49642 | name: 'textEditor',
|
49643 | params: {
|
49644 | textEditor: {
|
49645 | el: null,
|
49646 | mode: 'toolbar',
|
49647 |
|
49648 | value: undefined,
|
49649 |
|
49650 | customButtons: null,
|
49651 | buttons: [['bold', 'italic', 'underline', 'strikeThrough'], ['orderedList', 'unorderedList'], ['link', 'image'], ['paragraph', 'h1', 'h2', 'h3'], ['alignLeft', 'alignCenter', 'alignRight', 'alignJustify'], ['subscript', 'superscript'], ['indent', 'outdent']],
|
49652 | dividers: true,
|
49653 | imageUrlText: 'Insert image URL',
|
49654 | linkUrlText: 'Insert link URL',
|
49655 | placeholder: null,
|
49656 | clearFormattingOnPaste: true
|
49657 | }
|
49658 | },
|
49659 | create: function create() {
|
49660 | var app = this;
|
49661 | app.textEditor = extend$1(ConstructorMethods({
|
49662 | defaultSelector: '.text-editor',
|
49663 | constructor: TextEditor$1,
|
49664 | app: app,
|
49665 | domProp: 'f7TextEditor'
|
49666 | }));
|
49667 | },
|
49668 | static: {
|
49669 | TextEditor: TextEditor$1
|
49670 | },
|
49671 | on: {
|
49672 | tabMounted: function tabMounted(tabEl) {
|
49673 | var app = this;
|
49674 | $(tabEl).find('.text-editor-init').each(function (editorEl) {
|
49675 | var dataset = $(editorEl).dataset();
|
49676 | app.textEditor.create(extend$1({
|
49677 | el: editorEl
|
49678 | }, dataset || {}));
|
49679 | });
|
49680 | },
|
49681 | tabBeforeRemove: function tabBeforeRemove(tabEl) {
|
49682 | $(tabEl).find('.text-editor-init').each(function (editorEl) {
|
49683 | if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();
|
49684 | });
|
49685 | },
|
49686 | pageInit: function pageInit(page) {
|
49687 | var app = this;
|
49688 | page.$el.find('.text-editor-init').each(function (editorEl) {
|
49689 | var dataset = $(editorEl).dataset();
|
49690 | app.textEditor.create(extend$1({
|
49691 | el: editorEl
|
49692 | }, dataset || {}));
|
49693 | });
|
49694 | },
|
49695 | pageBeforeRemove: function pageBeforeRemove(page) {
|
49696 | page.$el.find('.text-editor-init').each(function (editorEl) {
|
49697 | if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();
|
49698 | });
|
49699 | }
|
49700 | },
|
49701 | vnode: {
|
49702 | 'text-editor-init': {
|
49703 | insert: function insert(vnode) {
|
49704 | var app = this;
|
49705 | var editorEl = vnode.elm;
|
49706 | var dataset = $(editorEl).dataset();
|
49707 | app.textEditor.create(extend$1({
|
49708 | el: editorEl
|
49709 | }, dataset || {}));
|
49710 | },
|
49711 | destroy: function destroy(vnode) {
|
49712 | var editorEl = vnode.elm;
|
49713 | if (editorEl.f7TextEditor) editorEl.f7TextEditor.destroy();
|
49714 | }
|
49715 | }
|
49716 | }
|
49717 | };
|
49718 |
|
49719 | var PieChart$1 = function (_Framework7Class) {
|
49720 | _inheritsLoose(PieChart, _Framework7Class);
|
49721 |
|
49722 | function PieChart(app, params) {
|
49723 | var _this;
|
49724 |
|
49725 | if (params === void 0) {
|
49726 | params = {};
|
49727 | }
|
49728 |
|
49729 | _this = _Framework7Class.call(this, params, [app]) || this;
|
49730 |
|
49731 | var self = _assertThisInitialized(_this);
|
49732 |
|
49733 | var defaults = extend$1({}, app.params.pieChart);
|
49734 |
|
49735 | self.useModulesParams(defaults);
|
49736 | self.params = extend$1(defaults, params);
|
49737 | var el = self.params.el;
|
49738 | if (!el) return self || _assertThisInitialized(_this);
|
49739 | var $el = $(el);
|
49740 | if ($el.length === 0) return self || _assertThisInitialized(_this);
|
49741 | if ($el[0].f7PieChart) return $el[0].f7PieChart || _assertThisInitialized(_this);
|
49742 | extend$1(self, {
|
49743 | app: app,
|
49744 | $el: $el,
|
49745 | el: $el && $el[0],
|
49746 | currentIndex: null,
|
49747 | f7Tooltip: null
|
49748 | });
|
49749 | $el[0].f7PieChart = self;
|
49750 |
|
49751 | self.useModules();
|
49752 | self.showTooltip = self.showTooltip.bind(_assertThisInitialized(_this));
|
49753 | self.hideTooltip = self.hideTooltip.bind(_assertThisInitialized(_this));
|
49754 | self.init();
|
49755 | return self || _assertThisInitialized(_this);
|
49756 | }
|
49757 |
|
49758 | var _proto = PieChart.prototype;
|
49759 |
|
49760 | _proto.getSummValue = function getSummValue() {
|
49761 | var datasets = this.params.datasets;
|
49762 | var summ = 0;
|
49763 | datasets.map(function (d) {
|
49764 | return d.value || 0;
|
49765 | }).forEach(function (value) {
|
49766 | summ += value;
|
49767 | });
|
49768 | return summ;
|
49769 | };
|
49770 |
|
49771 | _proto.getPaths = function getPaths() {
|
49772 | var _this2 = this;
|
49773 |
|
49774 | var _this$params = this.params,
|
49775 | datasets = _this$params.datasets,
|
49776 | size = _this$params.size;
|
49777 | var paths = [];
|
49778 | var cumulativePercentage = 0;
|
49779 |
|
49780 | function getCoordinatesForPercentage(percentage) {
|
49781 | var x = Math.cos(2 * Math.PI * percentage) * (size / 3);
|
49782 | var y = Math.sin(2 * Math.PI * percentage) * (size / 3);
|
49783 | return [x, y];
|
49784 | }
|
49785 |
|
49786 | datasets.forEach(function (_ref) {
|
49787 | var value = _ref.value,
|
49788 | label = _ref.label,
|
49789 | color = _ref.color;
|
49790 |
|
49791 | var percentage = value / _this2.getSummValue();
|
49792 |
|
49793 | var _getCoordinatesForPer = getCoordinatesForPercentage(cumulativePercentage),
|
49794 | startX = _getCoordinatesForPer[0],
|
49795 | startY = _getCoordinatesForPer[1];
|
49796 |
|
49797 | cumulativePercentage += percentage;
|
49798 |
|
49799 | var _getCoordinatesForPer2 = getCoordinatesForPercentage(cumulativePercentage),
|
49800 | endX = _getCoordinatesForPer2[0],
|
49801 | endY = _getCoordinatesForPer2[1];
|
49802 |
|
49803 | var largeArcFlag = percentage > 0.5 ? 1 : 0;
|
49804 | var points = ["M " + startX + " " + startY,
|
49805 | "A " + size / 3 + " " + size / 3 + " 0 " + largeArcFlag + " 1 " + endX + " " + endY,
|
49806 | 'L 0 0'
|
49807 | ].join(' ');
|
49808 | paths.push({
|
49809 | points: points,
|
49810 | label: label,
|
49811 | color: color
|
49812 | });
|
49813 | });
|
49814 | return paths;
|
49815 | };
|
49816 |
|
49817 | _proto.formatTooltipText = function formatTooltipText() {
|
49818 | var datasets = this.params.datasets;
|
49819 | var currentIndex = this.currentIndex;
|
49820 | if (currentIndex === null) return '';
|
49821 | var _datasets$currentInde = datasets[currentIndex],
|
49822 | value = _datasets$currentInde.value,
|
49823 | label = _datasets$currentInde.label,
|
49824 | color = _datasets$currentInde.color;
|
49825 | var percentage = value / this.getSummValue() * 100;
|
49826 |
|
49827 | var round = function round(v) {
|
49828 | if (parseInt(v, 10) === v) return v;
|
49829 | return Math.round(v * 100) / 100;
|
49830 | };
|
49831 |
|
49832 | if (this.params.formatTooltip) {
|
49833 | return this.params.formatTooltip.call(this, {
|
49834 | index: currentIndex,
|
49835 | value: value,
|
49836 | label: label,
|
49837 | color: color,
|
49838 | percentage: percentage
|
49839 | });
|
49840 | }
|
49841 |
|
49842 | var tooltipText = "" + (label ? label + ": " : '') + round(value) + " (" + round(percentage) + "%)";
|
49843 | return "\n <div class=\"pie-chart-tooltip-label\">\n <span class=\"pie-chart-tooltip-color\" style=\"background-color: " + color + ";\"></span> " + tooltipText + "\n </div>\n ";
|
49844 | };
|
49845 |
|
49846 | _proto.setTooltip = function setTooltip() {
|
49847 | var self = this;
|
49848 | var currentIndex = self.currentIndex,
|
49849 | el = self.el,
|
49850 | app = self.app,
|
49851 | params = self.params;
|
49852 | var tooltip = params.tooltip;
|
49853 | if (currentIndex === null && !self.f7Tooltip) return;
|
49854 | if (!tooltip || !el) return;
|
49855 |
|
49856 | if (currentIndex !== null && !self.f7Tooltip) {
|
49857 | self.f7Tooltip = app.tooltip.create({
|
49858 | trigger: 'manual',
|
49859 | containerEl: el,
|
49860 | targetEl: el.querySelector("path[data-index=\"" + currentIndex + "\"]"),
|
49861 | text: self.formatTooltipText(),
|
49862 | cssClass: 'pie-chart-tooltip'
|
49863 | });
|
49864 | self.f7Tooltip.show();
|
49865 | return;
|
49866 | }
|
49867 |
|
49868 | if (!self.f7Tooltip) return;
|
49869 |
|
49870 | if (currentIndex !== null) {
|
49871 | self.f7Tooltip.setText(self.formatTooltipText());
|
49872 | self.f7Tooltip.setTargetEl(el.querySelector("path[data-index=\"" + currentIndex + "\"]"));
|
49873 | self.f7Tooltip.show();
|
49874 | } else {
|
49875 | self.f7Tooltip.hide();
|
49876 | }
|
49877 | };
|
49878 |
|
49879 | _proto.render = function render() {
|
49880 | var self = this;
|
49881 | var size = self.params.size;
|
49882 | var paths = self.getPaths();
|
49883 | return $jsx("svg", {
|
49884 | xmlns: "http://www.w3.org/2000/svg",
|
49885 | width: size,
|
49886 | viewBox: "-" + size / 3 + " -" + size / 3 + " " + size * 2 / 3 + " " + size * 2 / 3,
|
49887 | style: "transform: rotate(-90deg)"
|
49888 | }, paths.map(function (path, index) {
|
49889 | return $jsx("path", {
|
49890 | d: path.points,
|
49891 | fill: path.color,
|
49892 | "data-index": index
|
49893 | });
|
49894 | }));
|
49895 | };
|
49896 |
|
49897 | _proto.update = function update(newParams) {
|
49898 | if (newParams === void 0) {
|
49899 | newParams = {};
|
49900 | }
|
49901 |
|
49902 | var self = this;
|
49903 | var params = self.params;
|
49904 | Object.keys(newParams).forEach(function (param) {
|
49905 | if (typeof newParams[param] !== 'undefined') {
|
49906 | params[param] = newParams[param];
|
49907 | }
|
49908 | });
|
49909 | if (self.$svgEl.length === 0) return self;
|
49910 | self.$svgEl.remove();
|
49911 | delete self.$svgEl.f7PieChart;
|
49912 | var $svgEl = $(self.render()).eq(0);
|
49913 | $svgEl.f7PieChart = self;
|
49914 | extend$1(self, {
|
49915 | $svgEl: $svgEl,
|
49916 | svgEl: $svgEl && $svgEl[0]
|
49917 | });
|
49918 | self.$el.append($svgEl);
|
49919 | return self;
|
49920 | };
|
49921 |
|
49922 | _proto.setCurrentIndex = function setCurrentIndex(index) {
|
49923 | var self = this;
|
49924 | if (index === self.currentIndex) return;
|
49925 | var datasets = self.params.datasets;
|
49926 | self.currentIndex = index;
|
49927 | self.$el.trigger('piechart:select', {
|
49928 | index: index,
|
49929 | dataset: datasets[index]
|
49930 | });
|
49931 | self.emit('local::select pieChartSelect', self, index, datasets[index]);
|
49932 | };
|
49933 |
|
49934 | _proto.showTooltip = function showTooltip(e) {
|
49935 | var _this3 = this;
|
49936 |
|
49937 | var newIndex = parseInt(e.target.getAttribute('data-index'), 10);
|
49938 | this.setCurrentIndex(newIndex);
|
49939 | this.$svgEl.find('path').removeClass('pie-chart-hidden').forEach(function (el, index) {
|
49940 | if (index !== _this3.currentIndex) $(el).addClass('pie-chart-hidden');
|
49941 | });
|
49942 | this.setTooltip();
|
49943 | };
|
49944 |
|
49945 | _proto.hideTooltip = function hideTooltip() {
|
49946 | this.setCurrentIndex(null);
|
49947 | this.$svgEl.find('path').removeClass('pie-chart-hidden');
|
49948 | this.setTooltip();
|
49949 | };
|
49950 |
|
49951 | _proto.init = function init() {
|
49952 | var self = this;
|
49953 | var $svgEl = $(self.render()).eq(0);
|
49954 | $svgEl.f7PieChart = self;
|
49955 | extend$1(self, {
|
49956 | $svgEl: $svgEl,
|
49957 | svgEl: $svgEl && $svgEl[0]
|
49958 | });
|
49959 | self.$el.append($svgEl);
|
49960 | self.$el.on('click mouseenter', 'path', self.showTooltip, true);
|
49961 | self.$el.on('mouseleave', 'path', self.hideTooltip, true);
|
49962 | return self;
|
49963 | };
|
49964 |
|
49965 | _proto.destroy = function destroy() {
|
49966 | var self = this;
|
49967 | if (!self.$el || self.destroyed) return;
|
49968 | self.$el.trigger('piechart:beforedestroy');
|
49969 | self.emit('local::beforeDestroy pieChartBeforeDestroy', self);
|
49970 | self.$el.off('click mouseenter', 'path', self.showTooltip, true);
|
49971 | self.$el.off('mouseleave', 'path', self.hideTooltip, true);
|
49972 | self.$svgEl.remove();
|
49973 |
|
49974 | if (self.f7Tooltip && self.f7Tooltip.destroy) {
|
49975 | self.f7Tooltip.destroy();
|
49976 | }
|
49977 |
|
49978 | delete self.$el[0].f7PieChart;
|
49979 | deleteProps$1(self);
|
49980 | self.destroyed = true;
|
49981 | };
|
49982 |
|
49983 | return PieChart;
|
49984 | }(Framework7Class);
|
49985 |
|
49986 | var PieChart = {
|
49987 | name: 'pieChart',
|
49988 | params: {
|
49989 | pieChart: {
|
49990 | el: null,
|
49991 | datasets: [],
|
49992 | size: 320,
|
49993 | tooltip: false,
|
49994 | formatTooltip: null
|
49995 | }
|
49996 | },
|
49997 | create: function create() {
|
49998 | var app = this;
|
49999 | app.pieChart = ConstructorMethods({
|
50000 | defaultSelector: '.pie-chart',
|
50001 | constructor: PieChart$1,
|
50002 | app: app,
|
50003 | domProp: 'f7PieChart'
|
50004 | });
|
50005 |
|
50006 | app.pieChart.update = function update(el, newParams) {
|
50007 | var $el = $(el);
|
50008 | if ($el.length === 0) return undefined;
|
50009 | var pieChart = app.pieChart.get(el);
|
50010 | if (!pieChart) return undefined;
|
50011 | pieChart.update(newParams);
|
50012 | return pieChart;
|
50013 | };
|
50014 | }
|
50015 | };
|
50016 |
|
50017 | var AreaChart$1 = function (_Framework7Class) {
|
50018 | _inheritsLoose(AreaChart, _Framework7Class);
|
50019 |
|
50020 | function AreaChart(app, params) {
|
50021 | var _this;
|
50022 |
|
50023 | if (params === void 0) {
|
50024 | params = {};
|
50025 | }
|
50026 |
|
50027 | _this = _Framework7Class.call(this, params, [app]) || this;
|
50028 |
|
50029 | var self = _assertThisInitialized(_this);
|
50030 |
|
50031 | var defaults = extend$1({}, app.params.areaChart);
|
50032 |
|
50033 | self.useModulesParams(defaults);
|
50034 | self.params = extend$1(defaults, params);
|
50035 | var el = self.params.el;
|
50036 | if (!el) return self || _assertThisInitialized(_this);
|
50037 | var $el = $(el);
|
50038 | if ($el.length === 0) return self || _assertThisInitialized(_this);
|
50039 | if ($el[0].f7AreaChart) return $el[0].f7AreaChart || _assertThisInitialized(_this);
|
50040 | extend$1(self, {
|
50041 | app: app,
|
50042 | $el: $el,
|
50043 | el: $el && $el[0],
|
50044 | currentIndex: null,
|
50045 | hiddenDatasets: [],
|
50046 | f7Tooltip: null,
|
50047 | linesOffsets: null
|
50048 | });
|
50049 | $el[0].f7AreaChart = self;
|
50050 |
|
50051 | self.useModules();
|
50052 | self.onMouseEnter = self.onMouseEnter.bind(self);
|
50053 | self.onMouseMove = self.onMouseMove.bind(self);
|
50054 | self.onMouseLeave = self.onMouseLeave.bind(self);
|
50055 | self.onLegendClick = self.onLegendClick.bind(self);
|
50056 | self.init();
|
50057 | return self || _assertThisInitialized(_this);
|
50058 | }
|
50059 |
|
50060 | var _proto = AreaChart.prototype;
|
50061 |
|
50062 | _proto.getVisibleLabels = function getVisibleLabels() {
|
50063 | var _this$params = this.params,
|
50064 | maxAxisLabels = _this$params.maxAxisLabels,
|
50065 | axisLabels = _this$params.axisLabels;
|
50066 | if (!maxAxisLabels || axisLabels.length <= maxAxisLabels) return axisLabels;
|
50067 | var skipStep = Math.ceil(axisLabels.length / maxAxisLabels);
|
50068 | var filtered = axisLabels.filter(function (label, index) {
|
50069 | return index % skipStep === 0;
|
50070 | });
|
50071 | return filtered;
|
50072 | };
|
50073 |
|
50074 | _proto.getSummValues = function getSummValues() {
|
50075 | var datasets = this.params.datasets;
|
50076 | var hiddenDatasets = this.hiddenDatasets;
|
50077 | var summValues = [];
|
50078 | datasets.filter(function (dataset, index) {
|
50079 | return !hiddenDatasets.includes(index);
|
50080 | }).forEach(function (_ref) {
|
50081 | var values = _ref.values;
|
50082 | values.forEach(function (value, valueIndex) {
|
50083 | if (!summValues[valueIndex]) summValues[valueIndex] = 0;
|
50084 | summValues[valueIndex] += value;
|
50085 | });
|
50086 | });
|
50087 | return summValues;
|
50088 | };
|
50089 |
|
50090 | _proto.getChartData = function getChartData() {
|
50091 | var _this$params2 = this.params,
|
50092 | datasets = _this$params2.datasets,
|
50093 | lineChart = _this$params2.lineChart,
|
50094 | width = _this$params2.width,
|
50095 | height = _this$params2.height;
|
50096 | var hiddenDatasets = this.hiddenDatasets;
|
50097 | var data = [];
|
50098 |
|
50099 | if (!datasets.length) {
|
50100 | return data;
|
50101 | }
|
50102 |
|
50103 | var lastValues = datasets[0].values.map(function () {
|
50104 | return 0;
|
50105 | });
|
50106 | var maxValue = 0;
|
50107 |
|
50108 | if (lineChart) {
|
50109 | datasets.filter(function (dataset, index) {
|
50110 | return !hiddenDatasets.includes(index);
|
50111 | }).forEach(function (_ref2) {
|
50112 | var values = _ref2.values;
|
50113 | var datasetMaxValue = Math.max.apply(Math, values);
|
50114 | if (datasetMaxValue > maxValue) maxValue = datasetMaxValue;
|
50115 | });
|
50116 | } else {
|
50117 | maxValue = Math.max.apply(Math, this.getSummValues());
|
50118 | }
|
50119 |
|
50120 | datasets.filter(function (dataset, index) {
|
50121 | return !hiddenDatasets.includes(index);
|
50122 | }).forEach(function (_ref3) {
|
50123 | var label = _ref3.label,
|
50124 | values = _ref3.values,
|
50125 | color = _ref3.color;
|
50126 | var points = values.map(function (originalValue, valueIndex) {
|
50127 | lastValues[valueIndex] += originalValue;
|
50128 | var value = lineChart ? originalValue : lastValues[valueIndex];
|
50129 | var x = valueIndex / (values.length - 1) * width;
|
50130 | var y = height - value / maxValue * height;
|
50131 |
|
50132 | if (lineChart) {
|
50133 | return "" + (valueIndex === 0 ? 'M' : 'L') + x + "," + y;
|
50134 | }
|
50135 |
|
50136 | return x + " " + y;
|
50137 | });
|
50138 |
|
50139 | if (!lineChart) {
|
50140 | points.push(width + " " + height + " 0 " + height);
|
50141 | }
|
50142 |
|
50143 | data.push({
|
50144 | label: label,
|
50145 | points: points.join(' '),
|
50146 | color: color
|
50147 | });
|
50148 | });
|
50149 | return data.reverse();
|
50150 | };
|
50151 |
|
50152 | _proto.getVerticalLines = function getVerticalLines() {
|
50153 | var _this$params3 = this.params,
|
50154 | datasets = _this$params3.datasets,
|
50155 | width = _this$params3.width;
|
50156 | var lines = [];
|
50157 |
|
50158 | if (!datasets.length) {
|
50159 | return lines;
|
50160 | }
|
50161 |
|
50162 | var values = datasets[0].values;
|
50163 | values.forEach(function (value, valueIndex) {
|
50164 | var x = valueIndex / (values.length - 1) * width;
|
50165 | lines.push(x);
|
50166 | });
|
50167 | return lines;
|
50168 | };
|
50169 |
|
50170 | _proto.toggleDataset = function toggleDataset(index) {
|
50171 | var _this2 = this;
|
50172 |
|
50173 | var hiddenDatasets = this.hiddenDatasets,
|
50174 | toggleDatasets = this.params.toggleDatasets;
|
50175 | if (!toggleDatasets) return;
|
50176 |
|
50177 | if (hiddenDatasets.includes(index)) {
|
50178 | hiddenDatasets.splice(hiddenDatasets.indexOf(index), 1);
|
50179 | } else {
|
50180 | hiddenDatasets.push(index);
|
50181 | }
|
50182 |
|
50183 | if (this.$legendEl) {
|
50184 | this.$legendEl.find('.area-chart-legend-item').removeClass('area-chart-legend-item-hidden');
|
50185 | hiddenDatasets.forEach(function (i) {
|
50186 | _this2.$legendEl.find(".area-chart-legend-item[data-index=\"" + i + "\"]").addClass('area-chart-legend-item-hidden');
|
50187 | });
|
50188 | }
|
50189 |
|
50190 | this.update({}, true);
|
50191 | };
|
50192 |
|
50193 | _proto.formatAxisLabel = function formatAxisLabel(label) {
|
50194 | var formatAxisLabel = this.params.formatAxisLabel;
|
50195 | if (formatAxisLabel) return formatAxisLabel.call(this, label);
|
50196 | return label;
|
50197 | };
|
50198 |
|
50199 | _proto.formatLegendLabel = function formatLegendLabel(label) {
|
50200 | var formatLegendLabel = this.params.formatLegendLabel;
|
50201 | if (formatLegendLabel) return formatLegendLabel.call(this, label);
|
50202 | return label;
|
50203 | };
|
50204 |
|
50205 | _proto.calcLinesOffsets = function calcLinesOffsets() {
|
50206 | var lines = this.svgEl.querySelectorAll('line');
|
50207 | this.linesOffsets = [];
|
50208 |
|
50209 | for (var i = 0; i < lines.length; i += 1) {
|
50210 | this.linesOffsets.push(lines[i].getBoundingClientRect().left);
|
50211 | }
|
50212 | };
|
50213 |
|
50214 | _proto.formatTooltip = function formatTooltip() {
|
50215 | var self = this;
|
50216 | var currentIndex = self.currentIndex,
|
50217 | hiddenDatasets = self.hiddenDatasets,
|
50218 | _self$params = self.params,
|
50219 | datasets = _self$params.datasets,
|
50220 | axisLabels = _self$params.axisLabels,
|
50221 | formatTooltip = _self$params.formatTooltip,
|
50222 | formatTooltipTotal = _self$params.formatTooltipTotal,
|
50223 | formatTooltipAxisLabel = _self$params.formatTooltipAxisLabel,
|
50224 | formatTooltipDataset = _self$params.formatTooltipDataset;
|
50225 | if (currentIndex === null) return '';
|
50226 | var total = 0;
|
50227 | var currentValues = datasets.filter(function (dataset, index) {
|
50228 | return !hiddenDatasets.includes(index);
|
50229 | }).map(function (dataset) {
|
50230 | return {
|
50231 | color: dataset.color,
|
50232 | label: dataset.label,
|
50233 | value: dataset.values[currentIndex]
|
50234 | };
|
50235 | });
|
50236 | currentValues.forEach(function (dataset) {
|
50237 | total += dataset.value;
|
50238 | });
|
50239 |
|
50240 | if (formatTooltip) {
|
50241 | return formatTooltip({
|
50242 | index: currentIndex,
|
50243 | total: total,
|
50244 | datasets: currentValues
|
50245 | });
|
50246 | }
|
50247 |
|
50248 | var labelText = formatTooltipAxisLabel ? formatTooltipAxisLabel.call(self, axisLabels[currentIndex]) : this.formatAxisLabel(axisLabels[currentIndex]);
|
50249 | if (!labelText) labelText = '';
|
50250 | var totalText = formatTooltipTotal ? formatTooltipTotal.call(self, total) : total;
|
50251 |
|
50252 | var datasetsText = currentValues.length > 0 ? "\n <ul class=\"area-chart-tooltip-list\">\n " + currentValues.map(function (_ref4) {
|
50253 | var label = _ref4.label,
|
50254 | color = _ref4.color,
|
50255 | value = _ref4.value;
|
50256 | var valueText = formatTooltipDataset ? formatTooltipDataset.call(self, label, value, color) : "" + (label ? label + ": " : '') + value;
|
50257 | return "\n <li><span style=\"background-color: " + color + ";\"></span>" + valueText + "</li>\n ";
|
50258 | }).join('') + "\n </ul>" : '';
|
50259 |
|
50260 | return "\n <div class=\"area-chart-tooltip-label\">" + labelText + "</div>\n <div class=\"area-chart-tooltip-total\">" + totalText + "</div>\n " + datasetsText + "\n ";
|
50261 | };
|
50262 |
|
50263 | _proto.setTooltip = function setTooltip() {
|
50264 | var self = this;
|
50265 | var app = self.app,
|
50266 | el = self.el,
|
50267 | svgEl = self.svgEl,
|
50268 | hiddenDatasets = self.hiddenDatasets,
|
50269 | currentIndex = self.currentIndex,
|
50270 | _self$params2 = self.params,
|
50271 | tooltip = _self$params2.tooltip,
|
50272 | datasets = _self$params2.datasets;
|
50273 | if (!tooltip) return;
|
50274 | var hasVisibleDataSets = datasets.filter(function (dataset, index) {
|
50275 | return !hiddenDatasets.includes(index);
|
50276 | }).length > 0;
|
50277 |
|
50278 | if (!hasVisibleDataSets) {
|
50279 | if (self.f7Tooltip && self.f7Tooltip.hide) self.f7Tooltip.hide();
|
50280 | return;
|
50281 | }
|
50282 |
|
50283 | if (currentIndex !== null && !self.f7Tooltip) {
|
50284 | self.f7Tooltip = app.tooltip.create({
|
50285 | trigger: 'manual',
|
50286 | containerEl: el,
|
50287 | targetEl: svgEl.querySelector("line[data-index=\"" + currentIndex + "\"]"),
|
50288 | text: self.formatTooltip(),
|
50289 | cssClass: 'area-chart-tooltip'
|
50290 | });
|
50291 |
|
50292 | if (self.f7Tooltip && self.f7Tooltip.show) {
|
50293 | self.f7Tooltip.show();
|
50294 | }
|
50295 |
|
50296 | return;
|
50297 | }
|
50298 |
|
50299 | if (!self.f7Tooltip || !self.f7Tooltip.hide || !self.f7Tooltip.show) {
|
50300 | return;
|
50301 | }
|
50302 |
|
50303 | if (currentIndex !== null) {
|
50304 | self.f7Tooltip.setText(self.formatTooltip());
|
50305 | self.f7Tooltip.setTargetEl(svgEl.querySelector("line[data-index=\"" + currentIndex + "\"]"));
|
50306 | self.f7Tooltip.show();
|
50307 | } else {
|
50308 | self.f7Tooltip.hide();
|
50309 | }
|
50310 | };
|
50311 |
|
50312 | _proto.setCurrentIndex = function setCurrentIndex(index) {
|
50313 | if (index === this.currentIndex) return;
|
50314 | this.currentIndex = index;
|
50315 | this.$el.trigger('areachart:select', {
|
50316 | index: index
|
50317 | });
|
50318 | this.emit('local::select areaChartSelect', this, index);
|
50319 | this.$svgEl.find('line').removeClass('area-chart-current-line');
|
50320 | this.$svgEl.find("line[data-index=\"" + index + "\"]").addClass('area-chart-current-line');
|
50321 | this.setTooltip();
|
50322 | };
|
50323 |
|
50324 | _proto.onLegendClick = function onLegendClick(e) {
|
50325 | var index = parseInt($(e.target).closest('.area-chart-legend-item').attr('data-index'), 10);
|
50326 | this.toggleDataset(index);
|
50327 | };
|
50328 |
|
50329 | _proto.onMouseEnter = function onMouseEnter() {
|
50330 | this.calcLinesOffsets();
|
50331 | };
|
50332 |
|
50333 | _proto.onMouseMove = function onMouseMove(e) {
|
50334 | var self = this;
|
50335 |
|
50336 | if (!self.linesOffsets) {
|
50337 | self.calcLinesOffsets();
|
50338 | }
|
50339 |
|
50340 | var currentLeft = e.pageX;
|
50341 | if (typeof currentLeft === 'undefined') currentLeft = 0;
|
50342 | var distances = self.linesOffsets.map(function (left) {
|
50343 | return Math.abs(currentLeft - left);
|
50344 | });
|
50345 | var minDistance = Math.min.apply(Math, distances);
|
50346 | var closestIndex = distances.indexOf(minDistance);
|
50347 | self.setCurrentIndex(closestIndex);
|
50348 | };
|
50349 |
|
50350 | _proto.onMouseLeave = function onMouseLeave() {
|
50351 | this.setCurrentIndex(null);
|
50352 | };
|
50353 |
|
50354 | _proto.attachEvents = function attachEvents() {
|
50355 | var svgEl = this.svgEl,
|
50356 | $el = this.$el;
|
50357 | if (!svgEl) return;
|
50358 | svgEl.addEventListener('mouseenter', this.onMouseEnter);
|
50359 | svgEl.addEventListener('mousemove', this.onMouseMove);
|
50360 | svgEl.addEventListener('mouseleave', this.onMouseLeave);
|
50361 | $el.on('click', '.area-chart-legend-item', this.onLegendClick);
|
50362 | };
|
50363 |
|
50364 | _proto.detachEvents = function detachEvents() {
|
50365 | var svgEl = this.svgEl,
|
50366 | $el = this.$el;
|
50367 | if (!svgEl) return;
|
50368 | svgEl.removeEventListener('mouseenter', this.onMouseEnter);
|
50369 | svgEl.removeEventListener('mousemove', this.onMouseMove);
|
50370 | svgEl.removeEventListener('mouseleave', this.onMouseLeave);
|
50371 | $el.off('click', '.area-chart-legend-item', this.onLegendClick);
|
50372 | };
|
50373 |
|
50374 | _proto.render = function render() {
|
50375 | var self = this;
|
50376 | var _self$params3 = self.params,
|
50377 | lineChart = _self$params3.lineChart,
|
50378 | toggleDatasets = _self$params3.toggleDatasets,
|
50379 | width = _self$params3.width,
|
50380 | height = _self$params3.height,
|
50381 | axis = _self$params3.axis,
|
50382 | axisLabels = _self$params3.axisLabels,
|
50383 | legend = _self$params3.legend,
|
50384 | datasets = _self$params3.datasets;
|
50385 | var chartData = self.getChartData();
|
50386 | var verticalLines = self.getVerticalLines();
|
50387 | var visibleLegends = self.getVisibleLabels();
|
50388 | var LegendItemTag = toggleDatasets ? 'button' : 'span';
|
50389 | return $jsx("div", null, $jsx("svg", {
|
50390 | xmlns: "http://www.w3.org/2000/svg",
|
50391 | width: width,
|
50392 | height: height,
|
50393 | viewBox: "0 0 " + width + " " + height,
|
50394 | preserveAspectRatio: "none"
|
50395 | }, chartData.map(function (data) {
|
50396 | return lineChart ? $jsx("path", {
|
50397 | stroke: data.color,
|
50398 | "fill-rule": "evenodd",
|
50399 | d: data.points
|
50400 | }) : $jsx("polygon", {
|
50401 | fill: data.color,
|
50402 | "fill-rule": "evenodd",
|
50403 | points: data.points
|
50404 | });
|
50405 | }), verticalLines.map(function (line, index) {
|
50406 | return $jsx("line", {
|
50407 | "data-index": index,
|
50408 | fill: "#000",
|
50409 | x1: line,
|
50410 | y1: 0,
|
50411 | x2: line,
|
50412 | y2: height
|
50413 | });
|
50414 | })), axis && $jsx("div", {
|
50415 | class: "area-chart-axis"
|
50416 | }, axisLabels.map(function (label) {
|
50417 | return $jsx("span", null, visibleLegends.includes(label) && $jsx("span", null, self.formatAxisLabel(label)));
|
50418 | })), legend && $jsx("div", {
|
50419 | class: "area-chart-legend"
|
50420 | }, datasets.map(function (dataset, index) {
|
50421 | return $jsx(LegendItemTag, {
|
50422 | "data-index": index,
|
50423 | class: "area-chart-legend-item " + (toggleDatasets ? 'area-chart-legend-button' : ''),
|
50424 | _type: toggleDatasets ? 'button' : undefined
|
50425 | }, $jsx("span", {
|
50426 | style: "background-color: " + dataset.color
|
50427 | }), self.formatLegendLabel(dataset.label));
|
50428 | })));
|
50429 | };
|
50430 |
|
50431 | _proto.update = function update(newParams, onlySvg) {
|
50432 | if (newParams === void 0) {
|
50433 | newParams = {};
|
50434 | }
|
50435 |
|
50436 | if (onlySvg === void 0) {
|
50437 | onlySvg = false;
|
50438 | }
|
50439 |
|
50440 | var self = this;
|
50441 | var params = self.params;
|
50442 | Object.keys(newParams).forEach(function (param) {
|
50443 | if (typeof newParams[param] !== 'undefined') {
|
50444 | params[param] = newParams[param];
|
50445 | }
|
50446 | });
|
50447 | if (self.$svgEl.length === 0) return self;
|
50448 | self.detachEvents();
|
50449 | self.$svgEl.remove();
|
50450 |
|
50451 | if (!onlySvg) {
|
50452 | self.$axisEl.remove();
|
50453 | self.$legendEl.remove();
|
50454 | }
|
50455 |
|
50456 | var $rendered = $(self.render());
|
50457 | var $svgEl = $rendered.find('svg');
|
50458 | extend$1(self, {
|
50459 | svgEl: $svgEl && $svgEl[0],
|
50460 | $svgEl: $svgEl
|
50461 | });
|
50462 |
|
50463 | if (!onlySvg) {
|
50464 | var $axisEl = $rendered.find('.area-chart-axis');
|
50465 | var $legendEl = $rendered.find('.area-chart-legend');
|
50466 | extend$1(self, {
|
50467 | $axisEl: $axisEl,
|
50468 | $legendEl: $legendEl
|
50469 | });
|
50470 | self.$el.append($axisEl);
|
50471 | self.$el.append($legendEl);
|
50472 | }
|
50473 |
|
50474 | self.$el.prepend($svgEl);
|
50475 | self.attachEvents();
|
50476 | return self;
|
50477 | };
|
50478 |
|
50479 | _proto.init = function init() {
|
50480 | var self = this;
|
50481 | var $rendered = $(self.render());
|
50482 | var $svgEl = $rendered.find('svg');
|
50483 | var $axisEl = $rendered.find('.area-chart-axis');
|
50484 | var $legendEl = $rendered.find('.area-chart-legend');
|
50485 | extend$1(self, {
|
50486 | svgEl: $svgEl && $svgEl[0],
|
50487 | $svgEl: $svgEl,
|
50488 | $axisEl: $axisEl,
|
50489 | $legendEl: $legendEl
|
50490 | });
|
50491 | self.$el.append($svgEl);
|
50492 | self.$el.append($axisEl);
|
50493 | self.$el.append($legendEl);
|
50494 | self.attachEvents();
|
50495 | return self;
|
50496 | };
|
50497 |
|
50498 | _proto.destroy = function destroy() {
|
50499 | var self = this;
|
50500 | if (!self.$el || self.destroyed) return;
|
50501 | self.$el.trigger('piechart:beforedestroy');
|
50502 | self.emit('local::beforeDestroy areaChartBeforeDestroy', self);
|
50503 | self.detachEvents();
|
50504 | self.$svgEl.remove();
|
50505 | self.$axisEl.remove();
|
50506 | self.$legendEl.remove();
|
50507 |
|
50508 | if (self.f7Tooltip && self.f7Tooltip.destroy) {
|
50509 | self.f7Tooltip.destroy();
|
50510 | }
|
50511 |
|
50512 | delete self.$el[0].f7AreaChart;
|
50513 | deleteProps$1(self);
|
50514 | self.destroyed = true;
|
50515 | };
|
50516 |
|
50517 | return AreaChart;
|
50518 | }(Framework7Class);
|
50519 |
|
50520 | var AreaChart = {
|
50521 | name: 'areaChart',
|
50522 | params: {
|
50523 | areaChart: {
|
50524 | el: null,
|
50525 | lineChart: false,
|
50526 | datasets: [],
|
50527 | axis: false,
|
50528 | axisLabels: [],
|
50529 | tooltip: false,
|
50530 | legend: false,
|
50531 | toggleDatasets: false,
|
50532 | width: 640,
|
50533 | height: 320,
|
50534 | maxAxisLabels: 8,
|
50535 | formatAxisLabel: null,
|
50536 | formatLegendLabel: null,
|
50537 | formatTooltip: null,
|
50538 | formatTooltipAxisLabel: null,
|
50539 | formatTooltipTotal: null,
|
50540 | formatTooltipDataset: null
|
50541 | }
|
50542 | },
|
50543 | create: function create() {
|
50544 | var app = this;
|
50545 | app.areaChart = ConstructorMethods({
|
50546 | defaultSelector: '.area-chart',
|
50547 | constructor: AreaChart$1,
|
50548 | app: app,
|
50549 | domProp: 'f7AreaChart'
|
50550 | });
|
50551 |
|
50552 | app.areaChart.update = function update(el, newParams) {
|
50553 | var $el = $(el);
|
50554 | if ($el.length === 0) return undefined;
|
50555 | var areaChart = app.areaChart.get(el);
|
50556 | if (!areaChart) return undefined;
|
50557 | areaChart.update(newParams);
|
50558 | return areaChart;
|
50559 | };
|
50560 | }
|
50561 | };
|
50562 |
|
50563 | var Elevation = {
|
50564 | name: 'elevation'
|
50565 | };
|
50566 |
|
50567 | var Typography = {
|
50568 | name: 'typography'
|
50569 | };
|
50570 |
|
50571 | if (typeof window !== 'undefined') {
|
50572 |
|
50573 | if (!window.Dom7) window.Dom7 = $;
|
50574 | }
|
50575 |
|
50576 |
|
50577 | Router.use([RouterComponentLoaderModule]);
|
50578 | Framework7.use([DeviceModule, SupportModule, UtilsModule, ResizeModule, RequestModule, TouchModule, ClicksModule, RouterModule, HistoryModule, ComponentModule, ServiceWorkerModule, StoreModule, Statusbar$1, View, Navbar$1, Toolbar$1, Subnavbar, TouchRipple, Modal, Appbar, Dialog, Popup, LoginScreen, Popover, Actions, Sheet, Toast, Preloader$1, Progressbar$1, Sortable$1, Swipeout$1, Accordion$1, ContactsList, VirtualList, ListIndex, Timeline, Tabs, Panel, Card, Chip, Form, Input$1, Checkbox, Radio, Toggle, Range, Stepper, SmartSelect, Grid$1, Calendar, Picker, InfiniteScroll$1, PullToRefresh, Lazy$3, DataTable, Fab$1, Searchbar, Messages, Messagebar, Swiper, PhotoBrowser, Notification, Autocomplete, Tooltip, Gauge, Skeleton, Menu$1, ColorPicker, Treeview$1, TextEditor, PieChart, AreaChart, Elevation, Typography]);
|
50579 |
|
50580 | return Framework7;
|
50581 |
|
50582 | })));
|
50583 |
|