{"version":3,"file":"ng-devui-nav-sprite.mjs","sources":["../../devui/nav-sprite/nav-sprite.component.ts","../../devui/nav-sprite/nav-sprite.component.html","../../devui/nav-sprite/nav-sprite.module.ts","../../devui/nav-sprite/ng-devui-nav-sprite.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewChildren\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { scrollAnimate } from 'ng-devui/utils';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { NavMenu, SpriteMode, SpriteOption } from './nav-sprite.type';\n\nconst DEFAULT_OPTIONS = {\n  top: '30%',\n  left: '80%',\n  zIndex: 1,\n};\n\n@Component({\n  selector: 'd-nav-sprite',\n  templateUrl: './nav-sprite.component.html',\n  styleUrls: ['./nav-sprite.component.scss'],\n})\nexport class NavSpriteComponent implements OnInit, AfterViewInit, OnDestroy {\n  @Input() target: HTMLElement; // 爬取目录的容器\n\n  @Input() scrollTarget: HTMLElement; // 指定滚动的DOM\n\n  @Input() view: {\n    top?: number;\n    bottom?: number;\n  } = { top: 0, bottom: 0 }; // 矫正参数\n\n  @Input() hashSupport = false; // 支持锚点\n\n  @Input() mode: SpriteMode = 'default'; // 模式\n\n  @Input() maxLevel = 3; // 最大层级\n\n  @Input() title; // 名称\n\n  @Input() indent = 2; // 缩进\n\n  @Input() width = 300; // 高度\n\n  @Input() height = 400; // 高度\n\n  @Input() isOpen = true; // sprite模式下的初始状态\n\n  @Input() spriteOption: SpriteOption; // sprite模式下的初始位置\n\n  @Input() navItemTemplate: TemplateRef<any>; // 导航目录模板\n\n  @ViewChild('spriteTemp', { static: true }) spriteTemp: TemplateRef<any>;\n\n  @ViewChild('defaultTemp', { static: true }) defaultTemp: TemplateRef<any>;\n\n  @ViewChild('defaultNavItemTemplate', { static: true }) defaultNavItemTemplate: TemplateRef<any>; // 单条导航目录的默认模板\n\n  @ViewChildren('items', { read: ElementRef })\n  items!: QueryList<ElementRef>;\n\n  @Output() afterNavInit = new EventEmitter(); // 组件初始化后返回组件实例\n\n  currentTemp: TemplateRef<any>;\n\n  menus: NavMenu[] = [];\n\n  activeIndex = -1;\n\n  isToViewByNav = false; // 区分是页面滚动还是点击目录事件\n\n  itemsInit = false;\n\n  contents;\n\n  targetContainer: HTMLElement;\n\n  scrollSub: Subscription;\n\n  isDragging = false;\n\n  mouseenterSub: Subscription;\n\n  itemsSub: Subscription;\n\n  timeGap = 60;\n\n  throttleTimeGap = 300;\n\n  document: Document;\n\n  get baseUrl() {\n    if (typeof window === 'undefined') {\n      return '';\n    }\n    return window.location.href.replace(window.location.hash, '');\n  }\n\n  constructor(\n    private render: Renderer2,\n    private element: ElementRef,\n    private router: Router,\n    private activeRout: ActivatedRoute,\n    private render2: Renderer2,\n    private cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private doc: any\n  ) {\n    this.document = this.doc;\n  }\n\n  ngOnInit() {\n    this.currentTemp = this.mode === 'default' ? this.defaultTemp : this.spriteTemp; // 设置当前的模式\n    this.navItemTemplate = this.navItemTemplate || this.defaultNavItemTemplate; // 设置当前的目录模板\n    this.targetContainer = this.scrollTarget || this.target;\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      const container = this.targetContainer === this.document.documentElement ? window : this.targetContainer;\n      this.scrollSub = fromEvent(container, 'scroll')\n        .pipe(throttleTime(this.throttleTimeGap))\n        .subscribe(() => {\n          this.scrollEventHandler();\n        });\n      this.itemsSub = this.items.changes.subscribe((items) => {\n        if (!this.itemsInit) {\n          this.itemsInit = true;\n          this.setActiveMenu();\n        }\n      });\n      this.initStyles();\n    }, 0);\n  }\n\n  setActiveIndex() {\n    if (this.hashSupport && this.activeRout.snapshot.fragment) {\n      this.activeIndex = this.menus.findIndex((menu) => {\n        return menu.label === this.activeRout.snapshot.fragment;\n      });\n      this.isToViewByNav = true;\n      scrollAnimate(\n        this.targetContainer,\n        this.targetContainer.scrollTop,\n        this.menus[this.activeIndex]?.scrollPosition?.startLine + 1,\n        undefined,\n        undefined,\n        () => {\n          setTimeout(() => {\n            this.isToViewByNav = false;\n          }, 160);\n        }\n      );\n    } else {\n      this.activeIndex = this.menus.findIndex((i) => {\n        const scrollTop = this.targetContainer.scrollTop;\n        return scrollTop < i?.scrollPosition.top;\n      });\n    }\n    this.cdr.detectChanges();\n  }\n\n  getNavData(setActive = true) {\n    const search = [];\n    for (let i = 0; i < this.maxLevel; i++) {\n      search.push(`h${i + 1}`);\n    }\n    this.contents = Array.from(this.target.querySelectorAll(search.join(',')));\n    this.menus = this.contents.map((i: HTMLElement) => {\n      return {\n        originEle: i,\n        level: i.tagName.match(/\\d+/)[0],\n        label: i.innerText,\n        href: this.baseUrl + '#' + i.innerText,\n        element: i,\n        scrollPosition: this.getScrollPosition(i),\n      };\n    });\n    if (setActive) {\n      this.setActiveIndex();\n    }\n  }\n\n  // 设定目录范围\n  getScrollPosition(ele) {\n    const containerTop = Math.max(this.targetContainer.getBoundingClientRect().top, 0);\n    const containerScrollTop = this.targetContainer.scrollTop;\n    const top = ele.getBoundingClientRect().bottom - containerTop + containerScrollTop - this.view.top + this.view.bottom;\n    const startLine = ele.getBoundingClientRect().top - containerTop + containerScrollTop - this.view.top + this.view.bottom;\n    return { top, startLine };\n  }\n\n  // 监听页面滚动\n  scrollEventHandler() {\n    if (!this.isToViewByNav) {\n      const scrollTop = this.targetContainer.scrollTop;\n      const index = this.menus.findIndex((ele, i) => {\n        if (this.menus[i + 1]) {\n          this.menus[i + 1].scrollPosition = this.getScrollPosition(this.menus[i + 1].element);\n          return scrollTop >= ele.scrollPosition.startLine && scrollTop < this.menus[i + 1]?.scrollPosition.startLine;\n        } else {\n          return false;\n        }\n      });\n      if (index !== -1 && this.activeIndex !== index) {\n        this.activeIndex = index;\n        this.menuScrollToTarget();\n      }\n    }\n  }\n\n  menuScrollToTarget() {\n    const item = this.items.toArray()[this.activeIndex];\n    const menuContainer = this.element.nativeElement.querySelector('.devui-nav-sprite-menus');\n    const start = menuContainer?.scrollTop;\n    const end = item?.nativeElement?.getBoundingClientRect().top + start - menuContainer?.getBoundingClientRect().top;\n    scrollAnimate(menuContainer, start, end, undefined, undefined, () => {\n      if (this.hashSupport) {\n        this.setUrlHash();\n      }\n    });\n  }\n\n  setActiveMenu() {\n    const item = this.items.toArray()[this.activeIndex];\n    const menuContainer = this.element.nativeElement.querySelector('.devui-nav-sprite-menus');\n    const top = item?.nativeElement.getBoundingClientRect().top - menuContainer.getBoundingClientRect().top;\n    scrollAnimate(menuContainer, menuContainer.scrollTop, top, undefined, undefined);\n  }\n\n  initStyles() {\n    if (this.mode === 'sprite') {\n      const content = this.element.nativeElement.querySelector('.devui-nav-sprite-content');\n      const spriteOptions = { ...DEFAULT_OPTIONS, ...this.spriteOption };\n      this.render.addClass(content, 'devui-is-sprite');\n      this.render.setStyle(content, 'position', 'fixed');\n      this.render.setStyle(content, 'top', spriteOptions.top);\n      this.render.setStyle(content, 'left', spriteOptions.left);\n      this.render.setStyle(content, 'z-index', spriteOptions.zIndex);\n      this.render.setStyle(content, 'height', this.height + 'px');\n      this.render.setStyle(content, 'width', this.width + 'px');\n    }\n    this.render.setStyle(this.element.nativeElement, 'height', this.height + 'px');\n    this.render.setStyle(this.element.nativeElement, 'width', this.width + 'px');\n    this.afterNavInit.emit(this);\n  }\n\n  // 设置hash\n  setUrlHash() {\n    const activeMenu = this.menus[this.activeIndex];\n    this.router.navigate([], { fragment: activeMenu.label, replaceUrl: true });\n  }\n\n  // addClass\n  setTargetActive() {\n    const target = this.menus[this.activeIndex];\n    this.menus.forEach((i) => {\n      if (i.originEle) {\n        this.render2.removeClass(i.originEle, 'nav-active');\n      }\n    });\n    this.render2.addClass(target?.originEle, 'nav-active');\n  }\n\n  navTo(index) {\n    if (this.activeIndex !== index) {\n      this.activeIndex = index;\n      const target = this.menus[index];\n      target.scrollPosition = this.getScrollPosition(target.element);\n      scrollAnimate(\n        this.targetContainer, this.targetContainer.scrollTop, target?.scrollPosition.startLine + 1, undefined, undefined, () => {\n          this.setUrlHash();\n          this.setTargetActive();\n          setTimeout(() => {\n            this.isToViewByNav = false;\n          }, this.timeGap);\n        });\n      this.isToViewByNav = true;\n    }\n  }\n\n  cdkDragStarted() {\n    this.isDragging = true;\n  }\n\n  cdkDragEnded() {\n    setTimeout(() => {\n      this.isDragging = false;\n    }, 100);\n  }\n\n  hide() {\n    this.isOpen = false;\n  }\n\n  open() {\n    if (this.isDragging) {\n      return;\n    }\n    this.isOpen = true;\n  }\n\n  constrainPosition(userPointerPosition, dragRef, dimensions, pickupPositionInElement) {\n    const point = {\n      x: userPointerPosition.x - pickupPositionInElement.x,\n      y: userPointerPosition.y - pickupPositionInElement.y,\n    };\n\n    if (point.y < 0) {\n      point.y = 0;\n    }\n\n    if (point.x < 0) {\n      point.x = 0;\n    }\n\n    if (point.x > window.innerWidth - dimensions.width) {\n      point.x = window.innerWidth - dimensions.width;\n    }\n\n    if (point.y > window.innerHeight - dimensions.height) {\n      point.y = window.innerHeight - dimensions.height;\n    }\n\n    return point;\n  }\n\n  ngOnDestroy() {\n    if (this.scrollSub) {\n      this.scrollSub.unsubscribe();\n    }\n\n    if (this.mouseenterSub) {\n      this.mouseenterSub.unsubscribe();\n    }\n\n    if (this.itemsSub) {\n      this.itemsSub.unsubscribe();\n    }\n  }\n}\n","<ng-container [ngTemplateOutlet]=\"currentTemp\"></ng-container>\r\n\r\n<!-- 精灵模式模板 -->\r\n<ng-template #spriteTemp>\r\n  <div\r\n    class=\"devui-nav-sprite-content\"\r\n    cdkDrag\r\n    [ngClass]=\"{ 'is-min': !isOpen }\"\r\n    (cdkDragStarted)=\"cdkDragStarted()\"\r\n    (cdkDragEnded)=\"cdkDragEnded()\"\r\n    [cdkDragConstrainPosition]=\"constrainPosition\"\r\n  >\r\n    <ng-container *ngIf=\"isOpen; else minTemp\">\r\n      <div class=\"devui-nav-sprite-header\" *ngIf=\"title !== undefined\" [ngClass]=\"{ 'devui-nav-sprite-header-with-title': title }\">\r\n        <div class=\"devui-nav-sprite-header-title\" title=\"{{ title }}\">{{ title }}</div>\r\n        <d-icon [icon]=\"closeTemplate\" [operable]=\"true\" (click)=\"hide()\"></d-icon>\r\n        <ng-template #closeTemplate>\r\n          <svg\r\n            width=\"16px\"\r\n            height=\"16px\"\r\n            viewBox=\"0 0 16 16\"\r\n            version=\"1.1\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n            xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n          >\r\n            <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n              <path\r\n                d=\"M14.6887175,1.25368865 C15.0770801,1.64205125 15.0121881,2.34244569 14.544513,2.81012074 L9.383,7.971 L14.544513,13.1322854 C14.9787827,13.5665551 15.0657548,14.2014859 14.7650189,14.6009195 L14.6887175,14.6887175 C14.3003549,15.0770801 13.5999604,15.0121881 13.1322854,14.544513 L13.1322854,14.544513 L7.971,9.383 L2.81012075,14.544513 C2.3424457,15.0121881 1.64205125,15.0770801 1.25368865,14.6887175 C0.865326051,14.3003549 0.930218063,13.5999605 1.39789313,13.1322854 L6.558,7.971 L1.39789311,2.81012074 C0.963623424,2.37585105 0.876651354,1.74092026 1.17738727,1.34148668 L1.25368865,1.25368865 C1.64205125,0.865326051 2.34244569,0.930218063 2.81012074,1.39789311 L2.81012074,1.39789311 L7.971,6.558 L13.1322854,1.39789311 C13.5999605,0.930218063 14.3003549,0.865326051 14.6887175,1.25368865 Z\"\r\n                id=\"close-icon\"\r\n                fill=\"#8A8E99\"\r\n                fill-rule=\"nonzero\"\r\n              ></path>\r\n            </g>\r\n          </svg>\r\n        </ng-template>\r\n      </div>\r\n      <ng-container [ngTemplateOutlet]=\"defaultItemsTemp\"></ng-container>\r\n    </ng-container>\r\n  </div>\r\n</ng-template>\r\n\r\n<!-- 默认模板 -->\r\n<ng-template #defaultTemp>\r\n  <div class=\"devui-nav-sprite-content\">\r\n    <div *ngIf=\"title !== undefined\" class=\"devui-nav-sprite-header\" [ngClass]=\"{ 'devui-nav-sprite-header-with-title': title }\">\r\n      {{ title }}\r\n    </div>\r\n    <ng-container [ngTemplateOutlet]=\"defaultItemsTemp\"></ng-container>\r\n  </div>\r\n</ng-template>\r\n\r\n<!-- 目录内容模板 -->\r\n<ng-template #defaultItemsTemp let-data>\r\n  <ul class=\"devui-nav-sprite-menus\" *ngIf=\"menus?.length\">\r\n    <li\r\n      #items\r\n      *ngFor=\"let item of menus; let i = index\"\r\n      [style]=\"'text-indent:' + indent * (item?.level - 1) + 'em;'\"\r\n      [ngClass]=\"{ active: i === activeIndex }\"\r\n      (click)=\"navTo(i)\"\r\n    >\r\n      <ng-container [ngTemplateOutlet]=\"navItemTemplate\" [ngTemplateOutletContext]=\"{ item: item }\"></ng-container>\r\n    </li>\r\n  </ul>\r\n</ng-template>\r\n\r\n<!-- 精灵模式最小化模板 -->\r\n<ng-template #minTemp>\r\n  <div class=\"devui-sprite-min\" dTooltip [content]=\"title\" (click)=\"open()\">\r\n    <svg\r\n      width=\"16px\"\r\n      height=\"16px\"\r\n      viewBox=\"0 0 16 16\"\r\n      version=\"1.1\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n    >\r\n      <g id=\"frame_contract\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n        <path\r\n          d=\"M10,6 L10,1 L12,1 L12,4 L15,4 L15,6 L10,6 Z M6,1 L6,6 L1,6 L1,4 L4,4 L4,1 L6,1 Z M10,15 L10,10 L15,10 L15,12 L12,12 L12,15 L10,15 Z M6,10 L6,15 L4,15 L4,12 L1,12 L1,10 L6,10 Z\"\r\n          id=\"形状\"\r\n          fill=\"#293040\"\r\n          fill-rule=\"nonzero\"\r\n        ></path>\r\n      </g>\r\n    </svg>\r\n  </div>\r\n</ng-template>\r\n\r\n<!-- 单个目录模板 -->\r\n<ng-template #defaultNavItemTemplate let-item=\"item\">\r\n  <div class=\"nav-item\" [title]=\"item?.label\">\r\n    <a [href]=\"item.href\" *ngIf=\"hashSupport\">{{ item?.label }}</a>\r\n    <span *ngIf=\"!hashSupport\">{{ item?.label }}</span>\r\n  </div>\r\n</ng-template>\r\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from 'ng-devui/button';\nimport { IconModule } from 'ng-devui/icon';\nimport { TooltipModule } from 'ng-devui/tooltip';\nimport { NavSpriteComponent } from './nav-sprite.component';\n\n@NgModule({\n  imports: [CommonModule, DragDropModule, ButtonModule, TooltipModule, IconModule],\n  declarations: [NavSpriteComponent],\n  exports: [NavSpriteComponent],\n})\nexport class NavSpriteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}