{"version":3,"file":"ncr-contentful-contentful-grid.component-Cri-1as-.mjs","sources":["../../../projects/ncr-contentful/src/components/contentful-grid/contentful-grid.component.ts","../../../projects/ncr-contentful/src/components/contentful-grid/contentful-grid.component.html"],"sourcesContent":["import {ChangeDetectionStrategy, Component, ElementRef, OnDestroy, OnInit, Renderer2} from \"@angular/core\";\nimport {CommonModule} from \"@angular/common\";\nimport {NcrDynamicDirective} from \"../../directives/dynamic/ncr-dynamic.directive\";\nimport {ContentfulComponent} from \"../ncr-contentful-components.model\";\nimport {TypeGrid} from \"./contentful-grid.model\";\nimport {NcrContentfulConfig} from \"../../config\";\nimport {DefaultBreakpoints} from \"../../models\";\n\n@Component({\n    selector: \"ncr-contentful-grid\",\n    templateUrl: \"./contentful-grid.component.html\",\n    standalone: true,\n    styleUrls: [],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule, NcrDynamicDirective],\n})\nexport class ContentfulGridComponent extends ContentfulComponent<TypeGrid> implements OnInit, OnDestroy {\n    private static count = 0;\n    public _count: number = 0;\n    private styleElement: HTMLStyleElement | undefined;\n\n    constructor(\n        private renderer: Renderer2,\n        private el: ElementRef,\n        private ncrConfig: NcrContentfulConfig\n    ) {\n        super();\n    }\n\n    ngOnInit(): void {\n        this._count = ++ContentfulGridComponent.count;\n\n        this.styleElement = this.renderer.createElement(\"style\");\n        this.renderer?.appendChild(this.styleElement, this.renderer.createText(this.getResponsiveStyle()));\n        this.renderer?.appendChild(this.el.nativeElement, this.styleElement);\n    }\n\n    ngOnDestroy(): void {\n        if (this?.styleElement?.parentNode) {\n            this.styleElement.parentNode.removeChild(this.styleElement);\n        }\n    }\n\n    getResponsiveStyle() {\n        if (!this.entry?.fields || !this.entry?.fields?.items) {\n            return \"\";\n        }\n\n        const breakpoints = Object.keys(this.ncrConfig.breakpoints) as DefaultBreakpoints[];\n\n        return breakpoints\n            .map((breakpointKey) => {\n                return this.wrapInMediaQuery(breakpointKey, this.ncrConfig.breakpoints[breakpointKey].minWidth);\n            })\n            .join(\"\");\n    }\n\n    private wrapInMediaQuery(breakpointKey: DefaultBreakpoints, minWidth: number) {\n        const style = `\n    ${this.generateGridItemsStyles(breakpointKey)}\n    ${this.generateGridContainerStyle(breakpointKey)}\n  `;\n\n        if (minWidth === 0) {\n            return style;\n        } else {\n            return `@media (min-width: ${minWidth}px) {\n        ${style}\n      }`;\n        }\n    }\n\n    private generateGridItemsStyles(breakpoint: DefaultBreakpoints): string {\n        if (!this.entry?.fields?.colSpans || !this.entry?.fields?.rowSpans) {\n            return \"\";\n        }\n\n        return (this.entry.fields.items as any[])\n            .map((entry, index) => {\n                const columnSpans: string[] = (this.entry.fields.colSpans[breakpoint] as string)?.split(\",\") || [];\n                const rowSpans: string[] = (this.entry.fields.rowSpans[breakpoint] as string)?.split(\",\") || [];\n                const currentColSpan = columnSpans[index];\n                const currentRowSpan = rowSpans[index];\n\n                return `\n          .grid-container[ncr-id=\"${this._count}\"] > :nth-child(${index + 1}) {\n            grid-column: ${currentColSpan ? \"span \" + currentColSpan : \"auto\"};\n            grid-row: ${currentRowSpan ? \"span \" + currentRowSpan : \"auto\"};\n          }\n        `;\n            })\n            .join(\"\");\n    }\n\n    private generateGridContainerStyle(breakpoint: DefaultBreakpoints): string {\n        if (!this.entry.fields.columnCount) {\n            return \"\";\n        }\n\n        const columnCount = this.entry.fields.columnCount[breakpoint] || 1;\n\n        return `\n      .grid-container[ncr-id=\"${this._count}\"] {\n        display: grid;\n        grid-template-columns: repeat(${columnCount}, 1fr);\n      }\n    `;\n    }\n}\n","<div [attr.ncr-id]=\"_count\" [class]=\"entry.fields?.classList?.join(' ') + ' grid-container'\">\n    <div *ngFor=\"let item of entry.fields.items; let i = index\" class=\"flex\">\n        <ng-template [class]=\"'flex-1'\" [ncrDynamic]=\"item\"></ng-template>\n    </div>\n</div>\n"],"names":["i1.NcrContentfulConfig"],"mappings":"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"}