ng-devui
Version:
DevUI components based on Angular
1 lines • 29.9 kB
Source Map (JSON)
{"version":3,"file":"ng-devui-anchor.mjs","sources":["../../devui/anchor/anchor.service.ts","../../devui/anchor/anchor.directive.ts","../../devui/anchor/anchor-box.directive.ts","../../devui/anchor/anchor-link.directive.ts","../../devui/anchor/anchor-box-hash.directive.ts","../../devui/anchor/anchor.module.ts","../../devui/anchor/ng-devui-anchor.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\n@Injectable()\nexport class AnchorService {\n currentActiveAnchorSubject = new ReplaySubject(1);\n currentActiveAnchorObs = this.currentActiveAnchorSubject.asObservable();\n currentActiveAnchor: string;\n anchorList: string[] = [];\n\n setCurrentActive(anchor: string) {\n if (this.anchorList.indexOf(anchor) >= 0) {\n this.currentActiveAnchor = anchor;\n this.currentActiveAnchorSubject.next(anchor);\n } else if (!anchor) {\n this.currentActiveAnchor = '';\n }\n }\n\n getCurrentActive() {\n return this.currentActiveAnchorObs;\n }\n}\n","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport { AnchorService } from './anchor.service';\nimport { AnchorActiveChangeSource, IAnchorBox } from './anchor.type';\n\n@Directive({\n selector: '[dAnchor]',\n})\nexport class AnchorDirective implements AfterViewInit, OnDestroy {\n @Input('dAnchor') anchor: string;\n @Input() anchorActive = 'active';\n _isActive: boolean;\n set isActive(active: boolean) {\n this._isActive = active;\n this.activeChangeSubject.next(active);\n if (active) {\n this.anchorService.setCurrentActive(this.anchor);\n } else if (this.anchorService.currentActiveAnchor === this.anchor) {\n this.anchorService.setCurrentActive('');\n }\n }\n get isActive() {\n return this._isActive;\n }\n activeChangeBy: AnchorActiveChangeSource;\n activeChangeSubscription: Subscription;\n activeChangeSubject = new ReplaySubject(1);\n lastActiveBy: string;\n\n element: HTMLElement;\n _boxElement: IAnchorBox;\n set boxElement(box: IAnchorBox) {\n this._boxElement = box;\n this.updateScrollListenTarget();\n }\n get boxElement() {\n return this._boxElement;\n }\n\n scrollListenTarget: Element | Window;\n REACH_TOP_VISION_OFFSET = 50;\n\n private THROTTLE_DELAY = 100;\n private THROTTLE_TRIGGER = 600;\n private scrollPreStart;\n private scrollTimer;\n\n constructor(private el: ElementRef, private anchorService: AnchorService) {\n this.element = this.el.nativeElement;\n }\n\n ngAfterViewInit() {\n this.activeChangeSubscription = this.activeChangeSubject.asObservable().subscribe((active) => {\n if (this.lastActiveBy) {\n this.element.classList.remove(this.lastActiveBy);\n }\n if (active) {\n this.element.classList.add(this.anchorActive);\n this.lastActiveBy = 'anchor-active-by-' + this.activeChangeBy;\n setTimeout(() => {\n this.element.classList.add(this.lastActiveBy);\n }, 0);\n } else {\n this.element.classList.remove(this.anchorActive);\n }\n });\n }\n\n ngOnDestroy() {\n this.scrollListenTarget.removeEventListener('scroll', this.throttle);\n if (this.activeChangeSubscription) {\n this.activeChangeSubscription.unsubscribe();\n }\n }\n\n @HostListener('click') // 鼠标落入范围,激活anchor\n beFocused() {\n this.boxElement.forceActiveAnchor(this.anchor, 'click-inside');\n this.boxElement.isScrollingToTarget = false;\n }\n\n throttle = () => {\n const fn = this.checkActiveStatus;\n const time = Date.now();\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n }\n if (!this.scrollPreStart) {\n this.scrollPreStart = time;\n }\n if (time - this.scrollPreStart > this.THROTTLE_TRIGGER) {\n fn();\n this.scrollPreStart = null;\n this.scrollTimer = null;\n } else {\n this.scrollTimer = setTimeout(() => {\n fn();\n this.scrollPreStart = null;\n this.scrollTimer = null;\n }, this.THROTTLE_DELAY);\n }\n };\n\n checkActiveStatus = (activeChangeBy?: AnchorActiveChangeSource) => {\n if (this.boxElement.isScrollingToTarget) {\n return;\n }\n const dom = this.boxElement.scrollTarget;\n const fix = dom && dom instanceof Element ? dom.getBoundingClientRect().top : 0;\n const top = this.element.getBoundingClientRect().top - fix - ((this.boxElement.view && this.boxElement.view.top) || 0);\n const bottom = this.element.getBoundingClientRect().bottom - fix - ((this.boxElement.view && this.boxElement.view.top) || 0);\n const currentActiveAnchor = this.anchorService.currentActiveAnchor;\n\n if (this.anchor === this.boxElement.defaultAnchor && (!currentActiveAnchor || currentActiveAnchor === this.boxElement.defaultAnchor)) {\n this.activeChangeBy = activeChangeBy || 'scroll';\n this.isActive = bottom > this.REACH_TOP_VISION_OFFSET;\n return;\n }\n\n this.activeChangeBy = activeChangeBy || 'scroll';\n this.isActive = bottom > this.REACH_TOP_VISION_OFFSET && top < this.REACH_TOP_VISION_OFFSET;\n };\n\n updateScrollListenTarget() {\n if (this.scrollListenTarget) {\n return;\n }\n if (this.boxElement && typeof window !== 'undefined') {\n this.scrollListenTarget = this.boxElement.scrollTarget || window; // window有scroll事件,document.documentElement没有scroll事件\n }\n this.scrollListenTarget.addEventListener('scroll', this.throttle, { passive: true });\n }\n}\n","import { ContentChildren, Directive, Input, OnChanges, OnDestroy, QueryList, SimpleChanges } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { AnchorDirective } from './anchor.directive';\nimport { AnchorService } from './anchor.service';\nimport { AnchorActiveChangeSource, IAnchorBox } from './anchor.type';\n\n@Directive({\n selector: '[dAnchorBox]',\n})\nexport class AnchorBoxDirective implements IAnchorBox, OnChanges, OnDestroy {\n public isScrollingToTarget = false;\n private activeChangeSubject = new Subject();\n public activeChange = this.activeChangeSubject.asObservable();\n isInit = true;\n refreshAnchorMap: Subject<void> = new Subject<void>();\n anchorMap: { [anchor: string]: AnchorDirective };\n _anchorList: QueryList<AnchorDirective>;\n sub: Subscription;\n @Input() view: {\n top?: number;\n bottom?: number;\n };\n @Input() defaultAnchor: string;\n @Input() scrollTarget: HTMLElement;\n @ContentChildren(AnchorDirective, { descendants: true })\n set anchorList(list: QueryList<AnchorDirective>) {\n if (this.sub) {\n this.sub.unsubscribe();\n }\n this.sub = new Subscription();\n this.anchorMap = {};\n this._anchorList = list;\n this.anchorService.anchorList = this._anchorList.map((item) => item.anchor);\n this._anchorList.toArray().forEach((targetAnchor) => {\n this.anchorMap[targetAnchor.anchor] = targetAnchor;\n targetAnchor.boxElement = this;\n this.sub.add(\n targetAnchor.activeChangeSubject.pipe(filter((bool) => !!bool)).subscribe(() => {\n this.activeChangeSubject.next(targetAnchor);\n })\n );\n });\n this.refreshAnchorMap.next();\n }\n\n get anchorList() {\n return this._anchorList;\n }\n\n constructor(private anchorService: AnchorService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.defaultAnchor?.currentValue) {\n this.forceActiveAnchor(this.defaultAnchor, 'initial');\n }\n }\n\n ngOnDestroy(): void {\n this.activeChangeSubject.complete();\n if (this.sub) {\n this.sub.unsubscribe();\n }\n }\n\n forceActiveAnchor(anchorName: string, forceActiveSource: AnchorActiveChangeSource = 'scroll', deactivateOtherAnchor = true) {\n if (this.anchorMap && this.anchorService.anchorList.indexOf(anchorName) >= 0) {\n this.anchorMap[anchorName].activeChangeBy = forceActiveSource;\n this.anchorMap[anchorName].isActive = true;\n if (deactivateOtherAnchor) {\n Object.keys(this.anchorMap)\n .filter((name) => name !== anchorName)\n .map((name) => this.anchorMap[name])\n .forEach((anchor) => {\n anchor.activeChangeBy = forceActiveSource;\n anchor.isActive = false;\n });\n }\n }\n }\n}\n","import { Directive, forwardRef, HostBinding, HostListener, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { scrollAnimate } from 'ng-devui/utils';\nimport { AnchorBoxDirective } from './anchor-box.directive';\nimport { AnchorDirective } from './anchor.directive';\nimport { AnchorActiveChangeSource } from './anchor.type';\n\n@Directive({\n selector: '[dAnchorLink]',\n})\nexport class AnchorLinkDirective implements OnInit, OnDestroy {\n @HostBinding('class') get anchorActiveClass() {\n return this.anchorBlock && this.anchorBlock.isActive ? this.anchorActive || '' : '';\n }\n private _anchorName;\n @Input('dAnchorLink')\n set anchorName(anchor: string) {\n this._anchorName = anchor;\n this.bindAnchorAfterBoxReady();\n }\n get anchorName() {\n return this._anchorName;\n }\n\n @Input() anchorActive: string;\n\n boxElement: AnchorBoxDirective;\n anchorBlock: AnchorDirective;\n bindingAnchorTimer;\n subscription;\n\n constructor(@Inject(forwardRef(() => AnchorBoxDirective)) box: AnchorBoxDirective) {\n this.boxElement = box;\n }\n\n ngOnInit() {\n this.subscribeAnchorMapChange();\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n subscribeAnchorMapChange() {\n if (this.boxElement) {\n this.subscription = this.boxElement.refreshAnchorMap.subscribe(() => {\n if (this.bindingAnchorTimer) {\n clearTimeout(this.bindingAnchorTimer);\n this.bindingAnchorTimer = undefined;\n }\n this.bindAnchorAfterBoxReady();\n });\n }\n }\n\n bindAnchorAfterBoxReady = () => {\n if (this.boxElement.anchorMap) {\n setTimeout(() => {\n this.anchorBlock = this.boxElement.anchorMap[this.anchorName];\n }, 0);\n } else {\n this.bindingAnchorTimer = setTimeout(this.bindAnchorAfterBoxReady, 500);\n }\n };\n\n @HostListener('click')\n scrollToAnchor(activeChangeBy?: AnchorActiveChangeSource) {\n if (typeof document === 'undefined') {\n return;\n }\n if (!this.anchorBlock) {\n return;\n }\n const callback = () => {\n setTimeout(() => {\n this.boxElement.forceActiveAnchor(this.anchorName, activeChangeBy || 'anchor-link');\n this.boxElement.isScrollingToTarget = false;\n }, 120);\n };\n ((container: Element, anchor: Element) => {\n let containerScrollTop = container.scrollTop;\n let containerOffsetTop = container.getBoundingClientRect().top;\n if (container === document.documentElement) {\n containerScrollTop += document.body.scrollTop; // scrollTop兼容性问题\n containerOffsetTop = 0; // offsettop抵消\n }\n scrollAnimate(\n container,\n containerScrollTop,\n containerScrollTop +\n anchor.getBoundingClientRect().top -\n containerOffsetTop -\n ((this.boxElement.view && this.boxElement.view.top) || 0),\n undefined,\n undefined,\n callback\n );\n })(this.boxElement.scrollTarget || document.documentElement, this.anchorBlock.element);\n this.boxElement.isScrollingToTarget = true;\n }\n}\n","import { AfterViewInit, Directive, Input, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Subscription} from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\nimport { AnchorBoxDirective } from './anchor-box.directive';\nimport { AnchorLinkDirective } from './anchor-link.directive';\nimport { AnchorDirective } from './anchor.directive';\n\n@Directive({\n selector: '[dAnchorBox][dAnchorHashSupport]'\n})\nexport class AnchorBoxHashSupportDirective implements OnInit, AfterViewInit, OnDestroy {\n @Input() updateUrlWhenAnchorActive = true;\n @Input() scrollToAnchorByHashOnlyInit = false;\n sub: Subscription = new Subscription();\n manual = false;\n\n constructor(private box: AnchorBoxDirective, private router: Router, private route: ActivatedRoute) {}\n\n ngOnInit(): void {\n this.sub.add(this.box.activeChange.pipe(\n debounceTime(300),\n filter(anchor => this.updateUrlWhenAnchorActive)\n ).subscribe(this.navigateToHash));\n\n this.sub.add(this.router.events.pipe(\n filter(event => event instanceof NavigationEnd)\n ).subscribe(\n this.navigateToAnchor\n ));\n }\n\n ngAfterViewInit(): void {\n const frag = this.route.snapshot.fragment;\n setTimeout(() => {\n this.scrollToFragment(frag);\n }, 120);\n }\n\n ngOnDestroy(): void {\n if (this.sub) {\n this.sub.unsubscribe();\n }\n }\n\n navigateToHash = (targetAnchor: AnchorDirective) => {\n if (targetAnchor.activeChangeBy === 'initial') { return; }\n this.router.navigate([], { fragment: targetAnchor.anchor, replaceUrl: true });\n this.manual = true;\n };\n\n navigateToAnchor = (event: NavigationEnd) => {\n if (this.manual) {\n this.manual = false;\n return;\n }\n if (this.scrollToAnchorByHashOnlyInit) { return; }\n const frag = this.router.parseUrl(event.url).fragment;\n this.scrollToFragment(frag);\n };\n\n scrollToFragment = (frag: string) => {\n if (!frag) { return; }\n if (this.box.anchorMap[frag]) {\n const tempAnchor = new AnchorLinkDirective(this.box);\n tempAnchor.anchorName = frag;\n tempAnchor.anchorBlock = this.box.anchorMap[frag];\n tempAnchor.scrollToAnchor('fragment');\n }\n };\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { AnchorBoxHashSupportDirective } from './anchor-box-hash.directive';\nimport { AnchorBoxDirective } from './anchor-box.directive';\nimport { AnchorLinkDirective } from './anchor-link.directive';\nimport { AnchorDirective } from './anchor.directive';\nimport { AnchorService } from './anchor.service';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule\n ],\n declarations: [\n AnchorLinkDirective,\n AnchorBoxDirective,\n AnchorDirective,\n AnchorBoxHashSupportDirective\n ],\n exports: [\n AnchorLinkDirective,\n AnchorBoxDirective,\n AnchorDirective,\n AnchorBoxHashSupportDirective\n ],\n providers: [AnchorService],\n})\nexport class AnchorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AnchorService","i1.AnchorBoxDirective"],"mappings":"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"}