{"version":3,"file":"adjai-ngx-library-src-lib-elements.mjs","sources":["../../../projects/ngx-library/src/lib/elements/tags-selector/tags-selector.component.ts","../../../projects/ngx-library/src/lib/elements/tags-selector/tags-selector.component.html","../../../projects/ngx-library/src/lib/elements/sgrid/sgrid.component.ts","../../../projects/ngx-library/src/lib/elements/sgrid/sgrid.component.html","../../../projects/ngx-library/src/lib/elements/system-loader/system-loader.service.ts","../../../projects/ngx-library/src/lib/elements/system-loader/system-loader.component.ts","../../../projects/ngx-library/src/lib/elements/system-loader/system-loader.component.html","../../../projects/ngx-library/src/lib/elements/paginator/paginator.component.ts","../../../projects/ngx-library/src/lib/elements/paginator/paginator.component.html","../../../projects/ngx-library/src/lib/elements/feedback/feedback.service.ts","../../../projects/ngx-library/src/lib/elements/feedback/feedback.component.ts","../../../projects/ngx-library/src/lib/elements/feedback/feedback.component.html","../../../projects/ngx-library/src/lib/elements/elements.module.ts","../../../projects/ngx-library/src/lib/elements/adjai-ngx-library-src-lib-elements.ts"],"sourcesContent":["import {Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild} from '@angular/core';\r\nimport {debounceTime} from \"rxjs/operators\";\r\nimport {Observable, of, Subject, Subscription} from \"rxjs\";\r\nimport {ApiService} from \"@adjai/ngx-library/src/lib/api\";\r\n\r\n@Component({\r\n  selector: 'mx-tags-selector',\r\n  templateUrl: './tags-selector.component.html',\r\n  styleUrls: ['./tags-selector.component.scss']\r\n})\r\nexport class TagsSelectorComponent implements OnInit, OnDestroy {\r\n  @ViewChild('inputElement') inputElement!: ElementRef\r\n  @Input('noTagsPlaceholder') noTagsPlaceholder = 'Задайте теги...'\r\n  @Input('enterTagPlaceholder') addTagPlaceholder = 'Имя тега...'\r\n  @Input('minLength') minLength = 2\r\n  @Input('ifAllowAdd') ifAllowAdd = true // doesn't work\r\n  @Input('requestSuggestions') requestSuggestions: undefined | ((part: string) => Observable<string[]>)\r\n  //@Input('requestSaveTags') requestSaveTags: undefined | ((tags: string[]) => void)\r\n  @Output('onChange') onChange: EventEmitter<string[]> = new EventEmitter<string[]>()\r\n  @Input('selectedTags') selectedTags: string[] = []\r\n  @Input('ifUseEmbeddedTagsLogic') ifUseEmbeddedTagsLogic = false\r\n  @Input('ifRequestInitialTags') ifRequestInitialTags = false\r\n  @Input('objectId') objectId: number = -1\r\n  @Input('tagGroup') tagGroup = ''\r\n  part = ''\r\n  partChanged$ = new Subject<string>()\r\n  suggestedTags: string[] = []\r\n  highlightedSuggestIndex = -1\r\n  private previousSuggestSubscription: Subscription | undefined\r\n  private registeredSubscriptions = new Subscription()\r\n  focused = false\r\n\r\n  constructor(\r\n    private apiService: ApiService,\r\n  ) {\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.ifUseEmbeddedTagsLogic) {\r\n      if (this.objectId === -1) {\r\n        throw new Error(\"If you'd like to use embedded tags logic, you should define objectId parameter for tag-selector.\")\r\n      }\r\n      this.requestSuggestions = part => this.apiService.execute('tag', 'suggest', {part, group: this.tagGroup})\r\n      this.onChange.subscribe(() => {\r\n        if (this.ifUseEmbeddedTagsLogic) {\r\n          this.saveTags()\r\n        }\r\n      })\r\n      if (this.ifRequestInitialTags) {\r\n        this.apiService.execute<string[]>('tagRel', 'get-by-object', {objectId: this.objectId, group: this.tagGroup}).toPromise().then(items => {\r\n          this.selectedTags = items\r\n        })\r\n      }\r\n    }\r\n    if (this.requestSuggestions) {\r\n      this.registeredSubscriptions.add(\r\n        this.partChanged$.pipe(\r\n          debounceTime(300),\r\n        ).subscribe(part => {\r\n          if (part.length < this.minLength) {\r\n            this.suggestedTags = []\r\n          } else {\r\n            if (this.previousSuggestSubscription) {\r\n              this.previousSuggestSubscription.unsubscribe()\r\n            }\r\n            this.previousSuggestSubscription = this.requestSuggestions!(part).subscribe(response => {\r\n              this.suggestedTags = response.filter(item => this.selectedTags.indexOf(item) === -1)\r\n              this.highlightedSuggestIndex = -1\r\n            })\r\n          }\r\n        })\r\n      )\r\n    }\r\n  }\r\n\r\n  input() {\r\n    this.part = this.inputElement.nativeElement.innerText.trim()\r\n    this.partChanged$.next(this.part)\r\n  }\r\n\r\n  selectTag(tag: string) {\r\n    this.selectedTags.push(tag)\r\n    this.clearSuggestion()\r\n    this.clearInput()\r\n    this.onChange.emit(this.selectedTags)\r\n  }\r\n\r\n  /*click() {\r\n    if (!this.suggestedTags.length && this.part) {\r\n      this.partChanged$.next(this.part)\r\n    }\r\n  }*/\r\n\r\n  moveHighlightedSuggestion(event: Event, direction: number) {\r\n    event.preventDefault()\r\n    this.highlightedSuggestIndex += direction\r\n    if (this.highlightedSuggestIndex < 0) {\r\n      this.highlightedSuggestIndex = this.suggestedTags.length - 1\r\n    } else if (this.highlightedSuggestIndex === this.suggestedTags.length) {\r\n      this.highlightedSuggestIndex = 0\r\n    }\r\n  }\r\n\r\n  selectHighlightedSuggestion() {\r\n    if (this.highlightedSuggestIndex >= 0) {\r\n      this.selectTag(this.suggestedTags[this.highlightedSuggestIndex])\r\n    }\r\n  }\r\n\r\n  private clearSuggestion() {\r\n    this.suggestedTags = []\r\n    this.highlightedSuggestIndex = -1\r\n  }\r\n\r\n  private clearInput() {\r\n    this.part = ''\r\n    this.inputElement.nativeElement.innerText = this.part\r\n  }\r\n\r\n  addTag(event: Event) {\r\n    event.preventDefault()\r\n    if (this.selectedTags.indexOf(this.part) === -1) {\r\n      if (this.highlightedSuggestIndex >= 0) {\r\n        this.selectHighlightedSuggestion()\r\n        this.clearInput()\r\n      } else if (this.part) {\r\n        this.selectTag(this.part)\r\n      }\r\n    }\r\n  }\r\n\r\n  removeSelected(index: number) {\r\n    this.selectedTags.splice(index, 1)\r\n    this.onChange.emit(this.selectedTags)\r\n  }\r\n\r\n  blur() {\r\n    this.clearInput()\r\n    this.clearSuggestion()\r\n    this.focused = false\r\n  }\r\n\r\n  selectInput() {\r\n    this.focused = true\r\n    this.inputElement.nativeElement.focus()\r\n    if (!this.suggestedTags.length && this.part) {\r\n      this.partChanged$.next(this.part)\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.registeredSubscriptions.unsubscribe()\r\n  }\r\n\r\n  cancelSuggestSelection() {\r\n    if (this.highlightedSuggestIndex === -1) {\r\n      this.clearSuggestion()\r\n    } else {\r\n      this.highlightedSuggestIndex = -1\r\n    }\r\n  }\r\n\r\n  private saveTags() {\r\n    // this.selectedTags\r\n    this.apiService.execute('tagRel', 'update', {\r\n      objectId: this.objectId,\r\n      tags: this.selectedTags,\r\n      group: this.tagGroup,\r\n    }).toPromise()\r\n      /*.then(response => {\r\n      console.log(response)\r\n    })*/\r\n  }\r\n}\r\n","<div class=\"tags-selector\" (click)=\"selectInput()\" [class.focused]=\"focused\" [attr.data-selected-count]=\"selectedTags.length\">\r\n  <div class=\"placeholder\" *ngIf=\"noTagsPlaceholder && !focused && !selectedTags.length\">{{ noTagsPlaceholder }}</div>\r\n  <div class=\"selected\" *ngFor=\"let item of selectedTags; index as index\" title=\"Нажмите, чтобы давить теги\">\r\n    {{ item }}\r\n    <div class=\"remove\" (click)=\"removeSelected(index)\" title=\"Удалить тег\"></div>\r\n  </div>\r\n  <div class=\"input\">\r\n    <div [attr.data-placeholder]=\"noTagsPlaceholder && !focused && !selectedTags.length ? '' : addTagPlaceholder\" class=\"edit\" #inputElement contenteditable=\"true\"\r\n         (keydown.arrowUp)=\"moveHighlightedSuggestion($event, -1)\"\r\n         (keydown.arrowDown)=\"moveHighlightedSuggestion($event, 1)\"\r\n         (keydown.tab)=\"addTag($event)\"\r\n         (keydown.enter)=\"addTag($event)\"\r\n         (keydown.escape)=\"cancelSuggestSelection()\"\r\n         (input)=\"input()\"\r\n         (blur)=\"blur()\"\r\n    ></div>\r\n    <!--<input type=\"text\" #inputElement\r\n           [(ngModel)]=\"part\"\r\n           (keydown.arrowUp)=\"highlightedSuggestion($event, -1)\"\r\n           (keydown.arrowDown)=\"highlightedSuggestion($event, 1)\"\r\n           (keydown.enter)=\"enter()\"\r\n           (input)=\"input()\"\r\n           (blur)=\"blur()\"/>-->\r\n    <div class=\"suggestions\" *ngIf=\"suggestedTags.length\">\r\n      <div class=\"item\" [class.highlighted]=\"index === highlightedSuggestIndex\" *ngFor=\"let item of suggestedTags; index as index\" (mousedown)=\"selectTag(item)\">{{ item }}</div>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import {\n  AfterViewInit,\n  Component, ContentChild,\n  ElementRef, EventEmitter,\n  HostListener,\n  Input,\n  OnInit, Output, QueryList, Renderer2, TemplateRef,\n  ViewChild,\n  ViewChildren\n} from '@angular/core';\nimport {distinctUntilChanged, map, startWith} from \"rxjs/operators\";\nimport {timer} from \"rxjs\";\n\ninterface Point {\n  x: number\n  y: number\n}\n\ninterface DeltaPosition {\n  dx: number,\n  dy: number,\n}\n\ninterface Box {\n  leftTopPoint: Point\n  rightBottomPoint: Point\n  width: number\n  height: number\n  centerPoint: Point\n}\n\nexport type GridLayout = {[key: number]: number}\n\nexport type SGridChangeOrder = [any, number, number]\n\n@Component({\n  selector: 'mx-sgrid',\n  templateUrl: './sgrid.component.html',\n  styleUrls: ['./sgrid.component.scss']\n})\nexport class SgridComponent implements OnInit, AfterViewInit {\n  @Input('gridLayout') gridLayout: GridLayout | undefined\n  @Input('gridItemWidth') gridItemWidth = 'auto'\n  @Input('items') items: any[] = []\n  @ViewChild('gridBox') gridBox!: ElementRef\n  @ViewChildren('gridItem') gridItems!: QueryList<ElementRef>\n  @ContentChild('gridItem', {static: false}) gridItemTemplateRef!: TemplateRef<any>\n  @Output('onChange') onChange: EventEmitter<SGridChangeOrder> = new EventEmitter<SGridChangeOrder>()\n  gridLayoutCss: {[key: string]: string | number} = {}\n  initialDraggingElementIndex: number = -1\n  draggingElementIndex: number = -1\n  private draggingElementCenterPoint: Point | undefined\n  private dragStartPoint: Point | undefined\n\n  private ifMoveOnce = false\n  private ifMovedOnceFlag = false\n\n  private PLACEHOLDER_STRING = '__placeholder__'\n\n  private moveIndexSource = -1\n  private moveIndexDestination = -1\n  itemPositions: Point[] | undefined\n\n  ifHasDragHandles = false\n  dragRestrictionBox: [Point, Point] | undefined\n  trackItemBy = (index: number, item: any) => item.id ?? item\n\n  constructor(\n    private renderer2: Renderer2,\n  ) {\n    /*this.gridLayoutCss = {\n      backgroundColor: '#f00',\n    }*/\n  }\n\n  ngOnInit(): void {\n    this.applyGridLayout()\n  }\n\n  ngAfterViewInit() {\n    this.gridItems.changes\n      .pipe(\n        startWith(new QueryList()),\n        map(changes => changes.length),\n        distinctUntilChanged(),\n      )\n      .subscribe(() => {\n        if (this.draggingElementIndex !== -1) {\n          this.cloneHTMLElementPositionAndSize(this.draggingElementIndex!, 0)\n        }\n      })\n    //this.saveCurrentPositions()\n\n    this.bindDragHelpers()\n\n    this.gridItems.changes.subscribe(() => {\n      this.bindDragHelpers()\n\n      if (this.moveIndexSource !== -1 && this.moveIndexDestination !== -1) {\n        const prevPositions = this.itemPositions\n        this.saveCurrentPositions()\n        const changedPositions: DeltaPosition[] = this.itemPositions!.map((position, index) => {\n          index++\n          let prevIndex = index\n          if (this.moveIndexDestination > this.moveIndexSource) {\n            if (index === this.moveIndexDestination) {\n              prevIndex = this.moveIndexSource\n            } else if (index >= this.moveIndexSource && index <= this.moveIndexDestination) {\n              prevIndex = index + 1\n            }\n          } else {\n            if (index === this.moveIndexDestination) {\n              prevIndex = this.moveIndexSource\n            } else if (index >= this.moveIndexDestination && index <= this.moveIndexSource) {\n              prevIndex = index - 1\n            }\n          }\n          return  {\n            dx: prevPositions![prevIndex - 1].x - position.x,\n            dy: prevPositions![prevIndex - 1].y - position.y,\n          }\n        })\n\n        changedPositions.forEach((changePosition, index) => {\n          if (changePosition.dx || changePosition.dy) {\n            this.setHTMLElementTransform(this.gridItems.get(index + 1)!.nativeElement, changePosition)\n          }\n        })\n        timer(10).subscribe(() => {\n          changedPositions.forEach((changePosition, index) => {\n            if (changePosition.dx || changePosition.dy) {\n              this.renderer2.addClass(this.gridItems.get(index + 1)!.nativeElement, 'swapping')\n            }\n          })\n          timer(10).subscribe(() => {\n            changedPositions.forEach((changePosition, index) => {\n              if (changePosition.dx || changePosition.dy) {\n                this.gridItems.get(index + 1)!.nativeElement.addEventListener('transitionend', (e: TransitionEvent) => {\n                  this.renderer2.removeClass(e.target, 'swapping')\n                }, {once: true})\n                this.setHTMLElementTransform(this.gridItems.get(index + 1)!.nativeElement, {dx: 0, dy: 0})\n              }\n            })\n          })\n        })\n        this.moveIndexSource = -1\n        this.moveIndexDestination = -1\n      }\n    })\n\n  }\n\n  startDrag(event: MouseEvent, elementIndex: number) {\n    if (event.buttons === 1) {\n      event.preventDefault()\n      this.saveCurrentPositions()\n\n      const rect = this.gridBox.nativeElement.getBoundingClientRect()\n      this.dragRestrictionBox = [\n        {\n          x: this.gridBox.nativeElement.offsetLeft,\n          y: this.gridBox.nativeElement.offsetTop,\n        },\n        {\n          x: this.gridBox.nativeElement.offsetLeft + rect.width,\n          y: this.gridBox.nativeElement.offsetTop + rect.height,\n        },\n      ]\n\n      const box = this.getHTMLElementBox(elementIndex)\n\n      this.items.unshift(this.PLACEHOLDER_STRING)\n      this.draggingElementIndex = elementIndex + 1\n      this.initialDraggingElementIndex = this.draggingElementIndex\n      this.dragStartPoint = {x: event.pageX, y: event.pageY}\n      this.draggingElementCenterPoint = box.centerPoint\n    }\n  }\n\n  @HostListener('window:mousemove', ['$event'])\n  drag(event: MouseEvent) {\n    if (this.ifMoveOnce && this.ifMovedOnceFlag) {\n      return\n    }\n    if (event.buttons === 1 && this.draggingElementIndex !== -1) {\n      const delta: DeltaPosition = {\n        dx: event.pageX - this.dragStartPoint!.x,\n        dy: event.pageY - this.dragStartPoint!.y,\n      }\n\n      const previewBox = this.getHTMLElementBox(0, false)\n      const position = {\n        x: this.draggingElementCenterPoint!.x - previewBox.width / 2 + delta.dx,\n        y: this.draggingElementCenterPoint!.y - previewBox.height / 2 + delta.dy,\n      }\n      position.x = Math.max(this.dragRestrictionBox![0].x, position.x)\n      position.y = Math.max(this.dragRestrictionBox![0].y, position.y)\n      position.x = Math.min(this.dragRestrictionBox![1].x - previewBox.width, position.x)\n      position.y = Math.min(this.dragRestrictionBox![1].y - previewBox.height, position.y)\n      this.setHTMLElementPosition(this.gridItems.get(0)!.nativeElement, position)\n\n      const draggingElementCurrentCenterPoint = previewBox.centerPoint\n\n      let index = Array.from(this.gridItems).findIndex((item, index) => {\n        if (index === 0 || index === this.draggingElementIndex!) {return false}\n        const itemBox = this.getHTMLElementBox(index)\n        return itemBox.leftTopPoint.x <= draggingElementCurrentCenterPoint.x && itemBox.rightBottomPoint.x >= draggingElementCurrentCenterPoint.x\n          && itemBox.leftTopPoint.y <= draggingElementCurrentCenterPoint.y && itemBox.rightBottomPoint.y >= draggingElementCurrentCenterPoint.y\n      })\n\n      if (index !== (-1)) {\n        this.ifMovedOnceFlag = true\n        this.moveIndexSource = this.draggingElementIndex!\n        this.moveIndexDestination = index\n        this.changeItemPosition(this.draggingElementIndex!, index)\n        this.draggingElementIndex = this.moveIndexDestination\n      }\n    }\n  }\n\n  @HostListener('window:mouseup')\n  stopDrag() {\n    if (this.draggingElementIndex !== -1) {\n\n      const positionSource = this.getHTMLElementPosition(0)\n      const positionDestination = this.getHTMLElementPosition(this.draggingElementIndex!)\n      if (positionSource.x === positionDestination.x && positionSource.y === positionDestination.y) {\n        this.resetDraggingMode()\n      } else {\n        this.renderer2.addClass(this.gridItems.get(0)?.nativeElement, 'animating')\n        this.gridItems.get(0)?.nativeElement.addEventListener('transitionend', () => {\n          this.resetDraggingMode()\n        }, {once: true})\n        this.cloneHTMLElementPositionAndSize(this.draggingElementIndex!, 0)\n      }\n\n    }\n  }\n\n  private bindDragHelpers() {\n    const dragHandles = this.gridItems.map((item: ElementRef) =>\n      item.nativeElement.querySelector('.drag-handle')\n    ).filter(item => item);\n    this.ifHasDragHandles = !!dragHandles.length\n    if (this.ifHasDragHandles) {\n      dragHandles.forEach((item, index) => {\n        item.index = index\n        if (item.eventFunction) {\n          item.removeEventListener('mousedown', item.eventFunction)\n        }\n        item.eventFunction = this.startDragHelper.bind(this)\n        item.addEventListener('mousedown', item.eventFunction)\n      })\n    }\n  }\n\n  private startDragHelper(event: MouseEvent) {\n    let target = event.target as HTMLElement\n    while (target !== null && !target.classList.contains('drag-handle')) {\n      target = target.parentElement as HTMLElement\n    }\n    if (target !== null) {\n      // @ts-ignore\n      this.startDrag(event, target.index)\n    }\n  }\n\n  private resetDraggingMode() {\n    this.items.shift()\n    this.dragStartPoint = undefined\n    this.onChange.emit([this.items, this.initialDraggingElementIndex - 1, this.draggingElementIndex - 1])\n    //console.log('changed', this.initialDraggingElementIndex - 1, this.draggingElementIndex - 1)\n    this.initialDraggingElementIndex = -1\n    this.draggingElementIndex = -1\n  }\n\n  private getHTMLElementPosition(index: number, ifUseCache = true): Point {\n    if (index === 0 || !ifUseCache) {\n      const element = this.gridItems.get(index)?.nativeElement\n      return {\n        x: element.offsetLeft,\n        y: element.offsetTop,\n      }\n    } else {\n      return this.items[0] === this.PLACEHOLDER_STRING ? this.itemPositions![index - 1] : this.itemPositions![index]\n    }\n  }\n\n  private getHTMLElementBox(index: number, ifUseCache = true): Box {\n    const rect = this.gridItems.get(index)?.nativeElement.getBoundingClientRect()\n    const position = this.getHTMLElementPosition(index, ifUseCache)\n    const position2 = {\n      x: position.x + rect.width,\n      y: position.y + rect.height,\n    }\n    return {\n      leftTopPoint: position,\n      rightBottomPoint: position2,\n      width: position2.x - position.x,\n      height: position2.y - position.y,\n      centerPoint: {\n        x: (position.x + position2.x) / 2,\n        y: (position.y + position2.y) / 2,\n      }\n    }\n  }\n\n  private cloneHTMLElementPositionAndSize(indexSource: number, indexDestination: number) {\n    const box = this.getHTMLElementBox(indexSource)\n    const clonedElement = this.gridItems.get(indexDestination)?.nativeElement\n    this.setHTMLElementPosition(clonedElement, box.leftTopPoint)\n    this.renderer2.setStyle(clonedElement, 'width', box.width + 'px')\n    this.renderer2.setStyle(clonedElement, 'height', box.height + 'px')\n  }\n\n  private setHTMLElementTransform(element: HTMLElement, deltaMove: DeltaPosition | null) {\n    if (deltaMove !== null) {\n      this.renderer2.setStyle(element, 'transform', `translate(${deltaMove.dx}px, ${deltaMove.dy}px)`)\n    } else {\n      this.renderer2.setStyle(element, 'transform', `none`)\n    }\n  }\n\n  private setHTMLElementPosition(element: HTMLElement, position: Point) {\n    this.renderer2.setStyle(element, 'left', position.x + 'px')\n    this.renderer2.setStyle(element, 'top', position.y + 'px')\n  }\n\n  private changeItemPosition(indexSource: number, indexDestination: number) {\n    const item = this.items[indexSource];\n    this.items.splice(indexSource, 1)\n    this.items.splice(indexDestination, 0, item)\n  }\n\n  private saveCurrentPositions() {\n    this.itemPositions = this.gridItems.map((item, index) => {\n      return this.getHTMLElementPosition(index, false)\n    })\n    if (this.draggingElementIndex !== -1) {\n      this.itemPositions.shift()\n    }\n  }\n\n  @HostListener('window:resize')\n  private windowResized() {\n    this.applyGridLayout()\n  }\n\n  private applyGridLayout() {\n    if (this.gridLayout && this.gridItemWidth) {\n      const width = window.innerWidth\n      let index = -1\n      const widths: number[] = Object.keys(this.gridLayout).map(Number)\n      while (index < widths.length - 1 && widths[index + 1] < width) {\n        index++\n      }\n      this.gridLayoutCss = index === (-1) ? {} : {\n        gridTemplateColumns: `repeat(${this.gridLayout[widths[index]]}, ${this.gridItemWidth})`\n      }\n      this.gridLayoutCss.display = 'grid'\n      this.gridLayoutCss.justifyContent = 'center'\n    }\n  }\n\n}\n","<div class=\"grid-items\" #gridBox [style]=\"gridLayoutCss\">\n  <ng-container *ngFor=\"let item of items; index as index; trackBy: trackItemBy\">\n    <div class=\"grid-item\"\n         [class.dragging-preview]=\"index === 0 && draggingElementIndex !== -1\"\n         [class.placeholder]=\"draggingElementIndex !== -1 && index === draggingElementIndex\"\n         (mousedown)=\"!ifHasDragHandles && startDrag($event, index)\"\n         #gridItem\n    >\n      <ng-container *ngIf=\"gridItemTemplateRef\" [ngTemplateOutlet]=\"gridItemTemplateRef\"\n                    [ngTemplateOutletContext]=\"{item: draggingElementIndex !== -1 && index === 0 ? items[draggingElementIndex] : item, index: index}\"\n      ></ng-container>\n    </div>\n  </ng-container>\n\n</div>\n","import {ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector, Type} from '@angular/core';\nimport {BehaviorSubject, Subject} from \"rxjs\";\nimport {SystemLoaderComponent} from \"./system-loader.component\";\nimport {UtilsService} from \"@adjai/ngx-library/src/lib/mix\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SystemLoaderService {\n  private stateSections: string[] = []\n  static state$ = new BehaviorSubject<boolean>(false)\n\n  constructor(\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private appRef: ApplicationRef,\n    private injector: Injector,\n    private utilsService: UtilsService,\n  ) {\n    this.utilsService.injectComponent(SystemLoaderComponent)\n  }\n\n  updateLoaderState(state: boolean, section = '_system') {\n    const index = this.stateSections.indexOf(section)\n    if (state) {\n      if (index === (-1)) {\n        this.stateSections.push(section)\n      }\n    } else {\n      this.stateSections.splice(index, 1)\n    }\n    SystemLoaderService.state$.next(this.stateSections.length !== 0)\n  }\n}\n","import {ChangeDetectorRef, Component, OnInit} from '@angular/core';\nimport {SystemLoaderService} from \"./system-loader.service\";\n\n@Component({\n  selector: 'mx-system-loader',\n  templateUrl: './system-loader.component.html',\n  styleUrls: ['./system-loader.component.scss']\n})\nexport class SystemLoaderComponent implements OnInit {\n  state$ = SystemLoaderService.state$\n  state = false\n\n  constructor(\n    private changeDetector: ChangeDetectorRef,\n  ) {\n\n  }\n\n  ngOnInit(): void {\n    SystemLoaderService.state$.subscribe(state => {\n      this.state = state\n      this.changeDetector.detectChanges()\n    })\n  }\n\n}\n","<div [class.active]=\"state\" class=\"loader\"></div>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {Observable} from \"rxjs\";\n\nexport enum PaginatorTypes {\n  classicPages,\n  showMore,\n  showMoreButton,\n}\n\nexport interface PaginatorRequestPageParams {\n  page: number\n  count: number\n  ifCalcTotalRows: boolean\n}\n\n@Component({\n  selector: 'mx-paginator',\n  templateUrl: './paginator.component.html',\n  styleUrls: ['./paginator.component.scss']\n})\nexport class PaginatorComponent implements OnInit {\n  @Input() type: PaginatorTypes = PaginatorTypes.classicPages\n  @Input() page = 1\n  @Input() perPage = 10\n  @Input() requestPageItems!: (requestPageParams: PaginatorRequestPageParams) => Observable<any>\n  @Input() showMoreText = 'Показать еще'\n  @Output() onLoadItems: EventEmitter<any> = new EventEmitter<any>()\n  pagesCount: number | undefined\n  visibleSpread = 2\n  paginatorTypes = PaginatorTypes\n\n  constructor() { }\n\n  ngOnInit(): void {\n    this.loadPage(this.page, true)\n  }\n\n  loadPage(page: number, ifCalcTotalRows = false) {\n    this.page = page\n    this.requestPageItems({page: this.page, count: this.perPage, ifCalcTotalRows}).subscribe(response => {\n      if (ifCalcTotalRows) {\n        this.pagesCount = Math.ceil(response.total_count / this.perPage)\n        this.onLoadItems.next(response.items)\n      } else {\n        this.onLoadItems.next(response)\n      }\n    })\n  }\n}\n","<ng-container *ngIf=\"pagesCount\">\n  <ng-container [ngSwitch]=\"type\">\n    <ng-container *ngSwitchCase=\"paginatorTypes.classicPages\">\n      <ul *ngIf=\"pagesCount && pagesCount > 1\">\n        <li\n          mxPreventDefault=\"mousedown\"\n          [class.active]=\"page === index + 1\"\n          [class.is-fill-indicator]=\"index === 1 && page > visibleSpread + 1 || index === page + visibleSpread && index !== pagesCount - 1\"\n          [class.out-of-visible-spread]=\"(index >= page + visibleSpread || index + 1 < page - visibleSpread) && index !== 0 && index !== pagesCount - 1\"\n          *ngFor=\"let _ of [].constructor(pagesCount); index as index\" (click)=\"loadPage(index + 1)\">\n          <span>{{ index + 1 }}</span>\n        </li>\n      </ul>\n    </ng-container>\n\n    <ng-container *ngSwitchCase=\"paginatorTypes.showMore\">\n      <div class=\"show-more\" *ngIf=\"page !== pagesCount\" (click)=\"loadPage(page + 1)\">{{ showMoreText }}</div>\n    </ng-container>\n\n    <ng-container *ngSwitchCase=\"paginatorTypes.showMoreButton\">\n      <div class=\"show-more-button\" *ngIf=\"page !== pagesCount\">\n        <button type=\"button\" (click)=\"loadPage(page + 1)\">{{ showMoreText }}</button>\n      </div>\n    </ng-container>\n\n  </ng-container>\n</ng-container>\n","import {Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject, Subject} from \"rxjs\";\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class FeedbackService {\r\n  feedbackVisible$: Subject<boolean> = new Subject<boolean>()\r\n\r\n  show(): void {\r\n    this.feedbackVisible$.next(true)\r\n  }\r\n\r\n  hide(): void {\r\n    this.feedbackVisible$.next(false)\r\n  }\r\n}\r\n","import {Component, HostListener, Input, OnDestroy, OnInit} from '@angular/core';\r\nimport {FeedbackService} from \"./feedback.service\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {FormControl, FormGroup, Validators} from \"@angular/forms\";\r\nimport {ApiService} from \"@adjai/ngx-library/src/lib/api\";\r\nimport {MessageService} from \"@adjai/ngx-library/src/lib/message\";\r\nimport { SystemLoaderService } from '../system-loader/system-loader.service';\r\n//import {SystemLoaderService} from \"*\";\r\n\r\n@Component({\r\n  selector: 'mx-feedback',\r\n  templateUrl: './feedback.component.html',\r\n  styleUrls: ['./feedback.component.scss']\r\n})\r\nexport class FeedbackComponent implements OnInit, OnDestroy {\r\n  @Input() title = '<p>Если у вас есть идеи по улучшению сервиса, замечания или вы обнаружили ошибки, напишите нам.</p><p>Мы обязательно рассмотрим Ваше обращение.</p>'\r\n  @Input() labelTopic = 'Тема обращения'\r\n  @Input() labelEmail = 'Email для обратной связи'\r\n  @Input() labelText = 'Текст Вашего замечания, идеи, предложения*'\r\n  @Input() ifAskForTopic = false\r\n  @Input() ifAskForEmail = true\r\n\r\n  isVisible = false\r\n  form = new FormGroup({})\r\n  isFormProcessing = false\r\n\r\n  private _subscription = new Subscription()\r\n\r\n  constructor(\r\n    private systemLoader: SystemLoaderService,\r\n    private feedbackService: FeedbackService,\r\n    private apiService: ApiService,\r\n    private messageService: MessageService,\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    this.form.addControl('text', new FormControl('', [Validators.required]))\r\n    if (this.ifAskForEmail) {\r\n      this.form.addControl('email', new FormControl('', [Validators.email]))\r\n    }\r\n    if (this.ifAskForTopic) {\r\n      this.form.addControl('topic', new FormControl('', [Validators.required]))\r\n    }\r\n\r\n    this._subscription.add(\r\n      this.feedbackService.feedbackVisible$.subscribe(state => {\r\n        this.isVisible = state\r\n      })\r\n    )\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._subscription.unsubscribe()\r\n  }\r\n\r\n  close() {\r\n    this.feedbackService.hide()\r\n  }\r\n\r\n  sendFeedback() {\r\n    if (this.form.valid && !this.isFormProcessing) {\r\n      this.systemLoader.updateLoaderState(true)\r\n      this.isFormProcessing = true\r\n      this.apiService.execute('user', 'feedback', this.form.value).toPromise().finally(() => {\r\n        this.systemLoader.updateLoaderState(false)\r\n        this.isFormProcessing = false\r\n      }).then(() => {\r\n        this.hide()\r\n        this.form.reset()\r\n        this.messageService.info('Благодарим за обратную связь. Ваше обращение успешно отправлено.')})\r\n    }\r\n  }\r\n\r\n  hide() {\r\n    this.feedbackService.hide()\r\n  }\r\n\r\n  @HostListener('window:keydown.esc')\r\n  hideOnEsc() {\r\n    this.hide()\r\n  }\r\n}\r\n","<div class=\"container\" *ngIf=\"isVisible\" (mousedown)=\"hide()\">\r\n  <div class=\"win\" mxStopPropagation=\"mousedown\">\r\n    <button class=\"close custom\" (click)=\"close()\"><span></span></button>\r\n    <form action=\"\" [formGroup]=\"form\" (submit)=\"sendFeedback()\">\r\n      <div class=\"title\" *ngIf=\"title\" [innerHTML]=\"title\"></div>\r\n      <input type=\"text\" [placeholder]=\"labelTopic\" formControlName=\"topic\" *ngIf=\"ifAskForTopic\">\r\n      <input type=\"email\" [placeholder]=\"labelEmail\" formControlName=\"email\" *ngIf=\"ifAskForEmail\">\r\n      <textarea formControlName=\"text\" [placeholder]=\"labelText\"></textarea>\r\n      <button [disabled]=\"form.invalid\">Отправить</button>\r\n    </form>\r\n  </div>\r\n\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TagsSelectorComponent } from './tags-selector/tags-selector.component';\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {SgridComponent} from \"./sgrid/sgrid.component\";\r\nimport {SystemLoaderComponent} from \"./system-loader/system-loader.component\";\r\nimport {PaginatorComponent} from \"./paginator/paginator.component\";\r\nimport {FeedbackComponent} from \"./feedback/feedback.component\";\r\nimport {MixModule} from \"@adjai/ngx-library/src/lib/mix\";\r\n\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    TagsSelectorComponent,\r\n    SgridComponent,\r\n    SystemLoaderComponent,\r\n    PaginatorComponent,\r\n    FeedbackComponent,\r\n  ],\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        MixModule,\r\n    ],\r\n  exports: [\r\n    TagsSelectorComponent,\r\n    SgridComponent,\r\n    SystemLoaderComponent,\r\n    PaginatorComponent,\r\n    FeedbackComponent,\r\n  ],\r\n})\r\nexport class ElementsModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i1.SystemLoaderService","i2.FeedbackService","i3","i5","i7"],"mappings":"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"}