@taiga-ui/addon-doc
Version:
Taiga UI based library for developing documentation portals for Angular libraries.
29 lines • 8.17 kB
JavaScript
import { NgIf } from '@angular/common';
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { toSignal } from '@angular/core/rxjs-interop';
import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
import { TuiButton } from '@taiga-ui/core/components/button';
import { TUI_COPY_TEXTS } from '@taiga-ui/kit/tokens';
import { map, startWith, Subject, switchMap, timer } from 'rxjs';
import * as i0 from "@angular/core";
const COPIED_TIMEOUT = 1500;
class TuiDocCopy {
constructor() {
this.copy$ = new Subject();
this.texts = toSignal(inject(TUI_COPY_TEXTS), {
initialValue: ['', ''],
});
this.copied = toSignal(this.copy$.pipe(switchMap(() => timer(COPIED_TIMEOUT).pipe(map(TUI_FALSE_HANDLER), startWith(true)))), { initialValue: false });
}
onClick() {
this.copy$.next();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDocCopy, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDocCopy, isStandalone: true, selector: "tui-doc-copy", ngImport: i0, template: "<button\n appearance=\"\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-copy\"\n (click)=\"onClick()\"\n>\n <span class=\"t-content\">\n <span\n class=\"t-initial\"\n [attr.data-text]=\"copied() ? '' : texts()[0]\"\n >\n <ng-container *ngIf=\"!copied()\">\n <ng-content />\n </ng-container>\n </span>\n {{ copied() ? texts()[1] : '' }}\n </span>\n</button>\n", styles: [":host{position:relative;display:inline-block;vertical-align:middle;border-radius:var(--tui-radius-m)}.t-copy{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:100%;block-size:100%;color:var(--tui-text-primary);background:var(--tui-background-base);overflow:hidden}.t-copy:hover{background:var(--tui-background-base-alt)}.t-initial{white-space:nowrap}.t-initial:empty:before{content:attr(data-text)}.t-content{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;flex-direction:column;text-align:center;line-height:2rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
export { TuiDocCopy };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDocCopy, decorators: [{
type: Component,
args: [{ standalone: true, selector: 'tui-doc-copy', imports: [NgIf, TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n appearance=\"\"\n size=\"s\"\n tuiButton\n type=\"button\"\n class=\"t-copy\"\n (click)=\"onClick()\"\n>\n <span class=\"t-content\">\n <span\n class=\"t-initial\"\n [attr.data-text]=\"copied() ? '' : texts()[0]\"\n >\n <ng-container *ngIf=\"!copied()\">\n <ng-content />\n </ng-container>\n </span>\n {{ copied() ? texts()[1] : '' }}\n </span>\n</button>\n", styles: [":host{position:relative;display:inline-block;vertical-align:middle;border-radius:var(--tui-radius-m)}.t-copy{transition-property:background;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;inline-size:100%;block-size:100%;color:var(--tui-text-primary);background:var(--tui-background-base);overflow:hidden}.t-copy:hover{background:var(--tui-background-base-alt)}.t-initial{white-space:nowrap}.t-initial:empty:before{content:attr(data-text)}.t-content{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;display:flex;flex-direction:column;text-align:center;line-height:2rem}\n"] }]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1kb2MvY29tcG9uZW50cy9jb3B5L2luZGV4LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWRkb24tZG9jL2NvbXBvbmVudHMvY29weS9pbmRleC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFL0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBRTVCLE1BUWEsVUFBVTtJQVJ2QjtRQVNxQixVQUFLLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUUxQixVQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUN4RCxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFVO1NBQ2xDLENBQUMsQ0FBQztRQUVnQixXQUFNLEdBQUcsUUFBUSxDQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDWCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ1gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDdEUsQ0FDSixFQUNELEVBQUMsWUFBWSxFQUFFLEtBQUssRUFBQyxDQUN4QixDQUFDO0tBS0w7SUFIYSxPQUFPO1FBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOytHQWxCUSxVQUFVO21HQUFWLFVBQVUsd0VDbEJ2QixnZUFvQkEsMHRCRFBjLElBQUksNkZBQUUsU0FBUzs7U0FLaEIsVUFBVTs0RkFBVixVQUFVO2tCQVJ0QixTQUFTO2lDQUNNLElBQUksWUFDTixjQUFjLFdBQ2YsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLG1CQUdULHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3RvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1RVSV9GQUxTRV9IQU5ETEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUJ1dHRvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtUVUlfQ09QWV9URVhUU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHttYXAsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IENPUElFRF9USU1FT1VUID0gMTUwMDtcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1kb2MtY29weScsXG4gICAgaW1wb3J0czogW05nSWYsIFR1aUJ1dHRvbl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2luZGV4Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2luZGV4Lmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHVpRG9jQ29weSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3B5JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGV4dHMgPSB0b1NpZ25hbChpbmplY3QoVFVJX0NPUFlfVEVYVFMpLCB7XG4gICAgICAgIGluaXRpYWxWYWx1ZTogWycnLCAnJ10gYXMgY29uc3QsXG4gICAgfSk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29waWVkID0gdG9TaWduYWwoXG4gICAgICAgIHRoaXMuY29weSQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgICAgIHRpbWVyKENPUElFRF9USU1FT1VUKS5waXBlKG1hcChUVUlfRkFMU0VfSEFORExFUiksIHN0YXJ0V2l0aCh0cnVlKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICB7aW5pdGlhbFZhbHVlOiBmYWxzZX0sXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCBvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvcHkkLm5leHQoKTtcbiAgICB9XG59XG4iLCI8YnV0dG9uXG4gICAgYXBwZWFyYW5jZT1cIlwiXG4gICAgc2l6ZT1cInNcIlxuICAgIHR1aUJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwidC1jb3B5XCJcbiAgICAoY2xpY2spPVwib25DbGljaygpXCJcbj5cbiAgICA8c3BhbiBjbGFzcz1cInQtY29udGVudFwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJ0LWluaXRpYWxcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXh0XT1cImNvcGllZCgpID8gJycgOiB0ZXh0cygpWzBdXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb3BpZWQoKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7eyBjb3BpZWQoKSA/IHRleHRzKClbMV0gOiAnJyB9fVxuICAgIDwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19