{"version":3,"file":"shival99-z-ui-components-z-loading.mjs","sources":["../../../../libs/core-ui/components/z-loading/z-loading.variants.ts","../../../../libs/core-ui/components/z-loading/z-loading.component.ts","../../../../libs/core-ui/components/z-loading/z-loading.component.html","../../../../libs/core-ui/components/z-loading/shival99-z-ui-components-z-loading.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zLoadingVariants = cva('inline-block animate-spin', {\n  variants: {\n    zSize: {\n      '2xs': 'size-3',\n      xs: 'size-4',\n      default: 'size-6',\n      lg: 'size-8',\n      xl: 'size-12',\n    },\n    zColor: {\n      primary: 'text-primary',\n      secondary: 'text-secondary-foreground',\n      white: 'text-white',\n      current: 'text-current',\n    },\n  },\n  defaultVariants: {\n    zSize: 'default',\n    zColor: 'primary',\n  },\n});\n\nexport type ZLoadingVariants = VariantProps<typeof zLoadingVariants>;\n","import { NgTemplateOutlet, CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, input, signal, ViewEncapsulation } from '@angular/core';\nimport { zTransform, zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type { ZLoadingSpinner, ZLoadingSize, ZLoadingColor, ZLoadingOverlayType } from './z-loading.types';\nimport { zLoadingVariants } from './z-loading.variants';\n\n@Component({\n  selector: 'z-loading',\n  imports: [CommonModule, NgTemplateOutlet],\n  standalone: true,\n  templateUrl: './z-loading.component.html',\n  styleUrl: './z-loading.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'z-loading inline-flex',\n  },\n})\nexport class ZLoadingComponent {\n  public readonly class = input<ClassValue>('');\n  public readonly zSpinner = input<ZLoadingSpinner>('spinner');\n  public readonly zSize = input<ZLoadingSize>('default');\n  public readonly zColor = input<ZLoadingColor>('primary');\n  public readonly zText = input<string>('');\n  public readonly zOverlay = input(false, { transform: zTransform });\n  public readonly zOverlayType = input<ZLoadingOverlayType>('dark');\n  public readonly zFullscreen = input(false, { transform: zTransform });\n  public readonly zLoading = input(false, { transform: zTransform });\n\n  protected readonly isVisible = signal(false);\n  protected readonly isLeaving = signal(false);\n\n  private _leaveTimeout: ReturnType<typeof setTimeout> | null = null;\n\n  constructor() {\n    effect(() => {\n      this._handleLoadingChange();\n    });\n  }\n\n  protected readonly spinnerClasses = computed(() =>\n    zMergeClasses(\n      zLoadingVariants({\n        zSize: this.zSize(),\n        zColor: this.zColor(),\n      }),\n      this.class()\n    )\n  );\n\n  protected readonly baseClasses = computed(() => {\n    const size = this.zSize();\n    const sizeClass = {\n      '2xs': 'size-3',\n      xs: 'size-4',\n      default: 'size-6',\n      lg: 'size-8',\n      xl: 'size-12',\n    }[size];\n    return zMergeClasses('inline-block', sizeClass, `text-${this.zColor()}`, this.class());\n  });\n\n  protected readonly overlayClasses = computed(() => `z-loading-overlay-${this.zOverlayType()}`);\n\n  protected readonly textSizeClasses = computed(() => {\n    const size = this.zSize();\n    return {\n      'text-xs': size === '2xs' || size === 'xs',\n      'text-sm': size === 'default',\n      'text-base': size === 'lg',\n      'text-lg': size === 'xl',\n    };\n  });\n\n  private _handleLoadingChange(): void {\n    const loading = this.zLoading();\n    if (loading) {\n      if (this._leaveTimeout) {\n        clearTimeout(this._leaveTimeout);\n        this._leaveTimeout = null;\n      }\n      this.isLeaving.set(false);\n      this.isVisible.set(true);\n      return;\n    }\n\n    this.isLeaving.set(true);\n    this._leaveTimeout = setTimeout(() => {\n      this.isVisible.set(false);\n      this.isLeaving.set(false);\n    }, 100);\n  }\n}\n","@if (!zOverlay() && !zFullscreen()) {\n  <div\n    class=\"z-loading-wrapper inline-flex items-center justify-center transition-opacity duration-150\"\n    [class.opacity-0]=\"!zLoading()\"\n    [class.pointer-events-none]=\"!zLoading()\">\n    <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n  </div>\n}\n\n@if ((zOverlay() || zFullscreen()) && isVisible()) {\n  <div\n    class=\"z-loading-wrapper inline-flex items-center justify-center\"\n    [class.z-loading-overlay]=\"zOverlay()\"\n    [class.z-loading-fullscreen]=\"zFullscreen()\"\n    [class.z-loading-leaving]=\"isLeaving()\"\n    [class]=\"overlayClasses()\">\n    <ng-container *ngTemplateOutlet=\"spinnerContent\" />\n  </div>\n}\n\n<ng-template #spinnerContent>\n  <div class=\"z-loading-content flex flex-col items-center justify-center gap-3\">\n    @switch (zSpinner()) {\n      @case ('spinner') {\n        <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n          <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n          <path\n            class=\"opacity-75\"\n            fill=\"currentColor\"\n            d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n        </svg>\n      }\n      @case ('orbit') {\n        <div [class]=\"spinnerClasses()\" class=\"z-loading-orbit relative\">\n          <div class=\"absolute top-1/2 left-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current\"></div>\n          <div class=\"absolute top-1/2 right-0 h-2 w-2 -translate-y-1/2 rounded-full bg-current opacity-30\"></div>\n        </div>\n      }\n      @case ('matrix') {\n        <div [class]=\"baseClasses()\" class=\"z-loading-matrix\"></div>\n      }\n      @case ('conic') {\n        <div [class]=\"baseClasses()\" class=\"z-loading-conic rounded-full\"></div>\n      }\n      @case ('polygon') {\n        <div [class]=\"baseClasses()\" class=\"z-loading-polygon rounded-full\"></div>\n      }\n      @case ('triple') {\n        <div [class]=\"baseClasses()\" class=\"z-loading-triple rounded-full\"></div>\n      }\n    }\n\n    @if (zText()) {\n      <p [class]=\"textSizeClasses()\" class=\"z-loading-text font-medium\" [style.color]=\"'currentColor'\">\n        {{ zText() }}\n      </p>\n    }\n  </div>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAEO,MAAM,gBAAgB,GAAG,GAAG,CAAC,2BAA2B,EAAE;AAC/D,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,SAAS;AACd,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,cAAc;AACvB,YAAA,SAAS,EAAE,2BAA2B;AACtC,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;AACF,CAAA;;MCHY,iBAAiB,CAAA;AACZ,IAAA,KAAK,GAAG,KAAK,CAAa,EAAE,iDAAC;AAC7B,IAAA,QAAQ,GAAG,KAAK,CAAkB,SAAS,oDAAC;AAC5C,IAAA,KAAK,GAAG,KAAK,CAAe,SAAS,iDAAC;AACtC,IAAA,MAAM,GAAG,KAAK,CAAgB,SAAS,kDAAC;AACxC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;IACzB,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AAClD,IAAA,YAAY,GAAG,KAAK,CAAsB,MAAM,wDAAC;IACjD,WAAW,GAAG,KAAK,CAAC,KAAK,wDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACrD,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AAE/C,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AACzB,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;IAEpC,aAAa,GAAyC,IAAI;AAElE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,IAAI,CAAC,oBAAoB,EAAE;AAC7B,QAAA,CAAC,CAAC;IACJ;IAEmB,cAAc,GAAG,QAAQ,CAAC,MAC3C,aAAa,CACX,gBAAgB,CAAC;AACf,QAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,QAAA,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;AACtB,KAAA,CAAC,EACF,IAAI,CAAC,KAAK,EAAE,CACb,0DACF;AAEkB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,EAAE,EAAE,SAAS;SACd,CAAC,IAAI,CAAC;AACP,QAAA,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACxF,IAAA,CAAC,uDAAC;AAEiB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAA,kBAAA,EAAqB,IAAI,CAAC,YAAY,EAAE,CAAA,CAAE,0DAAC;AAE3E,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACjD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;QACzB,OAAO;AACL,YAAA,SAAS,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI;YAC1C,SAAS,EAAE,IAAI,KAAK,SAAS;YAC7B,WAAW,EAAE,IAAI,KAAK,IAAI;YAC1B,SAAS,EAAE,IAAI,KAAK,IAAI;SACzB;AACH,IAAA,CAAC,2DAAC;IAEM,oBAAoB,GAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC/B,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;YAC3B;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAC3B,CAAC,EAAE,GAAG,CAAC;IACT;uGAzEW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB9B,u1EA2DA,EAAA,MAAA,EAAA,CAAA,sgHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlDY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAUX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAZ7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAA,UAAA,EAC7B,IAAI,EAAA,eAAA,EAGC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA,EAAA,QAAA,EAAA,u1EAAA,EAAA,MAAA,EAAA,CAAA,sgHAAA,CAAA,EAAA;;;AEjBH;;AAEG;;;;"}