{"version":3,"file":"webresto-components-delivery-thresholds.mjs","sources":["../../../projects/components/delivery-thresholds/delivery-thresholds-info/delivery-thresholds-info.component.ts","../../../projects/components/delivery-thresholds/delivery-thresholds-info/delivery-thresholds-info.component.html","../../../projects/components/delivery-thresholds/delivery-thresholds.component.ts","../../../projects/components/delivery-thresholds/delivery-thresholds.component.html","../../../projects/components/delivery-thresholds/webresto-components-delivery-thresholds.ts"],"sourcesContent":["import {NgFor, NgIf} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {TrackByPropertyDirective} from '@axrl/common';\nimport {Treshold} from '../treshold';\n\n@Component({\n  selector: 'delivery-thresholds-info',\n  host: {\n    class: 'delivery-thresholds-info',\n  },\n  standalone: true,\n  imports: [NgIf, NgFor, TrackByPropertyDirective],\n  templateUrl: './delivery-thresholds-info.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class DeliveryThresholdsInfoComponent {\n  @Input() currentState: Record<string, any> | null = null;\n  @Input() tresholds: Treshold[] | undefined;\n}\n","<ng-container *ngIf=\"currentState && tresholds\">\n  <h3 class=\"mat-headline-6\">\n    {{ currentState?.['currentModeName'] }}\n  </h3>\n  <div class=\"mat-body-1 threshold-description\">\n    {{ currentState?.['message'] }}\n  </div>\n  <div class=\"mat-body-1 threshold-description\">\n    <ul>\n      <li\n        *ngFor=\"let item of tresholds; trackByProperty: 'from'\"\n        [class.active]=\"item.isCurrentActive\"\n      >\n        {{ item?.description }}\n      </li>\n    </ul>\n  </div>\n  <div class=\"mat-body-1 threshold-delivery-time\">\n    Время доставки -\n    {{ currentState?.['deliveryTimeInMinutes'] }} минут\n  </div>\n</ng-container>\n","import {\n  animate,\n  state,\n  style,\n  transition,\n  trigger,\n} from '@angular/animations';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgFor, NgIf } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Input,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n  TrackByPropertyDirective,\n  createSubject,\n  isValue,\n  objectEntries,\n  resizeObservable,\n} from '@axrl/common';\nimport { NgOrderService } from '@webresto/ng-gql';\nimport { distinctUntilChanged, map, shareReplay, switchMap } from 'rxjs';\nimport { DeliveryThresholdsInfoComponent } from './delivery-thresholds-info';\nimport { Treshold } from './treshold';\n\n@Component({\n  selector: 'delivery-thresholds',\n  standalone: true,\n  imports: [\n    MatButtonModule,\n    MatIconModule,\n    OverlayModule,\n    AsyncPipe,\n    NgIf,\n    NgFor,\n    DeliveryThresholdsInfoComponent,\n    TrackByPropertyDirective,\n  ],\n  templateUrl: './delivery-thresholds.component.html',\n  host: {\n    class: 'webresto-delivery-thresholds',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('rotatedState', [\n      state('default', style({ transform: 'rotate(0)' })),\n      state('rotated', style({ transform: 'rotate(-360deg)' })),\n      transition('rotated <=> default', animate('500ms ease')),\n    ]),\n  ],\n})\nexport class DeliveryThresholdsComponent {\n  private _styleConfig: Record<string, string> | undefined;\n  private _isOpenOverlay = createSubject(false);\n  private _rotateIcon = createSubject<'rotated' | 'default'>('default');\n\n  readonly orderData$ = this._ngOrder.getOrder().pipe(\n    map((order) => {\n      const currentState = order?.promotionState?.[0]?.state;\n      const tresholds = this.getTresholds(currentState);\n      const tresholdLength = tresholds.length;\n      const maxTreshold =\n        tresholdLength > 0 ? tresholds[tresholdLength - 1].from : 0;\n      const value =\n        isValue(order) && maxTreshold > order.orderTotal ? order.orderTotal : maxTreshold;\n      this.rotateIcon();\n\n      return {\n        order,\n        currentState,\n        tresholds,\n        maxTreshold,\n        value,\n      };\n    }),\n    shareReplay({ bufferSize: 1, refCount: true })\n  );\n\n  readonly canShowTresholds$ = this.orderData$.pipe(\n    map(({ order, tresholds }) => {\n      const canShowTresholds =\n        isValue(order) && !order.selfService && tresholds.length > 0;\n      if (canShowTresholds) {\n        this._elementRef.nativeElement.classList.add('can-show-tresholds');\n      } else {\n        this._elementRef.nativeElement.classList.remove('can-show-tresholds');\n      }\n      return canShowTresholds;\n    })\n  );\n\n  readonly isOpenOverlay$ = this._isOpenOverlay.asObservable();\n  readonly rotateIcon$ = this._rotateIcon.asObservable();\n\n  readonly trackWidth$ = resizeObservable(this._elementRef.nativeElement).pipe(\n    map(() =>\n      isValue(this.track) ? this.track.nativeElement.clientWidth - 32 : 0\n    ),\n    shareReplay({ bufferSize: 1, refCount: true })\n  );\n\n  readonly activeTrackWidth$ = this.trackWidth$.pipe(\n    switchMap((trackWidth) =>\n      this.orderData$.pipe(\n        map(({ value, maxTreshold }) => {\n          const result =\n            value === maxTreshold\n              ? trackWidth + 32\n              : (trackWidth / maxTreshold) * value;\n\n          const middleViewport = window.innerWidth / 2 - 48;\n\n          this.trackContainer?.nativeElement.scrollTo({\n            behavior: 'smooth',\n            left: result - middleViewport,\n          });\n          return result;\n        })\n      )\n    )\n  );\n\n  readonly inActiveTrackClass$ = this.orderData$.pipe(\n    map(({ value, maxTreshold }) =>\n      value === 0 ? 'empty' : value === maxTreshold ? 'full' : ''\n    ),\n    distinctUntilChanged()\n  );\n\n  @Input() set styleConfig(value: Record<string, string>) {\n    this._styleConfig = value;\n    objectEntries(this._styleConfig).forEach(([property, value]) => {\n      const propertyLavlue = typeof value === 'string' && value.includes('$')\n        ? document.documentElement.style.getPropertyValue(\n            `--${value.replace('$', '')}`\n          )\n        : value;\n      this._elementRef.nativeElement.style.setProperty(\n        `--${property}`,\n        propertyLavlue\n      );\n    });\n  }\n  get styleConfig(): Record<string, string> {\n    return (\n      this._styleConfig ?? {\n        'tresholds-info-bg-color': 'rgba(154, 0, 2, 1)',\n        'border-radius': '20px',\n        'primary-color': 'white',\n        'background-color': 'black',\n      }\n    );\n  }\n\n  @ViewChild('track') track: ElementRef<HTMLDivElement> | undefined;\n  @ViewChild('trackWrapper') trackContainer:\n    | ElementRef<HTMLDivElement>\n    | undefined;\n\n  constructor(\n    private _elementRef: ElementRef<HTMLElement>,\n    private _ngOrder: NgOrderService\n  ) {\n    this.styleConfig = this.styleConfig;\n  }\n\n  overlayAction(close?: boolean): void {\n    if(close === undefined) close = true;\n    this._isOpenOverlay.next(!close);\n  }\n\n  rotateIcon(): void {\n    // eslint-disable-next-line rxjs/no-subject-value\n    const state = this._rotateIcon.value;\n    this._rotateIcon.next(state === 'default' ? 'rotated' : 'default');\n  }\n\n  getLabelItemWidth(\n    containerWidth: number | null,\n    maxTreshold: number | undefined,\n    item: Treshold,\n    last: boolean\n  ): number {\n    const baseWidth = (containerWidth ?? 0) / (maxTreshold ?? 0);\n    return last ? 32 : baseWidth * item.step;\n  }\n\n  private getTresholds(\n    state: Record<string, any> | null | undefined\n  ): Treshold[] {\n    const tresholds = <Treshold[]>state?.['thresholds'] ?? [];\n    return tresholds\n      .sort((tresholdA, tresholdB) => tresholdA.from - tresholdB.from)\n      .map((treshold, index, array) => {\n        const last = index === array.length;\n        const nexIndex = last ? index - 1 : index + 1;\n        const nextItem = array[nexIndex];\n        return {\n          ...treshold,\n          labelLeftOffset: (String(treshold.from).length * -9) / 2,\n          isCurrentActive:\n            treshold.description === state?.['currentThresholdDescription'],\n          step: isValue(nextItem)\n            ? last\n              ? treshold.from - nextItem.from\n              : nextItem.from - treshold.from\n            : 0,\n        };\n      });\n  }\n}\n","<ng-container *ngIf=\"orderData$ | async as orderData\">\n  <div class=\"container\" *ngIf=\"canShowTresholds$ | async\">\n    <button\n      mat-icon-button\n      color=\"accent\"\n      (click)=\"overlayAction()\"\n      type=\"button\"\n      cdkOverlayOrigin\n      #trigger=\"cdkOverlayOrigin\"\n    >\n      <mat-icon [@rotatedState]=\"rotateIcon$ | async\">info</mat-icon>\n    </button>\n\n    <div class=\"track-container\" #trackWrapper>\n      <div class=\"track\" #track (click)=\"overlayAction()\">\n        <div class=\"active\" [style.width.px]=\"activeTrackWidth$ | async\"></div>\n        <div class=\"inactive\">\n          <div class=\"inactive-shadow\" [class]=\"inActiveTrackClass$ | async\"></div>\n        </div>\n        <div class=\"track-labels\">\n          <ng-container\n            *ngFor=\"\n              let item of orderData.tresholds;\n              let first = first;\n              let last = last;\n              trackByProperty: 'from'\n            \"\n          >\n            <div\n              class=\"track-label\"\n              [style.width.px]=\"\n                getLabelItemWidth(trackWidth$ | async, orderData.maxTreshold, item, last)\n              \"\n            >\n              <span *ngIf=\"!first\" [style.margin-left.px]=\"item.labelLeftOffset\">{{\n                item.from\n              }}</span>\n\n              <svg\n                *ngIf=\"!first\"\n                width=\"2\"\n                height=\"6\"\n                viewBox=\"0 0 2 6\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n              >\n                <path\n                  d=\"M0 1C0 0.447715 0.447715 0 1 0C1.55228 0 2 0.447715 2 1V6H0V1Z\"\n                  fill=\"white\"\n                />\n              </svg>\n            </div>\n          </ng-container>\n        </div>\n      </div>\n    </div>\n\n    <ng-template\n      cdkConnectedOverlay\n      [cdkConnectedOverlayOrigin]=\"trigger\"\n      [cdkConnectedOverlayOpen]=\"!!(isOpenOverlay$ | async)\"\n      (overlayOutsideClick)=\"overlayAction(true)\"\n    >\n      <div\n        *ngIf=\"orderData.currentState\"\n        class=\"thresholds-info\"\n        [style.--tresholds-info-bg-color]=\"styleConfig['tresholds-info-bg-color']\"\n        [style.--border-radius]=\"styleConfig['border-radius']\"\n        [style.--primary-color]=\"styleConfig['primary-color']\"\n      >\n        <button\n          mat-icon-button\n          class=\"thresholds-info-close\"\n          type=\"button\"\n          (click)=\"overlayAction(true)\"\n        >\n          <mat-icon>close</mat-icon>\n        </button>\n        <delivery-thresholds-info\n          [currentState]=\"orderData.currentState\"\n          [tresholds]=\"orderData.tresholds\"\n        ></delivery-thresholds-info>\n      </div>\n    </ng-template>\n  </div>\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}