ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
826 lines (817 loc) • 24.5 kB
JavaScript
import { Injectable, NgZone, RendererFactory2, ɵɵdefineInjectable, ɵɵinject, Inject, Optional, SkipSelf } from '@angular/core';
import { Subject } from 'rxjs';
import { auditTime, finalize, map, filter, startWith, distinctUntilChanged } from 'rxjs/operators';
import { environment } from 'ng-zorro-antd/core/environments';
import { getEventPosition, isTouchEvent } from 'ng-zorro-antd/core/util';
import { DOCUMENT } from '@angular/common';
import { reqAnimFrame } from 'ng-zorro-antd/core/polyfill';
import { MediaMatcher } from '@angular/cdk/layout';
/**
* @fileoverview added by tsickle
* Generated from: resize.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @type {?} */
var NOOP = (/**
* @return {?}
*/
function () { });
var ɵ0 = NOOP;
var NzResizeService = /** @class */ (function () {
function NzResizeService(ngZone, rendererFactory2) {
var _this = this;
this.ngZone = ngZone;
this.rendererFactory2 = rendererFactory2;
this.resizeSource$ = new Subject();
this.listeners = 0;
this.disposeHandle = NOOP;
this.handler = (/**
* @return {?}
*/
function () {
_this.ngZone.run((/**
* @return {?}
*/
function () {
_this.resizeSource$.next();
}));
});
this.renderer = this.rendererFactory2.createRenderer(null, null);
}
/**
* @return {?}
*/
NzResizeService.prototype.subscribe = /**
* @return {?}
*/
function () {
var _this = this;
this.registerListener();
return this.resizeSource$.pipe(auditTime(16), finalize((/**
* @return {?}
*/
function () { return _this.unregisterListener(); })));
};
/**
* @return {?}
*/
NzResizeService.prototype.unsubscribe = /**
* @return {?}
*/
function () {
this.unregisterListener();
};
/**
* @private
* @return {?}
*/
NzResizeService.prototype.registerListener = /**
* @private
* @return {?}
*/
function () {
var _this = this;
if (this.listeners === 0) {
this.ngZone.runOutsideAngular((/**
* @return {?}
*/
function () {
_this.disposeHandle = _this.renderer.listen('window', 'resize', _this.handler);
}));
}
this.listeners += 1;
};
/**
* @private
* @return {?}
*/
NzResizeService.prototype.unregisterListener = /**
* @private
* @return {?}
*/
function () {
this.listeners -= 1;
if (this.listeners === 0) {
this.disposeHandle();
this.disposeHandle = NOOP;
}
};
NzResizeService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
NzResizeService.ctorParameters = function () { return [
{ type: NgZone },
{ type: RendererFactory2 }
]; };
/** @nocollapse */ NzResizeService.ɵprov = ɵɵdefineInjectable({ factory: function NzResizeService_Factory() { return new NzResizeService(ɵɵinject(NgZone), ɵɵinject(RendererFactory2)); }, token: NzResizeService, providedIn: "root" });
return NzResizeService;
}());
if (false) {
/**
* @type {?}
* @private
*/
NzResizeService.prototype.resizeSource$;
/**
* @type {?}
* @private
*/
NzResizeService.prototype.listeners;
/**
* @type {?}
* @private
*/
NzResizeService.prototype.renderer;
/**
* @type {?}
* @private
*/
NzResizeService.prototype.disposeHandle;
/**
* @type {?}
* @private
*/
NzResizeService.prototype.handler;
/**
* @type {?}
* @private
*/
NzResizeService.prototype.ngZone;
/**
* @type {?}
* @private
*/
NzResizeService.prototype.rendererFactory2;
}
/**
* @fileoverview added by tsickle
* Generated from: singleton.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @record
*/
function SingletonRegistryItem() { }
if (false) {
/** @type {?} */
SingletonRegistryItem.prototype.target;
}
/**
* When running in test, singletons should not be destroyed. So we keep references of singletons
* in this global variable.
* @type {?}
*/
var testSingleRegistry = new Map();
/**
* Some singletons should have life cycle that is same to Angular's. This service make sure that
* those singletons get destroyed in HMR.
*/
var NzSingletonService = /** @class */ (function () {
function NzSingletonService() {
/**
* This registry is used to register singleton in dev mode.
* So that singletons get destroyed when hot module reload happens.
*
* This works in prod mode too but with no specific effect.
*/
this._singletonRegistry = new Map();
}
Object.defineProperty(NzSingletonService.prototype, "singletonRegistry", {
get: /**
* @private
* @return {?}
*/
function () {
return environment.isTestMode ? testSingleRegistry : this._singletonRegistry;
},
enumerable: true,
configurable: true
});
/**
* @param {?} key
* @param {?} target
* @return {?}
*/
NzSingletonService.prototype.registerSingletonWithKey = /**
* @param {?} key
* @param {?} target
* @return {?}
*/
function (key, target) {
/** @type {?} */
var alreadyHave = this.singletonRegistry.has(key);
/** @type {?} */
var item = alreadyHave ? (/** @type {?} */ (this.singletonRegistry.get(key))) : this.withNewTarget(target);
if (!alreadyHave) {
this.singletonRegistry.set(key, item);
}
};
/**
* @template T
* @param {?} key
* @return {?}
*/
NzSingletonService.prototype.getSingletonWithKey = /**
* @template T
* @param {?} key
* @return {?}
*/
function (key) {
return this.singletonRegistry.has(key) ? ((/** @type {?} */ ((/** @type {?} */ (this.singletonRegistry.get(key))).target))) : null;
};
/**
* @private
* @param {?} target
* @return {?}
*/
NzSingletonService.prototype.withNewTarget = /**
* @private
* @param {?} target
* @return {?}
*/
function (target) {
return {
target: target
};
};
NzSingletonService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */ NzSingletonService.ɵprov = ɵɵdefineInjectable({ factory: function NzSingletonService_Factory() { return new NzSingletonService(); }, token: NzSingletonService, providedIn: "root" });
return NzSingletonService;
}());
if (false) {
/**
* This registry is used to register singleton in dev mode.
* So that singletons get destroyed when hot module reload happens.
*
* This works in prod mode too but with no specific effect.
* @type {?}
* @private
*/
NzSingletonService.prototype._singletonRegistry;
}
/**
* @fileoverview added by tsickle
* Generated from: drag.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @record
*/
function Point() { }
if (false) {
/** @type {?} */
Point.prototype.x;
/** @type {?} */
Point.prototype.y;
}
/**
* @record
*/
function HandlerItem() { }
if (false) {
/**
* @param {?} e
* @return {?}
*/
HandlerItem.prototype.handler = function (e) { };
/**
* @return {?}
*/
HandlerItem.prototype.teardown = function () { };
}
/**
* @param {?} event
* @return {?}
*/
function getPagePosition(event) {
/** @type {?} */
var e = getEventPosition(event);
return {
x: e.pageX,
y: e.pageY
};
}
/**
* This module provide a global dragging service to other components.
*/
var NzDragService = /** @class */ (function () {
function NzDragService(rendererFactory2) {
this.draggingThreshold = 5;
this.currentDraggingSequence = null;
this.currentStartingPoint = null;
this.handleRegistry = new Set();
this.renderer = rendererFactory2.createRenderer(null, null);
}
/**
* @param {?} event
* @return {?}
*/
NzDragService.prototype.requestDraggingSequence = /**
* @param {?} event
* @return {?}
*/
function (event) {
var _this = this;
if (!this.handleRegistry.size) {
this.registerDraggingHandler(isTouchEvent(event));
}
// Complete last dragging sequence if a new target is dragged.
if (this.currentDraggingSequence) {
this.currentDraggingSequence.complete();
}
this.currentStartingPoint = getPagePosition(event);
this.currentDraggingSequence = new Subject();
return this.currentDraggingSequence.pipe(map((/**
* @param {?} e
* @return {?}
*/
function (e) {
return {
x: e.pageX - (/** @type {?} */ (_this.currentStartingPoint)).x,
y: e.pageY - (/** @type {?} */ (_this.currentStartingPoint)).y
};
})), filter((/**
* @param {?} e
* @return {?}
*/
function (e) { return Math.abs(e.x) > _this.draggingThreshold || Math.abs(e.y) > _this.draggingThreshold; })), finalize((/**
* @return {?}
*/
function () { return _this.teardownDraggingSequence(); })));
};
/**
* @private
* @param {?} isTouch
* @return {?}
*/
NzDragService.prototype.registerDraggingHandler = /**
* @private
* @param {?} isTouch
* @return {?}
*/
function (isTouch) {
var _this = this;
if (isTouch) {
this.handleRegistry.add({
teardown: this.renderer.listen('document', 'touchmove', (/**
* @param {?} e
* @return {?}
*/
function (e) {
if (_this.currentDraggingSequence) {
_this.currentDraggingSequence.next(e.touches[0] || e.changedTouches[0]);
}
}))
});
this.handleRegistry.add({
teardown: this.renderer.listen('document', 'touchend', (/**
* @return {?}
*/
function () {
if (_this.currentDraggingSequence) {
_this.currentDraggingSequence.complete();
}
}))
});
}
else {
this.handleRegistry.add({
teardown: this.renderer.listen('document', 'mousemove', (/**
* @param {?} e
* @return {?}
*/
function (e) {
if (_this.currentDraggingSequence) {
_this.currentDraggingSequence.next(e);
}
}))
});
this.handleRegistry.add({
teardown: this.renderer.listen('document', 'mouseup', (/**
* @return {?}
*/
function () {
if (_this.currentDraggingSequence) {
_this.currentDraggingSequence.complete();
}
}))
});
}
};
/**
* @private
* @return {?}
*/
NzDragService.prototype.teardownDraggingSequence = /**
* @private
* @return {?}
*/
function () {
this.currentDraggingSequence = null;
};
NzDragService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
NzDragService.ctorParameters = function () { return [
{ type: RendererFactory2 }
]; };
/** @nocollapse */ NzDragService.ɵprov = ɵɵdefineInjectable({ factory: function NzDragService_Factory() { return new NzDragService(ɵɵinject(RendererFactory2)); }, token: NzDragService, providedIn: "root" });
return NzDragService;
}());
if (false) {
/**
* @type {?}
* @private
*/
NzDragService.prototype.draggingThreshold;
/**
* @type {?}
* @private
*/
NzDragService.prototype.currentDraggingSequence;
/**
* @type {?}
* @private
*/
NzDragService.prototype.currentStartingPoint;
/**
* @type {?}
* @private
*/
NzDragService.prototype.handleRegistry;
/**
* @type {?}
* @private
*/
NzDragService.prototype.renderer;
}
/**
* @fileoverview added by tsickle
* Generated from: scroll.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @param {?} t
* @param {?} b
* @param {?} c
* @param {?} d
* @return {?}
*/
function easeInOutCubic(t, b, c, d) {
/** @type {?} */
var cc = c - b;
/** @type {?} */
var tt = t / (d / 2);
if (tt < 1) {
return (cc / 2) * tt * tt * tt + b;
}
else {
return (cc / 2) * ((tt -= 2) * tt * tt + 2) + b;
}
}
var NzScrollService = /** @class */ (function () {
function NzScrollService(doc) {
this.doc = doc;
}
/** Set the position of the scroll bar of `el`. */
/**
* Set the position of the scroll bar of `el`.
* @param {?} el
* @param {?=} topValue
* @return {?}
*/
NzScrollService.prototype.setScrollTop = /**
* Set the position of the scroll bar of `el`.
* @param {?} el
* @param {?=} topValue
* @return {?}
*/
function (el, topValue) {
if (topValue === void 0) { topValue = 0; }
if (el === window) {
this.doc.body.scrollTop = topValue;
(/** @type {?} */ (this.doc.documentElement)).scrollTop = topValue;
}
else {
((/** @type {?} */ (el))).scrollTop = topValue;
}
};
/** Get position of `el` against window. */
/**
* Get position of `el` against window.
* @param {?} el
* @return {?}
*/
NzScrollService.prototype.getOffset = /**
* Get position of `el` against window.
* @param {?} el
* @return {?}
*/
function (el) {
/** @type {?} */
var ret = {
top: 0,
left: 0
};
if (!el || !el.getClientRects().length) {
return ret;
}
/** @type {?} */
var rect = el.getBoundingClientRect();
if (rect.width || rect.height) {
/** @type {?} */
var doc = (/** @type {?} */ (el.ownerDocument)).documentElement;
ret.top = rect.top - (/** @type {?} */ (doc)).clientTop;
ret.left = rect.left - (/** @type {?} */ (doc)).clientLeft;
}
else {
ret.top = rect.top;
ret.left = rect.left;
}
return ret;
};
/** Get the position of the scoll bar of `el`. */
// TODO: remove '| Window' as the fallback already happens here
/**
* Get the position of the scoll bar of `el`.
* @param {?=} el
* @param {?=} top
* @return {?}
*/
// TODO: remove '| Window' as the fallback already happens here
NzScrollService.prototype.getScroll = /**
* Get the position of the scoll bar of `el`.
* @param {?=} el
* @param {?=} top
* @return {?}
*/
// TODO: remove '| Window' as the fallback already happens here
function (el, top) {
if (top === void 0) { top = true; }
/** @type {?} */
var target = el ? el : window;
/** @type {?} */
var prop = top ? 'pageYOffset' : 'pageXOffset';
/** @type {?} */
var method = top ? 'scrollTop' : 'scrollLeft';
/** @type {?} */
var isWindow = target === window;
// @ts-ignore
/** @type {?} */
var ret = isWindow ? target[prop] : target[method];
if (isWindow && typeof ret !== 'number') {
ret = (/** @type {?} */ (this.doc.documentElement))[method];
}
return ret;
};
/**
* Scroll `el` to some position with animation.
*
* @param containerEl container, `window` by default
* @param targetTopValue Scroll to `top`, 0 by default
* @param easing Transition curve, `easeInOutCubic` by default
* @param callback callback invoked when transition is done
*/
/**
* Scroll `el` to some position with animation.
*
* @param {?} containerEl container, `window` by default
* @param {?=} targetTopValue Scroll to `top`, 0 by default
* @param {?=} easing Transition curve, `easeInOutCubic` by default
* @param {?=} callback callback invoked when transition is done
* @return {?}
*/
NzScrollService.prototype.scrollTo = /**
* Scroll `el` to some position with animation.
*
* @param {?} containerEl container, `window` by default
* @param {?=} targetTopValue Scroll to `top`, 0 by default
* @param {?=} easing Transition curve, `easeInOutCubic` by default
* @param {?=} callback callback invoked when transition is done
* @return {?}
*/
function (containerEl, targetTopValue, easing, callback) {
var _this = this;
if (targetTopValue === void 0) { targetTopValue = 0; }
/** @type {?} */
var target = containerEl ? containerEl : window;
/** @type {?} */
var scrollTop = this.getScroll(target);
/** @type {?} */
var startTime = Date.now();
/** @type {?} */
var frameFunc = (/**
* @return {?}
*/
function () {
/** @type {?} */
var timestamp = Date.now();
/** @type {?} */
var time = timestamp - startTime;
_this.setScrollTop(target, (easing || easeInOutCubic)(time, scrollTop, targetTopValue, 450));
if (time < 450) {
reqAnimFrame(frameFunc);
}
else {
if (callback) {
callback();
}
}
});
reqAnimFrame(frameFunc);
};
NzScrollService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
NzScrollService.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
]; };
return NzScrollService;
}());
if (false) {
/**
* @type {?}
* @private
*/
NzScrollService.prototype.doc;
}
/**
* @param {?} doc
* @param {?} scrollService
* @return {?}
*/
function SCROLL_SERVICE_PROVIDER_FACTORY(doc, scrollService) {
return scrollService || new NzScrollService(doc);
}
/** @type {?} */
var SCROLL_SERVICE_PROVIDER = {
provide: NzScrollService,
useFactory: SCROLL_SERVICE_PROVIDER_FACTORY,
deps: [DOCUMENT, [new Optional(), new SkipSelf(), NzScrollService]]
};
/**
* @fileoverview added by tsickle
* Generated from: breakpoint.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/** @enum {string} */
var NzBreakpointEnum = {
xxl: "xxl",
xl: "xl",
lg: "lg",
md: "md",
sm: "sm",
xs: "xs",
};
/** @type {?} */
var gridResponsiveMap = {
xs: '(max-width: 575px)',
sm: '(min-width: 576px)',
md: '(min-width: 768px)',
lg: '(min-width: 992px)',
xl: '(min-width: 1200px)',
xxl: '(min-width: 1600px)'
};
/** @type {?} */
var siderResponsiveMap = {
xs: '(max-width: 479.98px)',
sm: '(max-width: 575.98px)',
md: '(max-width: 767.98px)',
lg: '(max-width: 991.98px)',
xl: '(max-width: 1199.98px)',
xxl: '(max-width: 1599.98px)'
};
var NzBreakpointService = /** @class */ (function () {
function NzBreakpointService(resizeService, mediaMatcher) {
this.resizeService = resizeService;
this.mediaMatcher = mediaMatcher;
this.resizeService.subscribe().subscribe((/**
* @return {?}
*/
function () { }));
}
/**
* @param {?} breakpointMap
* @param {?=} fullMap
* @return {?}
*/
NzBreakpointService.prototype.subscribe = /**
* @param {?} breakpointMap
* @param {?=} fullMap
* @return {?}
*/
function (breakpointMap, fullMap) {
var _this = this;
if (fullMap) {
/** @type {?} */
var get = (/**
* @return {?}
*/
function () { return _this.matchMedia(breakpointMap, true); });
return this.resizeService.subscribe().pipe(map(get), startWith(get()), distinctUntilChanged((/**
* @param {?} x
* @param {?} y
* @return {?}
*/
function (x, y) { return x[0] === y[0]; })), map((/**
* @param {?} x
* @return {?}
*/
function (x) { return x[1]; })));
}
else {
/** @type {?} */
var get = (/**
* @return {?}
*/
function () { return _this.matchMedia(breakpointMap); });
return this.resizeService.subscribe().pipe(map(get), startWith(get()), distinctUntilChanged());
}
};
/**
* @private
* @param {?} breakpointMap
* @param {?=} fullMap
* @return {?}
*/
NzBreakpointService.prototype.matchMedia = /**
* @private
* @param {?} breakpointMap
* @param {?=} fullMap
* @return {?}
*/
function (breakpointMap, fullMap) {
var _this = this;
/** @type {?} */
var bp = NzBreakpointEnum.md;
/** @type {?} */
var breakpointBooleanMap = {};
Object.keys(breakpointMap).map((/**
* @param {?} breakpoint
* @return {?}
*/
function (breakpoint) {
/** @type {?} */
var castBP = (/** @type {?} */ (breakpoint));
/** @type {?} */
var matched = _this.mediaMatcher.matchMedia(gridResponsiveMap[castBP]).matches;
breakpointBooleanMap[(/** @type {?} */ (breakpoint))] = matched;
if (matched) {
bp = castBP;
}
}));
if (fullMap) {
return [bp, (/** @type {?} */ (breakpointBooleanMap))];
}
else {
return bp;
}
};
NzBreakpointService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
NzBreakpointService.ctorParameters = function () { return [
{ type: NzResizeService },
{ type: MediaMatcher }
]; };
/** @nocollapse */ NzBreakpointService.ɵprov = ɵɵdefineInjectable({ factory: function NzBreakpointService_Factory() { return new NzBreakpointService(ɵɵinject(NzResizeService), ɵɵinject(MediaMatcher)); }, token: NzBreakpointService, providedIn: "root" });
return NzBreakpointService;
}());
if (false) {
/**
* @type {?}
* @private
*/
NzBreakpointService.prototype.resizeService;
/**
* @type {?}
* @private
*/
NzBreakpointService.prototype.mediaMatcher;
}
/**
* @fileoverview added by tsickle
* Generated from: public-api.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* Generated from: ng-zorro-antd-core-services.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
export { NzBreakpointEnum, NzBreakpointService, NzDragService, NzResizeService, NzScrollService, NzSingletonService, SCROLL_SERVICE_PROVIDER, SCROLL_SERVICE_PROVIDER_FACTORY, gridResponsiveMap, siderResponsiveMap };
//# sourceMappingURL=ng-zorro-antd-core-services.js.map