UNPKG

@delon/abc

Version:

Common business components of ng-alain.

1 lines 20.2 kB
{"version":3,"file":"ellipsis.mjs","sources":["../../../../packages/abc/ellipsis/ellipsis.component.ts","../../../../packages/abc/ellipsis/ellipsis.component.html","../../../../packages/abc/ellipsis/ellipsis.module.ts","../../../../packages/abc/ellipsis/ellipsis.ts"],"sourcesContent":["import { CdkObserveContent } from '@angular/cdk/observers';\nimport { DOCUMENT, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnChanges,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { take } from 'rxjs';\n\nimport type { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { NzTooltipDirective } from 'ng-zorro-antd/tooltip';\n\n@Component({\n selector: 'ellipsis',\n exportAs: 'ellipsis',\n templateUrl: './ellipsis.component.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CdkObserveContent, NzTooltipDirective, NgTemplateOutlet, NgClass, NgStyle]\n})\nexport class EllipsisComponent implements AfterViewInit, OnChanges {\n private readonly el: HTMLElement = inject(ElementRef).nativeElement;\n private readonly ngZone = inject(NgZone);\n private readonly dom = inject(DomSanitizer);\n private readonly doc = inject(DOCUMENT);\n private readonly cdr = inject(ChangeDetectorRef);\n private isSupportLineClamp = this.doc.body.style['webkitLineClamp'] !== undefined;\n @ViewChild('orgEl', { static: false }) private orgEl!: ElementRef;\n @ViewChild('shadowOrgEl', { static: false }) private shadowOrgEl!: ElementRef;\n @ViewChild('shadowTextEl', { static: false }) private shadowTextEl!: ElementRef;\n private inited = false;\n orgHtml!: SafeHtml;\n type = 'default';\n cls = {};\n text = '';\n targetCount = 0;\n\n @Input({ transform: booleanAttribute }) tooltip = false;\n @Input({ transform: (v: unknown) => (v == null ? null : numberAttribute(v)) }) length?: number;\n @Input({ transform: (v: unknown) => (v == null ? null : numberAttribute(v)) }) lines?: number;\n @Input({ transform: booleanAttribute }) fullWidthRecognition = false;\n @Input() tail = '...';\n\n get linsWord(): string {\n const { targetCount, text, tail } = this;\n return (\n (targetCount > 0 ? text.substring(0, targetCount) : '') +\n (targetCount > 0 && targetCount < text.length ? tail : '')\n );\n }\n\n private get win(): NzSafeAny {\n return this.doc.defaultView || window;\n }\n\n private getStrFullLength(str: string): number {\n return str.split('').reduce((pre, cur) => {\n const charCode = cur.charCodeAt(0);\n if (charCode >= 0 && charCode <= 128) {\n return pre + 1;\n }\n return pre + 2;\n }, 0);\n }\n\n private cutStrByFullLength(str: string, maxLength: number): string {\n let showLength = 0;\n return str.split('').reduce((pre, cur) => {\n const charCode = cur.charCodeAt(0);\n if (charCode >= 0 && charCode <= 128) {\n showLength += 1;\n } else {\n showLength += 2;\n }\n if (showLength <= maxLength) {\n return pre + cur;\n }\n return pre;\n }, '');\n }\n\n private bisection(\n targetHeight: number,\n mid: number,\n begin: number,\n end: number,\n text: string,\n node: HTMLElement\n ): number {\n const suffix = this.tail;\n node.innerHTML = text.substring(0, mid) + suffix;\n let sh = node.offsetHeight;\n\n if (sh <= targetHeight) {\n node.innerHTML = text.substring(0, mid + 1) + suffix;\n sh = node.offsetHeight;\n if (sh > targetHeight || mid === begin) {\n return mid;\n }\n begin = mid;\n mid = end - begin === 1 ? begin + 1 : Math.floor((end - begin) / 2) + begin;\n return this.bisection(targetHeight, mid, begin, end, text, node);\n }\n if (mid - 1 < 0) {\n return mid;\n }\n node.innerHTML = text.substring(0, mid - 1) + suffix;\n sh = node.offsetHeight;\n if (sh <= targetHeight) {\n return mid - 1;\n }\n end = mid;\n mid = Math.floor((end - begin) / 2) + begin;\n return this.bisection(targetHeight, mid, begin, end, text, node);\n }\n\n private genType(): void {\n const { lines, length, isSupportLineClamp } = this;\n this.cls = {\n ellipsis: true,\n ellipsis__lines: lines && !isSupportLineClamp,\n 'ellipsis__line-clamp': lines && isSupportLineClamp\n };\n if (!lines && !length) {\n this.type = 'default';\n } else if (!lines) {\n this.type = 'length';\n } else if (isSupportLineClamp) {\n this.type = 'line-clamp';\n } else {\n this.type = 'line';\n }\n }\n\n private gen(): void {\n const { type, lines, length, fullWidthRecognition, tail, orgEl, cdr, ngZone } = this;\n if (type === 'length') {\n const el = orgEl.nativeElement as HTMLElement;\n if (el.children.length > 0) {\n throw new Error('Ellipsis content must be string.');\n }\n const lengthText = el.textContent!;\n const textLength = fullWidthRecognition ? this.getStrFullLength(lengthText) : lengthText.length;\n if (textLength <= length! || length! < 0) {\n this.text = lengthText;\n } else {\n let displayText: string;\n if (length! - tail.length <= 0) {\n displayText = '';\n } else {\n displayText = fullWidthRecognition\n ? this.cutStrByFullLength(lengthText, length!)\n : lengthText.slice(0, length);\n }\n this.text = displayText + tail;\n }\n ngZone.run(() => cdr.detectChanges());\n } else if (type === 'line') {\n const { shadowOrgEl, shadowTextEl } = this;\n const orgNode = shadowOrgEl.nativeElement as HTMLElement;\n const lineText = orgNode.innerText || orgNode.textContent!;\n const lineHeight = parseInt(this.win.getComputedStyle(this.getEl('.ellipsis')).lineHeight!, 10);\n const targetHeight = lines! * lineHeight;\n const handleEl = this.getEl('.ellipsis__handle');\n handleEl!.style.height = `${targetHeight}px`;\n\n if (orgNode.offsetHeight <= targetHeight) {\n this.text = lineText;\n this.targetCount = lineText.length;\n } else {\n // bisection\n const len = lineText.length;\n const mid = Math.ceil(len / 2);\n\n const count = this.bisection(targetHeight, mid, 0, len, lineText, shadowTextEl.nativeElement.firstChild);\n this.text = lineText;\n this.targetCount = count;\n }\n ngZone.run(() => cdr.detectChanges());\n }\n }\n\n private getEl(cls: string): HTMLElement | null {\n return this.el.querySelector<HTMLElement>(cls);\n }\n\n private executeOnStable(fn: () => void): void {\n if (this.ngZone.isStable) {\n fn();\n } else {\n this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(fn);\n }\n }\n\n refresh(): void {\n this.genType();\n const { type, dom, orgEl, cdr } = this;\n const html = orgEl.nativeElement.innerHTML;\n this.orgHtml = dom.bypassSecurityTrustHtml(html);\n cdr.detectChanges();\n this.executeOnStable(() => {\n this.gen();\n if (type !== 'line') {\n const el = this.getEl('.ellipsis');\n if (el) {\n el.innerHTML = html;\n }\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.inited = true;\n this.refresh();\n }\n\n ngOnChanges(): void {\n if (this.inited) {\n this.refresh();\n }\n }\n}\n","<div (cdkObserveContent)=\"refresh()\" #orgEl style=\"display: none\"><ng-content /></div>\n<ng-template #tooltipTpl let-con>\n @if (tooltip) {\n <span\n nz-tooltip\n [nzTooltipTitle]=\"titleTpl\"\n [nzTooltipOverlayStyle]=\"{ 'overflow-wrap': 'break-word', 'word-wrap': 'break-word' }\"\n >\n <ng-container *ngTemplateOutlet=\"con\" />\n <ng-template #titleTpl><div [innerHTML]=\"orgHtml\"></div></ng-template>\n </span>\n } @else {\n <ng-container *ngTemplateOutlet=\"con\" />\n }\n</ng-template>\n@switch (type) {\n @case ('default') {\n <span [ngClass]=\"cls\"></span>\n }\n @case ('length') {\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lengthTpl }\" />\n <ng-template #lengthTpl>{{ text }}</ng-template>\n }\n @case ('line-clamp') {\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lineClampTpl }\" />\n <ng-template #lineClampTpl>\n <div [ngClass]=\"cls\" [ngStyle]=\"{ '-webkit-line-clamp': lines, '-webkit-box-orient': 'vertical' }\"></div>\n </ng-template>\n }\n @case ('line') {\n <div [ngClass]=\"cls\">\n <div class=\"ellipsis__handle\">\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lineTpl }\" />\n <ng-template #lineTpl>{{ linsWord }}</ng-template>\n <div class=\"ellipsis__shadow\" #shadowOrgEl [innerHTML]=\"orgHtml\"></div>\n <div class=\"ellipsis__shadow\" #shadowTextEl>\n <span>{{ text }}</span>\n </div>\n </div>\n </div>\n }\n}\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\n\nimport { EllipsisComponent } from './ellipsis.component';\n\nconst COMPONENTS = [EllipsisComponent];\n\n@NgModule({\n imports: [CommonModule, ObserversModule, NzToolTipModule, ...COMPONENTS],\n exports: COMPONENTS\n})\nexport class EllipsisModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}