{"version":3,"file":"ng-zorro-antd-typography.mjs","sources":["../../components/typography/text-copy.component.ts","../../components/typography/text-edit.component.ts","../../components/typography/typography.component.ts","../../components/typography/typography.module.ts","../../components/typography/public-api.ts","../../components/typography/ng-zorro-antd-typography.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 { Clipboard } from '@angular/cdk/clipboard';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzTSType } from 'ng-zorro-antd/core/types';\nimport { NzI18nService, NzTextI18nInterface } from 'ng-zorro-antd/i18n';\n\n@Component({\n  selector: 'nz-text-copy',\n  exportAs: 'nzTextCopy',\n  template: `\n    <button\n      type=\"button\"\n      nz-tooltip\n      nz-trans-button\n      [nzTooltipTitle]=\"copied ? copedTooltip : copyTooltip\"\n      class=\"ant-typography-copy\"\n      [class.ant-typography-copy-success]=\"copied\"\n      (click)=\"onClick()\"\n    >\n      <ng-container *nzStringTemplateOutlet=\"copied ? copedIcon : copyIcon; let icon\">\n        <i nz-icon [nzType]=\"icon\"></i>\n      </ng-container>\n    </button>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  preserveWhitespaces: false\n})\nexport class NzTextCopyComponent implements OnInit, OnDestroy, OnChanges {\n  copied = false;\n  copyId: number = -1;\n  locale!: NzTextI18nInterface;\n  nativeElement = this.host.nativeElement;\n  copyTooltip: NzTSType | null = null;\n  copedTooltip: NzTSType | null = null;\n  copyIcon: NzTSType = 'copy';\n  copedIcon: NzTSType = 'check';\n  private destroy$ = new Subject();\n\n  @Input() text!: string;\n  @Input() tooltips?: [NzTSType, NzTSType] | null;\n  @Input() icons: [NzTSType, NzTSType] = ['copy', 'check'];\n\n  @Output() readonly textCopy = new EventEmitter<string>();\n\n  constructor(\n    private host: ElementRef,\n    private cdr: ChangeDetectorRef,\n    private clipboard: Clipboard,\n    private i18n: NzI18nService\n  ) {}\n\n  ngOnInit(): void {\n    this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.locale = this.i18n.getLocaleData('Text');\n      this.updateTooltips();\n      this.cdr.markForCheck();\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { tooltips, icons } = changes;\n    if (tooltips) {\n      this.updateTooltips();\n    }\n    if (icons) {\n      this.updateIcons();\n    }\n  }\n\n  ngOnDestroy(): void {\n    clearTimeout(this.copyId);\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  onClick(): void {\n    if (this.copied) {\n      return;\n    }\n    this.copied = true;\n    this.cdr.detectChanges();\n    const text = this.text;\n    this.textCopy.emit(text);\n    this.clipboard.copy(text);\n    this.onCopied();\n  }\n\n  onCopied(): void {\n    clearTimeout(this.copyId);\n    this.copyId = setTimeout(() => {\n      this.copied = false;\n      this.cdr.detectChanges();\n    }, 3000);\n  }\n\n  private updateTooltips(): void {\n    if (this.tooltips === null) {\n      this.copedTooltip = null;\n      this.copyTooltip = null;\n    } else if (Array.isArray(this.tooltips)) {\n      const [copyTooltip, copedTooltip] = this.tooltips;\n      this.copyTooltip = copyTooltip || this.locale?.copy;\n      this.copedTooltip = copedTooltip || this.locale?.copied;\n    } else {\n      this.copyTooltip = this.locale?.copy;\n      this.copedTooltip = this.locale?.copied;\n    }\n    this.cdr.markForCheck();\n  }\n\n  private updateIcons(): void {\n    const [copyIcon, copedIcon] = this.icons;\n    this.copyIcon = copyIcon;\n    this.copedIcon = copedIcon;\n    this.cdr.markForCheck();\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 { ENTER, ESCAPE } from '@angular/cdk/keycodes';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { BehaviorSubject, fromEvent, Observable } from 'rxjs';\nimport { filter, switchMap, take, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nimport { NzDestroyService } from 'ng-zorro-antd/core/services';\nimport { NzTSType } from 'ng-zorro-antd/core/types';\nimport { NzI18nService, NzTextI18nInterface } from 'ng-zorro-antd/i18n';\nimport { NzAutosizeDirective } from 'ng-zorro-antd/input';\n\n@Component({\n  selector: 'nz-text-edit',\n  exportAs: 'nzTextEdit',\n  template: `\n    <ng-template [ngIf]=\"editing\" [ngIfElse]=\"notEditing\">\n      <textarea #textarea nz-input nzAutosize (blur)=\"confirm()\"></textarea>\n      <button nz-trans-button class=\"ant-typography-edit-content-confirm\" (click)=\"confirm()\">\n        <i nz-icon nzType=\"enter\"></i>\n      </button>\n    </ng-template>\n\n    <ng-template #notEditing>\n      <button\n        nz-tooltip\n        nz-trans-button\n        class=\"ant-typography-edit\"\n        [nzTooltipTitle]=\"tooltip === null ? null : tooltip || locale?.edit\"\n        (click)=\"onClick()\"\n      >\n        <ng-container *nzStringTemplateOutlet=\"icon; let icon\">\n          <i nz-icon [nzType]=\"icon\"></i>\n        </ng-container>\n      </button>\n    </ng-template>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  preserveWhitespaces: false,\n  providers: [NzDestroyService]\n})\nexport class NzTextEditComponent implements OnInit {\n  editing = false;\n  locale!: NzTextI18nInterface;\n\n  @Input() text?: string;\n  @Input() icon: NzTSType = 'edit';\n  @Input() tooltip?: null | NzTSType;\n  @Output() readonly startEditing = new EventEmitter<void>();\n  @Output() readonly endEditing = new EventEmitter<string>(true);\n  @ViewChild('textarea', { static: false })\n  set textarea(textarea: ElementRef<HTMLTextAreaElement> | undefined) {\n    if (textarea) {\n      this.textarea$.next(textarea);\n    }\n  }\n  @ViewChild(NzAutosizeDirective, { static: false }) autosizeDirective!: NzAutosizeDirective;\n\n  beforeText?: string;\n  currentText?: string;\n  nativeElement = this.host.nativeElement;\n\n  // We could've saved the textarea within some private property (e.g. `_textarea`) and have a getter,\n  // but having subject makes the code more reactive and cancellable (e.g. event listeners will be\n  // automatically removed and re-added through the `switchMap` below).\n  private textarea$ = new BehaviorSubject<ElementRef<HTMLTextAreaElement> | null>(null);\n\n  constructor(\n    private ngZone: NgZone,\n    private host: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\n    private i18n: NzI18nService,\n    private destroy$: NzDestroyService\n  ) {}\n\n  ngOnInit(): void {\n    this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.locale = this.i18n.getLocaleData('Text');\n      this.cdr.markForCheck();\n    });\n\n    const textarea$: Observable<ElementRef<HTMLTextAreaElement>> = this.textarea$.pipe(\n      filter((textarea): textarea is ElementRef<HTMLTextAreaElement> => textarea !== null)\n    );\n\n    textarea$\n      .pipe(\n        switchMap(\n          textarea =>\n            // Caretaker note: we explicitly should call `subscribe()` within the root zone.\n            // `runOutsideAngular(() => fromEvent(...))` will just create an observable within the root zone,\n            // but `addEventListener` is called when the `fromEvent` is subscribed.\n            new Observable<KeyboardEvent>(subscriber =>\n              this.ngZone.runOutsideAngular(() =>\n                fromEvent<KeyboardEvent>(textarea.nativeElement, 'keydown').subscribe(subscriber)\n              )\n            )\n        ),\n        takeUntil(this.destroy$)\n      )\n      .subscribe(event => {\n        // Caretaker note: adding modifier at the end (for instance `(keydown.esc)`) will tell Angular to add\n        // an event listener through the `KeyEventsPlugin`, which always runs `ngZone.runGuarded()` internally.\n        // We're interested only in escape and enter keyboard buttons, otherwise Angular will run change detection\n        // on any `keydown` event.\n        if (event.keyCode !== ESCAPE && event.keyCode !== ENTER) {\n          return;\n        }\n\n        this.ngZone.run(() => {\n          if (event.keyCode === ESCAPE) {\n            this.onCancel();\n          } else {\n            this.onEnter(event);\n          }\n          this.cdr.markForCheck();\n        });\n      });\n\n    textarea$\n      .pipe(\n        switchMap(\n          textarea =>\n            new Observable<KeyboardEvent>(subscriber =>\n              this.ngZone.runOutsideAngular(() =>\n                fromEvent<KeyboardEvent>(textarea.nativeElement, 'input').subscribe(subscriber)\n              )\n            )\n        ),\n        takeUntil(this.destroy$)\n      )\n      .subscribe(event => {\n        this.currentText = (event.target as HTMLTextAreaElement).value;\n      });\n  }\n\n  onClick(): void {\n    this.beforeText = this.text;\n    this.currentText = this.beforeText;\n    this.editing = true;\n    this.startEditing.emit();\n    this.focusAndSetValue();\n  }\n\n  confirm(): void {\n    this.editing = false;\n    this.endEditing.emit(this.currentText);\n  }\n\n  onEnter(event: Event): void {\n    event.stopPropagation();\n    event.preventDefault();\n    this.confirm();\n  }\n\n  onCancel(): void {\n    this.currentText = this.beforeText;\n    this.confirm();\n  }\n\n  focusAndSetValue(): void {\n    this.ngZone.onStable\n      .pipe(take(1), withLatestFrom(this.textarea$), takeUntil(this.destroy$))\n      .subscribe(([, textarea]) => {\n        if (textarea) {\n          textarea.nativeElement.focus();\n          textarea.nativeElement.value = this.currentText || '';\n          this.autosizeDirective.resizeToFitContent();\n          this.cdr.markForCheck();\n        }\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 { Direction, Directionality } from '@angular/cdk/bidi';\nimport { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EmbeddedViewRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n  ViewEncapsulation\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { cancelRequestAnimationFrame, reqAnimFrame } from 'ng-zorro-antd/core/polyfill';\nimport { NzResizeService } from 'ng-zorro-antd/core/services';\nimport { BooleanInput, NumberInput, NzSafeAny, NzTSType } from 'ng-zorro-antd/core/types';\nimport { InputBoolean, InputNumber, isStyleSupport, measure } from 'ng-zorro-antd/core/util';\nimport { NzI18nService, NzTextI18nInterface } from 'ng-zorro-antd/i18n';\n\nimport { NzTextCopyComponent } from './text-copy.component';\nimport { NzTextEditComponent } from './text-edit.component';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'typography';\nconst EXPAND_ELEMENT_CLASSNAME = 'ant-typography-expand';\n\n@Component({\n  selector: `\n  nz-typography,\n  [nz-typography],\n  p[nz-paragraph],\n  span[nz-text],\n  h1[nz-title], h2[nz-title], h3[nz-title], h4[nz-title]\n  `,\n  exportAs: 'nzTypography',\n  template: `\n    <ng-template #contentTemplate let-content=\"content\">\n      <ng-content *ngIf=\"!content\"></ng-content>\n      {{ content }}\n    </ng-template>\n    <ng-container *ngIf=\"!editing\">\n      <ng-container\n        *ngIf=\"\n          expanded ||\n            (!hasOperationsWithEllipsis && nzEllipsisRows === 1 && !hasEllipsisObservers) ||\n            canCssEllipsis ||\n            (nzSuffix && expanded);\n          else jsEllipsis\n        \"\n      >\n        <ng-template\n          [ngTemplateOutlet]=\"contentTemplate\"\n          [ngTemplateOutletContext]=\"{ content: nzContent }\"\n        ></ng-template>\n        <ng-container *ngIf=\"nzSuffix\">{{ nzSuffix }}</ng-container>\n      </ng-container>\n      <ng-template #jsEllipsis>\n        <span #ellipsisContainer></span>\n        <ng-container *ngIf=\"isEllipsis\">{{ ellipsisStr }}</ng-container>\n        <ng-container *ngIf=\"nzSuffix\">{{ nzSuffix }}</ng-container>\n        <a #expandable *ngIf=\"nzExpandable && isEllipsis\" class=\"ant-typography-expand\" (click)=\"onExpand()\">\n          {{ locale?.expand }}\n        </a>\n      </ng-template>\n    </ng-container>\n\n    <nz-text-edit\n      *ngIf=\"nzEditable\"\n      [text]=\"nzContent\"\n      [icon]=\"nzEditIcon\"\n      [tooltip]=\"nzEditTooltip\"\n      (endEditing)=\"onEndEditing($event)\"\n      (startEditing)=\"onStartEditing()\"\n    ></nz-text-edit>\n\n    <nz-text-copy\n      *ngIf=\"nzCopyable && !editing\"\n      [text]=\"copyText\"\n      [tooltips]=\"nzCopyTooltips\"\n      [icons]=\"nzCopyIcons\"\n      (textCopy)=\"onTextCopy($event)\"\n    ></nz-text-copy>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  preserveWhitespaces: false,\n  host: {\n    '[class.ant-typography]': '!editing',\n    '[class.ant-typography-rtl]': 'dir === \"rtl\"',\n    '[class.ant-typography-edit-content]': 'editing',\n    '[class.ant-typography-secondary]': 'nzType === \"secondary\"',\n    '[class.ant-typography-warning]': 'nzType === \"warning\"',\n    '[class.ant-typography-danger]': 'nzType === \"danger\"',\n    '[class.ant-typography-success]': 'nzType === \"success\"',\n    '[class.ant-typography-disabled]': 'nzDisabled',\n    '[class.ant-typography-ellipsis]': 'nzEllipsis && !expanded',\n    '[class.ant-typography-single-line]': 'nzEllipsis && nzEllipsisRows === 1',\n    '[class.ant-typography-ellipsis-single-line]': 'canCssEllipsis && nzEllipsisRows === 1',\n    '[class.ant-typography-ellipsis-multiple-line]': 'canCssEllipsis && nzEllipsisRows > 1',\n    '[style.-webkit-line-clamp]': '(canCssEllipsis && nzEllipsisRows > 1) ? nzEllipsisRows : null'\n  }\n})\nexport class NzTypographyComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n  readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n  static ngAcceptInputType_nzCopyable: BooleanInput;\n  static ngAcceptInputType_nzEditable: BooleanInput;\n  static ngAcceptInputType_nzDisabled: BooleanInput;\n  static ngAcceptInputType_nzExpandable: BooleanInput;\n  static ngAcceptInputType_nzEllipsis: BooleanInput;\n  static ngAcceptInputType_nzEllipsisRows: NumberInput;\n\n  @Input() @InputBoolean() nzCopyable = false;\n  @Input() @InputBoolean() nzEditable = false;\n  @Input() @InputBoolean() nzDisabled = false;\n  @Input() @InputBoolean() nzExpandable = false;\n  @Input() @InputBoolean() nzEllipsis = false;\n  @Input() @WithConfig() nzCopyTooltips?: [NzTSType, NzTSType] | null = undefined;\n  @Input() @WithConfig() nzCopyIcons: [NzTSType, NzTSType] = ['copy', 'check'];\n  @Input() @WithConfig() nzEditTooltip?: null | NzTSType = undefined;\n  @Input() @WithConfig() nzEditIcon: NzTSType = 'edit';\n  @Input() nzContent?: string;\n  @Input() @WithConfig() @InputNumber() nzEllipsisRows: number = 1;\n  @Input() nzType: 'secondary' | 'warning' | 'danger' | 'success' | undefined;\n  @Input() nzCopyText: string | undefined;\n  @Input() nzSuffix: string | undefined;\n  @Output() readonly nzContentChange = new EventEmitter<string>();\n  @Output() readonly nzCopy = new EventEmitter<string>();\n  @Output() readonly nzExpandChange = new EventEmitter<void>();\n  // This is not a two-way binding output with {@link nzEllipsis}\n  @Output() readonly nzOnEllipsis = new EventEmitter<boolean>();\n\n  @ViewChild(NzTextEditComponent, { static: false }) textEditRef?: NzTextEditComponent;\n  @ViewChild(NzTextCopyComponent, { static: false }) textCopyRef?: NzTextCopyComponent;\n  @ViewChild('ellipsisContainer', { static: false }) ellipsisContainer?: ElementRef<HTMLSpanElement>;\n  @ViewChild('expandable', { static: false }) expandableBtn?: ElementRef<HTMLSpanElement>;\n  @ViewChild('contentTemplate', { static: false }) contentTemplate?: TemplateRef<{ content: string }>;\n\n  locale!: NzTextI18nInterface;\n  document: Document;\n  expandableBtnElementCache: HTMLElement | null = null;\n  editing = false;\n  ellipsisText: string | undefined;\n  cssEllipsis: boolean = false;\n  isEllipsis: boolean = true;\n  expanded: boolean = false;\n  ellipsisStr = '...';\n  dir: Direction = 'ltr';\n\n  get hasEllipsisObservers(): boolean {\n    return this.nzOnEllipsis.observers.length > 0;\n  }\n\n  get canCssEllipsis(): boolean {\n    return this.nzEllipsis && this.cssEllipsis && !this.expanded && !this.hasEllipsisObservers;\n  }\n\n  get hasOperationsWithEllipsis(): boolean {\n    return (this.nzCopyable || this.nzEditable || this.nzExpandable) && this.nzEllipsis;\n  }\n\n  private viewInit = false;\n  private rfaId: number = -1;\n  private destroy$ = new Subject();\n  private windowResizeSubscription = Subscription.EMPTY;\n  get copyText(): string {\n    return (typeof this.nzCopyText === 'string' ? this.nzCopyText : this.nzContent)!;\n  }\n\n  constructor(\n    public nzConfigService: NzConfigService,\n    private host: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\n    private viewContainerRef: ViewContainerRef,\n    private renderer: Renderer2,\n    private platform: Platform,\n    private i18n: NzI18nService,\n    @Inject(DOCUMENT) document: NzSafeAny,\n    private resizeService: NzResizeService,\n    @Optional() private directionality: Directionality\n  ) {\n    this.document = document;\n  }\n\n  onTextCopy(text: string): void {\n    this.nzCopy.emit(text);\n  }\n\n  onStartEditing(): void {\n    this.editing = true;\n  }\n\n  onEndEditing(text: string): void {\n    this.editing = false;\n    this.nzContentChange.emit(text);\n    if (this.nzContent === text) {\n      this.renderOnNextFrame();\n    }\n    this.cdr.markForCheck();\n  }\n\n  onExpand(): void {\n    this.isEllipsis = false;\n    this.expanded = true;\n    this.nzExpandChange.emit();\n    this.nzOnEllipsis.emit(false);\n  }\n\n  canUseCSSEllipsis(): boolean {\n    if (this.nzEditable || this.nzCopyable || this.nzExpandable || this.nzSuffix) {\n      return false;\n    }\n    // make sure {@link nzOnEllipsis} works, will force use JS to calculations\n    if (this.hasEllipsisObservers) {\n      return false;\n    }\n    if (this.nzEllipsisRows === 1) {\n      return isStyleSupport('textOverflow');\n    } else {\n      return isStyleSupport('webkitLineClamp');\n    }\n  }\n\n  renderOnNextFrame(): void {\n    cancelRequestAnimationFrame(this.rfaId);\n    if (!this.viewInit || !this.nzEllipsis || this.nzEllipsisRows < 0 || this.expanded || !this.platform.isBrowser) {\n      return;\n    }\n    this.rfaId = reqAnimFrame(() => {\n      this.syncEllipsis();\n    });\n  }\n\n  getOriginContentViewRef(): { viewRef: EmbeddedViewRef<{ content: string }>; removeView(): void } {\n    const viewRef = this.viewContainerRef.createEmbeddedView<{ content: string }>(this.contentTemplate!, {\n      content: this.nzContent!\n    });\n    viewRef.detectChanges();\n    return {\n      viewRef,\n      removeView: () => {\n        this.viewContainerRef.remove(this.viewContainerRef.indexOf(viewRef));\n      }\n    };\n  }\n\n  syncEllipsis(): void {\n    if (this.cssEllipsis) {\n      return;\n    }\n    const { viewRef, removeView } = this.getOriginContentViewRef();\n    const fixedNodes = [this.textCopyRef, this.textEditRef]\n      .filter(e => e && e.nativeElement)\n      .map(e => e!.nativeElement);\n    const expandableBtnElement = this.getExpandableBtnElement();\n    if (expandableBtnElement) {\n      fixedNodes.push(expandableBtnElement);\n    }\n    const { contentNodes, text, ellipsis } = measure(\n      this.host.nativeElement,\n      this.nzEllipsisRows,\n      viewRef.rootNodes,\n      fixedNodes,\n      this.ellipsisStr,\n      this.nzSuffix\n    );\n\n    removeView();\n\n    this.ellipsisText = text;\n    if (ellipsis !== this.isEllipsis) {\n      this.isEllipsis = ellipsis;\n      this.nzOnEllipsis.emit(ellipsis);\n    }\n    const ellipsisContainerNativeElement = this.ellipsisContainer!.nativeElement;\n    while (ellipsisContainerNativeElement.firstChild) {\n      this.renderer.removeChild(ellipsisContainerNativeElement, ellipsisContainerNativeElement.firstChild);\n    }\n    contentNodes.forEach(n => {\n      this.renderer.appendChild(ellipsisContainerNativeElement, n.cloneNode(true));\n    });\n    this.cdr.markForCheck();\n  }\n\n  // Need to create the element for calculation size before view init\n  private getExpandableBtnElement(): HTMLElement | null {\n    if (this.nzExpandable) {\n      const expandText = this.locale ? this.locale.expand : '';\n      const cache = this.expandableBtnElementCache;\n      if (!cache || cache.innerText === expandText) {\n        const el = this.document.createElement('a');\n        el.className = EXPAND_ELEMENT_CLASSNAME;\n        el.innerText = expandText;\n        this.expandableBtnElementCache = el;\n      }\n      return this.expandableBtnElementCache;\n    } else {\n      this.expandableBtnElementCache = null;\n      return null;\n    }\n  }\n\n  private renderAndSubscribeWindowResize(): void {\n    if (this.platform.isBrowser) {\n      this.windowResizeSubscription.unsubscribe();\n      this.cssEllipsis = this.canUseCSSEllipsis();\n      this.renderOnNextFrame();\n      this.windowResizeSubscription = this.resizeService\n        .subscribe()\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => this.renderOnNextFrame());\n    }\n  }\n\n  ngOnInit(): void {\n    this.i18n.localeChange.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.locale = this.i18n.getLocaleData('Text');\n      this.cdr.markForCheck();\n    });\n\n    this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n      this.dir = direction;\n      this.cdr.detectChanges();\n    });\n\n    this.dir = this.directionality.value;\n  }\n\n  ngAfterViewInit(): void {\n    this.viewInit = true;\n    this.renderAndSubscribeWindowResize();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { nzCopyable, nzEditable, nzExpandable, nzEllipsis, nzContent, nzEllipsisRows, nzSuffix } = changes;\n    if (nzCopyable || nzEditable || nzExpandable || nzEllipsis || nzContent || nzEllipsisRows || nzSuffix) {\n      if (this.nzEllipsis) {\n        if (this.expanded) {\n          this.windowResizeSubscription.unsubscribe();\n        } else {\n          this.renderAndSubscribeWindowResize();\n        }\n      }\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n    this.expandableBtnElementCache = null;\n    this.windowResizeSubscription.unsubscribe();\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 { BidiModule } from '@angular/cdk/bidi';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzTransButtonModule } from 'ng-zorro-antd/core/trans-button';\nimport { NzI18nModule } from 'ng-zorro-antd/i18n';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\n\nimport { NzTextCopyComponent } from './text-copy.component';\nimport { NzTextEditComponent } from './text-edit.component';\nimport { NzTypographyComponent } from './typography.component';\n\n@NgModule({\n  imports: [\n    BidiModule,\n    CommonModule,\n    NzIconModule,\n    NzToolTipModule,\n    NzInputModule,\n    NzI18nModule,\n    NzTransButtonModule,\n    ClipboardModule,\n    NzOutletModule\n  ],\n  exports: [NzTypographyComponent, NzTextCopyComponent, NzTextEditComponent, PlatformModule],\n  declarations: [NzTypographyComponent, NzTextCopyComponent, NzTextEditComponent]\n})\nexport class NzTypographyModule {}\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 { NzTypographyModule } from './typography.module';\nexport { NzTypographyComponent } from './typography.component';\nexport { NzTextCopyComponent } from './text-copy.component';\nexport { NzTextEditComponent } from './text-edit.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}