ng-zorro-antd-anchor.mjs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474
  1. import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
  2. import * as i0 from '@angular/core';
  3. import { EventEmitter, inject, numberAttribute, booleanAttribute, Output, Input, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, Component, TemplateRef, ContentChild, NgModule } from '@angular/core';
  4. import { __esDecorate, __runInitializers } from 'tslib';
  5. import * as i3 from '@angular/cdk/platform';
  6. import { normalizePassiveListenerOptions } from '@angular/cdk/platform';
  7. import { Subject } from 'rxjs';
  8. import { throttleTime, takeUntil } from 'rxjs/operators';
  9. import * as i4 from 'ng-zorro-antd/affix';
  10. import { NzAffixModule } from 'ng-zorro-antd/affix';
  11. import * as i1 from 'ng-zorro-antd/core/config';
  12. import { WithConfig } from 'ng-zorro-antd/core/config';
  13. import { fromEventOutsideAngular, numberAttributeWithZeroFallback } from 'ng-zorro-antd/core/util';
  14. import * as i2 from 'ng-zorro-antd/core/services';
  15. /**
  16. * Use of this source code is governed by an MIT-style license that can be
  17. * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
  18. */
  19. function getOffsetTop(element, container) {
  20. if (!element || !element.getClientRects().length) {
  21. return 0;
  22. }
  23. const rect = element.getBoundingClientRect();
  24. if (rect.width || rect.height) {
  25. if (container === window) {
  26. const documentElement = element.ownerDocument.documentElement;
  27. return rect.top - documentElement.clientTop;
  28. }
  29. return rect.top - container.getBoundingClientRect().top;
  30. }
  31. return rect.top;
  32. }
  33. const VISIBLE_CLASSNAME = 'ant-anchor-ink-ball-visible';
  34. const NZ_CONFIG_MODULE_NAME = 'anchor';
  35. const sharpMatcherRegx = /#([^#]+)$/;
  36. const passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });
  37. let NzAnchorComponent = (() => {
  38. let _nzShowInkInFixed_decorators;
  39. let _nzShowInkInFixed_initializers = [];
  40. let _nzShowInkInFixed_extraInitializers = [];
  41. let _nzBounds_decorators;
  42. let _nzBounds_initializers = [];
  43. let _nzBounds_extraInitializers = [];
  44. let _nzOffsetTop_decorators;
  45. let _nzOffsetTop_initializers = [];
  46. let _nzOffsetTop_extraInitializers = [];
  47. let _nzTargetOffset_decorators;
  48. let _nzTargetOffset_initializers = [];
  49. let _nzTargetOffset_extraInitializers = [];
  50. return class NzAnchorComponent {
  51. static {
  52. const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
  53. _nzShowInkInFixed_decorators = [WithConfig()];
  54. _nzBounds_decorators = [WithConfig()];
  55. _nzOffsetTop_decorators = [WithConfig()];
  56. _nzTargetOffset_decorators = [WithConfig()];
  57. __esDecorate(null, null, _nzShowInkInFixed_decorators, { kind: "field", name: "nzShowInkInFixed", static: false, private: false, access: { has: obj => "nzShowInkInFixed" in obj, get: obj => obj.nzShowInkInFixed, set: (obj, value) => { obj.nzShowInkInFixed = value; } }, metadata: _metadata }, _nzShowInkInFixed_initializers, _nzShowInkInFixed_extraInitializers);
  58. __esDecorate(null, null, _nzBounds_decorators, { kind: "field", name: "nzBounds", static: false, private: false, access: { has: obj => "nzBounds" in obj, get: obj => obj.nzBounds, set: (obj, value) => { obj.nzBounds = value; } }, metadata: _metadata }, _nzBounds_initializers, _nzBounds_extraInitializers);
  59. __esDecorate(null, null, _nzOffsetTop_decorators, { kind: "field", name: "nzOffsetTop", static: false, private: false, access: { has: obj => "nzOffsetTop" in obj, get: obj => obj.nzOffsetTop, set: (obj, value) => { obj.nzOffsetTop = value; } }, metadata: _metadata }, _nzOffsetTop_initializers, _nzOffsetTop_extraInitializers);
  60. __esDecorate(null, null, _nzTargetOffset_decorators, { kind: "field", name: "nzTargetOffset", static: false, private: false, access: { has: obj => "nzTargetOffset" in obj, get: obj => obj.nzTargetOffset, set: (obj, value) => { obj.nzTargetOffset = value; } }, metadata: _metadata }, _nzTargetOffset_initializers, _nzTargetOffset_extraInitializers);
  61. if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
  62. }
  63. nzConfigService;
  64. scrollSrv;
  65. cdr;
  66. platform;
  67. renderer;
  68. _nzModuleName = NZ_CONFIG_MODULE_NAME;
  69. ink;
  70. nzAffix = true;
  71. nzShowInkInFixed = __runInitializers(this, _nzShowInkInFixed_initializers, false);
  72. nzBounds = (__runInitializers(this, _nzShowInkInFixed_extraInitializers), __runInitializers(this, _nzBounds_initializers, 5));
  73. nzOffsetTop = (__runInitializers(this, _nzBounds_extraInitializers), __runInitializers(this, _nzOffsetTop_initializers, undefined));
  74. nzTargetOffset = (__runInitializers(this, _nzOffsetTop_extraInitializers), __runInitializers(this, _nzTargetOffset_initializers, undefined));
  75. nzContainer = __runInitializers(this, _nzTargetOffset_extraInitializers);
  76. nzCurrentAnchor;
  77. nzDirection = 'vertical';
  78. nzClick = new EventEmitter();
  79. nzChange = new EventEmitter();
  80. nzScroll = new EventEmitter();
  81. visible = false;
  82. wrapperStyle = { 'max-height': '100vh' };
  83. container;
  84. activeLink;
  85. links = [];
  86. animating = false;
  87. destroy$ = new Subject();
  88. handleScrollTimeoutID;
  89. doc = inject(DOCUMENT);
  90. constructor(nzConfigService, scrollSrv, cdr, platform, renderer) {
  91. this.nzConfigService = nzConfigService;
  92. this.scrollSrv = scrollSrv;
  93. this.cdr = cdr;
  94. this.platform = platform;
  95. this.renderer = renderer;
  96. }
  97. registerLink(link) {
  98. this.links.push(link);
  99. }
  100. unregisterLink(link) {
  101. this.links.splice(this.links.indexOf(link), 1);
  102. }
  103. getContainer() {
  104. return this.container || window;
  105. }
  106. ngAfterViewInit() {
  107. this.registerScrollEvent();
  108. }
  109. ngOnDestroy() {
  110. clearTimeout(this.handleScrollTimeoutID);
  111. this.destroy$.next(true);
  112. this.destroy$.complete();
  113. }
  114. registerScrollEvent() {
  115. if (!this.platform.isBrowser) {
  116. return;
  117. }
  118. this.destroy$.next(true);
  119. fromEventOutsideAngular(this.getContainer(), 'scroll', passiveEventListenerOptions)
  120. .pipe(throttleTime(50), takeUntil(this.destroy$))
  121. .subscribe(() => this.handleScroll());
  122. // Browser would maintain the scrolling position when refreshing.
  123. // So we have to delay calculation in avoid of getting a incorrect result.
  124. this.handleScrollTimeoutID = setTimeout(() => this.handleScroll());
  125. }
  126. handleScroll() {
  127. if (typeof document === 'undefined' || this.animating) {
  128. return;
  129. }
  130. const sections = [];
  131. const offsetTop = this.nzTargetOffset ? this.nzTargetOffset : this.nzOffsetTop || 0;
  132. const scope = offsetTop + this.nzBounds;
  133. this.links.forEach(comp => {
  134. const sharpLinkMatch = sharpMatcherRegx.exec(comp.nzHref.toString());
  135. if (!sharpLinkMatch) {
  136. return;
  137. }
  138. const target = this.doc.getElementById(sharpLinkMatch[1]);
  139. if (target) {
  140. const top = getOffsetTop(target, this.getContainer());
  141. if (top < scope) {
  142. sections.push({
  143. top,
  144. comp
  145. });
  146. }
  147. }
  148. });
  149. this.visible = !!sections.length;
  150. if (!this.visible) {
  151. this.clearActive();
  152. this.cdr.detectChanges();
  153. }
  154. else {
  155. const maxSection = sections.reduce((prev, curr) => (curr.top > prev.top ? curr : prev));
  156. this.handleActive(maxSection.comp);
  157. }
  158. this.setVisible();
  159. }
  160. clearActive() {
  161. this.links.forEach(i => {
  162. i.unsetActive();
  163. });
  164. }
  165. setActive(comp) {
  166. const originalActiveLink = this.activeLink;
  167. const targetComp = (this.nzCurrentAnchor && this.links.find(n => n.nzHref === this.nzCurrentAnchor)) || comp;
  168. if (!targetComp)
  169. return;
  170. targetComp.setActive();
  171. const linkNode = targetComp.getLinkTitleElement();
  172. if (this.nzDirection === 'vertical') {
  173. this.ink.nativeElement.style.top = `${linkNode.offsetTop + linkNode.clientHeight / 2 - 4.5}px`;
  174. }
  175. else {
  176. this.ink.nativeElement.style.left = `${linkNode.offsetLeft + linkNode.clientWidth / 2}px`;
  177. }
  178. this.activeLink = (comp || targetComp).nzHref;
  179. if (originalActiveLink !== this.activeLink) {
  180. this.nzChange.emit(this.activeLink);
  181. }
  182. }
  183. handleActive(comp) {
  184. this.clearActive();
  185. this.setActive(comp);
  186. this.visible = true;
  187. this.setVisible();
  188. this.nzScroll.emit(comp);
  189. }
  190. setVisible() {
  191. if (this.ink) {
  192. const visible = this.visible;
  193. if (visible) {
  194. this.renderer.addClass(this.ink.nativeElement, VISIBLE_CLASSNAME);
  195. }
  196. else {
  197. this.renderer.removeClass(this.ink.nativeElement, VISIBLE_CLASSNAME);
  198. }
  199. }
  200. }
  201. handleScrollTo(linkComp) {
  202. const el = this.doc.querySelector(linkComp.nzHref);
  203. if (!el) {
  204. return;
  205. }
  206. this.animating = true;
  207. const containerScrollTop = this.scrollSrv.getScroll(this.getContainer());
  208. const elOffsetTop = getOffsetTop(el, this.getContainer());
  209. let targetScrollTop = containerScrollTop + elOffsetTop;
  210. targetScrollTop -= this.nzTargetOffset !== undefined ? this.nzTargetOffset : this.nzOffsetTop || 0;
  211. this.scrollSrv.scrollTo(this.getContainer(), targetScrollTop, {
  212. callback: () => {
  213. this.animating = false;
  214. this.handleActive(linkComp);
  215. }
  216. });
  217. this.nzClick.emit(linkComp.nzHref);
  218. }
  219. ngOnChanges(changes) {
  220. const { nzOffsetTop, nzContainer, nzCurrentAnchor } = changes;
  221. if (nzOffsetTop) {
  222. this.wrapperStyle = {
  223. 'max-height': `calc(100vh - ${this.nzOffsetTop}px)`
  224. };
  225. }
  226. if (nzContainer) {
  227. const container = this.nzContainer;
  228. this.container = typeof container === 'string' ? this.doc.querySelector(container) : container;
  229. this.registerScrollEvent();
  230. }
  231. if (nzCurrentAnchor) {
  232. this.setActive();
  233. }
  234. }
  235. static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzAnchorComponent, deps: [{ token: i1.NzConfigService }, { token: i2.NzScrollService }, { token: i0.ChangeDetectorRef }, { token: i3.Platform }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
  236. static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzAnchorComponent, isStandalone: true, selector: "nz-anchor", inputs: { nzAffix: ["nzAffix", "nzAffix", booleanAttribute], nzShowInkInFixed: ["nzShowInkInFixed", "nzShowInkInFixed", booleanAttribute], nzBounds: ["nzBounds", "nzBounds", numberAttribute], nzOffsetTop: ["nzOffsetTop", "nzOffsetTop", numberAttributeWithZeroFallback], nzTargetOffset: ["nzTargetOffset", "nzTargetOffset", numberAttributeWithZeroFallback], nzContainer: "nzContainer", nzCurrentAnchor: "nzCurrentAnchor", nzDirection: "nzDirection" }, outputs: { nzClick: "nzClick", nzChange: "nzChange", nzScroll: "nzScroll" }, viewQueries: [{ propertyName: "ink", first: true, predicate: ["ink"], descendants: true }], exportAs: ["nzAnchor"], usesOnChanges: true, ngImport: i0, template: `
  237. @if (nzAffix) {
  238. <nz-affix [nzOffsetTop]="nzOffsetTop" [nzTarget]="container">
  239. <ng-template [ngTemplateOutlet]="content"></ng-template>
  240. </nz-affix>
  241. } @else {
  242. <ng-template [ngTemplateOutlet]="content"></ng-template>
  243. }
  244. <ng-template #content>
  245. <div
  246. class="ant-anchor-wrapper"
  247. [class]="{ 'ant-anchor-wrapper-horizontal': nzDirection === 'horizontal' }"
  248. [style]="wrapperStyle"
  249. >
  250. <div class="ant-anchor" [class]="{ 'ant-anchor-fixed': !nzAffix && !nzShowInkInFixed }">
  251. <div class="ant-anchor-ink">
  252. <div class="ant-anchor-ink-ball" #ink></div>
  253. </div>
  254. <ng-content></ng-content>
  255. </div>
  256. </div>
  257. </ng-template>
  258. `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NzAffixModule }, { kind: "component", type: i4.NzAffixComponent, selector: "nz-affix", inputs: ["nzTarget", "nzOffsetTop", "nzOffsetBottom"], outputs: ["nzChange"], exportAs: ["nzAffix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
  259. };
  260. })();
  261. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzAnchorComponent, decorators: [{
  262. type: Component,
  263. args: [{
  264. selector: 'nz-anchor',
  265. exportAs: 'nzAnchor',
  266. preserveWhitespaces: false,
  267. imports: [NgTemplateOutlet, NzAffixModule],
  268. template: `
  269. @if (nzAffix) {
  270. <nz-affix [nzOffsetTop]="nzOffsetTop" [nzTarget]="container">
  271. <ng-template [ngTemplateOutlet]="content"></ng-template>
  272. </nz-affix>
  273. } @else {
  274. <ng-template [ngTemplateOutlet]="content"></ng-template>
  275. }
  276. <ng-template #content>
  277. <div
  278. class="ant-anchor-wrapper"
  279. [class]="{ 'ant-anchor-wrapper-horizontal': nzDirection === 'horizontal' }"
  280. [style]="wrapperStyle"
  281. >
  282. <div class="ant-anchor" [class]="{ 'ant-anchor-fixed': !nzAffix && !nzShowInkInFixed }">
  283. <div class="ant-anchor-ink">
  284. <div class="ant-anchor-ink-ball" #ink></div>
  285. </div>
  286. <ng-content></ng-content>
  287. </div>
  288. </div>
  289. </ng-template>
  290. `,
  291. encapsulation: ViewEncapsulation.None,
  292. changeDetection: ChangeDetectionStrategy.OnPush
  293. }]
  294. }], ctorParameters: () => [{ type: i1.NzConfigService }, { type: i2.NzScrollService }, { type: i0.ChangeDetectorRef }, { type: i3.Platform }, { type: i0.Renderer2 }], propDecorators: { ink: [{
  295. type: ViewChild,
  296. args: ['ink', { static: false }]
  297. }], nzAffix: [{
  298. type: Input,
  299. args: [{ transform: booleanAttribute }]
  300. }], nzShowInkInFixed: [{
  301. type: Input,
  302. args: [{ transform: booleanAttribute }]
  303. }], nzBounds: [{
  304. type: Input,
  305. args: [{ transform: numberAttribute }]
  306. }], nzOffsetTop: [{
  307. type: Input,
  308. args: [{ transform: numberAttributeWithZeroFallback }]
  309. }], nzTargetOffset: [{
  310. type: Input,
  311. args: [{ transform: numberAttributeWithZeroFallback }]
  312. }], nzContainer: [{
  313. type: Input
  314. }], nzCurrentAnchor: [{
  315. type: Input
  316. }], nzDirection: [{
  317. type: Input
  318. }], nzClick: [{
  319. type: Output
  320. }], nzChange: [{
  321. type: Output
  322. }], nzScroll: [{
  323. type: Output
  324. }] } });
  325. class NzAnchorLinkComponent {
  326. elementRef;
  327. anchorComp;
  328. platform;
  329. renderer;
  330. nzHref = '#';
  331. nzTarget;
  332. titleStr = '';
  333. titleTpl;
  334. nzDirection = 'vertical';
  335. set nzTitle(value) {
  336. if (value instanceof TemplateRef) {
  337. this.titleStr = null;
  338. this.titleTpl = value;
  339. }
  340. else {
  341. this.titleStr = value;
  342. }
  343. }
  344. nzTemplate;
  345. linkTitle;
  346. constructor(elementRef, anchorComp, platform, renderer) {
  347. this.elementRef = elementRef;
  348. this.anchorComp = anchorComp;
  349. this.platform = platform;
  350. this.renderer = renderer;
  351. }
  352. ngOnInit() {
  353. this.anchorComp.registerLink(this);
  354. this.nzDirection = this.anchorComp.nzDirection;
  355. }
  356. getLinkTitleElement() {
  357. return this.linkTitle.nativeElement;
  358. }
  359. setActive() {
  360. this.renderer.addClass(this.elementRef.nativeElement, 'ant-anchor-link-active');
  361. }
  362. unsetActive() {
  363. this.renderer.removeClass(this.elementRef.nativeElement, 'ant-anchor-link-active');
  364. }
  365. goToClick(e) {
  366. e.preventDefault();
  367. e.stopPropagation();
  368. if (this.platform.isBrowser) {
  369. this.anchorComp.handleScrollTo(this);
  370. }
  371. }
  372. ngOnDestroy() {
  373. this.anchorComp.unregisterLink(this);
  374. }
  375. static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzAnchorLinkComponent, deps: [{ token: i0.ElementRef }, { token: NzAnchorComponent }, { token: i3.Platform }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
  376. static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: NzAnchorLinkComponent, isStandalone: true, selector: "nz-link", inputs: { nzHref: "nzHref", nzTarget: "nzTarget", nzTitle: "nzTitle" }, host: { classAttribute: "ant-anchor-link" }, queries: [{ propertyName: "nzTemplate", first: true, predicate: ["nzTemplate"], descendants: true }], viewQueries: [{ propertyName: "linkTitle", first: true, predicate: ["linkTitle"], descendants: true }], exportAs: ["nzLink"], ngImport: i0, template: `
  377. <a
  378. #linkTitle
  379. class="ant-anchor-link-title"
  380. [href]="nzHref"
  381. [attr.title]="titleStr"
  382. [target]="nzTarget"
  383. (click)="goToClick($event)"
  384. >
  385. @if (titleStr) {
  386. <span>{{ titleStr }}</span>
  387. } @else {
  388. <ng-template [ngTemplateOutlet]="titleTpl || nzTemplate" />
  389. }
  390. </a>
  391. @if (nzDirection === 'vertical') {
  392. <ng-content></ng-content>
  393. }
  394. `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
  395. }
  396. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzAnchorLinkComponent, decorators: [{
  397. type: Component,
  398. args: [{
  399. selector: 'nz-link',
  400. exportAs: 'nzLink',
  401. preserveWhitespaces: false,
  402. imports: [NgTemplateOutlet],
  403. template: `
  404. <a
  405. #linkTitle
  406. class="ant-anchor-link-title"
  407. [href]="nzHref"
  408. [attr.title]="titleStr"
  409. [target]="nzTarget"
  410. (click)="goToClick($event)"
  411. >
  412. @if (titleStr) {
  413. <span>{{ titleStr }}</span>
  414. } @else {
  415. <ng-template [ngTemplateOutlet]="titleTpl || nzTemplate" />
  416. }
  417. </a>
  418. @if (nzDirection === 'vertical') {
  419. <ng-content></ng-content>
  420. }
  421. `,
  422. encapsulation: ViewEncapsulation.None,
  423. changeDetection: ChangeDetectionStrategy.OnPush,
  424. host: {
  425. class: 'ant-anchor-link'
  426. }
  427. }]
  428. }], ctorParameters: () => [{ type: i0.ElementRef }, { type: NzAnchorComponent }, { type: i3.Platform }, { type: i0.Renderer2 }], propDecorators: { nzHref: [{
  429. type: Input
  430. }], nzTarget: [{
  431. type: Input
  432. }], nzTitle: [{
  433. type: Input
  434. }], nzTemplate: [{
  435. type: ContentChild,
  436. args: ['nzTemplate', { static: false }]
  437. }], linkTitle: [{
  438. type: ViewChild,
  439. args: ['linkTitle']
  440. }] } });
  441. /**
  442. * Use of this source code is governed by an MIT-style license that can be
  443. * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
  444. */
  445. class NzAnchorModule {
  446. static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzAnchorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
  447. static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.2", ngImport: i0, type: NzAnchorModule, imports: [NzAnchorComponent, NzAnchorLinkComponent], exports: [NzAnchorComponent, NzAnchorLinkComponent] });
  448. static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzAnchorModule, imports: [NzAnchorComponent] });
  449. }
  450. i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: NzAnchorModule, decorators: [{
  451. type: NgModule,
  452. args: [{
  453. exports: [NzAnchorComponent, NzAnchorLinkComponent],
  454. imports: [NzAnchorComponent, NzAnchorLinkComponent]
  455. }]
  456. }] });
  457. /**
  458. * Use of this source code is governed by an MIT-style license that can be
  459. * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
  460. */
  461. /**
  462. * Generated bundle index. Do not edit.
  463. */
  464. export { NzAnchorComponent, NzAnchorLinkComponent, NzAnchorModule };
  465. //# sourceMappingURL=ng-zorro-antd-anchor.mjs.map