UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

1 lines 33.5 kB
{"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(\n private ngZone: NgZone,\n private rendererFactory2: RendererFactory2\n ) {\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 unregisterSingletonWithKey(key: string): void {\n if (this.singletonRegistry.has(key)) {\n this.singletonRegistry.delete(key);\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 { Injectable, NgZone, inject } 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 = inject(DOCUMENT);\n\n constructor(private ngZone: NgZone) {}\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 = Record<NzBreakpointEnum, string>;\nexport type BreakpointBooleanMap = Record<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(\n private resizeService: NzResizeService,\n private mediaMatcher: MediaMatcher\n ) {\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 { Injectable, inject } from '@angular/core';\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 private document: Document = inject(DOCUMENT);\n\n constructor(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":["i1.NzResizeService"],"mappings":"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"}