hooper 0.2.2 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 };
|