ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 31.2 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-core-services.mjs","sources":["../../components/core/services/resize.ts","../../components/core/services/singleton.ts","../../components/core/services/drag.ts","../../components/core/services/scroll.ts","../../components/core/services/breakpoint.ts","../../components/core/services/destroy.ts","../../components/core/services/image-preload.ts","../../components/core/services/public-api.ts","../../components/core/services/ng-zorro-antd-core-services.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable, NgZone, OnDestroy, Renderer2, RendererFactory2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { auditTime, finalize } from 'rxjs/operators';\n\nconst NOOP = (): void => {};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NzResizeService implements OnDestroy {\n private readonly resizeSource$ = new Subject<void>();\n\n private listeners = 0;\n\n private renderer: Renderer2;\n\n private disposeHandle = NOOP;\n\n private handler = (): void => {\n this.ngZone.run(() => {\n this.resizeSource$.next();\n });\n };\n\n constructor(private ngZone: NgZone, private rendererFactory2: RendererFactory2) {\n this.renderer = this.rendererFactory2.createRenderer(null, null);\n }\n\n ngOnDestroy(): void {\n // Caretaker note: the `handler` is an instance property (it's not defined on the class prototype).\n // The `handler` captures `this` and prevents the `NzResizeService` from being GC'd.\n this.handler = NOOP;\n }\n\n subscribe(): Observable<void> {\n this.registerListener();\n\n return this.resizeSource$.pipe(\n auditTime(16),\n finalize(() => this.unregisterListener())\n );\n }\n\n unsubscribe(): void {\n this.unregisterListener();\n }\n\n private registerListener(): void {\n if (this.listeners === 0) {\n this.ngZone.runOutsideAngular(() => {\n this.disposeHandle = this.renderer.listen('window', 'resize', this.handler);\n });\n }\n\n this.listeners += 1;\n }\n\n private unregisterListener(): void {\n this.listeners -= 1;\n\n if (this.listeners === 0) {\n this.disposeHandle();\n this.disposeHandle = NOOP;\n }\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { environment } from 'ng-zorro-antd/core/environments';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\ninterface SingletonRegistryItem {\n target: NzSafeAny;\n}\n\n/**\n * When running in test, singletons should not be destroyed. So we keep references of singletons\n * in this global variable.\n */\nconst testSingleRegistry = new Map<string, SingletonRegistryItem>();\n\n/**\n * Some singletons should have life cycle that is same to Angular's. This service make sure that\n * those singletons get destroyed in HMR.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NzSingletonService {\n private get singletonRegistry(): Map<string, SingletonRegistryItem> {\n return environment.isTestMode ? testSingleRegistry : this._singletonRegistry;\n }\n\n /**\n * This registry is used to register singleton in dev mode.\n * So that singletons get destroyed when hot module reload happens.\n *\n * This works in prod mode too but with no specific effect.\n */\n private _singletonRegistry = new Map<string, SingletonRegistryItem>();\n\n registerSingletonWithKey(key: string, target: NzSafeAny): void {\n const alreadyHave = this.singletonRegistry.has(key);\n const item: SingletonRegistryItem = alreadyHave ? this.singletonRegistry.get(key)! : this.withNewTarget(target);\n\n if (!alreadyHave) {\n this.singletonRegistry.set(key, item);\n }\n }\n\n getSingletonWithKey<T>(key: string): T | null {\n return this.singletonRegistry.has(key) ? (this.singletonRegistry.get(key)!.target as T) : null;\n }\n\n private withNewTarget(target: NzSafeAny): SingletonRegistryItem {\n return {\n target\n };\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable, Renderer2, RendererFactory2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, finalize, map } from 'rxjs/operators';\n\nimport { getEventPosition, isTouchEvent } from 'ng-zorro-antd/core/util';\n\ninterface Point {\n x: number;\n y: number;\n}\n\ntype Delta = Point;\n\ninterface HandlerItem {\n handler?(e: Event): void;\n\n teardown(): void;\n}\n\nfunction getPagePosition(event: MouseEvent | TouchEvent): Point {\n const e = getEventPosition(event);\n return {\n x: e.pageX,\n y: e.pageY\n };\n}\n\n/**\n * This module provide a global dragging service to other components.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NzDragService {\n private draggingThreshold = 5;\n private currentDraggingSequence: Subject<MouseEvent | Touch> | null = null;\n private currentStartingPoint: Point | null = null;\n private handleRegistry = new Set<HandlerItem>();\n private renderer: Renderer2;\n\n constructor(rendererFactory2: RendererFactory2) {\n this.renderer = rendererFactory2.createRenderer(null, null);\n }\n\n requestDraggingSequence(event: MouseEvent | TouchEvent): Observable<Delta> {\n if (!this.handleRegistry.size) {\n this.registerDraggingHandler(isTouchEvent(event));\n }\n\n // Complete last dragging sequence if a new target is dragged.\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.complete();\n }\n\n this.currentStartingPoint = getPagePosition(event);\n this.currentDraggingSequence = new Subject<MouseEvent | Touch>();\n\n return this.currentDraggingSequence.pipe(\n map((e: MouseEvent | Touch) => ({\n x: e.pageX - this.currentStartingPoint!.x,\n y: e.pageY - this.currentStartingPoint!.y\n })),\n filter((e: Delta) => Math.abs(e.x) > this.draggingThreshold || Math.abs(e.y) > this.draggingThreshold),\n finalize(() => this.teardownDraggingSequence())\n );\n }\n\n private registerDraggingHandler(isTouch: boolean): void {\n if (isTouch) {\n this.handleRegistry.add({\n teardown: this.renderer.listen('document', 'touchmove', (e: TouchEvent) => {\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.next(e.touches[0] || e.changedTouches[0]);\n }\n })\n });\n this.handleRegistry.add({\n teardown: this.renderer.listen('document', 'touchend', () => {\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.complete();\n }\n })\n });\n } else {\n this.handleRegistry.add({\n teardown: this.renderer.listen('document', 'mousemove', e => {\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.next(e);\n }\n })\n });\n this.handleRegistry.add({\n teardown: this.renderer.listen('document', 'mouseup', () => {\n if (this.currentDraggingSequence) {\n this.currentDraggingSequence.complete();\n }\n })\n });\n }\n }\n\n private teardownDraggingSequence(): void {\n this.currentDraggingSequence = null;\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, NgZone } from '@angular/core';\n\nimport { reqAnimFrame } from 'ng-zorro-antd/core/polyfill';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nexport type EasyingFn = (t: number, b: number, c: number, d: number) => number;\n\nfunction easeInOutCubic(t: number, b: number, c: number, d: number): number {\n const cc = c - b;\n let tt = t / (d / 2);\n if (tt < 1) {\n return (cc / 2) * tt * tt * tt + b;\n } else {\n return (cc / 2) * ((tt -= 2) * tt * tt + 2) + b;\n }\n}\n\nexport interface NzScrollToOptions {\n /** Scroll container, default as window */\n easing?: EasyingFn;\n /** Scroll end callback */\n callback?(): void;\n /** Animation duration, default as 450 */\n duration?: number;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NzScrollService {\n private doc: Document;\n\n constructor(private ngZone: NgZone, @Inject(DOCUMENT) doc: NzSafeAny) {\n this.doc = doc;\n }\n\n /** Set the position of the scroll bar of `el`. */\n setScrollTop(el: Element | Window, topValue: number = 0): void {\n if (el === window) {\n this.doc.body.scrollTop = topValue;\n this.doc.documentElement!.scrollTop = topValue;\n } else {\n (el as Element).scrollTop = topValue;\n }\n }\n\n /** Get position of `el` against window. */\n getOffset(el: Element): { top: number; left: number } {\n const ret = {\n top: 0,\n left: 0\n };\n if (!el || !el.getClientRects().length) {\n return ret;\n }\n\n const rect = el.getBoundingClientRect();\n if (rect.width || rect.height) {\n const doc = el.ownerDocument!.documentElement;\n ret.top = rect.top - doc!.clientTop;\n ret.left = rect.left - doc!.clientLeft;\n } else {\n ret.top = rect.top;\n ret.left = rect.left;\n }\n\n return ret;\n }\n\n /** Get the position of the scoll bar of `el`. */\n // TODO: remove '| Window' as the fallback already happens here\n getScroll(target?: Element | HTMLElement | Window | Document | null, top: boolean = true): number {\n if (typeof window === 'undefined') {\n return 0;\n }\n const method = top ? 'scrollTop' : 'scrollLeft';\n let result = 0;\n if (this.isWindow(target)) {\n result = (target as Window)[top ? 'pageYOffset' : 'pageXOffset'];\n } else if (target instanceof Document) {\n result = target.documentElement[method];\n } else if (target) {\n result = (target as HTMLElement)[method];\n }\n if (target && !this.isWindow(target) && typeof result !== 'number') {\n result = ((target as HTMLElement).ownerDocument || (target as Document)).documentElement[method];\n }\n return result;\n }\n\n isWindow(obj: NzSafeAny): boolean {\n return obj !== null && obj !== undefined && obj === obj.window;\n }\n\n /**\n * Scroll `el` to some position with animation.\n *\n * @param containerEl container, `window` by default\n * @param y Scroll to `top`, 0 by default\n */\n scrollTo(\n containerEl?: Element | HTMLElement | Window | Document | null,\n y: number = 0,\n options: NzScrollToOptions = {}\n ): void {\n const target = containerEl ? containerEl : window;\n const scrollTop = this.getScroll(target);\n const startTime = Date.now();\n const { easing, callback, duration = 450 } = options;\n const frameFunc = (): void => {\n const timestamp = Date.now();\n const time = timestamp - startTime;\n const nextScrollTop = (easing || easeInOutCubic)(time > duration ? duration : time, scrollTop, y, duration);\n if (this.isWindow(target)) {\n (target as Window).scrollTo(window.pageXOffset, nextScrollTop);\n } else if (target instanceof HTMLDocument || target.constructor.name === 'HTMLDocument') {\n (target as HTMLDocument).documentElement.scrollTop = nextScrollTop;\n } else {\n (target as HTMLElement).scrollTop = nextScrollTop;\n }\n if (time < duration) {\n reqAnimFrame(frameFunc);\n } else if (typeof callback === 'function') {\n // Caretaker note: the `frameFunc` is called within the `<root>` zone, but we have to re-enter\n // the Angular zone when calling custom callback to be backwards-compatible.\n this.ngZone.run(callback);\n }\n };\n // Caretaker note: the `requestAnimationFrame` triggers change detection, but updating a `scrollTop` property or\n // calling `window.scrollTo` doesn't require Angular to run `ApplicationRef.tick()`.\n this.ngZone.runOutsideAngular(() => reqAnimFrame(frameFunc));\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { MediaMatcher } from '@angular/cdk/layout';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, takeUntil } from 'rxjs/operators';\n\nimport { NzResizeService } from './resize';\n\nexport enum NzBreakpointEnum {\n xxl = 'xxl',\n xl = 'xl',\n lg = 'lg',\n md = 'md',\n sm = 'sm',\n xs = 'xs'\n}\n\nexport type BreakpointMap = { [key in NzBreakpointEnum]: string };\nexport type BreakpointBooleanMap = { [key in NzBreakpointEnum]: boolean };\nexport type NzBreakpointKey = keyof typeof NzBreakpointEnum;\n\nexport const gridResponsiveMap: BreakpointMap = {\n xs: '(max-width: 575px)',\n sm: '(min-width: 576px)',\n md: '(min-width: 768px)',\n lg: '(min-width: 992px)',\n xl: '(min-width: 1200px)',\n xxl: '(min-width: 1600px)'\n};\n\nexport const siderResponsiveMap: BreakpointMap = {\n xs: '(max-width: 479.98px)',\n sm: '(max-width: 575.98px)',\n md: '(max-width: 767.98px)',\n lg: '(max-width: 991.98px)',\n xl: '(max-width: 1199.98px)',\n xxl: '(max-width: 1599.98px)'\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NzBreakpointService implements OnDestroy {\n private destroy$ = new Subject<void>();\n\n constructor(private resizeService: NzResizeService, private mediaMatcher: MediaMatcher) {\n this.resizeService\n .subscribe()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {});\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n subscribe(breakpointMap: BreakpointMap): Observable<NzBreakpointEnum>;\n subscribe(breakpointMap: BreakpointMap, fullMap: true): Observable<BreakpointBooleanMap>;\n subscribe(breakpointMap: BreakpointMap, fullMap?: true): Observable<NzBreakpointEnum | BreakpointBooleanMap> {\n if (fullMap) {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const get = () => this.matchMedia(breakpointMap, true);\n return this.resizeService.subscribe().pipe(\n map(get),\n startWith(get()),\n distinctUntilChanged(\n (x: [NzBreakpointEnum, BreakpointBooleanMap], y: [NzBreakpointEnum, BreakpointBooleanMap]) => x[0] === y[0]\n ),\n map(x => x[1])\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const get = () => this.matchMedia(breakpointMap);\n return this.resizeService.subscribe().pipe(map(get), startWith(get()), distinctUntilChanged());\n }\n }\n\n private matchMedia(breakpointMap: BreakpointMap): NzBreakpointEnum;\n private matchMedia(breakpointMap: BreakpointMap, fullMap: true): [NzBreakpointEnum, BreakpointBooleanMap];\n private matchMedia(\n breakpointMap: BreakpointMap,\n fullMap?: true\n ): NzBreakpointEnum | [NzBreakpointEnum, BreakpointBooleanMap] {\n let bp = NzBreakpointEnum.md;\n\n const breakpointBooleanMap: Partial<BreakpointBooleanMap> = {};\n\n Object.keys(breakpointMap).map(breakpoint => {\n const castBP = breakpoint as NzBreakpointEnum;\n const matched = this.mediaMatcher.matchMedia(gridResponsiveMap[castBP]).matches;\n\n breakpointBooleanMap[breakpoint as NzBreakpointEnum] = matched;\n\n if (matched) {\n bp = castBP;\n }\n });\n\n if (fullMap) {\n return [bp, breakpointBooleanMap as BreakpointBooleanMap];\n } else {\n return bp;\n }\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class NzDestroyService extends Subject<void> implements OnDestroy {\n ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\ninterface PreloadOption {\n src: string;\n srcset?: string;\n}\n\nexport type PreloadDisposeHandle = () => void;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ImagePreloadService {\n private counter = new Map<string, number>();\n private linkRefs = new Map<string, HTMLLinkElement>();\n\n constructor(@Inject(DOCUMENT) private document: NzSafeAny, private platform: Platform) {}\n\n addPreload(option: PreloadOption): PreloadDisposeHandle {\n if (this.platform.isBrowser) {\n return () => void 0;\n }\n const uniqueKey = `${option.src}${option.srcset}`;\n let currentCount = this.counter.get(uniqueKey) || 0;\n currentCount++;\n this.counter.set(uniqueKey, currentCount);\n if (!this.linkRefs.has(uniqueKey)) {\n const linkNode = this.appendPreloadLink(option);\n this.linkRefs.set(uniqueKey, linkNode);\n }\n return () => {\n if (this.counter.has(uniqueKey)) {\n let count = this.counter.get(uniqueKey)!;\n count--;\n if (count === 0) {\n const linkNode = this.linkRefs.get(uniqueKey)!;\n this.removePreloadLink(linkNode);\n this.counter.delete(uniqueKey);\n this.linkRefs.delete(uniqueKey);\n } else {\n this.counter.set(uniqueKey, count);\n }\n }\n };\n }\n\n private appendPreloadLink(option: PreloadOption): HTMLLinkElement {\n const linkNode = this.document.createElement('link') as HTMLLinkElement;\n linkNode.setAttribute('rel', 'preload');\n linkNode.setAttribute('as', 'image');\n linkNode.setAttribute('href', option.src);\n\n if (option.srcset) {\n linkNode.setAttribute('imagesrcset', option.srcset);\n }\n this.document.head.appendChild(linkNode);\n return linkNode;\n }\n\n private removePreloadLink(linkNode: HTMLLinkElement): void {\n if (this.document.head.contains(linkNode)) {\n this.document.head.removeChild(linkNode);\n }\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './resize';\nexport * from './singleton';\nexport * from './drag';\nexport * from './scroll';\nexport * from './breakpoint';\nexport * from './destroy';\nexport * from './image-preload';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}