{"version":3,"file":"shival99-z-ui-components-z-skeleton.mjs","sources":["../../../../libs/core-ui/components/z-skeleton/z-skeleton.variants.ts","../../../../libs/core-ui/components/z-skeleton/z-skeleton.component.ts","../../../../libs/core-ui/components/z-skeleton/z-skeleton.component.html","../../../../libs/core-ui/components/z-skeleton/shival99-z-ui-components-z-skeleton.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zSkeletonVariants = cva('z-skeleton', {\n  variants: {\n    type: {\n      bar: 'z-skeleton-bar',\n      circle: 'z-skeleton-circle',\n      text: 'z-skeleton-text',\n    },\n    size: {\n      sm: '',\n      default: '',\n      lg: '',\n    },\n    animated: {\n      true: 'z-skeleton-animated',\n      false: '',\n    },\n  },\n  compoundVariants: [\n    {\n      type: 'circle',\n      size: 'sm',\n      class: 'z-skeleton-circle-sm',\n    },\n    {\n      type: 'circle',\n      size: 'default',\n      class: 'z-skeleton-circle-default',\n    },\n    {\n      type: 'circle',\n      size: 'lg',\n      class: 'z-skeleton-circle-lg',\n    },\n  ],\n  defaultVariants: {\n    type: 'bar',\n    size: 'default',\n    animated: true,\n  },\n});\n\nexport type ZSkeletonVariants = VariantProps<typeof zSkeletonVariants>;\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  ElementRef,\n  inject,\n  input,\n  signal,\n} from '@angular/core';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { ZSkeletonRowItem, ZSkeletonSize, ZSkeletonType } from './z-skeleton.types';\nimport { zSkeletonVariants } from './z-skeleton.variants';\n\n@Component({\n  selector: 'z-skeleton',\n  standalone: true,\n  templateUrl: './z-skeleton.component.html',\n  styleUrl: './z-skeleton.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'z-skeleton-host',\n    '[style.width]': 'zWidth()',\n    '[style.height]': 'hostHeight()',\n  },\n})\nexport class ZSkeletonComponent implements AfterViewInit {\n  private readonly _elementRef = inject(ElementRef);\n\n  public readonly class = input<ClassValue>('');\n  public readonly zType = input<ZSkeletonType>('bar');\n  public readonly zSize = input<ZSkeletonSize>('default');\n  public readonly zWidth = input<string>('100%');\n  public readonly zHeight = input<string | undefined>(undefined);\n  public readonly zRows = input<number>(1);\n  public readonly zGap = input<number>(8);\n  public readonly zAnimated = input<boolean>(true);\n  public readonly zRadius = input<string>('4px');\n\n  private readonly _calculatedRows = signal<number>(1);\n\n  ngAfterViewInit(): void {\n    if (this.zType() === 'bar') {\n      this._calculateBarRows();\n    }\n  }\n\n  protected readonly containerClass = computed(() => zMergeClasses(this.class()));\n  protected readonly hostHeight = computed(() => {\n    if (this.zType() !== 'text' || this.zRows() <= 1) {\n      return this.zHeight();\n    }\n\n    const rowHeight = this.zHeight() ?? '1rem';\n    const totalGap = (this.zRows() - 1) * this.zGap();\n\n    return `calc(${rowHeight} * ${this.zRows()} + ${totalGap}px)`;\n  });\n\n  protected readonly skeletonClasses = computed(() =>\n    zSkeletonVariants({ type: this.zType(), size: this.zSize(), animated: this.zAnimated() })\n  );\n\n  protected readonly circleStyles = computed(() => {\n    if (this.zHeight() || this.zWidth() !== '100%') {\n      return { width: this.zWidth(), height: this.zHeight() || this.zWidth() };\n    }\n    return {};\n  });\n\n  protected readonly shouldShowMultipleRows = computed(\n    () => (this.zType() === 'bar' || this.zType() === 'text') && this.zRows() > 1\n  );\n\n  protected readonly rowsArray = computed<ZSkeletonRowItem[]>(() => {\n    const type = this.zType();\n    if (type !== 'bar' && type !== 'text') {\n      return [{ index: 0, height: '0rem' }];\n    }\n    const rowCount = this.zRows() || this._calculatedRows();\n    const gapBetweenRows = this.zGap();\n    const totalGapSpace = (rowCount - 1) * gapBetweenRows;\n    const height = this.zHeight();\n    const rowHeight = height ?? `calc((100% - ${totalGapSpace}px) / ${rowCount})`;\n    return Array.from({ length: rowCount }, (_, i) => ({ index: i, height: rowHeight }));\n  });\n\n  private _calculateBarRows(): void {\n    const { parentElement } = this._elementRef.nativeElement || {};\n    if (!parentElement) {\n      return;\n    }\n    const rows = this.zRows();\n    if (rows && rows > 0) {\n      this._calculatedRows.set(rows);\n      return;\n    }\n    this._calculatedRows.set(1);\n  }\n}\n","<div class=\"z-skeleton-container\" [class]=\"containerClass()\">\n  @if (zType() === 'circle') {\n    <div [class]=\"skeletonClasses()\" [style]=\"circleStyles()\"></div>\n  } @else if (zType() === 'bar' || zType() === 'text') {\n    @if (shouldShowMultipleRows()) {\n      @for (row of rowsArray(); track row.index) {\n        <div\n          class=\"z-skeleton-row\"\n          [class]=\"skeletonClasses()\"\n          [style.margin-bottom.px]=\"row.index === rowsArray().length - 1 ? 0 : zGap()\"\n          [style.height]=\"row.height\"\n          [style.width]=\"zWidth()\"\n          [style.border-radius]=\"zRadius()\"></div>\n      }\n    } @else {\n      <div\n        [class]=\"skeletonClasses()\"\n        [style.width]=\"zWidth()\"\n        [style.height]=\"zHeight() || '100%'\"\n        [style.border-radius]=\"zRadius()\"></div>\n    }\n  }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}