ngx-virtual-swiper
Advanced tools
Comparing version 0.0.4 to 0.1.0-rc.0
@@ -16,3 +16,3 @@ (function (global, factory) { | ||
finalizeTime: 400, | ||
preventDefaultClick: true | ||
preventClicks: true | ||
}; | ||
@@ -51,2 +51,19 @@ | ||
*/ | ||
/** @type {?} */ | ||
var touchPredicate = function (e, key) { return e && key && e.touches && e.touches[0] && e.touches[0][key]; }; | ||
/** @type {?} */ | ||
var clickPredicate = function (e, key) { return e && key && e[key]; }; | ||
/** @type {?} */ | ||
var getPositions = function (originalEvent) { | ||
/** @type {?} */ | ||
var clientX = touchPredicate(originalEvent, 'clientX') || clickPredicate(originalEvent, 'clientX'); | ||
/** @type {?} */ | ||
var clientY = touchPredicate(originalEvent, 'clientY') || clickPredicate(originalEvent, 'clientY'); | ||
return { clientX: clientX, clientY: clientY, originalEvent: originalEvent }; | ||
}; | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc | ||
*/ | ||
var NgxVirtualSwiperDirective = /** @class */ (function () { | ||
@@ -56,6 +73,16 @@ function NgxVirtualSwiperDirective() { | ||
this.subscription = new rxjs.Subscription(); | ||
this.mousedown = function (e) { return _this.start(getPositions(e)); }; | ||
this.touchstart = function (e) { return _this.start(getPositions(e)); }; | ||
this.mousemove = function (e) { return _this.move(getPositions(e)); }; | ||
this.touchmove = function (e) { return _this.move(getPositions(e)); }; | ||
this.mouseup = function () { return _this.finish(); }; | ||
this.touchend = function () { return _this.finish(); }; | ||
this.scroll = function (e) { | ||
_this._scrollLeft = e.target.scrollLeft; | ||
_this._scrollTop = e.target.scrollTop; | ||
}; | ||
this._mousemoveX = function (e) { | ||
if (e) { | ||
/** @type {?} */ | ||
var offset = _this.cdk.measureScrollOffset(_this.options.offsetXFrom); | ||
var offset = _this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -70,3 +97,3 @@ var value = offset - e.clientX + _this._clientX; | ||
/** @type {?} */ | ||
var offset = _this.cdk.measureScrollOffset(_this.options.offsetYFrom); | ||
var offset = _this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -78,3 +105,13 @@ var value = offset - e.clientY + _this._clientY; | ||
}; | ||
this.mousemove = function (e) { | ||
this.start = function (e) { | ||
_this.toggleSwiped(true); | ||
_this._clientX = e.clientX; | ||
_this._clientY = e.clientY; | ||
_this._prevClientX = e.clientX; | ||
_this._prevClientY = e.clientY; | ||
if (_this.options.preventClicks) { | ||
e.originalEvent.preventDefault(); | ||
} | ||
}; | ||
this.move = function (e) { | ||
if (_this._isSwiped) { | ||
@@ -89,25 +126,8 @@ if (_this.cdk.orientation === 'horizontal') { | ||
}; | ||
this.mousedown = function (e) { | ||
_this.toggleSwiped(true); | ||
_this._clientX = e.clientX; | ||
_this._clientY = e.clientY; | ||
_this._prevClientX = e.clientX; | ||
_this._prevClientY = e.clientY; | ||
e.preventDefault(); | ||
}; | ||
this.click = function (e) { | ||
if (_this.changed && _this.options.preventDefaultClick) { | ||
e.preventDefault(); | ||
} | ||
}; | ||
this.mouseup = function () { | ||
this.finish = function () { | ||
if (_this._isSwiped) { | ||
_this.toggleSwiped(false); | ||
_this.finalize(); | ||
} | ||
}; | ||
this.scroll = function (e) { | ||
_this._scrollLeft = e.target.scrollLeft; | ||
_this._scrollTop = e.target.scrollTop; | ||
_this.finalize(); | ||
}; | ||
this.toggleSwiped = function (value) { | ||
@@ -118,4 +138,3 @@ _this._isSwiped = value; | ||
if (_this.options.finalize) { | ||
clearTimeout(_this._scrollTimer); | ||
_this._scrollTimer = setTimeout(_this.scrollToNearestIndex, _this.options.finalizeTime); | ||
_this.scrollToNearestIndex(); | ||
} | ||
@@ -136,2 +155,18 @@ }; | ||
}; | ||
this.addEventListener = function () { | ||
_this.cdk.elementRef.nativeElement.addEventListener('click', _this.preventClicks, true); | ||
}; | ||
this.removeEventListener = function () { | ||
_this.cdk.elementRef.nativeElement.removeEventListener('click', _this.preventClicks, true); | ||
}; | ||
/** | ||
* prevent all type of clicks (e.g. click on links, Angular`s click) | ||
*/ | ||
this.preventClicks = function (e) { | ||
if (_this.changed && _this.options.preventClicks) { | ||
e.stopPropagation(); | ||
e.preventDefault(); | ||
e.stopImmediatePropagation(); | ||
} | ||
}; | ||
} | ||
@@ -159,2 +194,3 @@ /** | ||
} | ||
this.addEventListener(); | ||
this.subscription.add(this.cdk.scrolledIndexChange.subscribe(function (i) { return _this._index = i; })); | ||
@@ -170,3 +206,3 @@ }; | ||
this.subscription.unsubscribe(); | ||
clearTimeout(this._scrollTimer); | ||
this.removeEventListener(); | ||
}; | ||
@@ -205,6 +241,8 @@ Object.defineProperty(NgxVirtualSwiperDirective.prototype, "changed", { | ||
itemSize: [{ type: core.Input }], | ||
mousedown: [{ type: core.HostListener, args: ['mousedown', ['$event'],] }], | ||
touchstart: [{ type: core.HostListener, args: ['touchstart', ['$event'],] }], | ||
mousemove: [{ type: core.HostListener, args: ['mousemove', ['$event'],] }], | ||
mousedown: [{ type: core.HostListener, args: ['mousedown', ['$event'],] }], | ||
click: [{ type: core.HostListener, args: ['click', ['$event'],] }], | ||
touchmove: [{ type: core.HostListener, args: ['touchmove', ['$event'],] }], | ||
mouseup: [{ type: core.HostListener, args: ['document:mouseup',] }], | ||
touchend: [{ type: core.HostListener, args: ['touchend',] }], | ||
scroll: [{ type: core.HostListener, args: ['scroll', ['$event'],] }] | ||
@@ -211,0 +249,0 @@ }; |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/cdk/scrolling"),require("rxjs"),require("util"),require("@angular/core")):"function"==typeof define&&define.amd?define("ngx-virtual-swiper",["exports","@angular/cdk/scrolling","rxjs","util","@angular/core"],t):t(e["ngx-virtual-swiper"]={},e.ng.cdk.scrolling,e.rxjs,e.util,e.ng.core)}(this,function(e,t,o,r,i){"use strict";var n={threshold:20,finalize:!0,finalizeTime:400,preventDefaultClick:!0},s=function(){return(s=Object.assign||function(e){for(var t,i=1,o=arguments.length;i<o;i++)for(var r in t=arguments[i])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},l=function(){function e(){var i=this;this.subscription=new o.Subscription,this._mousemoveX=function(e){if(e){var t=i.cdk.measureScrollOffset(i.options.offsetXFrom)-e.clientX+i._clientX;i.cdk.scrollToOffset(t),i._clientX=e.clientX}},this._mousemoveY=function(e){if(e){var t=i.cdk.measureScrollOffset(i.options.offsetYFrom)-e.clientY+i._clientY;i.cdk.scrollToOffset(t),i._clientY=e.clientY}},this.mousemove=function(e){i._isSwiped&&("horizontal"===i.cdk.orientation?i._mousemoveX(e):"vertical"===i.cdk.orientation&&i._mousemoveY(e))},this.mousedown=function(e){i.toggleSwiped(!0),i._clientX=e.clientX,i._clientY=e.clientY,i._prevClientX=e.clientX,i._prevClientY=e.clientY,e.preventDefault()},this.click=function(e){i.changed&&i.options.preventDefaultClick&&e.preventDefault()},this.mouseup=function(){i._isSwiped&&i.toggleSwiped(!1)},this.scroll=function(e){i._scrollLeft=e.target.scrollLeft,i._scrollTop=e.target.scrollTop,i.finalize()},this.toggleSwiped=function(e){i._isSwiped=e},this.finalize=function(){i.options.finalize&&(clearTimeout(i._scrollTimer),i._scrollTimer=setTimeout(i.scrollToNearestIndex,i.options.finalizeTime))},this.scrollToNearestIndex=function(){var e="horizontal"===i.cdk.orientation?i._scrollLeft:"vertical"===i.cdk.orientation?i._scrollTop:null;if(r.isNumber(e)&&r.isNumber(i._halfItemSize)){var t=e-i.itemSize*i._index>i._halfItemSize?i._index+1:i._index;i.cdk.scrollToIndex(t,"smooth")}}}return e.prototype.ngOnChanges=function(){this.options=s({},n,this.options),this._halfItemSize=this.itemSize/2},e.prototype.ngOnInit=function(){var t=this;if(!this.cdk)throw new Error("CdkVirtualScrollViewport is not present.");this.subscription.add(this.cdk.scrolledIndexChange.subscribe(function(e){return t._index=e}))},e.prototype.ngOnDestroy=function(){this.subscription.unsubscribe(),clearTimeout(this._scrollTimer)},Object.defineProperty(e.prototype,"changed",{get:function(){var e=!1;r.isNumber(this._prevClientX)&&r.isNumber(this.options.threshold)&&(e=Math.abs(this._prevClientX-this._clientX)>=this.options.threshold);if(r.isNumber(this._prevClientY)&&r.isNumber(this.options.threshold)){var t=Math.abs(this._prevClientY-this._clientY);e=e||t>=this.options.threshold}return e},enumerable:!0,configurable:!0}),e.decorators=[{type:i.Directive,args:[{selector:"[ngxVirtualSwiper]"}]}],e.ctorParameters=function(){return[]},e.propDecorators={cdk:[{type:i.ContentChild,args:[t.CdkVirtualScrollViewport]}],options:[{type:i.Input,args:["ngxVirtualSwiper"]}],itemSize:[{type:i.Input}],mousemove:[{type:i.HostListener,args:["mousemove",["$event"]]}],mousedown:[{type:i.HostListener,args:["mousedown",["$event"]]}],click:[{type:i.HostListener,args:["click",["$event"]]}],mouseup:[{type:i.HostListener,args:["document:mouseup"]}],scroll:[{type:i.HostListener,args:["scroll",["$event"]]}]},e}(),c=function(){function e(){}return e.decorators=[{type:i.NgModule,args:[{imports:[],declarations:[l],exports:[l]}]}],e}();e.NgxVirtualSwiperOptions=n,e.NgxVirtualSwiperDirective=l,e.NgxVirtualSwiperModule=c,Object.defineProperty(e,"__esModule",{value:!0})}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/cdk/scrolling"),require("rxjs"),require("util"),require("@angular/core")):"function"==typeof define&&define.amd?define("ngx-virtual-swiper",["exports","@angular/cdk/scrolling","rxjs","util","@angular/core"],t):t(e["ngx-virtual-swiper"]={},e.ng.cdk.scrolling,e.rxjs,e.util,e.ng.core)}(this,function(e,t,n,r,i){"use strict";var o={threshold:20,finalize:!0,finalizeTime:400,preventClicks:!0},s=function(){return(s=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++)for(var r in t=arguments[i])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},c=function(e,t){return e&&t&&e.touches&&e.touches[0]&&e.touches[0][t]},l=function(e,t){return e&&t&&e[t]},u=function(e){return{clientX:c(e,"clientX")||l(e,"clientX"),clientY:c(e,"clientY")||l(e,"clientY"),originalEvent:e}},a=function(){function e(){var i=this;this.subscription=new n.Subscription,this.mousedown=function(e){return i.start(u(e))},this.touchstart=function(e){return i.start(u(e))},this.mousemove=function(e){return i.move(u(e))},this.touchmove=function(e){return i.move(u(e))},this.mouseup=function(){return i.finish()},this.touchend=function(){return i.finish()},this.scroll=function(e){i._scrollLeft=e.target.scrollLeft,i._scrollTop=e.target.scrollTop},this._mousemoveX=function(e){if(e){var t=i.cdk.measureScrollOffset()-e.clientX+i._clientX;i.cdk.scrollToOffset(t),i._clientX=e.clientX}},this._mousemoveY=function(e){if(e){var t=i.cdk.measureScrollOffset()-e.clientY+i._clientY;i.cdk.scrollToOffset(t),i._clientY=e.clientY}},this.start=function(e){i.toggleSwiped(!0),i._clientX=e.clientX,i._clientY=e.clientY,i._prevClientX=e.clientX,i._prevClientY=e.clientY,i.options.preventClicks&&e.originalEvent.preventDefault()},this.move=function(e){i._isSwiped&&("horizontal"===i.cdk.orientation?i._mousemoveX(e):"vertical"===i.cdk.orientation&&i._mousemoveY(e))},this.finish=function(){i._isSwiped&&(i.toggleSwiped(!1),i.finalize())},this.toggleSwiped=function(e){i._isSwiped=e},this.finalize=function(){i.options.finalize&&i.scrollToNearestIndex()},this.scrollToNearestIndex=function(){var e="horizontal"===i.cdk.orientation?i._scrollLeft:"vertical"===i.cdk.orientation?i._scrollTop:null;if(r.isNumber(e)&&r.isNumber(i._halfItemSize)){var t=e-i.itemSize*i._index>i._halfItemSize?i._index+1:i._index;i.cdk.scrollToIndex(t,"smooth")}},this.addEventListener=function(){i.cdk.elementRef.nativeElement.addEventListener("click",i.preventClicks,!0)},this.removeEventListener=function(){i.cdk.elementRef.nativeElement.removeEventListener("click",i.preventClicks,!0)},this.preventClicks=function(e){i.changed&&i.options.preventClicks&&(e.stopPropagation(),e.preventDefault(),e.stopImmediatePropagation())}}return e.prototype.ngOnChanges=function(){this.options=s({},o,this.options),this._halfItemSize=this.itemSize/2},e.prototype.ngOnInit=function(){var t=this;if(!this.cdk)throw new Error("CdkVirtualScrollViewport is not present.");this.addEventListener(),this.subscription.add(this.cdk.scrolledIndexChange.subscribe(function(e){return t._index=e}))},e.prototype.ngOnDestroy=function(){this.subscription.unsubscribe(),this.removeEventListener()},Object.defineProperty(e.prototype,"changed",{get:function(){var e=!1;r.isNumber(this._prevClientX)&&r.isNumber(this.options.threshold)&&(e=Math.abs(this._prevClientX-this._clientX)>=this.options.threshold);if(r.isNumber(this._prevClientY)&&r.isNumber(this.options.threshold)){var t=Math.abs(this._prevClientY-this._clientY);e=e||t>=this.options.threshold}return e},enumerable:!0,configurable:!0}),e.decorators=[{type:i.Directive,args:[{selector:"[ngxVirtualSwiper]"}]}],e.ctorParameters=function(){return[]},e.propDecorators={cdk:[{type:i.ContentChild,args:[t.CdkVirtualScrollViewport]}],options:[{type:i.Input,args:["ngxVirtualSwiper"]}],itemSize:[{type:i.Input}],mousedown:[{type:i.HostListener,args:["mousedown",["$event"]]}],touchstart:[{type:i.HostListener,args:["touchstart",["$event"]]}],mousemove:[{type:i.HostListener,args:["mousemove",["$event"]]}],touchmove:[{type:i.HostListener,args:["touchmove",["$event"]]}],mouseup:[{type:i.HostListener,args:["document:mouseup"]}],touchend:[{type:i.HostListener,args:["touchend"]}],scroll:[{type:i.HostListener,args:["scroll",["$event"]]}]},e}(),p=function(){function e(){}return e.decorators=[{type:i.NgModule,args:[{imports:[],declarations:[a],exports:[a]}]}],e}();e.NgxVirtualSwiperOptions=o,e.NgxVirtualSwiperDirective=a,e.NgxVirtualSwiperModule=p,Object.defineProperty(e,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=ngx-virtual-swiper.umd.min.js.map |
@@ -10,4 +10,4 @@ /** | ||
finalizeTime: 400, | ||
preventDefaultClick: true | ||
preventClicks: true | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXZpcnR1YWwtc3dpcGVyLyIsInNvdXJjZXMiOlsibGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE1BQU0sT0FBTyx1QkFBdUIsR0FBc0M7SUFDdEUsU0FBUyxFQUFFLEVBQUU7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLFlBQVksRUFBRSxHQUFHO0lBQ2pCLG1CQUFtQixFQUFFLElBQUk7Q0FDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTmd4VmlydHVhbFN3aXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE5neFZpcnR1YWxTd2lwZXJPcHRpb25zOiBQYXJ0aWFsPElOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucz4gPSB7XHJcbiAgICB0aHJlc2hvbGQ6IDIwLFxyXG4gICAgZmluYWxpemU6IHRydWUsXHJcbiAgICBmaW5hbGl6ZVRpbWU6IDQwMCxcclxuICAgIHByZXZlbnREZWZhdWx0Q2xpY2s6IHRydWVcclxufTtcclxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXZpcnR1YWwtc3dpcGVyLyIsInNvdXJjZXMiOlsibGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE1BQU0sT0FBTyx1QkFBdUIsR0FBc0M7SUFDdEUsU0FBUyxFQUFFLEVBQUU7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLFlBQVksRUFBRSxHQUFHO0lBQ2pCLGFBQWEsRUFBRSxJQUFJO0NBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5neFZpcnR1YWxTd2lwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCBOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9uczogUGFydGlhbDxJTmd4VmlydHVhbFN3aXBlck9wdGlvbnM+ID0ge1xyXG4gICAgdGhyZXNob2xkOiAyMCxcclxuICAgIGZpbmFsaXplOiB0cnVlLFxyXG4gICAgZmluYWxpemVUaW1lOiA0MDAsXHJcbiAgICBwcmV2ZW50Q2xpY2tzOiB0cnVlXHJcbn07XHJcbiJdfQ== |
@@ -10,8 +10,4 @@ /** | ||
if (false) { | ||
/** @type {?} */ | ||
INgxVirtualSwiperOptions.prototype.offsetXFrom; | ||
/** @type {?} */ | ||
INgxVirtualSwiperOptions.prototype.offsetYFrom; | ||
/** | ||
* the property returns to actual integer index | ||
* returns to actual integer index | ||
* @type {?} | ||
@@ -26,3 +22,3 @@ */ | ||
/** | ||
* the property is required by links, the library should know is it real swipe or fake | ||
* is required by links, the library should know is it real swipe or fake | ||
* @type {?} | ||
@@ -32,7 +28,20 @@ */ | ||
/** | ||
* the property prevent default last click | ||
* prevent all type of clicks (e.g. links, Angular`s click) | ||
* @type {?} | ||
*/ | ||
INgxVirtualSwiperOptions.prototype.preventDefaultClick; | ||
INgxVirtualSwiperOptions.prototype.preventClicks; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12aXJ0dWFsLXN3aXBlci8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSw4Q0FXQzs7O0lBVkcsK0NBQXdCOztJQUN4QiwrQ0FBd0I7Ozs7O0lBRXhCLDRDQUFrQjs7Ozs7SUFFbEIsZ0RBQXFCOzs7OztJQUVyQiw2Q0FBa0I7Ozs7O0lBRWxCLHVEQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE9mZnNldEZyb20gPSAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdzdGFydCcgfCAnZW5kJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU5neFZpcnR1YWxTd2lwZXJPcHRpb25zIHtcclxuICAgIG9mZnNldFhGcm9tOiBPZmZzZXRGcm9tO1xyXG4gICAgb2Zmc2V0WUZyb206IE9mZnNldEZyb207XHJcbiAgICAvKiogdGhlIHByb3BlcnR5IHJldHVybnMgdG8gYWN0dWFsIGludGVnZXIgaW5kZXggKi9cclxuICAgIGZpbmFsaXplOiBib29sZWFuO1xyXG4gICAgLyoqIHRoZSB0aW1lIHdoZW4gdGhlIHtAbGluayBmaW5hbGl6ZX0gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgc2Nyb2xsIGV2ZW50ICovXHJcbiAgICBmaW5hbGl6ZVRpbWU6IG51bWJlcjtcclxuICAgIC8qKiB0aGUgcHJvcGVydHkgaXMgcmVxdWlyZWQgYnkgbGlua3MsIHRoZSBsaWJyYXJ5IHNob3VsZCBrbm93IGlzIGl0IHJlYWwgc3dpcGUgb3IgZmFrZSAqL1xyXG4gICAgdGhyZXNob2xkOiBudW1iZXI7XHJcbiAgICAvKiogdGhlIHByb3BlcnR5IHByZXZlbnQgZGVmYXVsdCBsYXN0IGNsaWNrICovXHJcbiAgICBwcmV2ZW50RGVmYXVsdENsaWNrOiBib29sZWFuO1xyXG59XHJcbiJdfQ== | ||
/** | ||
* prevent bugs at SSR | ||
* @record | ||
*/ | ||
export function IPositionEvent() { } | ||
if (false) { | ||
/** @type {?} */ | ||
IPositionEvent.prototype.clientX; | ||
/** @type {?} */ | ||
IPositionEvent.prototype.clientY; | ||
/** @type {?} */ | ||
IPositionEvent.prototype.originalEvent; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12aXJ0dWFsLXN3aXBlci8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSw4Q0FTQzs7Ozs7O0lBUEcsNENBQWtCOzs7OztJQUVsQixnREFBcUI7Ozs7O0lBRXJCLDZDQUFrQjs7Ozs7SUFFbEIsaURBQXVCOzs7Ozs7QUFJM0Isb0NBSUM7OztJQUhHLGlDQUFnQjs7SUFDaEIsaUNBQWdCOztJQUNoQix1Q0FBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucyB7XHJcbiAgICAvKiogcmV0dXJucyB0byBhY3R1YWwgaW50ZWdlciBpbmRleCAqL1xyXG4gICAgZmluYWxpemU6IGJvb2xlYW47XHJcbiAgICAvKiogdGhlIHRpbWUgd2hlbiB0aGUge0BsaW5rIGZpbmFsaXplfSB3aWxsIGJlIGNhbGxlZCBhZnRlciBzY3JvbGwgZXZlbnQgKi9cclxuICAgIGZpbmFsaXplVGltZTogbnVtYmVyO1xyXG4gICAgLyoqIGlzIHJlcXVpcmVkIGJ5IGxpbmtzLCB0aGUgbGlicmFyeSBzaG91bGQga25vdyBpcyBpdCByZWFsIHN3aXBlIG9yIGZha2UgKi9cclxuICAgIHRocmVzaG9sZDogbnVtYmVyO1xyXG4gICAgLyoqIHByZXZlbnQgYWxsIHR5cGUgb2YgY2xpY2tzIChlLmcuIGxpbmtzLCBBbmd1bGFyYHMgY2xpY2spICovXHJcbiAgICBwcmV2ZW50Q2xpY2tzOiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogcHJldmVudCBidWdzIGF0IFNTUiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElQb3NpdGlvbkV2ZW50IHtcclxuICAgIGNsaWVudFg6IG51bWJlcjtcclxuICAgIGNsaWVudFk6IG51bWJlcjtcclxuICAgIG9yaWdpbmFsRXZlbnQ6IGFueTtcclxufVxyXG4iXX0= |
@@ -10,9 +10,20 @@ /** | ||
import { NgxVirtualSwiperOptions } from './constants'; | ||
import { getPositions } from './utils'; | ||
export class NgxVirtualSwiperDirective { | ||
constructor() { | ||
this.subscription = new Subscription(); | ||
this.mousedown = (e) => this.start(getPositions(e)); | ||
this.touchstart = (e) => this.start(getPositions(e)); | ||
this.mousemove = (e) => this.move(getPositions(e)); | ||
this.touchmove = (e) => this.move(getPositions(e)); | ||
this.mouseup = () => this.finish(); | ||
this.touchend = () => this.finish(); | ||
this.scroll = (e) => { | ||
this._scrollLeft = e.target.scrollLeft; | ||
this._scrollTop = e.target.scrollTop; | ||
}; | ||
this._mousemoveX = (e) => { | ||
if (e) { | ||
/** @type {?} */ | ||
const offset = this.cdk.measureScrollOffset(this.options.offsetXFrom); | ||
const offset = this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -27,3 +38,3 @@ const value = offset - e.clientX + this._clientX; | ||
/** @type {?} */ | ||
const offset = this.cdk.measureScrollOffset(this.options.offsetYFrom); | ||
const offset = this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -35,3 +46,13 @@ const value = offset - e.clientY + this._clientY; | ||
}; | ||
this.mousemove = (e) => { | ||
this.start = (e) => { | ||
this.toggleSwiped(true); | ||
this._clientX = e.clientX; | ||
this._clientY = e.clientY; | ||
this._prevClientX = e.clientX; | ||
this._prevClientY = e.clientY; | ||
if (this.options.preventClicks) { | ||
e.originalEvent.preventDefault(); | ||
} | ||
}; | ||
this.move = (e) => { | ||
if (this._isSwiped) { | ||
@@ -46,25 +67,8 @@ if (this.cdk.orientation === 'horizontal') { | ||
}; | ||
this.mousedown = (e) => { | ||
this.toggleSwiped(true); | ||
this._clientX = e.clientX; | ||
this._clientY = e.clientY; | ||
this._prevClientX = e.clientX; | ||
this._prevClientY = e.clientY; | ||
e.preventDefault(); | ||
}; | ||
this.click = (e) => { | ||
if (this.changed && this.options.preventDefaultClick) { | ||
e.preventDefault(); | ||
} | ||
}; | ||
this.mouseup = () => { | ||
this.finish = () => { | ||
if (this._isSwiped) { | ||
this.toggleSwiped(false); | ||
this.finalize(); | ||
} | ||
}; | ||
this.scroll = (e) => { | ||
this._scrollLeft = e.target.scrollLeft; | ||
this._scrollTop = e.target.scrollTop; | ||
this.finalize(); | ||
}; | ||
this.toggleSwiped = (value) => { | ||
@@ -75,4 +79,3 @@ this._isSwiped = value; | ||
if (this.options.finalize) { | ||
clearTimeout(this._scrollTimer); | ||
this._scrollTimer = setTimeout(this.scrollToNearestIndex, this.options.finalizeTime); | ||
this.scrollToNearestIndex(); | ||
} | ||
@@ -93,2 +96,18 @@ }; | ||
}; | ||
this.addEventListener = () => { | ||
this.cdk.elementRef.nativeElement.addEventListener('click', this.preventClicks, true); | ||
}; | ||
this.removeEventListener = () => { | ||
this.cdk.elementRef.nativeElement.removeEventListener('click', this.preventClicks, true); | ||
}; | ||
/** | ||
* prevent all type of clicks (e.g. click on links, Angular`s click) | ||
*/ | ||
this.preventClicks = (e) => { | ||
if (this.changed && this.options.preventClicks) { | ||
e.stopPropagation(); | ||
e.preventDefault(); | ||
e.stopImmediatePropagation(); | ||
} | ||
}; | ||
} | ||
@@ -109,2 +128,3 @@ /** | ||
} | ||
this.addEventListener(); | ||
this.subscription.add(this.cdk.scrolledIndexChange.subscribe(i => this._index = i)); | ||
@@ -117,3 +137,3 @@ } | ||
this.subscription.unsubscribe(); | ||
clearTimeout(this._scrollTimer); | ||
this.removeEventListener(); | ||
} | ||
@@ -150,6 +170,8 @@ /** | ||
itemSize: [{ type: Input }], | ||
mousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }], | ||
touchstart: [{ type: HostListener, args: ['touchstart', ['$event'],] }], | ||
mousemove: [{ type: HostListener, args: ['mousemove', ['$event'],] }], | ||
mousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }], | ||
click: [{ type: HostListener, args: ['click', ['$event'],] }], | ||
touchmove: [{ type: HostListener, args: ['touchmove', ['$event'],] }], | ||
mouseup: [{ type: HostListener, args: ['document:mouseup',] }], | ||
touchend: [{ type: HostListener, args: ['touchend',] }], | ||
scroll: [{ type: HostListener, args: ['scroll', ['$event'],] }] | ||
@@ -193,22 +215,27 @@ }; | ||
NgxVirtualSwiperDirective.prototype._scrollLeft; | ||
/** | ||
* contains id of the last {\@link setTimeout} | ||
* @type {?} | ||
*/ | ||
NgxVirtualSwiperDirective.prototype._scrollTimer; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype._mousemoveX; | ||
NgxVirtualSwiperDirective.prototype.mousedown; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype._mousemoveY; | ||
NgxVirtualSwiperDirective.prototype.touchstart; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.mousemove; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.mousedown; | ||
NgxVirtualSwiperDirective.prototype.touchmove; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.click; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.mouseup; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.touchend; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.scroll; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype._mousemoveX; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype._mousemoveY; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.start; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.move; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.finish; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.toggleSwiped; | ||
@@ -219,3 +246,12 @@ /** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.scrollToNearestIndex; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.addEventListener; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.removeEventListener; | ||
/** | ||
* prevent all type of clicks (e.g. click on links, Angular`s click) | ||
* @type {?} | ||
*/ | ||
NgxVirtualSwiperDirective.prototype.preventClicks; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZpcnR1YWwtc3dpcGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12aXJ0dWFsLXN3aXBlci8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtdmlydHVhbC1zd2lwZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBTXRELE1BQU0sT0FBTyx5QkFBeUI7SUFxQmxDO1FBZlMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBK0MzQyxnQkFBVyxHQUFHLENBQUMsQ0FBQyxFQUFRLEVBQUU7WUFDdEIsSUFBSSxDQUFDLEVBQUU7O3NCQUNHLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDOztzQkFDL0QsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRO2dCQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO2FBQzdCO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsZ0JBQVcsR0FBRyxDQUFDLENBQUMsRUFBUSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxFQUFFOztzQkFDRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIs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QUNqQiw2Q0FBaUI7O0lBQ2pCLGlEQUFxQjs7SUFDckIsaURBQXFCOzs7OztJQUVyQiwrQ0FBbUI7Ozs7O0lBRW5CLGdEQUFvQjs7Ozs7SUFFcEIsaURBQWE7O0lBa0NiLGdEQU9DOztJQUVELGdEQU9DOztJQUVELDhDQVNDOztJQUVELDhDQU9DOztJQUVELDBDQUlDOztJQUVELDRDQUlDOztJQUVELDJDQUlDOztJQUVELGlEQUVDOztJQUVELDZDQUtDOztJQUVELHlEQVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ3V0aWwnO1xyXG5pbXBvcnQgeyBOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgSU5neFZpcnR1YWxTd2lwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbbmd4VmlydHVhbFN3aXBlcl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hWaXJ0dWFsU3dpcGVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgLyoqIHRvIGxlYW4gbW9yZSBzZWUgaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2Nkay9zY3JvbGxpbmcvYXBpICovXHJcbiAgICBAQ29udGVudENoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgcmVhZG9ubHkgY2RrOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgICBASW5wdXQoJ25neFZpcnR1YWxTd2lwZXInKSBvcHRpb25zOiBQYXJ0aWFsPElOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucz47XHJcbiAgICBASW5wdXQoKSBpdGVtU2l6ZTogbnVtYmVyO1xyXG4gICAgcmVhZG9ubHkgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgX2luZGV4OiBudW1iZXI7XHJcbiAgICBfaGFsZkl0ZW1TaXplOiBudW1iZXI7XHJcbiAgICBfaXNTd2lwZWQ6IGJvb2xlYW47XHJcbiAgICBfY2xpZW50WDogbnVtYmVyO1xyXG4gICAgX2NsaWVudFk6IG51bWJlcjtcclxuICAgIF9wcmV2Q2xpZW50WDogbnVtYmVyO1xyXG4gICAgX3ByZXZDbGllbnRZOiBudW1iZXI7XHJcbiAgICAvKiogQWJzb2x1dGUgc2Nyb2xsaW5nIGJ5IFkgYXhpcyAqL1xyXG4gICAgX3Njcm9sbFRvcDogbnVtYmVyO1xyXG4gICAgLyoqIEFic29sdXRlIHNjcm9sbGluZyBieSBYIGF4aXMgKi9cclxuICAgIF9zY3JvbGxMZWZ0OiBudW1iZXI7XHJcbiAgICAvKiogY29udGFpbnMgaWQgb2YgdGhlIGxhc3Qge0BsaW5rIHNldFRpbWVvdXR9ICovXHJcbiAgICBfc2Nyb2xsVGltZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLk5neFZpcnR1YWxTd2lwZXJPcHRpb25zLCAuLi50aGlzLm9wdGlvbnMgfTtcclxuICAgICAgICB0aGlzLl9oYWxmSXRlbVNpemUgPSB0aGlzLml0ZW1TaXplIC8gMjtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2RrKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IGlzIG5vdCBwcmVzZW50LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5jZGsuc2Nyb2xsZWRJbmRleENoYW5nZS5zdWJzY3JpYmUoaSA9PiB0aGlzLl9pbmRleCA9IGkpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zY3JvbGxUaW1lcik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNoYW5nZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChpc051bWJlcih0aGlzLl9wcmV2Q2xpZW50WCkgJiYgaXNOdW1iZXIodGhpcy5vcHRpb25zLnRocmVzaG9sZCkpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVsdGFYID0gTWF0aC5hYnModGhpcy5fcHJldkNsaWVudFggLSB0aGlzLl9jbGllbnRYKTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gZGVsdGFYID49IHRoaXMub3B0aW9ucy50aHJlc2hvbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc051bWJlcih0aGlzLl9wcmV2Q2xpZW50WSkgJiYgaXNOdW1iZXIodGhpcy5vcHRpb25zLnRocmVzaG9sZCkpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVsdGFZID0gTWF0aC5hYnModGhpcy5fcHJldkNsaWVudFkgLSB0aGlzLl9jbGllbnRZKTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IGRlbHRhWSA+PSB0aGlzLm9wdGlvbnMudGhyZXNob2xkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIF9tb3VzZW1vdmVYID0gKGUpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmNkay5tZWFzdXJlU2Nyb2xsT2Zmc2V0KHRoaXMub3B0aW9ucy5vZmZzZXRYRnJvbSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb2Zmc2V0IC0gZS5jbGllbnRYICsgdGhpcy5fY2xpZW50WDtcclxuICAgICAgICAgICAgdGhpcy5jZGsuc2Nyb2xsVG9PZmZzZXQodmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9jbGllbnRYID0gZS5jbGllbnRYO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfbW91c2Vtb3ZlWSA9IChlKTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5jZGsubWVhc3VyZVNjcm9sbE9mZnNldCh0aGlzLm9wdGlvbnMub2Zmc2V0WUZyb20pO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG9mZnNldCAtIGUuY2xpZW50WSArIHRoaXMuX2NsaWVudFk7XHJcbiAgICAgICAgICAgIHRoaXMuY2RrLnNjcm9sbFRvT2Zmc2V0KHZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5fY2xpZW50WSA9IGUuY2xpZW50WTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJywgWyckZXZlbnQnXSkgbW91c2Vtb3ZlID0gKGUpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faXNTd2lwZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY2RrLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlbW92ZVgoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jZGsub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlbW92ZVkoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSkgbW91c2Vkb3duID0gKGUpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLnRvZ2dsZVN3aXBlZCh0cnVlKTtcclxuICAgICAgICB0aGlzLl9jbGllbnRYID0gZS5jbGllbnRYO1xyXG4gICAgICAgIHRoaXMuX2NsaWVudFkgPSBlLmNsaWVudFk7XHJcbiAgICAgICAgdGhpcy5fcHJldkNsaWVudFggPSBlLmNsaWVudFg7XHJcbiAgICAgICAgdGhpcy5fcHJldkNsaWVudFkgPSBlLmNsaWVudFk7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSkgY2xpY2sgPSAoZSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNoYW5nZWQgJiYgdGhpcy5vcHRpb25zLnByZXZlbnREZWZhdWx0Q2xpY2spIHtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJykgbW91c2V1cCA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faXNTd2lwZWQpIHtcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVTd2lwZWQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdzY3JvbGwnLCBbJyRldmVudCddKSBzY3JvbGwgPSAoZSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuX3Njcm9sbExlZnQgPSBlLnRhcmdldC5zY3JvbGxMZWZ0O1xyXG4gICAgICAgIHRoaXMuX3Njcm9sbFRvcCA9IGUudGFyZ2V0LnNjcm9sbFRvcDtcclxuICAgICAgICB0aGlzLmZpbmFsaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlU3dpcGVkID0gKHZhbHVlOiBib29sZWFuKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5faXNTd2lwZWQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5hbGl6ZSA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZpbmFsaXplKSB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9zY3JvbGxUaW1lcik7XHJcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRpbWVyID0gc2V0VGltZW91dCh0aGlzLnNjcm9sbFRvTmVhcmVzdEluZGV4LCB0aGlzLm9wdGlvbnMuZmluYWxpemVUaW1lKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2Nyb2xsVG9OZWFyZXN0SW5kZXggPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsZWRBYnMgPSB0aGlzLmNkay5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gdGhpcy5fc2Nyb2xsTGVmdCA6XHJcbiAgICAgICAgICAgIHRoaXMuY2RrLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gdGhpcy5fc2Nyb2xsVG9wIDpcclxuICAgICAgICAgICAgICAgIG51bGw7XHJcbiAgICAgICAgaWYgKGlzTnVtYmVyKHNjcm9sbGVkQWJzKSAmJiBpc051bWJlcih0aGlzLl9oYWxmSXRlbVNpemUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVkID0gc2Nyb2xsZWRBYnMgLSB0aGlzLml0ZW1TaXplICogdGhpcy5faW5kZXg7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2Nyb2xsZWQgPiB0aGlzLl9oYWxmSXRlbVNpemUgPyB0aGlzLl9pbmRleCArIDEgOiB0aGlzLl9pbmRleDtcclxuICAgICAgICAgICAgdGhpcy5jZGsuc2Nyb2xsVG9JbmRleChpbmRleCwgJ3Ntb290aCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZpcnR1YWwtc3dpcGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12aXJ0dWFsLXN3aXBlci8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtdmlydHVhbC1zd2lwZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFLdkMsTUFBTSxPQUFPLHlCQUF5QjtJQW1CbEM7UUFiUyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFpQ0osY0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELGVBQVUsR0FBRyxDQUFDLENBQUMsRUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV2RCxjQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEQsY0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpELFlBQU8sR0FBRyxHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFNUMsYUFBUSxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUUzQixXQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQVEsRUFBRTtZQUNyRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDekMsQ0FBQyxDQUFBO1FBZUQsZ0JBQVcsR0FBRyxDQUFDLENBQWlCLEVBQVEsRUFBRTtZQUN0QyxJQUFJLENBQUMsRUFBRTs7c0JBQ0csTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUU7O3NCQUN2QyxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVE7Z0JBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDN0I7UUFDTCxDQUFDLENBQUE7UUFFRCxnQkFBVyxHQUFHLENBQUMsQ0FBaUIsRUFBUSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxFQUFFOztzQkFDRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRTs7c0JBQ3ZDLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUTtnQkFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQzthQUM3QjtRQUNMLENBQUMsQ0FBQTtRQUVELFVBQUssR0FBRyxDQUFDLENBQWlCLEVBQVEsRUFBRTtZQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUM1QixDQUFDLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsU0FBSSxHQUFHLENBQUMsQ0FBaUIsRUFBUSxFQUFFO1lBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxZQUFZLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZCO3FCQUNJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFO29CQUMxQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2QjthQUNKO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsV0FBTSxHQUFHLEdBQVMsRUFBRTtZQUNoQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNuQjtRQUNMLENBQUMsQ0FBQTtRQUVELGlCQUFZLEdBQUcsQ0FBQyxLQUFjLEVBQVEsRUFBRTtZQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUMzQixDQUFDLENBQUE7UUFFRCxhQUFRLEdBQUcsR0FBUyxFQUFFO1lBQ2xCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQy9CO1FBQ0wsQ0FBQyxDQUFBO1FBRUQseUJBQW9CLEdBQUcsR0FBUyxFQUFFOztrQkFDeEIsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDbkQsSUFBSTtZQUNaLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7O3NCQUNqRCxRQUFRLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU07O3NCQUNwRCxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFDM0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUFBO1FBRUQscUJBQWdCLEdBQUcsR0FBUyxFQUFFO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxRixDQUFDLENBQUE7UUFFRCx3QkFBbUIsR0FBRyxHQUFTLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdGLENBQUMsQ0FBQTs7OztRQUdELGtCQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQVEsRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7Z0JBQzVDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixDQUFDLENBQUMsd0JBQXdCLEVBQUUsQ0FBQzthQUNoQztRQUNMLENBQUMsQ0FBQTtJQXJJZSxDQUFDOzs7O0lBRWpCLFdBQVc7UUFDUCxJQUFJLENBQUMsT0FBTyxxQkFBUSx1QkFBdUIsRUFBSyxJQUFJLENBQUMsT0FBTyxDQUFFLENBQUM7UUFDL0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7O0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1NBQy9EO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQzs7OztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7Ozs7SUFtQkQsSUFBSSxPQUFPOztZQUNILE1BQU0sR0FBRyxLQUFLO1FBQ2xCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTs7a0JBQzNELE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUMxRCxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFOztrQkFDM0QsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzFELE1BQU0sR0FBRyxNQUFNLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1NBQ3ZEO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQzs7O1lBdEVKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2FBQ2pDOzs7OztrQkFJSSxZQUFZLFNBQUMsd0JBQXdCO3NCQUNyQyxLQUFLLFNBQUMsa0JBQWtCO3VCQUN4QixLQUFLO3dCQWtDTCxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO3lCQUVwQyxZQUFZLFNBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO3dCQUVyQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO3dCQUVwQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO3NCQUVwQyxZQUFZLFNBQUMsa0JBQWtCO3VCQUUvQixZQUFZLFNBQUMsVUFBVTtxQkFFdkIsWUFBWSxTQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7Ozs7OztJQWhEbEMsd0NBQStFOztJQUMvRSw0Q0FBc0U7O0lBQ3RFLDZDQUEwQjs7SUFDMUIsaURBQTJDOztJQUMzQywyQ0FBZTs7SUFDZixrREFBc0I7O0lBQ3RCLDhDQUFtQjs7SUFDbkIsNkNBQWlCOztJQUNqQiw2Q0FBaUI7O0lBQ2pCLGlEQUFxQjs7SUFDckIsaURBQXFCOzs7OztJQUVyQiwrQ0FBbUI7Ozs7O0lBRW5CLGdEQUFvQjs7SUFzQnBCLDhDQUE0Rjs7SUFFNUYsK0NBQThGOztJQUU5Riw4Q0FBMkY7O0lBRTNGLDhDQUEyRjs7SUFFM0YsNENBQXNFOztJQUV0RSw2Q0FBK0Q7O0lBRS9ELDJDQUdDOztJQWVELGdEQU9DOztJQUVELGdEQU9DOztJQUVELDBDQVNDOztJQUVELHlDQVNDOztJQUVELDJDQUtDOztJQUVELGlEQUVDOztJQUVELDZDQUlDOztJQUVELHlEQVNDOztJQUVELHFEQUVDOztJQUVELHdEQUVDOzs7OztJQUdELGtEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XHJcbmltcG9ydCB7IENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBpc051bWJlciB9IGZyb20gJ3V0aWwnO1xyXG5pbXBvcnQgeyBOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgSU5neFZpcnR1YWxTd2lwZXJPcHRpb25zLCBJUG9zaXRpb25FdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IGdldFBvc2l0aW9ucyB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tuZ3hWaXJ0dWFsU3dpcGVyXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neFZpcnR1YWxTd2lwZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICAvKiogdG8gbGVhbiBtb3JlIHNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vY2RrL3Njcm9sbGluZy9hcGkgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KSByZWFkb25seSBjZGs6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcclxuICAgIEBJbnB1dCgnbmd4VmlydHVhbFN3aXBlcicpIG9wdGlvbnM6IFBhcnRpYWw8SU5neFZpcnR1YWxTd2lwZXJPcHRpb25zPjtcclxuICAgIEBJbnB1dCgpIGl0ZW1TaXplOiBudW1iZXI7XHJcbiAgICByZWFkb25seSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBfaW5kZXg6IG51bWJlcjtcclxuICAgIF9oYWxmSXRlbVNpemU6IG51bWJlcjtcclxuICAgIF9pc1N3aXBlZDogYm9vbGVhbjtcclxuICAgIF9jbGllbnRYOiBudW1iZXI7XHJcbiAgICBfY2xpZW50WTogbnVtYmVyO1xyXG4gICAgX3ByZXZDbGllbnRYOiBudW1iZXI7XHJcbiAgICBfcHJldkNsaWVudFk6IG51bWJlcjtcclxuICAgIC8qKiBBYnNvbHV0ZSBzY3JvbGxpbmcgYnkgWSBheGlzICovXHJcbiAgICBfc2Nyb2xsVG9wOiBudW1iZXI7XHJcbiAgICAvKiogQWJzb2x1dGUgc2Nyb2xsaW5nIGJ5IFggYXhpcyAqL1xyXG4gICAgX3Njcm9sbExlZnQ6IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4uTmd4VmlydHVhbFN3aXBlck9wdGlvbnMsIC4uLnRoaXMub3B0aW9ucyB9O1xyXG4gICAgICAgIHRoaXMuX2hhbGZJdGVtU2l6ZSA9IHRoaXMuaXRlbVNpemUgLyAyO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5jZGspIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgaXMgbm90IHByZXNlbnQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcigpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmNkay5zY3JvbGxlZEluZGV4Q2hhbmdlLnN1YnNjcmliZShpID0+IHRoaXMuX2luZGV4ID0gaSkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSkgbW91c2Vkb3duID0gKGUpOiB2b2lkID0+IHRoaXMuc3RhcnQoZ2V0UG9zaXRpb25zKGUpKTtcclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgWyckZXZlbnQnXSkgdG91Y2hzdGFydCA9IChlKTogdm9pZCA9PiB0aGlzLnN0YXJ0KGdldFBvc2l0aW9ucyhlKSk7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vtb3ZlJywgWyckZXZlbnQnXSkgbW91c2Vtb3ZlID0gKGUpOiB2b2lkID0+IHRoaXMubW92ZShnZXRQb3NpdGlvbnMoZSkpO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNobW92ZScsIFsnJGV2ZW50J10pIHRvdWNobW92ZSA9IChlKTogdm9pZCA9PiB0aGlzLm1vdmUoZ2V0UG9zaXRpb25zKGUpKTtcclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJykgbW91c2V1cCA9ICgpOiB2b2lkID0+IHRoaXMuZmluaXNoKCk7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hlbmQnKSB0b3VjaGVuZCA9ICgpOiB2b2lkID0+IHRoaXMuZmluaXNoKCk7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignc2Nyb2xsJywgWyckZXZlbnQnXSkgc2Nyb2xsID0gKGUpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLl9zY3JvbGxMZWZ0ID0gZS50YXJnZXQuc2Nyb2xsTGVmdDtcclxuICAgICAgICB0aGlzLl9zY3JvbGxUb3AgPSBlLnRhcmdldC5zY3JvbGxUb3A7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNoYW5nZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChpc051bWJlcih0aGlzLl9wcmV2Q2xpZW50WCkgJiYgaXNOdW1iZXIodGhpcy5vcHRpb25zLnRocmVzaG9sZCkpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVsdGFYID0gTWF0aC5hYnModGhpcy5fcHJldkNsaWVudFggLSB0aGlzLl9jbGllbnRYKTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gZGVsdGFYID49IHRoaXMub3B0aW9ucy50aHJlc2hvbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc051bWJlcih0aGlzLl9wcmV2Q2xpZW50WSkgJiYgaXNOdW1iZXIodGhpcy5vcHRpb25zLnRocmVzaG9sZCkpIHtcclxuICAgICAgICAgICAgY29uc3QgZGVsdGFZID0gTWF0aC5hYnModGhpcy5fcHJldkNsaWVudFkgLSB0aGlzLl9jbGllbnRZKTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IGRlbHRhWSA+PSB0aGlzLm9wdGlvbnMudGhyZXNob2xkO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIF9tb3VzZW1vdmVYID0gKGU6IElQb3NpdGlvbkV2ZW50KTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5jZGsubWVhc3VyZVNjcm9sbE9mZnNldCgpO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG9mZnNldCAtIGUuY2xpZW50WCArIHRoaXMuX2NsaWVudFg7XHJcbiAgICAgICAgICAgIHRoaXMuY2RrLnNjcm9sbFRvT2Zmc2V0KHZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5fY2xpZW50WCA9IGUuY2xpZW50WDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgX21vdXNlbW92ZVkgPSAoZTogSVBvc2l0aW9uRXZlbnQpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmNkay5tZWFzdXJlU2Nyb2xsT2Zmc2V0KCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb2Zmc2V0IC0gZS5jbGllbnRZICsgdGhpcy5fY2xpZW50WTtcclxuICAgICAgICAgICAgdGhpcy5jZGsuc2Nyb2xsVG9PZmZzZXQodmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9jbGllbnRZID0gZS5jbGllbnRZO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGFydCA9IChlOiBJUG9zaXRpb25FdmVudCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlU3dpcGVkKHRydWUpO1xyXG4gICAgICAgIHRoaXMuX2NsaWVudFggPSBlLmNsaWVudFg7XHJcbiAgICAgICAgdGhpcy5fY2xpZW50WSA9IGUuY2xpZW50WTtcclxuICAgICAgICB0aGlzLl9wcmV2Q2xpZW50WCA9IGUuY2xpZW50WDtcclxuICAgICAgICB0aGlzLl9wcmV2Q2xpZW50WSA9IGUuY2xpZW50WTtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnByZXZlbnRDbGlja3MpIHtcclxuICAgICAgICAgICAgZS5vcmlnaW5hbEV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG1vdmUgPSAoZTogSVBvc2l0aW9uRXZlbnQpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faXNTd2lwZWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuY2RrLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlbW92ZVgoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jZGsub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX21vdXNlbW92ZVkoZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmluaXNoID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9pc1N3aXBlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVN3aXBlZChmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuZmluYWxpemUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlU3dpcGVkID0gKHZhbHVlOiBib29sZWFuKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5faXNTd2lwZWQgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5hbGl6ZSA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmZpbmFsaXplKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9OZWFyZXN0SW5kZXgoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2Nyb2xsVG9OZWFyZXN0SW5kZXggPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsZWRBYnMgPSB0aGlzLmNkay5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gdGhpcy5fc2Nyb2xsTGVmdCA6XHJcbiAgICAgICAgICAgIHRoaXMuY2RrLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnID8gdGhpcy5fc2Nyb2xsVG9wIDpcclxuICAgICAgICAgICAgICAgIG51bGw7XHJcbiAgICAgICAgaWYgKGlzTnVtYmVyKHNjcm9sbGVkQWJzKSAmJiBpc051bWJlcih0aGlzLl9oYWxmSXRlbVNpemUpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVkID0gc2Nyb2xsZWRBYnMgLSB0aGlzLml0ZW1TaXplICogdGhpcy5faW5kZXg7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gc2Nyb2xsZWQgPiB0aGlzLl9oYWxmSXRlbVNpemUgPyB0aGlzLl9pbmRleCArIDEgOiB0aGlzLl9pbmRleDtcclxuICAgICAgICAgICAgdGhpcy5jZGsuc2Nyb2xsVG9JbmRleChpbmRleCwgJ3Ntb290aCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRFdmVudExpc3RlbmVyID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuY2RrLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMucHJldmVudENsaWNrcywgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmNkay5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnByZXZlbnRDbGlja3MsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBwcmV2ZW50IGFsbCB0eXBlIG9mIGNsaWNrcyAoZS5nLiBjbGljayBvbiBsaW5rcywgQW5ndWxhcmBzIGNsaWNrKSAqL1xyXG4gICAgcHJldmVudENsaWNrcyA9IChlKTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlZCAmJiB0aGlzLm9wdGlvbnMucHJldmVudENsaWNrcykge1xyXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== |
@@ -10,4 +10,4 @@ /** | ||
finalizeTime: 400, | ||
preventDefaultClick: true | ||
preventClicks: true | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXZpcnR1YWwtc3dpcGVyLyIsInNvdXJjZXMiOlsibGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE1BQU0sS0FBTyx1QkFBdUIsR0FBc0M7SUFDdEUsU0FBUyxFQUFFLEVBQUU7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLFlBQVksRUFBRSxHQUFHO0lBQ2pCLG1CQUFtQixFQUFFLElBQUk7Q0FDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTmd4VmlydHVhbFN3aXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IE5neFZpcnR1YWxTd2lwZXJPcHRpb25zOiBQYXJ0aWFsPElOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucz4gPSB7XHJcbiAgICB0aHJlc2hvbGQ6IDIwLFxyXG4gICAgZmluYWxpemU6IHRydWUsXHJcbiAgICBmaW5hbGl6ZVRpbWU6IDQwMCxcclxuICAgIHByZXZlbnREZWZhdWx0Q2xpY2s6IHRydWVcclxufTtcclxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXZpcnR1YWwtc3dpcGVyLyIsInNvdXJjZXMiOlsibGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLE1BQU0sS0FBTyx1QkFBdUIsR0FBc0M7SUFDdEUsU0FBUyxFQUFFLEVBQUU7SUFDYixRQUFRLEVBQUUsSUFBSTtJQUNkLFlBQVksRUFBRSxHQUFHO0lBQ2pCLGFBQWEsRUFBRSxJQUFJO0NBQ3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5neFZpcnR1YWxTd2lwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuXHJcbmV4cG9ydCBjb25zdCBOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9uczogUGFydGlhbDxJTmd4VmlydHVhbFN3aXBlck9wdGlvbnM+ID0ge1xyXG4gICAgdGhyZXNob2xkOiAyMCxcclxuICAgIGZpbmFsaXplOiB0cnVlLFxyXG4gICAgZmluYWxpemVUaW1lOiA0MDAsXHJcbiAgICBwcmV2ZW50Q2xpY2tzOiB0cnVlXHJcbn07XHJcbiJdfQ== |
@@ -10,8 +10,4 @@ /** | ||
if (false) { | ||
/** @type {?} */ | ||
INgxVirtualSwiperOptions.prototype.offsetXFrom; | ||
/** @type {?} */ | ||
INgxVirtualSwiperOptions.prototype.offsetYFrom; | ||
/** | ||
* the property returns to actual integer index | ||
* returns to actual integer index | ||
* @type {?} | ||
@@ -26,3 +22,3 @@ */ | ||
/** | ||
* the property is required by links, the library should know is it real swipe or fake | ||
* is required by links, the library should know is it real swipe or fake | ||
* @type {?} | ||
@@ -32,7 +28,20 @@ */ | ||
/** | ||
* the property prevent default last click | ||
* prevent all type of clicks (e.g. links, Angular`s click) | ||
* @type {?} | ||
*/ | ||
INgxVirtualSwiperOptions.prototype.preventDefaultClick; | ||
INgxVirtualSwiperOptions.prototype.preventClicks; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12aXJ0dWFsLXN3aXBlci8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSw4Q0FXQzs7O0lBVkcsK0NBQXdCOztJQUN4QiwrQ0FBd0I7Ozs7O0lBRXhCLDRDQUFrQjs7Ozs7SUFFbEIsZ0RBQXFCOzs7OztJQUVyQiw2Q0FBa0I7Ozs7O0lBRWxCLHVEQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE9mZnNldEZyb20gPSAndG9wJyB8ICdsZWZ0JyB8ICdyaWdodCcgfCAnYm90dG9tJyB8ICdzdGFydCcgfCAnZW5kJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU5neFZpcnR1YWxTd2lwZXJPcHRpb25zIHtcclxuICAgIG9mZnNldFhGcm9tOiBPZmZzZXRGcm9tO1xyXG4gICAgb2Zmc2V0WUZyb206IE9mZnNldEZyb207XHJcbiAgICAvKiogdGhlIHByb3BlcnR5IHJldHVybnMgdG8gYWN0dWFsIGludGVnZXIgaW5kZXggKi9cclxuICAgIGZpbmFsaXplOiBib29sZWFuO1xyXG4gICAgLyoqIHRoZSB0aW1lIHdoZW4gdGhlIHtAbGluayBmaW5hbGl6ZX0gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgc2Nyb2xsIGV2ZW50ICovXHJcbiAgICBmaW5hbGl6ZVRpbWU6IG51bWJlcjtcclxuICAgIC8qKiB0aGUgcHJvcGVydHkgaXMgcmVxdWlyZWQgYnkgbGlua3MsIHRoZSBsaWJyYXJ5IHNob3VsZCBrbm93IGlzIGl0IHJlYWwgc3dpcGUgb3IgZmFrZSAqL1xyXG4gICAgdGhyZXNob2xkOiBudW1iZXI7XHJcbiAgICAvKiogdGhlIHByb3BlcnR5IHByZXZlbnQgZGVmYXVsdCBsYXN0IGNsaWNrICovXHJcbiAgICBwcmV2ZW50RGVmYXVsdENsaWNrOiBib29sZWFuO1xyXG59XHJcbiJdfQ== | ||
/** | ||
* prevent bugs at SSR | ||
* @record | ||
*/ | ||
export function IPositionEvent() { } | ||
if (false) { | ||
/** @type {?} */ | ||
IPositionEvent.prototype.clientX; | ||
/** @type {?} */ | ||
IPositionEvent.prototype.clientY; | ||
/** @type {?} */ | ||
IPositionEvent.prototype.originalEvent; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12aXJ0dWFsLXN3aXBlci8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSw4Q0FTQzs7Ozs7O0lBUEcsNENBQWtCOzs7OztJQUVsQixnREFBcUI7Ozs7O0lBRXJCLDZDQUFrQjs7Ozs7SUFFbEIsaURBQXVCOzs7Ozs7QUFJM0Isb0NBSUM7OztJQUhHLGlDQUFnQjs7SUFDaEIsaUNBQWdCOztJQUNoQix1Q0FBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucyB7XHJcbiAgICAvKiogcmV0dXJucyB0byBhY3R1YWwgaW50ZWdlciBpbmRleCAqL1xyXG4gICAgZmluYWxpemU6IGJvb2xlYW47XHJcbiAgICAvKiogdGhlIHRpbWUgd2hlbiB0aGUge0BsaW5rIGZpbmFsaXplfSB3aWxsIGJlIGNhbGxlZCBhZnRlciBzY3JvbGwgZXZlbnQgKi9cclxuICAgIGZpbmFsaXplVGltZTogbnVtYmVyO1xyXG4gICAgLyoqIGlzIHJlcXVpcmVkIGJ5IGxpbmtzLCB0aGUgbGlicmFyeSBzaG91bGQga25vdyBpcyBpdCByZWFsIHN3aXBlIG9yIGZha2UgKi9cclxuICAgIHRocmVzaG9sZDogbnVtYmVyO1xyXG4gICAgLyoqIHByZXZlbnQgYWxsIHR5cGUgb2YgY2xpY2tzIChlLmcuIGxpbmtzLCBBbmd1bGFyYHMgY2xpY2spICovXHJcbiAgICBwcmV2ZW50Q2xpY2tzOiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogcHJldmVudCBidWdzIGF0IFNTUiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElQb3NpdGlvbkV2ZW50IHtcclxuICAgIGNsaWVudFg6IG51bWJlcjtcclxuICAgIGNsaWVudFk6IG51bWJlcjtcclxuICAgIG9yaWdpbmFsRXZlbnQ6IGFueTtcclxufVxyXG4iXX0= |
@@ -11,2 +11,3 @@ /** | ||
import { NgxVirtualSwiperOptions } from './constants'; | ||
import { getPositions } from './utils'; | ||
var NgxVirtualSwiperDirective = /** @class */ (function () { | ||
@@ -16,6 +17,16 @@ function NgxVirtualSwiperDirective() { | ||
this.subscription = new Subscription(); | ||
this.mousedown = function (e) { return _this.start(getPositions(e)); }; | ||
this.touchstart = function (e) { return _this.start(getPositions(e)); }; | ||
this.mousemove = function (e) { return _this.move(getPositions(e)); }; | ||
this.touchmove = function (e) { return _this.move(getPositions(e)); }; | ||
this.mouseup = function () { return _this.finish(); }; | ||
this.touchend = function () { return _this.finish(); }; | ||
this.scroll = function (e) { | ||
_this._scrollLeft = e.target.scrollLeft; | ||
_this._scrollTop = e.target.scrollTop; | ||
}; | ||
this._mousemoveX = function (e) { | ||
if (e) { | ||
/** @type {?} */ | ||
var offset = _this.cdk.measureScrollOffset(_this.options.offsetXFrom); | ||
var offset = _this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -30,3 +41,3 @@ var value = offset - e.clientX + _this._clientX; | ||
/** @type {?} */ | ||
var offset = _this.cdk.measureScrollOffset(_this.options.offsetYFrom); | ||
var offset = _this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -38,3 +49,13 @@ var value = offset - e.clientY + _this._clientY; | ||
}; | ||
this.mousemove = function (e) { | ||
this.start = function (e) { | ||
_this.toggleSwiped(true); | ||
_this._clientX = e.clientX; | ||
_this._clientY = e.clientY; | ||
_this._prevClientX = e.clientX; | ||
_this._prevClientY = e.clientY; | ||
if (_this.options.preventClicks) { | ||
e.originalEvent.preventDefault(); | ||
} | ||
}; | ||
this.move = function (e) { | ||
if (_this._isSwiped) { | ||
@@ -49,25 +70,8 @@ if (_this.cdk.orientation === 'horizontal') { | ||
}; | ||
this.mousedown = function (e) { | ||
_this.toggleSwiped(true); | ||
_this._clientX = e.clientX; | ||
_this._clientY = e.clientY; | ||
_this._prevClientX = e.clientX; | ||
_this._prevClientY = e.clientY; | ||
e.preventDefault(); | ||
}; | ||
this.click = function (e) { | ||
if (_this.changed && _this.options.preventDefaultClick) { | ||
e.preventDefault(); | ||
} | ||
}; | ||
this.mouseup = function () { | ||
this.finish = function () { | ||
if (_this._isSwiped) { | ||
_this.toggleSwiped(false); | ||
_this.finalize(); | ||
} | ||
}; | ||
this.scroll = function (e) { | ||
_this._scrollLeft = e.target.scrollLeft; | ||
_this._scrollTop = e.target.scrollTop; | ||
_this.finalize(); | ||
}; | ||
this.toggleSwiped = function (value) { | ||
@@ -78,4 +82,3 @@ _this._isSwiped = value; | ||
if (_this.options.finalize) { | ||
clearTimeout(_this._scrollTimer); | ||
_this._scrollTimer = setTimeout(_this.scrollToNearestIndex, _this.options.finalizeTime); | ||
_this.scrollToNearestIndex(); | ||
} | ||
@@ -96,2 +99,18 @@ }; | ||
}; | ||
this.addEventListener = function () { | ||
_this.cdk.elementRef.nativeElement.addEventListener('click', _this.preventClicks, true); | ||
}; | ||
this.removeEventListener = function () { | ||
_this.cdk.elementRef.nativeElement.removeEventListener('click', _this.preventClicks, true); | ||
}; | ||
/** | ||
* prevent all type of clicks (e.g. click on links, Angular`s click) | ||
*/ | ||
this.preventClicks = function (e) { | ||
if (_this.changed && _this.options.preventClicks) { | ||
e.stopPropagation(); | ||
e.preventDefault(); | ||
e.stopImmediatePropagation(); | ||
} | ||
}; | ||
} | ||
@@ -119,2 +138,3 @@ /** | ||
} | ||
this.addEventListener(); | ||
this.subscription.add(this.cdk.scrolledIndexChange.subscribe(function (i) { return _this._index = i; })); | ||
@@ -130,3 +150,3 @@ }; | ||
this.subscription.unsubscribe(); | ||
clearTimeout(this._scrollTimer); | ||
this.removeEventListener(); | ||
}; | ||
@@ -166,6 +186,8 @@ Object.defineProperty(NgxVirtualSwiperDirective.prototype, "changed", { | ||
itemSize: [{ type: Input }], | ||
mousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }], | ||
touchstart: [{ type: HostListener, args: ['touchstart', ['$event'],] }], | ||
mousemove: [{ type: HostListener, args: ['mousemove', ['$event'],] }], | ||
mousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }], | ||
click: [{ type: HostListener, args: ['click', ['$event'],] }], | ||
touchmove: [{ type: HostListener, args: ['touchmove', ['$event'],] }], | ||
mouseup: [{ type: HostListener, args: ['document:mouseup',] }], | ||
touchend: [{ type: HostListener, args: ['touchend',] }], | ||
scroll: [{ type: HostListener, args: ['scroll', ['$event'],] }] | ||
@@ -212,22 +234,27 @@ }; | ||
NgxVirtualSwiperDirective.prototype._scrollLeft; | ||
/** | ||
* contains id of the last {\@link setTimeout} | ||
* @type {?} | ||
*/ | ||
NgxVirtualSwiperDirective.prototype._scrollTimer; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype._mousemoveX; | ||
NgxVirtualSwiperDirective.prototype.mousedown; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype._mousemoveY; | ||
NgxVirtualSwiperDirective.prototype.touchstart; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.mousemove; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.mousedown; | ||
NgxVirtualSwiperDirective.prototype.touchmove; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.click; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.mouseup; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.touchend; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.scroll; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype._mousemoveX; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype._mousemoveY; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.start; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.move; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.finish; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.toggleSwiped; | ||
@@ -238,3 +265,12 @@ /** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.scrollToNearestIndex; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.addEventListener; | ||
/** @type {?} */ | ||
NgxVirtualSwiperDirective.prototype.removeEventListener; | ||
/** | ||
* prevent all type of clicks (e.g. click on links, Angular`s click) | ||
* @type {?} | ||
*/ | ||
NgxVirtualSwiperDirective.prototype.preventClicks; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZpcnR1YWwtc3dpcGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12aXJ0dWFsLXN3aXBlci8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtdmlydHVhbC1zd2lwZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd0RDtJQXdCSTtRQUFBLGlCQUFpQjtRQWZSLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQStDM0MsZ0JBQVcsR0FBRyxVQUFDLENBQUM7WUFDWixJQUFJLENBQUMsRUFBRTs7b0JBQ0csTUFBTSxHQUFHLEtBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsS0FBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7O29CQUMvRCxLQUFLLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSSxDQUFDLFFBQVE7Z0JBQ2hELEtBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMvQixLQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7YUFDN0I7UUFDTCxDQUFDLENBQUE7UUFFRCxnQkFBVyxHQUFHLFVBQUMsQ0FBQztZQUNaLElBQUksQ0FBQyxFQUFFOztvQkFDRyxNQUFNLEdBQUcsS0FBSSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQzs7b0JBQy9ELEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFJLENBQUMsUUFBUTtnQkFDaEQsS0FBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9CLEtBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQzthQUM3QjtRQUNMLENBQUMsQ0FBQTtRQUVzQyxjQUFTLEdBQUcsVUFBQyxDQUFDO1lBQ2pELElBQUksS0FBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsSUFBSSxLQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxZQUFZLEVBQUU7b0JBQ3ZDLEtBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZCO3FCQUNJLElBQUksS0FBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFO29CQUMxQyxLQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2QjthQUNKO1FBQ0wsQ0FBQyxDQUFBO1FBRXNDLGNBQVMsR0FBRyxVQUFDLENBQUM7WUFDakQsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixLQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDMUIsS0FBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQzFCLEtBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUM5QixLQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDOUIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQTtRQUVrQyxVQUFLLEdBQUcsVUFBQyxDQUFDO1lBQ3pDLElBQUksS0FBSSxDQUFDLE9BQU8sSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFO2dCQUNsRCxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDdEI7UUFDTCxDQUFDLENBQUE7UUFFaUMsWUFBTyxHQUFHO1lBQ3hDLElBQUksS0FBSSxDQUFDLFNBQVMsRUFBRTtnQkFDaEIsS0FBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QjtRQUNMLENBQUMsQ0FBQTtRQUVtQyxXQUFNLEdBQUcsVUFBQyxDQUFDO1lBQzNDLEtBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDdkMsS0FBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNyQyxLQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEIsQ0FBQyxDQUFBO1FBRUQsaUJBQVksR0FBRyxVQUFDLEtBQWM7WUFDMUIsS0FBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFBO1FBRUQsYUFBUSxHQUFHO1lBQ1AsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRTtnQkFDdkIsWUFBWSxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDaEMsS0FBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsS0FBSSxDQUFDLG9CQUFvQixFQUFFLEtBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDeEY7UUFDTCxDQUFDLENBQUE7UUFFRCx5QkFBb0IsR0FBRzs7Z0JBQ2IsV0FBVyxHQUFHLEtBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxLQUFLLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUMxRSxLQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDbkQsSUFBSTtZQUNaLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7O29CQUNqRCxRQUFRLEdBQUcsV0FBVyxHQUFHLEtBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSSxDQUFDLE1BQU07O29CQUNwRCxLQUFLLEdBQUcsUUFBUSxHQUFHLEtBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsTUFBTTtnQkFDM0UsS0FBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzNDO1FBQ0wsQ0FBQyxDQUFBO0lBNUdlLENBQUM7Ozs7SUFFakIsK0NBQVc7OztJQUFYO1FBQ0ksSUFBSSxDQUFDLE9BQU8sd0JBQVEsdUJBQXVCLEVBQUssSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7OztJQUVELDRDQUFROzs7SUFBUjtRQUFBLGlCQUtDO1FBSkcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7U0FDL0Q7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLEtBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFmLENBQWUsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQzs7OztJQUVELCtDQUFXOzs7SUFBWDtRQUNJLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsc0JBQUksOENBQU87Ozs7UUFBWDs7Z0JBQ1EsTUFBTSxHQUFHLEtBQUs7WUFDbEIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFOztvQkFDM0QsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMxRCxNQUFNLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO2FBQzdDO1lBQ0QsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFOztvQkFDM0QsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUMxRCxNQUFNLEdBQUcsTUFBTSxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQzthQUN2RDtZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7OztPQUFBOztnQkF0REosU0FBUyxTQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7aUJBQ2pDOzs7OztzQkFJSSxZQUFZLFNBQUMsd0JBQXdCOzBCQUNyQyxLQUFLLFNBQUMsa0JBQWtCOzJCQUN4QixLQUFLOzRCQWtFTCxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDOzRCQVdwQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO3dCQVNwQyxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDOzBCQU1oQyxZQUFZLFNBQUMsa0JBQWtCO3lCQU0vQixZQUFZLFNBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDOztJQTJCdEMsZ0NBQUM7Q0FBQSxBQXJJRCxJQXFJQztTQWxJWSx5QkFBeUI7Ozs7OztJQUdsQyx3Q0FBK0U7O0lBQy9FLDRDQUFzRTs7SUFDdEUsNkNBQTBCOztJQUMxQixpREFBMkM7O0lBQzNDLDJDQUFlOztJQUNmLGtEQUFzQjs7SUFDdEIsOENBQW1COztJQUNuQiw2Q0FBaUI7O0lBQ2pCLDZDQUFpQjs7SUFDakIsaURBQXFCOztJQUNyQixpREFBcUI7Ozs7O0lBRXJCLCtDQUFtQjs7Ozs7SUFFbkIsZ0RBQW9COzs7OztJQUVwQixpREFBYTs7SUFrQ2IsZ0RBT0M7O0lBRUQsZ0RBT0M7O0lBRUQsOENBU0M7O0lBRUQsOENBT0M7O0lBRUQsMENBSUM7O0lBRUQsNENBSUM7O0lBRUQsMkNBSUM7O0lBRUQsaURBRUM7O0lBRUQsNkNBS0M7O0lBRUQseURBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHsgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAndXRpbCc7XHJcbmltcG9ydCB7IE5neFZpcnR1YWxTd2lwZXJPcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBJTmd4VmlydHVhbFN3aXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tuZ3hWaXJ0dWFsU3dpcGVyXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIE5neFZpcnR1YWxTd2lwZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICAvKiogdG8gbGVhbiBtb3JlIHNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vY2RrL3Njcm9sbGluZy9hcGkgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0KSByZWFkb25seSBjZGs6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcclxuICAgIEBJbnB1dCgnbmd4VmlydHVhbFN3aXBlcicpIG9wdGlvbnM6IFBhcnRpYWw8SU5neFZpcnR1YWxTd2lwZXJPcHRpb25zPjtcclxuICAgIEBJbnB1dCgpIGl0ZW1TaXplOiBudW1iZXI7XHJcbiAgICByZWFkb25seSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgICBfaW5kZXg6IG51bWJlcjtcclxuICAgIF9oYWxmSXRlbVNpemU6IG51bWJlcjtcclxuICAgIF9pc1N3aXBlZDogYm9vbGVhbjtcclxuICAgIF9jbGllbnRYOiBudW1iZXI7XHJcbiAgICBfY2xpZW50WTogbnVtYmVyO1xyXG4gICAgX3ByZXZDbGllbnRYOiBudW1iZXI7XHJcbiAgICBfcHJldkNsaWVudFk6IG51bWJlcjtcclxuICAgIC8qKiBBYnNvbHV0ZSBzY3JvbGxpbmcgYnkgWSBheGlzICovXHJcbiAgICBfc2Nyb2xsVG9wOiBudW1iZXI7XHJcbiAgICAvKiogQWJzb2x1dGUgc2Nyb2xsaW5nIGJ5IFggYXhpcyAqL1xyXG4gICAgX3Njcm9sbExlZnQ6IG51bWJlcjtcclxuICAgIC8qKiBjb250YWlucyBpZCBvZiB0aGUgbGFzdCB7QGxpbmsgc2V0VGltZW91dH0gKi9cclxuICAgIF9zY3JvbGxUaW1lcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHsgLi4uTmd4VmlydHVhbFN3aXBlck9wdGlvbnMsIC4uLnRoaXMub3B0aW9ucyB9O1xyXG4gICAgICAgIHRoaXMuX2hhbGZJdGVtU2l6ZSA9IHRoaXMuaXRlbVNpemUgLyAyO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5jZGspIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgaXMgbm90IHByZXNlbnQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmNkay5zY3JvbGxlZEluZGV4Q2hhbmdlLnN1YnNjcmliZShpID0+IHRoaXMuX2luZGV4ID0gaSkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Njcm9sbFRpbWVyKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY2hhbmdlZCgpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGlzTnVtYmVyKHRoaXMuX3ByZXZDbGllbnRYKSAmJiBpc051bWJlcih0aGlzLm9wdGlvbnMudGhyZXNob2xkKSkge1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVggPSBNYXRoLmFicyh0aGlzLl9wcmV2Q2xpZW50WCAtIHRoaXMuX2NsaWVudFgpO1xyXG4gICAgICAgICAgICByZXN1bHQgPSBkZWx0YVggPj0gdGhpcy5vcHRpb25zLnRocmVzaG9sZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlzTnVtYmVyKHRoaXMuX3ByZXZDbGllbnRZKSAmJiBpc051bWJlcih0aGlzLm9wdGlvbnMudGhyZXNob2xkKSkge1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVkgPSBNYXRoLmFicyh0aGlzLl9wcmV2Q2xpZW50WSAtIHRoaXMuX2NsaWVudFkpO1xyXG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwgZGVsdGFZID49IHRoaXMub3B0aW9ucy50aHJlc2hvbGQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9XHJcblxyXG4gICAgX21vdXNlbW92ZVggPSAoZSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuY2RrLm1lYXN1cmVTY3JvbGxPZmZzZXQodGhpcy5vcHRpb25zLm9mZnNldFhGcm9tKTtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvZmZzZXQgLSBlLmNsaWVudFggKyB0aGlzLl9jbGllbnRYO1xyXG4gICAgICAgICAgICB0aGlzLmNkay5zY3JvbGxUb09mZnNldCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsaWVudFggPSBlLmNsaWVudFg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9tb3VzZW1vdmVZID0gKGUpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmNkay5tZWFzdXJlU2Nyb2xsT2Zmc2V0KHRoaXMub3B0aW9ucy5vZmZzZXRZRnJvbSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gb2Zmc2V0IC0gZS5jbGllbnRZICsgdGhpcy5fY2xpZW50WTtcclxuICAgICAgICAgICAgdGhpcy5jZGsuc2Nyb2xsVG9PZmZzZXQodmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9jbGllbnRZID0gZS5jbGllbnRZO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZW1vdmUnLCBbJyRldmVudCddKSBtb3VzZW1vdmUgPSAoZSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9pc1N3aXBlZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jZGsub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbW91c2Vtb3ZlWChlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNkay5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbW91c2Vtb3ZlWShlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKSBtb3VzZWRvd24gPSAoZSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlU3dpcGVkKHRydWUpO1xyXG4gICAgICAgIHRoaXMuX2NsaWVudFggPSBlLmNsaWVudFg7XHJcbiAgICAgICAgdGhpcy5fY2xpZW50WSA9IGUuY2xpZW50WTtcclxuICAgICAgICB0aGlzLl9wcmV2Q2xpZW50WCA9IGUuY2xpZW50WDtcclxuICAgICAgICB0aGlzLl9wcmV2Q2xpZW50WSA9IGUuY2xpZW50WTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKSBjbGljayA9IChlKTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlZCAmJiB0aGlzLm9wdGlvbnMucHJldmVudERlZmF1bHRDbGljaykge1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNldXAnKSBtb3VzZXVwID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLl9pc1N3aXBlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVN3aXBlZChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcsIFsnJGV2ZW50J10pIHNjcm9sbCA9IChlKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2Nyb2xsTGVmdCA9IGUudGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9wID0gZS50YXJnZXQuc2Nyb2xsVG9wO1xyXG4gICAgICAgIHRoaXMuZmluYWxpemUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVTd2lwZWQgPSAodmFsdWU6IGJvb2xlYW4pOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLl9pc1N3aXBlZCA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbmFsaXplID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZmluYWxpemUpIHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Njcm9sbFRpbWVyKTtcclxuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsVGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuc2Nyb2xsVG9OZWFyZXN0SW5kZXgsIHRoaXMub3B0aW9ucy5maW5hbGl6ZVRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzY3JvbGxUb05lYXJlc3RJbmRleCA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICBjb25zdCBzY3JvbGxlZEFicyA9IHRoaXMuY2RrLm9yaWVudGF0aW9uID09PSAnaG9yaXpvbnRhbCcgPyB0aGlzLl9zY3JvbGxMZWZ0IDpcclxuICAgICAgICAgICAgdGhpcy5jZGsub3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgPyB0aGlzLl9zY3JvbGxUb3AgOlxyXG4gICAgICAgICAgICAgICAgbnVsbDtcclxuICAgICAgICBpZiAoaXNOdW1iZXIoc2Nyb2xsZWRBYnMpICYmIGlzTnVtYmVyKHRoaXMuX2hhbGZJdGVtU2l6ZSkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsZWQgPSBzY3JvbGxlZEFicyAtIHRoaXMuaXRlbVNpemUgKiB0aGlzLl9pbmRleDtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBzY3JvbGxlZCA+IHRoaXMuX2hhbGZJdGVtU2l6ZSA/IHRoaXMuX2luZGV4ICsgMSA6IHRoaXMuX2luZGV4O1xyXG4gICAgICAgICAgICB0aGlzLmNkay5zY3JvbGxUb0luZGV4KGluZGV4LCAnc21vb3RoJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXZpcnR1YWwtc3dpcGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC12aXJ0dWFsLXN3aXBlci8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtdmlydHVhbC1zd2lwZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXZDO0lBc0JJO1FBQUEsaUJBQWlCO1FBYlIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBaUNKLGNBQVMsR0FBRyxVQUFDLENBQUMsSUFBVyxPQUFBLEtBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQTNCLENBQTJCLENBQUM7UUFFcEQsZUFBVSxHQUFHLFVBQUMsQ0FBQyxJQUFXLE9BQUEsS0FBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBM0IsQ0FBMkIsQ0FBQztRQUV2RCxjQUFTLEdBQUcsVUFBQyxDQUFDLElBQVcsT0FBQSxLQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUExQixDQUEwQixDQUFDO1FBRXBELGNBQVMsR0FBRyxVQUFDLENBQUMsSUFBVyxPQUFBLEtBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQTFCLENBQTBC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O0lBQ3JCLGlEQUFxQjs7Ozs7SUFFckIsK0NBQW1COzs7OztJQUVuQixnREFBb0I7O0lBc0JwQiw4Q0FBNEY7O0lBRTVGLCtDQUE4Rjs7SUFFOUYsOENBQTJGOztJQUUzRiw4Q0FBMkY7O0lBRTNGLDRDQUFzRTs7SUFFdEUsNkNBQStEOztJQUUvRCwyQ0FHQzs7SUFlRCxnREFPQzs7SUFFRCxnREFPQzs7SUFFRCwwQ0FTQzs7SUFFRCx5Q0FTQzs7SUFFRCwyQ0FLQzs7SUFFRCxpREFFQzs7SUFFRCw2Q0FJQzs7SUFFRCx5REFTQzs7SUFFRCxxREFFQzs7SUFFRCx3REFFQzs7Ozs7SUFHRCxrREFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xyXG5pbXBvcnQgeyBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICd1dGlsJztcclxuaW1wb3J0IHsgTmd4VmlydHVhbFN3aXBlck9wdGlvbnMgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IElOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucywgSVBvc2l0aW9uRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBnZXRQb3NpdGlvbnMgfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbbmd4VmlydHVhbFN3aXBlcl0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hWaXJ0dWFsU3dpcGVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgLyoqIHRvIGxlYW4gbW9yZSBzZWUgaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2Nkay9zY3JvbGxpbmcvYXBpICovXHJcbiAgICBAQ29udGVudENoaWxkKENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCkgcmVhZG9ubHkgY2RrOiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQ7XHJcbiAgICBASW5wdXQoJ25neFZpcnR1YWxTd2lwZXInKSBvcHRpb25zOiBQYXJ0aWFsPElOZ3hWaXJ0dWFsU3dpcGVyT3B0aW9ucz47XHJcbiAgICBASW5wdXQoKSBpdGVtU2l6ZTogbnVtYmVyO1xyXG4gICAgcmVhZG9ubHkgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgX2luZGV4OiBudW1iZXI7XHJcbiAgICBfaGFsZkl0ZW1TaXplOiBudW1iZXI7XHJcbiAgICBfaXNTd2lwZWQ6IGJvb2xlYW47XHJcbiAgICBfY2xpZW50WDogbnVtYmVyO1xyXG4gICAgX2NsaWVudFk6IG51bWJlcjtcclxuICAgIF9wcmV2Q2xpZW50WDogbnVtYmVyO1xyXG4gICAgX3ByZXZDbGllbnRZOiBudW1iZXI7XHJcbiAgICAvKiogQWJzb2x1dGUgc2Nyb2xsaW5nIGJ5IFkgYXhpcyAqL1xyXG4gICAgX3Njcm9sbFRvcDogbnVtYmVyO1xyXG4gICAgLyoqIEFic29sdXRlIHNjcm9sbGluZyBieSBYIGF4aXMgKi9cclxuICAgIF9zY3JvbGxMZWZ0OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnMgPSB7IC4uLk5neFZpcnR1YWxTd2lwZXJPcHRpb25zLCAuLi50aGlzLm9wdGlvbnMgfTtcclxuICAgICAgICB0aGlzLl9oYWxmSXRlbVNpemUgPSB0aGlzLml0ZW1TaXplIC8gMjtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2RrKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0IGlzIG5vdCBwcmVzZW50LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5jZGsuc2Nyb2xsZWRJbmRleENoYW5nZS5zdWJzY3JpYmUoaSA9PiB0aGlzLl9pbmRleCA9IGkpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pIG1vdXNlZG93biA9IChlKTogdm9pZCA9PiB0aGlzLnN0YXJ0KGdldFBvc2l0aW9ucyhlKSk7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcigndG91Y2hzdGFydCcsIFsnJGV2ZW50J10pIHRvdWNoc3RhcnQgPSAoZSk6IHZvaWQgPT4gdGhpcy5zdGFydChnZXRQb3NpdGlvbnMoZSkpO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlbW92ZScsIFsnJGV2ZW50J10pIG1vdXNlbW92ZSA9IChlKTogdm9pZCA9PiB0aGlzLm1vdmUoZ2V0UG9zaXRpb25zKGUpKTtcclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd0b3VjaG1vdmUnLCBbJyRldmVudCddKSB0b3VjaG1vdmUgPSAoZSk6IHZvaWQgPT4gdGhpcy5tb3ZlKGdldFBvc2l0aW9ucyhlKSk7XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcpIG1vdXNldXAgPSAoKTogdm9pZCA9PiB0aGlzLmZpbmlzaCgpO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3RvdWNoZW5kJykgdG91Y2hlbmQgPSAoKTogdm9pZCA9PiB0aGlzLmZpbmlzaCgpO1xyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3Njcm9sbCcsIFsnJGV2ZW50J10pIHNjcm9sbCA9IChlKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5fc2Nyb2xsTGVmdCA9IGUudGFyZ2V0LnNjcm9sbExlZnQ7XHJcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9wID0gZS50YXJnZXQuc2Nyb2xsVG9wO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjaGFuZ2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoaXNOdW1iZXIodGhpcy5fcHJldkNsaWVudFgpICYmIGlzTnVtYmVyKHRoaXMub3B0aW9ucy50aHJlc2hvbGQpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IE1hdGguYWJzKHRoaXMuX3ByZXZDbGllbnRYIC0gdGhpcy5fY2xpZW50WCk7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGRlbHRhWCA+PSB0aGlzLm9wdGlvbnMudGhyZXNob2xkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXNOdW1iZXIodGhpcy5fcHJldkNsaWVudFkpICYmIGlzTnVtYmVyKHRoaXMub3B0aW9ucy50aHJlc2hvbGQpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWSA9IE1hdGguYWJzKHRoaXMuX3ByZXZDbGllbnRZIC0gdGhpcy5fY2xpZW50WSk7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCB8fCBkZWx0YVkgPj0gdGhpcy5vcHRpb25zLnRocmVzaG9sZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBfbW91c2Vtb3ZlWCA9IChlOiBJUG9zaXRpb25FdmVudCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMuY2RrLm1lYXN1cmVTY3JvbGxPZmZzZXQoKTtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBvZmZzZXQgLSBlLmNsaWVudFggKyB0aGlzLl9jbGllbnRYO1xyXG4gICAgICAgICAgICB0aGlzLmNkay5zY3JvbGxUb09mZnNldCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NsaWVudFggPSBlLmNsaWVudFg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9tb3VzZW1vdmVZID0gKGU6IElQb3NpdGlvbkV2ZW50KTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKGUpIHtcclxuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5jZGsubWVhc3VyZVNjcm9sbE9mZnNldCgpO1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG9mZnNldCAtIGUuY2xpZW50WSArIHRoaXMuX2NsaWVudFk7XHJcbiAgICAgICAgICAgIHRoaXMuY2RrLnNjcm9sbFRvT2Zmc2V0KHZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy5fY2xpZW50WSA9IGUuY2xpZW50WTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgPSAoZTogSVBvc2l0aW9uRXZlbnQpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLnRvZ2dsZVN3aXBlZCh0cnVlKTtcclxuICAgICAgICB0aGlzLl9jbGllbnRYID0gZS5jbGllbnRYO1xyXG4gICAgICAgIHRoaXMuX2NsaWVudFkgPSBlLmNsaWVudFk7XHJcbiAgICAgICAgdGhpcy5fcHJldkNsaWVudFggPSBlLmNsaWVudFg7XHJcbiAgICAgICAgdGhpcy5fcHJldkNsaWVudFkgPSBlLmNsaWVudFk7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5wcmV2ZW50Q2xpY2tzKSB7XHJcbiAgICAgICAgICAgIGUub3JpZ2luYWxFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtb3ZlID0gKGU6IElQb3NpdGlvbkV2ZW50KTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzU3dpcGVkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNkay5vcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3VzZW1vdmVYKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY2RrLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3VzZW1vdmVZKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZpbmlzaCA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faXNTd2lwZWQpIHtcclxuICAgICAgICAgICAgdGhpcy50b2dnbGVTd2lwZWQoZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbmFsaXplKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZVN3aXBlZCA9ICh2YWx1ZTogYm9vbGVhbik6IHZvaWQgPT4ge1xyXG4gICAgICAgIHRoaXMuX2lzU3dpcGVkID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgZmluYWxpemUgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5maW5hbGl6ZSkge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvTmVhcmVzdEluZGV4KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNjcm9sbFRvTmVhcmVzdEluZGV4ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNjcm9sbGVkQWJzID0gdGhpcy5jZGsub3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyA/IHRoaXMuX3Njcm9sbExlZnQgOlxyXG4gICAgICAgICAgICB0aGlzLmNkay5vcmllbnRhdGlvbiA9PT0gJ3ZlcnRpY2FsJyA/IHRoaXMuX3Njcm9sbFRvcCA6XHJcbiAgICAgICAgICAgICAgICBudWxsO1xyXG4gICAgICAgIGlmIChpc051bWJlcihzY3JvbGxlZEFicykgJiYgaXNOdW1iZXIodGhpcy5faGFsZkl0ZW1TaXplKSkge1xyXG4gICAgICAgICAgICBjb25zdCBzY3JvbGxlZCA9IHNjcm9sbGVkQWJzIC0gdGhpcy5pdGVtU2l6ZSAqIHRoaXMuX2luZGV4O1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHNjcm9sbGVkID4gdGhpcy5faGFsZkl0ZW1TaXplID8gdGhpcy5faW5kZXggKyAxIDogdGhpcy5faW5kZXg7XHJcbiAgICAgICAgICAgIHRoaXMuY2RrLnNjcm9sbFRvSW5kZXgoaW5kZXgsICdzbW9vdGgnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWRkRXZlbnRMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmNkay5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnByZXZlbnRDbGlja3MsIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5jZGsuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5wcmV2ZW50Q2xpY2tzLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogcHJldmVudCBhbGwgdHlwZSBvZiBjbGlja3MgKGUuZy4gY2xpY2sgb24gbGlua3MsIEFuZ3VsYXJgcyBjbGljaykgKi9cclxuICAgIHByZXZlbnRDbGlja3MgPSAoZSk6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNoYW5nZWQgJiYgdGhpcy5vcHRpb25zLnByZXZlbnRDbGlja3MpIHtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0= |
@@ -15,3 +15,3 @@ import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; | ||
finalizeTime: 400, | ||
preventDefaultClick: true | ||
preventClicks: true | ||
}; | ||
@@ -28,9 +28,36 @@ | ||
*/ | ||
/** @type {?} */ | ||
const touchPredicate = (e, key) => e && key && e.touches && e.touches[0] && e.touches[0][key]; | ||
/** @type {?} */ | ||
const clickPredicate = (e, key) => e && key && e[key]; | ||
/** @type {?} */ | ||
const getPositions = (originalEvent) => { | ||
/** @type {?} */ | ||
const clientX = touchPredicate(originalEvent, 'clientX') || clickPredicate(originalEvent, 'clientX'); | ||
/** @type {?} */ | ||
const clientY = touchPredicate(originalEvent, 'clientY') || clickPredicate(originalEvent, 'clientY'); | ||
return { clientX, clientY, originalEvent }; | ||
}; | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc | ||
*/ | ||
class NgxVirtualSwiperDirective { | ||
constructor() { | ||
this.subscription = new Subscription(); | ||
this.mousedown = (e) => this.start(getPositions(e)); | ||
this.touchstart = (e) => this.start(getPositions(e)); | ||
this.mousemove = (e) => this.move(getPositions(e)); | ||
this.touchmove = (e) => this.move(getPositions(e)); | ||
this.mouseup = () => this.finish(); | ||
this.touchend = () => this.finish(); | ||
this.scroll = (e) => { | ||
this._scrollLeft = e.target.scrollLeft; | ||
this._scrollTop = e.target.scrollTop; | ||
}; | ||
this._mousemoveX = (e) => { | ||
if (e) { | ||
/** @type {?} */ | ||
const offset = this.cdk.measureScrollOffset(this.options.offsetXFrom); | ||
const offset = this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -45,3 +72,3 @@ const value = offset - e.clientX + this._clientX; | ||
/** @type {?} */ | ||
const offset = this.cdk.measureScrollOffset(this.options.offsetYFrom); | ||
const offset = this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -53,3 +80,13 @@ const value = offset - e.clientY + this._clientY; | ||
}; | ||
this.mousemove = (e) => { | ||
this.start = (e) => { | ||
this.toggleSwiped(true); | ||
this._clientX = e.clientX; | ||
this._clientY = e.clientY; | ||
this._prevClientX = e.clientX; | ||
this._prevClientY = e.clientY; | ||
if (this.options.preventClicks) { | ||
e.originalEvent.preventDefault(); | ||
} | ||
}; | ||
this.move = (e) => { | ||
if (this._isSwiped) { | ||
@@ -64,25 +101,8 @@ if (this.cdk.orientation === 'horizontal') { | ||
}; | ||
this.mousedown = (e) => { | ||
this.toggleSwiped(true); | ||
this._clientX = e.clientX; | ||
this._clientY = e.clientY; | ||
this._prevClientX = e.clientX; | ||
this._prevClientY = e.clientY; | ||
e.preventDefault(); | ||
}; | ||
this.click = (e) => { | ||
if (this.changed && this.options.preventDefaultClick) { | ||
e.preventDefault(); | ||
} | ||
}; | ||
this.mouseup = () => { | ||
this.finish = () => { | ||
if (this._isSwiped) { | ||
this.toggleSwiped(false); | ||
this.finalize(); | ||
} | ||
}; | ||
this.scroll = (e) => { | ||
this._scrollLeft = e.target.scrollLeft; | ||
this._scrollTop = e.target.scrollTop; | ||
this.finalize(); | ||
}; | ||
this.toggleSwiped = (value) => { | ||
@@ -93,4 +113,3 @@ this._isSwiped = value; | ||
if (this.options.finalize) { | ||
clearTimeout(this._scrollTimer); | ||
this._scrollTimer = setTimeout(this.scrollToNearestIndex, this.options.finalizeTime); | ||
this.scrollToNearestIndex(); | ||
} | ||
@@ -111,2 +130,18 @@ }; | ||
}; | ||
this.addEventListener = () => { | ||
this.cdk.elementRef.nativeElement.addEventListener('click', this.preventClicks, true); | ||
}; | ||
this.removeEventListener = () => { | ||
this.cdk.elementRef.nativeElement.removeEventListener('click', this.preventClicks, true); | ||
}; | ||
/** | ||
* prevent all type of clicks (e.g. click on links, Angular`s click) | ||
*/ | ||
this.preventClicks = (e) => { | ||
if (this.changed && this.options.preventClicks) { | ||
e.stopPropagation(); | ||
e.preventDefault(); | ||
e.stopImmediatePropagation(); | ||
} | ||
}; | ||
} | ||
@@ -127,2 +162,3 @@ /** | ||
} | ||
this.addEventListener(); | ||
this.subscription.add(this.cdk.scrolledIndexChange.subscribe(i => this._index = i)); | ||
@@ -135,3 +171,3 @@ } | ||
this.subscription.unsubscribe(); | ||
clearTimeout(this._scrollTimer); | ||
this.removeEventListener(); | ||
} | ||
@@ -168,6 +204,8 @@ /** | ||
itemSize: [{ type: Input }], | ||
mousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }], | ||
touchstart: [{ type: HostListener, args: ['touchstart', ['$event'],] }], | ||
mousemove: [{ type: HostListener, args: ['mousemove', ['$event'],] }], | ||
mousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }], | ||
click: [{ type: HostListener, args: ['click', ['$event'],] }], | ||
touchmove: [{ type: HostListener, args: ['touchmove', ['$event'],] }], | ||
mouseup: [{ type: HostListener, args: ['document:mouseup',] }], | ||
touchend: [{ type: HostListener, args: ['touchend',] }], | ||
scroll: [{ type: HostListener, args: ['scroll', ['$event'],] }] | ||
@@ -174,0 +212,0 @@ }; |
@@ -16,3 +16,3 @@ import { __assign } from 'tslib'; | ||
finalizeTime: 400, | ||
preventDefaultClick: true | ||
preventClicks: true | ||
}; | ||
@@ -29,2 +29,19 @@ | ||
*/ | ||
/** @type {?} */ | ||
var touchPredicate = function (e, key) { return e && key && e.touches && e.touches[0] && e.touches[0][key]; }; | ||
/** @type {?} */ | ||
var clickPredicate = function (e, key) { return e && key && e[key]; }; | ||
/** @type {?} */ | ||
var getPositions = function (originalEvent) { | ||
/** @type {?} */ | ||
var clientX = touchPredicate(originalEvent, 'clientX') || clickPredicate(originalEvent, 'clientX'); | ||
/** @type {?} */ | ||
var clientY = touchPredicate(originalEvent, 'clientY') || clickPredicate(originalEvent, 'clientY'); | ||
return { clientX: clientX, clientY: clientY, originalEvent: originalEvent }; | ||
}; | ||
/** | ||
* @fileoverview added by tsickle | ||
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc | ||
*/ | ||
var NgxVirtualSwiperDirective = /** @class */ (function () { | ||
@@ -34,6 +51,16 @@ function NgxVirtualSwiperDirective() { | ||
this.subscription = new Subscription(); | ||
this.mousedown = function (e) { return _this.start(getPositions(e)); }; | ||
this.touchstart = function (e) { return _this.start(getPositions(e)); }; | ||
this.mousemove = function (e) { return _this.move(getPositions(e)); }; | ||
this.touchmove = function (e) { return _this.move(getPositions(e)); }; | ||
this.mouseup = function () { return _this.finish(); }; | ||
this.touchend = function () { return _this.finish(); }; | ||
this.scroll = function (e) { | ||
_this._scrollLeft = e.target.scrollLeft; | ||
_this._scrollTop = e.target.scrollTop; | ||
}; | ||
this._mousemoveX = function (e) { | ||
if (e) { | ||
/** @type {?} */ | ||
var offset = _this.cdk.measureScrollOffset(_this.options.offsetXFrom); | ||
var offset = _this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -48,3 +75,3 @@ var value = offset - e.clientX + _this._clientX; | ||
/** @type {?} */ | ||
var offset = _this.cdk.measureScrollOffset(_this.options.offsetYFrom); | ||
var offset = _this.cdk.measureScrollOffset(); | ||
/** @type {?} */ | ||
@@ -56,3 +83,13 @@ var value = offset - e.clientY + _this._clientY; | ||
}; | ||
this.mousemove = function (e) { | ||
this.start = function (e) { | ||
_this.toggleSwiped(true); | ||
_this._clientX = e.clientX; | ||
_this._clientY = e.clientY; | ||
_this._prevClientX = e.clientX; | ||
_this._prevClientY = e.clientY; | ||
if (_this.options.preventClicks) { | ||
e.originalEvent.preventDefault(); | ||
} | ||
}; | ||
this.move = function (e) { | ||
if (_this._isSwiped) { | ||
@@ -67,25 +104,8 @@ if (_this.cdk.orientation === 'horizontal') { | ||
}; | ||
this.mousedown = function (e) { | ||
_this.toggleSwiped(true); | ||
_this._clientX = e.clientX; | ||
_this._clientY = e.clientY; | ||
_this._prevClientX = e.clientX; | ||
_this._prevClientY = e.clientY; | ||
e.preventDefault(); | ||
}; | ||
this.click = function (e) { | ||
if (_this.changed && _this.options.preventDefaultClick) { | ||
e.preventDefault(); | ||
} | ||
}; | ||
this.mouseup = function () { | ||
this.finish = function () { | ||
if (_this._isSwiped) { | ||
_this.toggleSwiped(false); | ||
_this.finalize(); | ||
} | ||
}; | ||
this.scroll = function (e) { | ||
_this._scrollLeft = e.target.scrollLeft; | ||
_this._scrollTop = e.target.scrollTop; | ||
_this.finalize(); | ||
}; | ||
this.toggleSwiped = function (value) { | ||
@@ -96,4 +116,3 @@ _this._isSwiped = value; | ||
if (_this.options.finalize) { | ||
clearTimeout(_this._scrollTimer); | ||
_this._scrollTimer = setTimeout(_this.scrollToNearestIndex, _this.options.finalizeTime); | ||
_this.scrollToNearestIndex(); | ||
} | ||
@@ -114,2 +133,18 @@ }; | ||
}; | ||
this.addEventListener = function () { | ||
_this.cdk.elementRef.nativeElement.addEventListener('click', _this.preventClicks, true); | ||
}; | ||
this.removeEventListener = function () { | ||
_this.cdk.elementRef.nativeElement.removeEventListener('click', _this.preventClicks, true); | ||
}; | ||
/** | ||
* prevent all type of clicks (e.g. click on links, Angular`s click) | ||
*/ | ||
this.preventClicks = function (e) { | ||
if (_this.changed && _this.options.preventClicks) { | ||
e.stopPropagation(); | ||
e.preventDefault(); | ||
e.stopImmediatePropagation(); | ||
} | ||
}; | ||
} | ||
@@ -137,2 +172,3 @@ /** | ||
} | ||
this.addEventListener(); | ||
this.subscription.add(this.cdk.scrolledIndexChange.subscribe(function (i) { return _this._index = i; })); | ||
@@ -148,3 +184,3 @@ }; | ||
this.subscription.unsubscribe(); | ||
clearTimeout(this._scrollTimer); | ||
this.removeEventListener(); | ||
}; | ||
@@ -184,6 +220,8 @@ Object.defineProperty(NgxVirtualSwiperDirective.prototype, "changed", { | ||
itemSize: [{ type: Input }], | ||
mousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }], | ||
touchstart: [{ type: HostListener, args: ['touchstart', ['$event'],] }], | ||
mousemove: [{ type: HostListener, args: ['mousemove', ['$event'],] }], | ||
mousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }], | ||
click: [{ type: HostListener, args: ['click', ['$event'],] }], | ||
touchmove: [{ type: HostListener, args: ['touchmove', ['$event'],] }], | ||
mouseup: [{ type: HostListener, args: ['document:mouseup',] }], | ||
touchend: [{ type: HostListener, args: ['touchend',] }], | ||
scroll: [{ type: HostListener, args: ['scroll', ['$event'],] }] | ||
@@ -190,0 +228,0 @@ }; |
@@ -1,13 +0,16 @@ | ||
export declare type OffsetFrom = 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'; | ||
export interface INgxVirtualSwiperOptions { | ||
offsetXFrom: OffsetFrom; | ||
offsetYFrom: OffsetFrom; | ||
/** the property returns to actual integer index */ | ||
/** returns to actual integer index */ | ||
finalize: boolean; | ||
/** the time when the {@link finalize} will be called after scroll event */ | ||
finalizeTime: number; | ||
/** the property is required by links, the library should know is it real swipe or fake */ | ||
/** is required by links, the library should know is it real swipe or fake */ | ||
threshold: number; | ||
/** the property prevent default last click */ | ||
preventDefaultClick: boolean; | ||
/** prevent all type of clicks (e.g. links, Angular`s click) */ | ||
preventClicks: boolean; | ||
} | ||
/** prevent bugs at SSR */ | ||
export interface IPositionEvent { | ||
clientX: number; | ||
clientY: number; | ||
originalEvent: any; | ||
} |
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; | ||
import { OnChanges, OnDestroy, OnInit } from '@angular/core'; | ||
import { Subscription } from 'rxjs'; | ||
import { INgxVirtualSwiperOptions } from './interfaces'; | ||
import { INgxVirtualSwiperOptions, IPositionEvent } from './interfaces'; | ||
export declare class NgxVirtualSwiperDirective implements OnChanges, OnInit, OnDestroy { | ||
@@ -22,4 +22,2 @@ /** to lean more see https://material.angular.io/cdk/scrolling/api */ | ||
_scrollLeft: number; | ||
/** contains id of the last {@link setTimeout} */ | ||
_scrollTimer: any; | ||
constructor(); | ||
@@ -29,13 +27,22 @@ ngOnChanges(): void; | ||
ngOnDestroy(): void; | ||
readonly changed: boolean; | ||
_mousemoveX: (e: any) => void; | ||
_mousemoveY: (e: any) => void; | ||
mousedown: (e: any) => void; | ||
touchstart: (e: any) => void; | ||
mousemove: (e: any) => void; | ||
mousedown: (e: any) => void; | ||
click: (e: any) => void; | ||
touchmove: (e: any) => void; | ||
mouseup: () => void; | ||
touchend: () => void; | ||
scroll: (e: any) => void; | ||
readonly changed: boolean; | ||
_mousemoveX: (e: IPositionEvent) => void; | ||
_mousemoveY: (e: IPositionEvent) => void; | ||
start: (e: IPositionEvent) => void; | ||
move: (e: IPositionEvent) => void; | ||
finish: () => void; | ||
toggleSwiped: (value: boolean) => void; | ||
finalize: () => void; | ||
scrollToNearestIndex: () => void; | ||
addEventListener: () => void; | ||
removeEventListener: () => void; | ||
/** prevent all type of clicks (e.g. click on links, Angular`s click) */ | ||
preventClicks: (e: any) => void; | ||
} |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"NgxVirtualSwiperOptions":{"threshold":20,"finalize":true,"finalizeTime":400,"preventDefaultClick":true},"OffsetFrom":{"__symbolic":"interface"},"INgxVirtualSwiperOptions":{"__symbolic":"interface"},"NgxVirtualSwiperDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":7,"character":1},"arguments":[{"selector":"[ngxVirtualSwiper]"}]}],"members":{"cdk":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":13,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/cdk/scrolling","name":"CdkVirtualScrollViewport","line":13,"character":18}]}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":5},"arguments":["ngxVirtualSwiper"]}]}],"itemSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"mousemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":81,"character":5},"arguments":["mousemove",["$event"]]}]}],"mousedown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":92,"character":5},"arguments":["mousedown",["$event"]]}]}],"click":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":101,"character":5},"arguments":["click",["$event"]]}]}],"mouseup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":107,"character":5},"arguments":["document:mouseup"]}]}],"scroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":113,"character":5},"arguments":["scroll",["$event"]]}]}]}},"NgxVirtualSwiperModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"imports":[],"declarations":[{"__symbolic":"reference","name":"NgxVirtualSwiperDirective"}],"exports":[{"__symbolic":"reference","name":"NgxVirtualSwiperDirective"}]}]}],"members":{}}},"origins":{"NgxVirtualSwiperOptions":"./lib/constants","OffsetFrom":"./lib/interfaces","INgxVirtualSwiperOptions":"./lib/interfaces","NgxVirtualSwiperDirective":"./lib/ngx-virtual-swiper.directive","NgxVirtualSwiperModule":"./lib/ngx-virtual-swiper.module"},"importAs":"ngx-virtual-swiper"} | ||
{"__symbolic":"module","version":4,"metadata":{"NgxVirtualSwiperOptions":{"threshold":20,"finalize":true,"finalizeTime":400,"preventClicks":true},"INgxVirtualSwiperOptions":{"__symbolic":"interface"},"IPositionEvent":{"__symbolic":"interface"},"NgxVirtualSwiperDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":8,"character":1},"arguments":[{"selector":"[ngxVirtualSwiper]"}]}],"members":{"cdk":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":14,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/cdk/scrolling","name":"CdkVirtualScrollViewport","line":14,"character":18}]}]}],"options":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":5},"arguments":["ngxVirtualSwiper"]}]}],"itemSize":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"mousedown":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":50,"character":5},"arguments":["mousedown",["$event"]]}]}],"touchstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":52,"character":5},"arguments":["touchstart",["$event"]]}]}],"mousemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":54,"character":5},"arguments":["mousemove",["$event"]]}]}],"touchmove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":56,"character":5},"arguments":["touchmove",["$event"]]}]}],"mouseup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":58,"character":5},"arguments":["document:mouseup"]}]}],"touchend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":60,"character":5},"arguments":["touchend"]}]}],"scroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":62,"character":5},"arguments":["scroll",["$event"]]}]}]}},"NgxVirtualSwiperModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":3,"character":1},"arguments":[{"imports":[],"declarations":[{"__symbolic":"reference","name":"NgxVirtualSwiperDirective"}],"exports":[{"__symbolic":"reference","name":"NgxVirtualSwiperDirective"}]}]}],"members":{}}},"origins":{"NgxVirtualSwiperOptions":"./lib/constants","INgxVirtualSwiperOptions":"./lib/interfaces","IPositionEvent":"./lib/interfaces","NgxVirtualSwiperDirective":"./lib/ngx-virtual-swiper.directive","NgxVirtualSwiperModule":"./lib/ngx-virtual-swiper.module"},"importAs":"ngx-virtual-swiper"} |
{ | ||
"name": "ngx-virtual-swiper", | ||
"version": "0.0.4", | ||
"version": "0.1.0-rc.0", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
186414
33
1539