{"version":3,"file":"think-make-art-extends-art-descriptions.mjs","sources":["../../../projects/art-extends/art-descriptions/art-descriptions-item.component.ts","../../../projects/art-extends/art-descriptions/art-descriptions.component.ts","../../../projects/art-extends/art-descriptions/art-descriptions.module.ts","../../../projects/art-extends/art-descriptions/think-make-art-extends-art-descriptions.ts"],"sourcesContent":["import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    TemplateRef,\r\n    ViewChild,\r\n    ViewEncapsulation\r\n}                  from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    encapsulation: ViewEncapsulation.None,\r\n    standalone: false,\r\n    selector: 'art-descriptions-item',\r\n    template: `\r\n        <ng-template>\r\n            <ng-content></ng-content>\r\n        </ng-template>\r\n    `,\r\n    exportAs: 'nzDescriptionsItem',\r\n    preserveWhitespaces: false\r\n})\r\nexport class ArtDescriptionsItemComponent implements OnChanges, OnDestroy {\r\n    static ngAcceptInputType_nzSpan: number | string | undefined | null;\r\n\r\n    @ViewChild(TemplateRef, {static: true}) content!: TemplateRef<void>;\r\n\r\n    @Input() span = 1;\r\n    @Input() title: string | TemplateRef<void> = '';\r\n\r\n    readonly inputChange$ = new Subject<void>();\r\n\r\n    ngOnChanges(): void {\r\n        this.inputChange$.next();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.inputChange$.complete();\r\n    }\r\n}\r\n","import {\r\n    AfterContentInit,\r\n    ChangeDetectionStrategy, ChangeDetectorRef,\r\n    Component, ContentChildren,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit, QueryList,\r\n    SimpleChanges,\r\n    TemplateRef\r\n}                                                                     from '@angular/core';\r\nimport { ArtDescriptionsItemComponent }                               from './art-descriptions-item.component';\r\nimport { auditTime, merge, startWith, Subject, switchMap, takeUntil } from 'rxjs';\r\n\r\nexport interface ArtDescriptionsItemRenderProps {\r\n    title: string | TemplateRef<void>;\r\n    span: number;\r\n    content: TemplateRef<void>;\r\n}\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'art-descriptions',\r\n    standalone: false,\r\n    template: `\r\n        <div *ngIf=\"title || extra\" class=\"art-descriptions-header\">\r\n            <div *ngIf=\"title\" class=\"art-descriptions-title\">\r\n                <ng-container *artStringTemplateOutlet=\"title\">{{ title }}</ng-container>\r\n            </div>\r\n            <div *ngIf=\"extra\" class=\"art-descriptions-extra\">\r\n                <ng-container>{{ extra }}</ng-container>\r\n            </div>\r\n        </div>\r\n        <div class=\"art-descriptions-view\">\r\n            <table class=\"art-descriptions-table\">\r\n                <tbody>\r\n                <ng-container>\r\n                    <tr class=\"art-descriptions-row\" *ngFor=\"let row of itemMatrix; let i = index\">\r\n                        <ng-container *ngFor=\"let item of row; let isLast = last\">\r\n                            <!-- Horizontal & NOT Bordered -->\r\n                            <ng-container *ngIf=\"!bordered\">\r\n                                <td class=\"art-descriptions-item\" [colSpan]=\"item.span\">\r\n                                    <div class=\"art-descriptions-item-container\">\r\n                      <span class=\"art-descriptions-item-label\" [class.art-descriptions-item-no-colon]=\"!nzColon\">\r\n                        <ng-container>\r\n                          {{ item.title }}\r\n                        </ng-container>\r\n                      </span>\r\n                                        <span class=\"art-descriptions-item-content\">\r\n                        <ng-template [ngTemplateOutlet]=\"item.content\"></ng-template>\r\n                      </span>\r\n                                    </div>\r\n                                </td>\r\n                            </ng-container>\r\n                            <!-- Horizontal & Bordered -->\r\n                            <ng-container *ngIf=\"bordered\">\r\n                                <td class=\"art-descriptions-item-label\">\r\n                                    <ng-container>\r\n                                        {{ item.title }}\r\n                                    </ng-container>\r\n                                </td>\r\n                                <td class=\"art-descriptions-item-content\" [colSpan]=\"item.span * 2 - 1\">\r\n                                    <ng-template [ngTemplateOutlet]=\"item.content\"></ng-template>\r\n                                </td>\r\n                            </ng-container>\r\n                        </ng-container>\r\n                    </tr>\r\n                </ng-container>\r\n                </tbody>\r\n            </table>\r\n        </div>\r\n    `,\r\n    styleUrls: ['./art-descriptions.component.scss'],\r\n    host: {\r\n        class: '',\r\n        '[class.art-descriptions-bordered]': 'bordered',\r\n    }\r\n})\r\nexport class ArtDescriptionsComponent implements OnChanges, OnDestroy, AfterContentInit, OnInit {\r\n\r\n    @ContentChildren(ArtDescriptionsItemComponent) items!: QueryList<ArtDescriptionsItemComponent>;\r\n\r\n    @Input() bordered: boolean = false;\r\n    @Input() column: number = 1;\r\n    @Input() title: string | TemplateRef<void> = '';\r\n    @Input() extra?: string | TemplateRef<void>;\r\n    @Input() nzColon: boolean = true;\r\n\r\n    itemMatrix: ArtDescriptionsItemRenderProps[][] = [];\r\n    realColumn = 3;\r\n\r\n    private destroy$ = new Subject<void>();\r\n\r\n    constructor(private cdr: ChangeDetectorRef) {\r\n    }\r\n\r\n    ngAfterContentInit(): void {\r\n        const contentChange$ = this.items.changes.pipe(startWith(this.items), takeUntil(this.destroy$));\r\n        merge(\r\n            contentChange$,\r\n            contentChange$.pipe(switchMap(() => merge(...this.items.map(i => i.inputChange$)).pipe(auditTime(16))))\r\n        )\r\n            .pipe(takeUntil(this.destroy$))\r\n            .subscribe(() => {\r\n                this.prepareMatrix();\r\n                this.cdr.markForCheck();\r\n            });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes['column']) {\r\n            this.prepareMatrix();\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.destroy$.next();\r\n        this.destroy$.complete();\r\n    }\r\n\r\n    ngOnInit(): void {\r\n    }\r\n\r\n    private prepareMatrix(): void {\r\n        if (!this.items) {\r\n            return;\r\n        }\r\n\r\n        let currentRow: ArtDescriptionsItemRenderProps[] = [];\r\n        let width = 0;\r\n\r\n        const column = (this.realColumn = this.getColumn());\r\n        const items = this.items.toArray();\r\n        const length = items.length;\r\n        const matrix: ArtDescriptionsItemRenderProps[][] = [];\r\n        const flushRow = (): void => {\r\n            matrix.push(currentRow);\r\n            currentRow = [];\r\n            width = 0;\r\n        };\r\n\r\n        for (let i = 0; i < length; i++) {\r\n            const item = items[i];\r\n            const {title: title, content, span: span} = item;\r\n\r\n            width += span;\r\n\r\n            // If the last item make the row's length exceeds `nzColumn`, the last\r\n            // item should take all the space left. This logic is implemented in the template.\r\n            // Warn user about that.\r\n            if (width >= column) {\r\n                if (width > column) {\r\n                    console.log(`\"column\" is ${column} but we have row length ${width}`);\r\n                }\r\n                currentRow.push({title, content, span: column - (width - span)});\r\n                flushRow();\r\n            } else if (i === length - 1) {\r\n                currentRow.push({title, content, span: column - (width - span)});\r\n                flushRow();\r\n            } else {\r\n                currentRow.push({title, content, span});\r\n            }\r\n        }\r\n\r\n        this.itemMatrix = matrix;\r\n    }\r\n\r\n    private getColumn(): number {\r\n        return this.column;\r\n    }\r\n\r\n}\r\n","import { NgModule }                     from '@angular/core';\r\nimport { ArtDescriptionsComponent }     from './art-descriptions.component';\r\nimport { ArtDescriptionsItemComponent } from './art-descriptions-item.component';\r\nimport { CommonModule }                 from '@angular/common';\r\nimport { MatCardModule }                from '@angular/material/card';\r\nimport { ArtCoreModule }                from '@think-make/art-extends/core';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        ArtDescriptionsComponent,\r\n        ArtDescriptionsItemComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ArtCoreModule,\r\n        MatCardModule\r\n    ],\r\n    exports: [\r\n        ArtDescriptionsComponent,\r\n        ArtDescriptionsItemComponent\r\n    ]\r\n})\r\nexport class ArtDescriptionsModule {\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}