hooper 0.2.2 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/hooper.css +142 -1
- package/dist/hooper.esm.js +355 -481
- package/dist/hooper.js +361 -487
- package/dist/hooper.min.js +1 -1
- package/package.json +14 -16
package/dist/hooper.esm.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* Hopper 0.2
|
2
|
+
* Hopper 0.3.2
|
3
3
|
* (c) 2019
|
4
4
|
* @license MIT
|
5
5
|
*/
|
@@ -39,6 +39,26 @@ function _objectSpread(target) {
|
|
39
39
|
return target;
|
40
40
|
}
|
41
41
|
|
42
|
+
function _toConsumableArray(arr) {
|
43
|
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
|
44
|
+
}
|
45
|
+
|
46
|
+
function _arrayWithoutHoles(arr) {
|
47
|
+
if (Array.isArray(arr)) {
|
48
|
+
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
49
|
+
|
50
|
+
return arr2;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
function _iterableToArray(iter) {
|
55
|
+
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
|
56
|
+
}
|
57
|
+
|
58
|
+
function _nonIterableSpread() {
|
59
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance");
|
60
|
+
}
|
61
|
+
|
42
62
|
function getInRange(value, min, max) {
|
43
63
|
return Math.max(Math.min(value, max), min);
|
44
64
|
}
|
@@ -76,47 +96,81 @@ function camelCaseToString(camelCase) {
|
|
76
96
|
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
77
97
|
}
|
78
98
|
function normalizeSlideIndex(index, slidesCount) {
|
99
|
+
var realIndex;
|
100
|
+
|
79
101
|
if (index < 0) {
|
80
|
-
|
102
|
+
realIndex = (index + slidesCount) % slidesCount;
|
103
|
+
} else {
|
104
|
+
realIndex = index % slidesCount;
|
105
|
+
} // Test for NaN
|
106
|
+
|
107
|
+
|
108
|
+
if (realIndex !== realIndex) {
|
109
|
+
return 0;
|
81
110
|
}
|
82
111
|
|
83
|
-
return
|
112
|
+
return realIndex;
|
84
113
|
}
|
114
|
+
function cloneNode(h, vNode) {
|
115
|
+
// use the context that the original vnode was created in.
|
116
|
+
var children = vNode.children || vNode.componentOptions.children || vNode.text;
|
117
|
+
var tag = vNode.componentOptions.Ctor;
|
118
|
+
return h(tag, vNode.data, children);
|
119
|
+
} // IE11 :)
|
120
|
+
|
121
|
+
function assignPoly(target) {
|
122
|
+
if (target === undefined || target === null) {
|
123
|
+
throw new TypeError('Cannot convert first argument to object');
|
124
|
+
}
|
85
125
|
|
86
|
-
|
87
|
-
|
88
|
-
var
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
126
|
+
var to = Object(target);
|
127
|
+
|
128
|
+
for (var i = 1; i < arguments.length; i++) {
|
129
|
+
var nextSource = arguments[i];
|
130
|
+
|
131
|
+
if (nextSource === undefined || nextSource === null) {
|
132
|
+
continue;
|
133
|
+
}
|
134
|
+
|
135
|
+
nextSource = Object(nextSource);
|
136
|
+
var keysArray = Object.keys(Object(nextSource));
|
137
|
+
|
138
|
+
for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {
|
139
|
+
var nextKey = keysArray[nextIndex];
|
140
|
+
var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
|
141
|
+
|
142
|
+
if (desc !== undefined && desc.enumerable) {
|
143
|
+
to[nextKey] = nextSource[nextKey];
|
144
|
+
}
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
return to;
|
106
149
|
}
|
107
150
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
151
|
+
var assign = Object.assign || assignPoly;
|
152
|
+
|
153
|
+
function signPoly(value) {
|
154
|
+
if (value < 0) {
|
155
|
+
return -1;
|
156
|
+
}
|
157
|
+
|
158
|
+
return value > 0 ? 1 : 0;
|
159
|
+
}
|
160
|
+
|
161
|
+
var sign = Math.sign || signPoly;
|
162
|
+
function normalizeChildren(context) {
|
163
|
+
var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
164
|
+
|
165
|
+
if (context.$scopedSlots.default) {
|
166
|
+
return context.$scopedSlots.default(slotProps) || [];
|
167
|
+
}
|
168
|
+
|
169
|
+
return context.$slots.default || [];
|
115
170
|
}
|
116
171
|
|
117
|
-
//
|
118
172
|
var EMITTER = new Vue();
|
119
|
-
var
|
173
|
+
var Carousel = {
|
120
174
|
name: 'Hooper',
|
121
175
|
provide: function provide() {
|
122
176
|
return {
|
@@ -235,7 +289,6 @@ var script = {
|
|
235
289
|
trimEnd: 1,
|
236
290
|
currentSlide: null,
|
237
291
|
timer: null,
|
238
|
-
slides: [],
|
239
292
|
defaults: {},
|
240
293
|
breakpoints: {},
|
241
294
|
delta: {
|
@@ -338,11 +391,11 @@ var script = {
|
|
338
391
|
}
|
339
392
|
|
340
393
|
if (this.config.mouseDrag) {
|
341
|
-
this.$refs.
|
394
|
+
this.$refs.list.addEventListener('mousedown', this.onDragStart);
|
342
395
|
}
|
343
396
|
|
344
397
|
if (this.config.touchDrag) {
|
345
|
-
this.$refs.
|
398
|
+
this.$refs.list.addEventListener('touchstart', this.onDragStart, {
|
346
399
|
passive: true
|
347
400
|
});
|
348
401
|
}
|
@@ -379,28 +432,8 @@ var script = {
|
|
379
432
|
},
|
380
433
|
initDefaults: function initDefaults() {
|
381
434
|
this.breakpoints = this.settings.breakpoints;
|
382
|
-
this.defaults =
|
383
|
-
this.config =
|
384
|
-
},
|
385
|
-
initSlides: function initSlides() {
|
386
|
-
var _this3 = this;
|
387
|
-
|
388
|
-
this.slides = this.filteredSlides();
|
389
|
-
this.slidesCount = this.slides.length;
|
390
|
-
this.slides.forEach(function (slide, indx) {
|
391
|
-
slide.componentOptions.propsData.index = indx;
|
392
|
-
});
|
393
|
-
|
394
|
-
if (this.config.infiniteScroll) {
|
395
|
-
var before = [];
|
396
|
-
var after = [];
|
397
|
-
this.slides.forEach(function (slide, indx) {
|
398
|
-
before.push(cloneSlide(slide, indx - _this3.slidesCount));
|
399
|
-
after.push(cloneSlide(slide, indx + _this3.slidesCount));
|
400
|
-
});
|
401
|
-
this.$slots['clone-before'] = before;
|
402
|
-
this.$slots['clone-after'] = after;
|
403
|
-
}
|
435
|
+
this.defaults = assign({}, this.$props, this.settings);
|
436
|
+
this.config = assign({}, this.defaults);
|
404
437
|
},
|
405
438
|
// updating methods
|
406
439
|
update: function update() {
|
@@ -447,7 +480,7 @@ var script = {
|
|
447
480
|
this.slideWidth = this.containerWidth / this.config.itemsToShow;
|
448
481
|
},
|
449
482
|
updateConfig: function updateConfig() {
|
450
|
-
var
|
483
|
+
var _this3 = this;
|
451
484
|
|
452
485
|
var breakpoints = Object.keys(this.breakpoints).sort(function (a, b) {
|
453
486
|
return b - a;
|
@@ -457,13 +490,13 @@ var script = {
|
|
457
490
|
matched = window.matchMedia("(min-width: ".concat(breakpoint, "px)")).matches;
|
458
491
|
|
459
492
|
if (matched) {
|
460
|
-
|
493
|
+
_this3.config = assign({}, _this3.config, _this3.defaults, _this3.breakpoints[breakpoint]);
|
461
494
|
return true;
|
462
495
|
}
|
463
496
|
});
|
464
497
|
|
465
498
|
if (!matched) {
|
466
|
-
this.config =
|
499
|
+
this.config = assign(this.config, this.defaults);
|
467
500
|
}
|
468
501
|
},
|
469
502
|
restartTimer: function restartTimer() {
|
@@ -472,11 +505,10 @@ var script = {
|
|
472
505
|
}
|
473
506
|
},
|
474
507
|
restart: function restart() {
|
475
|
-
var
|
508
|
+
var _this4 = this;
|
476
509
|
|
477
|
-
this.initSlides();
|
478
510
|
this.$nextTick(function () {
|
479
|
-
|
511
|
+
_this4.update();
|
480
512
|
});
|
481
513
|
},
|
482
514
|
// events handlers
|
@@ -500,7 +532,10 @@ var script = {
|
|
500
532
|
this.startPosition.y = this.isTouch ? event.touches[0].clientY : event.clientY;
|
501
533
|
document.addEventListener(this.isTouch ? 'touchmove' : 'mousemove', this.onDrag);
|
502
534
|
document.addEventListener(this.isTouch ? 'touchend' : 'mouseup', this.onDragEnd);
|
503
|
-
|
535
|
+
|
536
|
+
if (event.type !== 'touchstart') {
|
537
|
+
event.preventDefault();
|
538
|
+
}
|
504
539
|
},
|
505
540
|
onDrag: function onDrag(event) {
|
506
541
|
if (this.isSliding) {
|
@@ -511,7 +546,10 @@ var script = {
|
|
511
546
|
this.endPosition.y = this.isTouch ? event.touches[0].clientY : event.clientY;
|
512
547
|
this.delta.x = this.endPosition.x - this.startPosition.x;
|
513
548
|
this.delta.y = this.endPosition.y - this.startPosition.y;
|
514
|
-
|
549
|
+
|
550
|
+
if (!this.isTouch) {
|
551
|
+
event.preventDefault();
|
552
|
+
}
|
515
553
|
},
|
516
554
|
onDragEnd: function onDragEnd() {
|
517
555
|
var tolerance = this.config.shortDrag ? 0.5 : 0.15;
|
@@ -519,11 +557,11 @@ var script = {
|
|
519
557
|
|
520
558
|
if (this.config.vertical) {
|
521
559
|
var draggedSlides = Math.round(Math.abs(this.delta.y / this.slideHeight) + tolerance);
|
522
|
-
this.slideTo(this.currentSlide -
|
560
|
+
this.slideTo(this.currentSlide - sign(this.delta.y) * draggedSlides);
|
523
561
|
}
|
524
562
|
|
525
563
|
if (!this.config.vertical) {
|
526
|
-
var direction = (this.config.rtl ? -1 : 1) *
|
564
|
+
var direction = (this.config.rtl ? -1 : 1) * sign(this.delta.x);
|
527
565
|
|
528
566
|
var _draggedSlides = Math.round(Math.abs(this.delta.x / this.slideWidth) + tolerance);
|
529
567
|
|
@@ -591,7 +629,7 @@ var script = {
|
|
591
629
|
|
592
630
|
this.lastScrollTime = now();
|
593
631
|
var value = event.wheelDelta || -event.deltaY;
|
594
|
-
var delta =
|
632
|
+
var delta = sign(value);
|
595
633
|
|
596
634
|
if (delta === -1) {
|
597
635
|
this.slideNext();
|
@@ -601,17 +639,8 @@ var script = {
|
|
601
639
|
this.slidePrev();
|
602
640
|
}
|
603
641
|
},
|
604
|
-
filteredSlides: function filteredSlides() {
|
605
|
-
return this.$slots.default.filter(function (el) {
|
606
|
-
if (!el.componentOptions || !el.componentOptions.Ctor) {
|
607
|
-
return false;
|
608
|
-
}
|
609
|
-
|
610
|
-
return el.componentOptions.Ctor.options.name === 'HooperSlide';
|
611
|
-
});
|
612
|
-
},
|
613
642
|
addGroupListeners: function addGroupListeners() {
|
614
|
-
var
|
643
|
+
var _this5 = this;
|
615
644
|
|
616
645
|
if (!this.group) {
|
617
646
|
return;
|
@@ -619,35 +648,26 @@ var script = {
|
|
619
648
|
|
620
649
|
this._groupSlideHandler = function (slideIndex) {
|
621
650
|
// set the isSource to false to prevent infinite emitting loop.
|
622
|
-
|
651
|
+
_this5.slideTo(slideIndex, false);
|
623
652
|
};
|
624
653
|
|
625
654
|
EMITTER.$on("slideGroup:".concat(this.group), this._groupSlideHandler);
|
626
655
|
}
|
627
656
|
},
|
628
|
-
beforeUpdate: function beforeUpdate() {
|
629
|
-
var isForcUpdated = this.config.infiniteScroll && (!this.$slots['clone-before'] || !this.$slots['clone-after']);
|
630
|
-
var isSlidesUpdated = this.filteredSlides().length !== this.slidesCount;
|
631
|
-
|
632
|
-
if (isForcUpdated || isSlidesUpdated) {
|
633
|
-
this.initSlides();
|
634
|
-
}
|
635
|
-
},
|
636
657
|
created: function created() {
|
637
658
|
this.initDefaults();
|
638
|
-
this.initSlides();
|
639
659
|
},
|
640
660
|
mounted: function mounted() {
|
641
|
-
var
|
661
|
+
var _this6 = this;
|
642
662
|
|
643
663
|
this.initEvents();
|
644
664
|
this.addGroupListeners();
|
645
665
|
this.$nextTick(function () {
|
646
|
-
|
666
|
+
_this6.update();
|
647
667
|
|
648
|
-
|
668
|
+
_this6.slideTo(_this6.config.initialSlide || 0);
|
649
669
|
|
650
|
-
|
670
|
+
_this6.$emit('loaded');
|
651
671
|
});
|
652
672
|
},
|
653
673
|
beforeDestroy: function beforeDestroy() {
|
@@ -660,189 +680,147 @@ var script = {
|
|
660
680
|
if (this.timer) {
|
661
681
|
this.timer.stop();
|
662
682
|
}
|
683
|
+
},
|
684
|
+
render: function render(h) {
|
685
|
+
var _this7 = this;
|
686
|
+
|
687
|
+
var body = renderBody.call(this, h);
|
688
|
+
return h('section', {
|
689
|
+
class: {
|
690
|
+
hooper: true,
|
691
|
+
'is-vertical': this.config.vertical,
|
692
|
+
'is-rtl': this.config.rtl
|
693
|
+
},
|
694
|
+
attrs: {
|
695
|
+
tabindex: '0'
|
696
|
+
},
|
697
|
+
on: {
|
698
|
+
focusin: function focusin() {
|
699
|
+
return _this7.isFocus = true;
|
700
|
+
},
|
701
|
+
focusout: function focusout() {
|
702
|
+
return _this7.isFocus = false;
|
703
|
+
},
|
704
|
+
mouseover: function mouseover() {
|
705
|
+
return _this7.isHover = true;
|
706
|
+
},
|
707
|
+
mouseleave: function mouseleave() {
|
708
|
+
return _this7.isHover = false;
|
709
|
+
}
|
710
|
+
}
|
711
|
+
}, body);
|
663
712
|
}
|
664
713
|
};
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
var
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
714
|
+
/**
|
715
|
+
* Renders additional slides for infinite slides mode.
|
716
|
+
* By cloning Slides VNodes before and after either edges.
|
717
|
+
*/
|
718
|
+
|
719
|
+
function renderBufferSlides(h, slides) {
|
720
|
+
var before = [];
|
721
|
+
var after = []; // reduce prop access
|
722
|
+
|
723
|
+
var slidesCount = slides.length;
|
724
|
+
|
725
|
+
for (var i = 0; i < slidesCount; i++) {
|
726
|
+
var slide = slides[i];
|
727
|
+
var clonedBefore = cloneNode(h, slide);
|
728
|
+
clonedBefore.data.key = "index-".concat(i - slidesCount);
|
729
|
+
clonedBefore.key = clonedBefore.data.key;
|
730
|
+
clonedBefore.data.props = {
|
731
|
+
index: i - slidesCount,
|
732
|
+
isClone: true
|
733
|
+
};
|
734
|
+
before.push(clonedBefore);
|
735
|
+
var clonedAfter = cloneNode(h, slide);
|
736
|
+
clonedAfter.data.key = "index-".concat(i + slidesCount);
|
737
|
+
clonedAfter.key = clonedAfter.data.key;
|
738
|
+
clonedAfter.data.props = {
|
739
|
+
index: i + slidesCount,
|
740
|
+
isClone: true
|
741
|
+
};
|
742
|
+
after.push(clonedAfter);
|
691
743
|
}
|
692
744
|
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
this.$vnode && this.$vnode.ssrContext || // stateful
|
701
|
-
this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional
|
702
|
-
// 2.2 with runInNewContext: true
|
745
|
+
return [].concat(before, _toConsumableArray(slides), after);
|
746
|
+
}
|
747
|
+
/**
|
748
|
+
* Produces the VNodes for the Slides.
|
749
|
+
* requires {this} to be bound to hooper.
|
750
|
+
* So use with .call or .bind
|
751
|
+
*/
|
703
752
|
|
704
|
-
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
|
705
|
-
context = __VUE_SSR_CONTEXT__;
|
706
|
-
} // inject component styles
|
707
753
|
|
754
|
+
function renderSlides(h) {
|
755
|
+
var children = normalizeChildren(this);
|
756
|
+
var childrenCount = children.length;
|
757
|
+
var idx = 0;
|
758
|
+
var slides = [];
|
708
759
|
|
709
|
-
|
710
|
-
|
711
|
-
|
760
|
+
for (var i = 0; i < childrenCount; i++) {
|
761
|
+
var child = children[i];
|
762
|
+
var ctor = child.componentOptions && child.componentOptions.Ctor;
|
712
763
|
|
764
|
+
if (!ctor || ctor.options.name !== 'HooperSlide') {
|
765
|
+
continue;
|
766
|
+
} // give slide an index behind the scenes
|
713
767
|
|
714
|
-
if (context && context._registeredComponents) {
|
715
|
-
context._registeredComponents.add(moduleIdentifier);
|
716
|
-
}
|
717
|
-
}; // used by ssr in case component is cached and beforeCreate
|
718
|
-
// never gets called
|
719
768
|
|
769
|
+
child.componentOptions.propsData.index = idx;
|
770
|
+
child.data.key = idx;
|
771
|
+
child.key = idx;
|
772
|
+
child.data.props = _objectSpread({}, child.data.props || {}, {
|
773
|
+
isClone: false,
|
774
|
+
index: idx++
|
775
|
+
});
|
776
|
+
slides.push(child);
|
777
|
+
} // update hooper's information of the slide count.
|
720
778
|
|
721
|
-
options._ssrRegister = hook;
|
722
|
-
} else if (style) {
|
723
|
-
hook = shadowMode ? function () {
|
724
|
-
style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));
|
725
|
-
} : function (context) {
|
726
|
-
style.call(this, createInjector(context));
|
727
|
-
};
|
728
|
-
}
|
729
779
|
|
730
|
-
|
731
|
-
if (options.functional) {
|
732
|
-
// register for functional component in vue file
|
733
|
-
var originalRender = options.render;
|
780
|
+
this.slidesCount = slides.length;
|
734
781
|
|
735
|
-
|
736
|
-
|
737
|
-
return originalRender(h, context);
|
738
|
-
};
|
739
|
-
} else {
|
740
|
-
// inject component registration as beforeCreate hook
|
741
|
-
var existing = options.beforeCreate;
|
742
|
-
options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
|
743
|
-
}
|
782
|
+
if (this.config.infiniteScroll) {
|
783
|
+
slides = renderBufferSlides(h, slides);
|
744
784
|
}
|
745
785
|
|
746
|
-
return
|
747
|
-
}
|
748
|
-
|
749
|
-
var normalizeComponent_1 = normalizeComponent;
|
750
|
-
|
751
|
-
/* script */
|
752
|
-
var __vue_script__ = script;
|
753
|
-
/* template */
|
754
|
-
|
755
|
-
var __vue_render__ = function __vue_render__() {
|
756
|
-
var _vm = this;
|
757
|
-
|
758
|
-
var _h = _vm.$createElement;
|
759
|
-
|
760
|
-
var _c = _vm._self._c || _h;
|
761
|
-
|
762
|
-
return _c('section', {
|
763
|
-
staticClass: "hooper",
|
764
|
-
class: {
|
765
|
-
'is-vertical': _vm.config.vertical,
|
766
|
-
'is-rtl': _vm.config.rtl
|
767
|
-
},
|
768
|
-
attrs: {
|
769
|
-
"tabindex": "0"
|
770
|
-
},
|
771
|
-
on: {
|
772
|
-
"mouseover": function mouseover($event) {
|
773
|
-
_vm.isHover = true;
|
774
|
-
},
|
775
|
-
"mouseleave": function mouseleave($event) {
|
776
|
-
_vm.isHover = false;
|
777
|
-
},
|
778
|
-
"focusin": function focusin($event) {
|
779
|
-
_vm.isFocus = true;
|
780
|
-
},
|
781
|
-
"focusout": function focusout($event) {
|
782
|
-
_vm.isFocus = false;
|
783
|
-
}
|
784
|
-
}
|
785
|
-
}, [_c('div', {
|
786
|
-
staticClass: "hooper-list"
|
787
|
-
}, [_c('ul', {
|
788
|
-
ref: "track",
|
789
|
-
staticClass: "hooper-track",
|
786
|
+
return h('ul', {
|
790
787
|
class: {
|
791
|
-
'
|
788
|
+
'hooper-track': true,
|
789
|
+
'is-dragging': this.isDragging
|
792
790
|
},
|
793
|
-
style:
|
791
|
+
style: this.trackTransform + this.trackTransition,
|
792
|
+
ref: 'track',
|
794
793
|
on: {
|
795
|
-
|
794
|
+
transitionend: this.onTransitionend
|
796
795
|
}
|
797
|
-
},
|
798
|
-
|
796
|
+
}, slides);
|
797
|
+
}
|
798
|
+
/**
|
799
|
+
* Builds the VNodes for the hooper body.
|
800
|
+
* Which is the slides, addons if available, and a11y stuff.
|
801
|
+
* REQUIRES {this} to be bound to the hooper instance.
|
802
|
+
* use with .call or .bind
|
803
|
+
*/
|
804
|
+
|
805
|
+
|
806
|
+
function renderBody(h) {
|
807
|
+
var slides = renderSlides.call(this, h);
|
808
|
+
var addons = this.$slots['hooper-addons'] || [];
|
809
|
+
var a11y = h('div', {
|
810
|
+
class: 'hooper-liveregion hooper-sr-only',
|
799
811
|
attrs: {
|
800
|
-
|
801
|
-
|
812
|
+
'aria-live': 'polite',
|
813
|
+
'aria-atomic': 'true'
|
802
814
|
}
|
803
|
-
},
|
804
|
-
|
815
|
+
}, "Item ".concat(this.currentSlide + 1, " of ").concat(this.slidesCount));
|
816
|
+
var children = [slides].concat(_toConsumableArray(addons), [a11y]);
|
817
|
+
return [h('div', {
|
818
|
+
class: 'hooper-list',
|
819
|
+
ref: 'list'
|
820
|
+
}, children)];
|
821
|
+
}
|
805
822
|
|
806
|
-
var
|
807
|
-
/* style */
|
808
|
-
|
809
|
-
var __vue_inject_styles__ = undefined;
|
810
|
-
/* scoped */
|
811
|
-
|
812
|
-
var __vue_scope_id__ = undefined;
|
813
|
-
/* module identifier */
|
814
|
-
|
815
|
-
var __vue_module_identifier__ = undefined;
|
816
|
-
/* functional template */
|
817
|
-
|
818
|
-
var __vue_is_functional_template__ = false;
|
819
|
-
/* style inject */
|
820
|
-
|
821
|
-
/* style inject SSR */
|
822
|
-
|
823
|
-
var Hooper = normalizeComponent_1({
|
824
|
-
render: __vue_render__,
|
825
|
-
staticRenderFns: __vue_staticRenderFns__
|
826
|
-
}, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);
|
827
|
-
|
828
|
-
//
|
829
|
-
//
|
830
|
-
//
|
831
|
-
//
|
832
|
-
//
|
833
|
-
//
|
834
|
-
//
|
835
|
-
//
|
836
|
-
//
|
837
|
-
//
|
838
|
-
//
|
839
|
-
//
|
840
|
-
//
|
841
|
-
//
|
842
|
-
//
|
843
|
-
//
|
844
|
-
//
|
845
|
-
var script$1 = {
|
823
|
+
var Slide = {
|
846
824
|
name: 'HooperSlide',
|
847
825
|
inject: ['$hooper'],
|
848
826
|
props: {
|
@@ -897,58 +875,27 @@ var script$1 = {
|
|
897
875
|
isCurrent: function isCurrent() {
|
898
876
|
return this.index === this.$hooper.currentSlide;
|
899
877
|
}
|
878
|
+
},
|
879
|
+
render: function render(h) {
|
880
|
+
var classes = {
|
881
|
+
'hooper-slide': true,
|
882
|
+
'is-clone': this.isClone,
|
883
|
+
'is-active': this.isActive,
|
884
|
+
'is-prev': this.isPrev,
|
885
|
+
'is-next': this.isNext,
|
886
|
+
'is-current': this.isCurrent
|
887
|
+
};
|
888
|
+
var children = normalizeChildren(this);
|
889
|
+
return h('li', {
|
890
|
+
class: classes,
|
891
|
+
style: this.style,
|
892
|
+
attrs: {
|
893
|
+
'aria-hidden': !this.isActive
|
894
|
+
}
|
895
|
+
}, children);
|
900
896
|
}
|
901
897
|
};
|
902
898
|
|
903
|
-
/* script */
|
904
|
-
var __vue_script__$1 = script$1;
|
905
|
-
/* template */
|
906
|
-
|
907
|
-
var __vue_render__$1 = function __vue_render__() {
|
908
|
-
var _vm = this;
|
909
|
-
|
910
|
-
var _h = _vm.$createElement;
|
911
|
-
|
912
|
-
var _c = _vm._self._c || _h;
|
913
|
-
|
914
|
-
return _c('li', {
|
915
|
-
staticClass: "hooper-slide",
|
916
|
-
class: {
|
917
|
-
'is-clone': _vm.isClone,
|
918
|
-
'is-active': _vm.isActive,
|
919
|
-
'is-prev': _vm.isPrev,
|
920
|
-
'is-next': _vm.isNext,
|
921
|
-
'is-current': _vm.isCurrent
|
922
|
-
},
|
923
|
-
style: _vm.style,
|
924
|
-
attrs: {
|
925
|
-
"aria-hidden": _vm.isActive
|
926
|
-
}
|
927
|
-
}, [_vm._t("default")], 2);
|
928
|
-
};
|
929
|
-
|
930
|
-
var __vue_staticRenderFns__$1 = [];
|
931
|
-
/* style */
|
932
|
-
|
933
|
-
var __vue_inject_styles__$1 = undefined;
|
934
|
-
/* scoped */
|
935
|
-
|
936
|
-
var __vue_scope_id__$1 = undefined;
|
937
|
-
/* module identifier */
|
938
|
-
|
939
|
-
var __vue_module_identifier__$1 = undefined;
|
940
|
-
/* functional template */
|
941
|
-
|
942
|
-
var __vue_is_functional_template__$1 = false;
|
943
|
-
/* style inject */
|
944
|
-
|
945
|
-
/* style inject SSR */
|
946
|
-
|
947
|
-
var Slide = normalizeComponent_1({
|
948
|
-
render: __vue_render__$1,
|
949
|
-
staticRenderFns: __vue_staticRenderFns__$1
|
950
|
-
}, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, undefined, undefined);
|
951
|
-
|
952
899
|
var Mixin = {
|
953
900
|
inject: ['$hooper']
|
954
901
|
};
|
@@ -959,7 +906,7 @@ var icons = {
|
|
959
906
|
arrowRight: 'M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z',
|
960
907
|
arrowLeft: 'M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z'
|
961
908
|
};
|
962
|
-
var
|
909
|
+
var Icon = {
|
963
910
|
name: 'HooperIcon',
|
964
911
|
functional: true,
|
965
912
|
inheritAttrs: true,
|
@@ -999,8 +946,7 @@ var Icons = {
|
|
999
946
|
}
|
1000
947
|
};
|
1001
948
|
|
1002
|
-
|
1003
|
-
var script$2 = {
|
949
|
+
var Progress = {
|
1004
950
|
inject: ['$hooper'],
|
1005
951
|
name: 'HooperProgress',
|
1006
952
|
computed: {
|
@@ -1011,52 +957,54 @@ var script$2 = {
|
|
1011
957
|
var range = this.$hooper.slidesCount - this.$hooper.trimStart - this.$hooper.trimEnd;
|
1012
958
|
return (this.currentSlide - this.$hooper.trimStart) * 100 / range;
|
1013
959
|
}
|
960
|
+
},
|
961
|
+
render: function render(h) {
|
962
|
+
return h('div', {
|
963
|
+
class: 'hooper-progress'
|
964
|
+
}, [h('div', {
|
965
|
+
class: 'hooper-progress-inner',
|
966
|
+
style: "width: ".concat(this.progress, "%")
|
967
|
+
})]);
|
1014
968
|
}
|
1015
969
|
};
|
1016
970
|
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
var __vue_render__$2 = function __vue_render__() {
|
1022
|
-
var _vm = this;
|
1023
|
-
|
1024
|
-
var _h = _vm.$createElement;
|
1025
|
-
|
1026
|
-
var _c = _vm._self._c || _h;
|
1027
|
-
|
1028
|
-
return _c('div', {
|
1029
|
-
staticClass: "hooper-progress"
|
1030
|
-
}, [_c('div', {
|
1031
|
-
staticClass: "hooper-progress-inner",
|
1032
|
-
style: "width: " + _vm.progress + "%"
|
1033
|
-
})]);
|
1034
|
-
};
|
1035
|
-
|
1036
|
-
var __vue_staticRenderFns__$2 = [];
|
1037
|
-
/* style */
|
1038
|
-
|
1039
|
-
var __vue_inject_styles__$2 = undefined;
|
1040
|
-
/* scoped */
|
971
|
+
function renderFraction(h, current, totalCount) {
|
972
|
+
return [h('span', current + 1), h('span', '/'), h('span', totalCount)];
|
973
|
+
}
|
1041
974
|
|
1042
|
-
|
1043
|
-
|
975
|
+
function renderIndicator(h, index, isCurrent, onClick) {
|
976
|
+
return h('li', [h('button', {
|
977
|
+
class: {
|
978
|
+
'hooper-indicator': true,
|
979
|
+
'is-active': isCurrent
|
980
|
+
},
|
981
|
+
on: {
|
982
|
+
click: onClick
|
983
|
+
}
|
984
|
+
}, [h('span', {
|
985
|
+
class: 'hooper-sr-only'
|
986
|
+
}, "item ".concat(index))])]);
|
987
|
+
}
|
1044
988
|
|
1045
|
-
|
1046
|
-
|
989
|
+
function renderDefault(h, current, totalCount, slideToIndex) {
|
990
|
+
var children = [];
|
1047
991
|
|
1048
|
-
var
|
1049
|
-
|
992
|
+
var _loop = function _loop(i) {
|
993
|
+
children.push(renderIndicator(h, i, i === current, function () {
|
994
|
+
return slideToIndex(i);
|
995
|
+
}));
|
996
|
+
};
|
1050
997
|
|
1051
|
-
|
998
|
+
for (var i = 0; i < totalCount; i++) {
|
999
|
+
_loop(i);
|
1000
|
+
}
|
1052
1001
|
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
}
|
1002
|
+
return [h('ol', {
|
1003
|
+
class: 'hooper-indicators'
|
1004
|
+
}, children)];
|
1005
|
+
}
|
1057
1006
|
|
1058
|
-
|
1059
|
-
var script$3 = {
|
1007
|
+
var Pagination = {
|
1060
1008
|
inject: ['$hooper'],
|
1061
1009
|
name: 'HooperPagination',
|
1062
1010
|
props: {
|
@@ -1075,75 +1023,55 @@ var script$3 = {
|
|
1075
1023
|
});
|
1076
1024
|
return slides.slice(this.$hooper.trimStart, this.$hooper.slidesCount - this.$hooper.trimEnd + 1);
|
1077
1025
|
}
|
1078
|
-
}
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
var
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
var _h = _vm.$createElement;
|
1089
|
-
|
1090
|
-
var _c = _vm._self._c || _h;
|
1091
|
-
|
1092
|
-
return _c('div', {
|
1093
|
-
staticClass: "hooper-pagination",
|
1094
|
-
class: {
|
1095
|
-
'is-vertical': _vm.$hooper.config.vertical
|
1096
|
-
}
|
1097
|
-
}, [_vm.mode === 'indicator' ? _c('ol', {
|
1098
|
-
staticClass: "hooper-indicators"
|
1099
|
-
}, _vm._l(_vm.slides, function (index) {
|
1100
|
-
return _c('li', {
|
1101
|
-
key: index
|
1102
|
-
}, [_c('button', {
|
1103
|
-
staticClass: "hooper-indicator",
|
1026
|
+
},
|
1027
|
+
render: function render(h) {
|
1028
|
+
var _this = this;
|
1029
|
+
|
1030
|
+
var totalCount = this.$hooper.slidesCount;
|
1031
|
+
var children = this.mode === 'indicator' ? renderDefault(h, this.currentSlide, totalCount, function (index) {
|
1032
|
+
return _this.$hooper.slideTo(index);
|
1033
|
+
}) : renderFraction(h, this.currentSlide, totalCount);
|
1034
|
+
return h('div', {
|
1104
1035
|
class: {
|
1105
|
-
'
|
1106
|
-
|
1107
|
-
on: {
|
1108
|
-
"click": function click($event) {
|
1109
|
-
return _vm.$hooper.slideTo(index);
|
1110
|
-
}
|
1036
|
+
'hooper-pagination': true,
|
1037
|
+
'is-vertical': this.$hooper.config.vertical
|
1111
1038
|
}
|
1112
|
-
},
|
1113
|
-
|
1114
|
-
}, [_vm._v("item " + _vm._s(index))])])]);
|
1115
|
-
}), 0) : _vm._e(), _vm._v(" "), _vm.mode === 'fraction' ? [_c('span', [_vm._v(_vm._s(_vm.currentSlide + 1))]), _vm._v(" "), _c('span', [_vm._v("/")]), _vm._v(" "), _c('span', [_vm._v(_vm._s(_vm.$hooper.slidesCount))])] : _vm._e()], 2);
|
1039
|
+
}, children);
|
1040
|
+
}
|
1116
1041
|
};
|
1117
1042
|
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
/* scoped */
|
1123
|
-
|
1124
|
-
var __vue_scope_id__$3 = undefined;
|
1125
|
-
/* module identifier */
|
1126
|
-
|
1127
|
-
var __vue_module_identifier__$3 = undefined;
|
1128
|
-
/* functional template */
|
1043
|
+
function iconName(isVertical, isRTL, isPrev) {
|
1044
|
+
if (isPrev) {
|
1045
|
+
return isVertical ? 'arrowUp' : isRTL ? 'arrowRight' : 'arrowLeft';
|
1046
|
+
}
|
1129
1047
|
|
1130
|
-
|
1131
|
-
|
1048
|
+
return isVertical ? 'arrowDown' : isRTL ? 'arrowLeft' : 'arrowRight';
|
1049
|
+
}
|
1132
1050
|
|
1133
|
-
|
1051
|
+
function renderButton(h, disabled, slot, isPrev, _ref, onClick) {
|
1052
|
+
var _class;
|
1134
1053
|
|
1135
|
-
var
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1054
|
+
var isVertical = _ref.isVertical,
|
1055
|
+
isRTL = _ref.isRTL;
|
1056
|
+
var children = slot && slot.length ? slot : [h(Icon, {
|
1057
|
+
props: {
|
1058
|
+
name: iconName(isVertical, isRTL, isPrev)
|
1059
|
+
}
|
1060
|
+
})];
|
1061
|
+
return h('button', {
|
1062
|
+
class: (_class = {}, _defineProperty(_class, "hooper-".concat(isPrev ? 'prev' : 'next'), true), _defineProperty(_class, 'is-disabled', disabled), _class),
|
1063
|
+
attrs: {
|
1064
|
+
type: 'button'
|
1065
|
+
},
|
1066
|
+
on: {
|
1067
|
+
click: onClick
|
1068
|
+
}
|
1069
|
+
}, children);
|
1070
|
+
}
|
1139
1071
|
|
1140
|
-
|
1141
|
-
var script$4 = {
|
1072
|
+
var Navigation = {
|
1142
1073
|
inject: ['$hooper'],
|
1143
1074
|
name: 'HooperNavigation',
|
1144
|
-
components: {
|
1145
|
-
Icons: Icons
|
1146
|
-
},
|
1147
1075
|
computed: {
|
1148
1076
|
isPrevDisabled: function isPrevDisabled() {
|
1149
1077
|
if (this.$hooper.config.infiniteScroll) {
|
@@ -1157,13 +1085,11 @@ var script$4 = {
|
|
1157
1085
|
return false;
|
1158
1086
|
}
|
1159
1087
|
|
1088
|
+
if (this.$hooper.config.trimWhiteSpace) {
|
1089
|
+
return this.$hooper.currentSlide === this.$hooper.slidesCount - Math.min(this.$hooper.config.itemsToShow, this.$hooper.slidesCount);
|
1090
|
+
}
|
1091
|
+
|
1160
1092
|
return this.$hooper.currentSlide === this.$hooper.slidesCount - 1;
|
1161
|
-
},
|
1162
|
-
isRTL: function isRTL() {
|
1163
|
-
return this.$hooper.config.rtl;
|
1164
|
-
},
|
1165
|
-
isVertical: function isVertical() {
|
1166
|
-
return this.$hooper.config.vertical;
|
1167
1093
|
}
|
1168
1094
|
},
|
1169
1095
|
methods: {
|
@@ -1175,80 +1101,28 @@ var script$4 = {
|
|
1175
1101
|
this.$hooper.slidePrev();
|
1176
1102
|
this.$hooper.restartTimer();
|
1177
1103
|
}
|
1178
|
-
}
|
1179
|
-
|
1180
|
-
|
1181
|
-
/* script */
|
1182
|
-
var __vue_script__$4 = script$4;
|
1183
|
-
/* template */
|
1184
|
-
|
1185
|
-
var __vue_render__$4 = function __vue_render__() {
|
1186
|
-
var _vm = this;
|
1187
|
-
|
1188
|
-
var _h = _vm.$createElement;
|
1189
|
-
|
1190
|
-
var _c = _vm._self._c || _h;
|
1104
|
+
},
|
1105
|
+
render: function render(h) {
|
1106
|
+
var _this = this;
|
1191
1107
|
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
}, [_vm._t("hooper-prev", [_c('Icons', {
|
1210
|
-
attrs: {
|
1211
|
-
"name": _vm.isVertical ? 'arrowUp' : _vm.isRTL ? 'arrowRight' : 'arrowLeft'
|
1212
|
-
}
|
1213
|
-
})])], 2), _vm._v(" "), _c('button', {
|
1214
|
-
staticClass: "hooper-next",
|
1215
|
-
class: {
|
1216
|
-
'is-disabled': _vm.isNextDisabled
|
1217
|
-
},
|
1218
|
-
attrs: {
|
1219
|
-
"type": "button"
|
1220
|
-
},
|
1221
|
-
on: {
|
1222
|
-
"click": _vm.slideNext
|
1223
|
-
}
|
1224
|
-
}, [_vm._t("hooper-next", [_c('Icons', {
|
1225
|
-
attrs: {
|
1226
|
-
"name": _vm.isVertical ? 'arrowDown' : _vm.isRTL ? 'arrowLeft' : 'arrowRight'
|
1227
|
-
}
|
1228
|
-
})])], 2)]);
|
1108
|
+
var config = {
|
1109
|
+
isRTL: this.$hooper.config.rtl,
|
1110
|
+
isVertical: this.$hooper.config.vertical
|
1111
|
+
};
|
1112
|
+
var children = [renderButton(h, this.isPrevDisabled, this.$slots['hooper-prev'], true, config, function () {
|
1113
|
+
return _this.slidePrev();
|
1114
|
+
}), renderButton(h, this.isNextDisabled, this.$slots['hooper-next'], false, config, function () {
|
1115
|
+
return _this.slideNext();
|
1116
|
+
})];
|
1117
|
+
return h('div', {
|
1118
|
+
class: {
|
1119
|
+
'hooper-navigation': true,
|
1120
|
+
'is-vertical': this.$hooper.config.vertical,
|
1121
|
+
'is-rtl': this.$hooper.config.rtl
|
1122
|
+
}
|
1123
|
+
}, children);
|
1124
|
+
}
|
1229
1125
|
};
|
1230
1126
|
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
var __vue_inject_styles__$4 = undefined;
|
1235
|
-
/* scoped */
|
1236
|
-
|
1237
|
-
var __vue_scope_id__$4 = undefined;
|
1238
|
-
/* module identifier */
|
1239
|
-
|
1240
|
-
var __vue_module_identifier__$4 = undefined;
|
1241
|
-
/* functional template */
|
1242
|
-
|
1243
|
-
var __vue_is_functional_template__$4 = false;
|
1244
|
-
/* style inject */
|
1245
|
-
|
1246
|
-
/* style inject SSR */
|
1247
|
-
|
1248
|
-
var Navigation = normalizeComponent_1({
|
1249
|
-
render: __vue_render__$4,
|
1250
|
-
staticRenderFns: __vue_staticRenderFns__$4
|
1251
|
-
}, __vue_inject_styles__$4, __vue_script__$4, __vue_scope_id__$4, __vue_is_functional_template__$4, __vue_module_identifier__$4, undefined, undefined);
|
1252
|
-
|
1253
|
-
export default Hooper;
|
1254
|
-
export { Hooper, Icons, Navigation, Pagination, Progress, Slide, Mixin as addonMixin };
|
1127
|
+
export default Carousel;
|
1128
|
+
export { Carousel as Hooper, Icon, Navigation, Pagination, Progress, Slide, Mixin as addonMixin };
|