{"version":3,"file":"flower-city-online-comment-lib.mjs","sources":["../../../projects/comment-lib/src/lib/_constants/icons.ts","../../../projects/comment-lib/src/lib/_services/modal.service.ts","../../../projects/comment-lib/src/lib/_enums/endpoints/gateway-request-enpoints.enum.ts","../../../projects/comment-lib/src/lib/_enums/endpoints/comment-request-endpoint.enum.ts","../../../projects/comment-lib/src/environments/environment.ts","../../../projects/comment-lib/src/lib/_data/comment.service.ts","../../../projects/comment-lib/src/lib/_enums/endpoints/vote-request-endpoint.enum.ts","../../../projects/comment-lib/src/lib/_data/vote.service.ts","../../../projects/comment-lib/src/lib/comment-lib.service.ts","../../../projects/comment-lib/src/lib/_data/app-service.service.ts","../../../projects/comment-lib/src/lib/_enums/comment-routes.enum.ts","../../../projects/comment-lib/src/lib/_services/comment-image.service.ts","../../../projects/comment-lib/src/lib/pages/comment-images/comment-images.component.ts","../../../projects/comment-lib/src/lib/pages/comment-images/comment-images.component.html","../../../projects/comment-lib/src/lib/_pipes/time-ago.pipe.ts","../../../projects/comment-lib/src/lib/_pipes/votes.pipe.ts","../../../projects/comment-lib/src/lib/pages/comment-single/comment-single.component.ts","../../../projects/comment-lib/src/lib/pages/comment-single/comment-single.component.html","../../../projects/comment-lib/src/lib/common/header/header.component.ts","../../../projects/comment-lib/src/lib/common/header/header.component.html","../../../projects/comment-lib/src/lib/common/report-itinerary-modal/report-itinerary-modal.component.ts","../../../projects/comment-lib/src/lib/common/report-itinerary-modal/report-itinerary-modal.component.html","../../../projects/comment-lib/src/lib/pages/comment-replies/comment-replies.component.ts","../../../projects/comment-lib/src/lib/pages/comment-replies/comment-replies.component.html","../../../projects/comment-lib/src/lib/_enums/sorting-options.dto.ts","../../../projects/comment-lib/src/lib/_services/input.service.ts","../../../projects/comment-lib/src/lib/common/comment/comment.component.ts","../../../projects/comment-lib/src/lib/common/comment/comment.component.html","../../../projects/comment-lib/src/lib/common/filter-menu/filter-menu.component.ts","../../../projects/comment-lib/src/lib/common/filter-menu/filter-menu.component.html","../../../projects/comment-lib/src/lib/pages/comments/comments.component.ts","../../../projects/comment-lib/src/lib/pages/comments/comments.component.html","../../../projects/comment-lib/src/comment-routing.module.ts","../../../projects/comment-lib/src/lib/pages/comment-comparison/comment-comparison.component.ts","../../../projects/comment-lib/src/lib/pages/comment-comparison/comment-comparison.component.html","../../../projects/comment-lib/src/lib/pages/comment-search/comment-search.component.ts","../../../projects/comment-lib/src/lib/pages/comment-search/comment-search.component.html","../../../projects/comment-lib/src/lib/pages/update-comment-request/update-comment-request.component.ts","../../../projects/comment-lib/src/lib/pages/update-comment-request/update-comment-request.component.html","../../../projects/comment-lib/src/lib/initalize.app.ts","../../../projects/comment-lib/src/lib/comment-lib.component.ts","../../../projects/comment-lib/src/http-factory.ts","../../../projects/comment-lib/src/comment.module.ts","../../../projects/comment-lib/src/flower-city-online-comment-lib.ts"],"sourcesContent":["import { Iicon } from \"../_interface/i-icon\";\r\n\r\nexport const ICONS: Iicon = {\r\n  binWhite: '/assets/icons/bin-white.svg',\r\n  userDetail: '/assets/icons/user-detail.svg',\r\n  upvote: '/assets/icons/upvote.svg',\r\n  downvote: '/assets/icons/downvote.svg',\r\n  user: '/assets/icons/user.svg',\r\n  divider: '/assets/icons/divider.svg',\r\n  logout: '/assets/icons/logout.svg',\r\n  deleteCross: '/assets/icons/delete_cross.svg',\r\n  edit: '/assets/icons/edit.svg',\r\n  report: '/assets/icons/report.svg',\r\n  comment2: '/assets/icons/coment (2).svg',\r\n  notSpecified: '/assets/icons/questionMark.svg',\r\n  horizontalWhite: '/assets/icons/horizontal-white.svg',\r\n  removeFeature: '/assets/icons/remove_feature.svg',\r\n  addFeature: '/assets/icons/add_feature.svg',\r\n  submit: '/assets/icons/submit.svg',\r\n  dummyUserProfile: '/assets/icons/dummy-user-profile.jpg',\r\n  pickerIcon: '/assets/icons/picker_icon.svg',\r\n  featured: '/assets/icons/featured.svg',\r\n  search: 'assets/icons/search.svg',\r\n  back: 'assets/icons/back.svg',\r\n  filter: 'assets/icons/filter.svg',\r\n  editPink: 'assets/icons/editPink.svg',\r\n};\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class ModalService {\r\n  public toggleModal: boolean = false;\r\n  public bottomToggleModal: boolean = false;\r\n  public toggleGlobalSearch: boolean = false;\r\n\r\n  constructor() { }\r\n}\r\n","export enum GatewayRequestEndpoint {\r\n    SocketRequest = 'socket.requests',\r\n    SocketResponse = 'socket.responses',\r\n}","export enum CommentRequestEndpoints {\r\n  addComment               = 'addComment',\r\n  editComment              = 'editComment',\r\n  deleteComment            = 'deleteComment',\r\n  getCountByItineraryId    = 'getCountByItineraryId',\r\n  allCommentsByItineraryId = 'allCommentsByItineraryId',\r\n  repliesByParentCommentId = 'repliesByParentCommentId',\r\n  getByCommentId           = 'getByCommentId',\r\n  getCommentsSorted        = 'getCommentsSorted',\r\n  getRepliesSorted         = 'getRepliesSorted',\r\n  getAvailableSortingOptions = 'getAvailableSortingOptions',\r\n  addFeatureByModelId      = 'addFeatureByModelId',\r\n  removeFeatureByModelId   = 'removeFeatureByModelId',\r\n  toggleFeatureByModelId   = 'toggleFeatureByModelId',\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n  production: false,\r\n  tenorURL: 'https://tenor.googleapis.com/v2',\r\n  tenorKey: 'AIzaSyDP-SUVdQ4I9wOMDtxJgWUSnZpWq0K6qys',\r\n  identityPoolId: 'us-west-2:2a1709dd-2aae-4e25-bf50-66bd8acb7c57',\r\n  mapName: 'ItineraryMap',\r\n  region: 'us-west-2',\r\n  placeIndex: 'ItineraryPlaceIndex',\r\n  routeCalculatorName: 'ItineraryCalculator',\r\n  socketUrl: 'http://localhost:3000',\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error';  // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { filter, map, Observable, Subject } from 'rxjs';\r\nimport { Socket, io } from 'socket.io-client';\r\nimport { GatewayRequestEndpoint } from '../_enums/endpoints/gateway-request-enpoints.enum';\r\nimport { IGatewayRequest } from '../_interface/i-gateway-request.interface';\r\nimport { IGatewayResponse } from '../_interface/i-gateway-response.interface';\r\nimport { CreateCommentDto, UpdateCommentDto } from '../_dtos/comment.dto';\r\nimport { CommentRequestEndpoints } from '../_enums/endpoints/comment-request-endpoint.enum';\r\nimport { environment } from '../../environments/environment';\r\nimport { IComment } from '../_models/i-comment';\r\nimport { SortingOptionsDto } from '../_enums/sorting-options.dto';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CommentService {\r\n  private socket: Socket;\r\n  push$ = new Subject<IGatewayResponse<any>>();\r\n  private readonly namespace = 'comments';\r\n\r\n  constructor() {\r\n    this.socket = io(environment.socketUrl);\r\n\r\n    this.socket.on(GatewayRequestEndpoint.SocketResponse, (payload: IGatewayResponse<any>) => {\r\n      console.log('payload', payload);\r\n      this.push$.next(payload);\r\n    });\r\n  }\r\n\r\n  private sendRequest<Req, Res>(req: IGatewayRequest<Req, any>): Observable<Res> {\r\n    return new Observable<Res>((observer) => {\r\n      const handler = (res: IGatewayResponse<Res>) => {\r\n        if (res.endpoint === req.endpoint) {\r\n          observer.next(res.response);\r\n          observer.complete();\r\n          this.socket.off(GatewayRequestEndpoint.SocketResponse, handler);\r\n        }\r\n      };\r\n\r\n      this.socket.on(GatewayRequestEndpoint.SocketResponse, handler);\r\n      this.socket.emit(GatewayRequestEndpoint.SocketRequest, req);\r\n    });\r\n  }\r\n\r\n  addComment(dto: CreateCommentDto): Observable<IComment> {\r\n    const req: IGatewayRequest<CreateCommentDto, IComment> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.addComment,\r\n      payload: dto,\r\n      blackboxRequest: true,\r\n      broadcast: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  editComment(commentId: string, userId: string, dto: UpdateCommentDto): Observable<IComment> {\r\n    const req: IGatewayRequest<UpdateCommentDto, [string, string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.editComment,\r\n      payload: dto,\r\n      parameters: [commentId, userId],\r\n      blackboxRequest: true,\r\n      broadcast: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  deleteComment(commentId: string): Observable<boolean> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.deleteComment,\r\n      parameters: [commentId],\r\n      blackboxRequest: true,\r\n      broadcast: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  getCountByItineraryId(modelId: string): Observable<number> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.getCountByItineraryId,\r\n      parameters: [modelId],\r\n      blackboxRequest: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  getByCommentId(commentId: string): Observable<IComment> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.getByCommentId,\r\n      parameters: [commentId],\r\n      blackboxRequest: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  allCommentsByModelId(modelId: string): Observable<IComment[]> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.allCommentsByItineraryId,\r\n      parameters: [modelId],\r\n      blackboxRequest: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  repliesByParentCommentId(parentCommentId: string): Observable<IComment[]> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.repliesByParentCommentId,\r\n      parameters: [parentCommentId],\r\n      blackboxRequest: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  /**\r\n   * Get comments sorted using Reddit-style algorithms\r\n   */\r\n  getCommentsSorted(modelId: string, sortingOptions: SortingOptionsDto): Observable<IComment[]> {\r\n    const req: IGatewayRequest<SortingOptionsDto, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.getCommentsSorted,\r\n      payload: sortingOptions,\r\n      parameters: [modelId],\r\n      blackboxRequest: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  /**\r\n   * Get replies sorted using Reddit-style algorithms\r\n   */\r\n  getRepliesSorted(parentCommentId: string, sortingOptions: SortingOptionsDto): Observable<IComment[]> {\r\n    const req: IGatewayRequest<SortingOptionsDto, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.getRepliesSorted,\r\n      payload: sortingOptions,\r\n      parameters: [parentCommentId],\r\n      blackboxRequest: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  /**\r\n   * Add feature to a comment by model ID\r\n   */\r\n  addFeatureByModelId(modelId: string): Observable<IComment> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.addFeatureByModelId,\r\n      parameters: [modelId],\r\n      blackboxRequest: true,\r\n      broadcast: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  /**\r\n   * Remove feature from a comment by model ID\r\n   */\r\n  removeFeatureByModelId(modelId: string): Observable<IComment> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.removeFeatureByModelId,\r\n      parameters: [modelId],\r\n      blackboxRequest: true,\r\n      broadcast: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n  /**\r\n   * Toggle feature status of a comment by model ID\r\n   */\r\n  toggleFeatureByModelId(modelId: string): Observable<IComment> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: CommentRequestEndpoints.toggleFeatureByModelId,\r\n      parameters: [modelId],\r\n      blackboxRequest: true,\r\n      broadcast: true,\r\n    };\r\n    return this.sendRequest(req);\r\n  }\r\n\r\n\r\n  //LISTENERS  \r\n  onCommentAdded(): Observable<IComment> {\r\n    return this.push$.pipe( \r\n      filter(p => p && p.endpoint === CommentRequestEndpoints.addComment),\r\n      map(p => p.response as IComment)\r\n    ); \r\n  }\r\n\r\n  onCommentUpdated(): Observable<IComment> {\r\n    return this.push$.pipe(\r\n      filter(p => p && p.endpoint === CommentRequestEndpoints.editComment),\r\n      map(p => p.response as IComment)\r\n    );\r\n  }\r\n\r\n  onCommentDeleted(): Observable<IComment> {\r\n    return this.push$.pipe(\r\n      filter(p => p && p.endpoint === CommentRequestEndpoints.deleteComment),\r\n      map(p => p.response as IComment)\r\n    );\r\n  }\r\n\r\n  onCommentFeatured(): Observable<IComment> {\r\n    return this.push$.pipe(\r\n      filter(p => p && p.endpoint === CommentRequestEndpoints.addFeatureByModelId),\r\n      map(p => p.response as IComment)\r\n    );\r\n  }\r\n\r\n  onCommentUnfeatured(): Observable<IComment> {\r\n    return this.push$.pipe(\r\n      filter(p => p && p.endpoint === CommentRequestEndpoints.removeFeatureByModelId),\r\n      map(p => p.response as IComment)\r\n    );\r\n  }\r\n\r\n  onCommentFeatureToggled(): Observable<IComment> {\r\n    return this.push$.pipe(\r\n      filter(p => p && p.endpoint === CommentRequestEndpoints.toggleFeatureByModelId),\r\n      map(p => p.response as IComment)\r\n    );\r\n  }\r\n}\r\n","export enum VoteRequestEndpoint {\r\n  GetCountByModelId = 'GetCountByModelId',\r\n  GetCountByUserId = 'GetCountByUserId',\r\n  UpVote = 'UpVote',\r\n  DownVote = 'DownVote',\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject, filter, map } from 'rxjs';\r\nimport { io, Socket } from 'socket.io-client'; \r\nimport { IVoteCountDTO, IUserVoteCountDTO } from '../_dtos/vote.dto';\r\nimport { GatewayRequestEndpoint } from '../_enums/endpoints/gateway-request-enpoints.enum';\r\nimport { IGatewayRequest } from '../_interface/i-gateway-request.interface';\r\nimport { IGatewayResponse } from '../_interface/i-gateway-response.interface';\r\nimport { VoteRequestEndpoint } from '../_enums/endpoints/vote-request-endpoint.enum';\r\nimport { IVote } from '../_models/i-vote.schema';\r\nimport { environment } from '../../environments/environment';\r\n \r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class VoteService {\r\n private socket: Socket;\r\n  private readonly namespace = 'votes';\r\n  push$ = new Subject<IGatewayResponse<any>>();\r\n\r\n  constructor() {\r\n    this.socket = io(environment.socketUrl);\r\n\r\n    this.socket.on(GatewayRequestEndpoint.SocketResponse, (payload: IGatewayResponse<any>) => {\r\n      this.push$.next(payload);\r\n    });\r\n  }\r\n\r\n  /** Internal helper to send/receive gateway messages */\r\n  private sendRequest<Req, Res>(\r\n    req: IGatewayRequest<Req, any>\r\n  ): Observable<Res> {\r\n    return new Observable<Res>((observer) => {\r\n      const handler = (res: IGatewayResponse<Res>) => {\r\n        if (res.endpoint === req.endpoint) {\r\n          observer.next(res.response);\r\n          observer.complete();\r\n          this.socket.off(\r\n            GatewayRequestEndpoint.SocketResponse,\r\n            handler\r\n          );\r\n        }\r\n      };\r\n\r\n      this.socket.on(\r\n        GatewayRequestEndpoint.SocketResponse,\r\n        handler\r\n      );\r\n      this.socket.emit(\r\n        GatewayRequestEndpoint.SocketRequest,\r\n        req\r\n      );\r\n    });\r\n  }\r\n\r\n  /** Get votes (up/down/score) for a given model ID */\r\n  getCountByModelId(\r\n    modelId: string\r\n  ): Observable<IVoteCountDTO> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint:\r\n        VoteRequestEndpoint.GetCountByModelId,\r\n      parameters: [modelId],\r\n      blackboxRequest: true,\r\n    };\r\n    return this.sendRequest<null, IVoteCountDTO>(req);\r\n  }\r\n\r\n  /** Get vote summary (up/down/total) for a given user ID */\r\n  getCountByUserId(\r\n    userId: string\r\n  ): Observable<IUserVoteCountDTO> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint:\r\n        VoteRequestEndpoint.GetCountByUserId,\r\n      parameters: [userId],\r\n      blackboxRequest: true,\r\n    };\r\n    return this.sendRequest<null, IUserVoteCountDTO>(\r\n      req\r\n    );\r\n  }\r\n\r\n  /** Cast or toggle an up‑vote on a model */\r\n  upVote(modelId: string, userId:string): Observable<IVote> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: VoteRequestEndpoint.UpVote,\r\n      parameters: [modelId],\r\n      userId: userId,\r\n      blackboxRequest: true,\r\n      broadcast: true,\r\n    };\r\n    return this.sendRequest<null, IVote>(req);\r\n  }\r\n\r\n  /** Cast or toggle a down‑vote on a model */\r\n  downVote(modelId: string, userId: string): Observable<IVote> {\r\n    const req: IGatewayRequest<null, [string]> = {\r\n      namespace: this.namespace,\r\n      endpoint: VoteRequestEndpoint.DownVote,\r\n      parameters: [modelId],\r\n      blackboxRequest: true,\r\n      userId: userId,\r\n      broadcast: true,\r\n    };\r\n    return this.sendRequest<null, IVote>(req);\r\n  }\r\n\r\n  //LISTENERS  \r\n  onVoteAdded(): Observable<IVote> {\r\n    return this.push$.pipe( \r\n      filter(p => p && p.endpoint === VoteRequestEndpoint.UpVote),\r\n      map(p => p.response as IVote)\r\n    ); \r\n  }\r\n\r\n  onVoteRemoved(): Observable<IVote> {\r\n    return this.push$.pipe(\r\n      filter(p => p && p.endpoint === VoteRequestEndpoint.DownVote),\r\n      map(p => p.response as IVote)\r\n    );\r\n  }\r\n\r\n  onVoteChanged(): Observable<IVote> {\r\n    return this.push$.pipe(\r\n      filter(p => p && (p.endpoint === VoteRequestEndpoint.UpVote || p.endpoint === VoteRequestEndpoint.DownVote)),\r\n      map(p => p.response as IVote)\r\n    );\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { IComment } from './_models/i-comment';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CommentLibService {\r\n  private commentCreatedSubject = new Subject<IComment>();\r\n  private commentUpdatedSubject = new Subject<IComment>();\r\n  private commentDeletedSubject = new Subject<IComment>();\r\n  private commentVotedSubject = new Subject<IComment>();\r\n  private commentUnvotedSubject = new Subject<IComment>();\r\n  private commentFeaturedSubject = new Subject<IComment>();\r\n  private commentUnfeaturedSubject = new Subject<IComment>();\r\n  private commentReportedSubject = new Subject<IComment>();\r\n\r\n  // Observable streams\r\n  commentCreated$ = this.commentCreatedSubject.asObservable();\r\n  commentUpdated$ = this.commentUpdatedSubject.asObservable();\r\n  commentDeleted$ = this.commentDeletedSubject.asObservable();\r\n  commentVoted$ = this.commentVotedSubject.asObservable();\r\n  commentUnvoted$ = this.commentUnvotedSubject.asObservable();\r\n  commentFeatured$ = this.commentFeaturedSubject.asObservable();\r\n  commentUnfeatured$ = this.commentUnfeaturedSubject.asObservable();\r\n  commentReported$ = this.commentReportedSubject.asObservable();\r\n\r\n  constructor() { }\r\n\r\n  // Methods to emit events\r\n  emitCommentCreated(comment: IComment): void {\r\n    this.commentCreatedSubject.next(comment);\r\n  }\r\n\r\n  emitCommentUpdated(comment: IComment): void {\r\n    this.commentUpdatedSubject.next(comment);\r\n  }\r\n\r\n  emitCommentDeleted(comment: IComment): void {\r\n    this.commentDeletedSubject.next(comment);\r\n  }\r\n\r\n  emitCommentVoted(comment: IComment): void {\r\n    this.commentVotedSubject.next(comment);\r\n  }\r\n\r\n  emitCommentUnvoted(comment: IComment): void {\r\n    this.commentUnvotedSubject.next(comment);\r\n  }\r\n\r\n  emitCommentFeatured(comment: IComment): void {\r\n    this.commentFeaturedSubject.next(comment);\r\n  }\r\n\r\n  emitCommentUnfeatured(comment: IComment): void {\r\n    this.commentUnfeaturedSubject.next(comment);\r\n  }\r\n\r\n  emitCommentReported(comment: IComment): void {\r\n    this.commentReportedSubject.next(comment);\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Socket, io } from 'socket.io-client';\r\nimport { Observable } from 'rxjs';\r\nimport { GatewayRequestEndpoint } from '../_enums/endpoints/gateway-request-enpoints.enum';\r\nimport { environment } from '../../environments/environment';\r\nimport { IUser } from '../_models/app-user';\r\nimport { IGatewayRequest } from '../_interface/i-gateway-request.interface';\r\nimport { IGatewayResponse } from '../_interface/i-gateway-response.interface';\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class AppService {\r\n  private socket: Socket;\r\n  private readonly namespace = 'user';\r\n  public user!: IUser;\r\n  \r\n  constructor() {\r\n    this.socket = io(`${environment.socketUrl}`);\r\n  }\r\n\r\n  getCurrentUser(): Observable<IUser> {\r\n    return new Observable<IUser>((observer) => {\r\n      const req: IGatewayRequest<null, null> = {\r\n        namespace: this.namespace,\r\n        endpoint: 'current',\r\n        blackboxRequest: true,\r\n      };\r\n\r\n      const handler = (res: IGatewayResponse<IUser>) => {\r\n        if (res.endpoint === req.endpoint) {\r\n          observer.next(res.response);\r\n          observer.complete();\r\n          this.socket.off(GatewayRequestEndpoint.SocketResponse, handler);\r\n        }\r\n      };\r\n      this.socket.on(GatewayRequestEndpoint.SocketResponse, handler);\r\n      this.socket.emit(GatewayRequestEndpoint.SocketRequest, req);\r\n    });\r\n  }\r\n}\r\n","export enum CommentRoutesEnum {\r\n  COMMENTS_ROUTE = 'comments',\r\n  COMMENT_REPLIES = 'replies',\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class CommentImageService {\r\n  constructor() {}\r\n\r\n  image: string[] = [];\r\n  index: number = 0;\r\n}\r\n","import { Component, Input } from '@angular/core'; \r\nimport { CommentImageService } from '../../_services/comment-image.service';\r\n \r\n@Component({\r\n  selector: 'app-comment-images',\r\n  templateUrl: './comment-images.component.html',\r\n  styleUrl: './comment-images.component.css'\r\n})\r\nexport class CommentImagesComponent {\r\n  @Input() images: string[] = [];\r\n  @Input() index: number = 0;\r\n\r\n  constructor(commentImage: CommentImageService) {\r\n    this.images = commentImage.image;\r\n    this.index = commentImage.index;\r\n  }\r\n}\r\n","<div class=\"w-full h-full\">\r\n  <lib-image-deck [images]=\"images\" [activeIndex]=\"index\"></lib-image-deck>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'timeAgo',\r\n  standalone: true\r\n})\r\nexport class TimeAgoPipe implements PipeTransform {\r\n  transform(value: Date | string | number): string {\r\n    if (!value) return '';\r\n\r\n    const date = new Date(value);\r\n    const now = new Date();\r\n    const seconds = Math.floor((now.getTime() - date.getTime()) / 1000);\r\n\r\n    if (seconds < 29) return 'Just now';\r\n\r\n    const intervals: { [key: string]: number } = {\r\n      year: 31536000,\r\n      month: 2592000,\r\n      week: 604800,\r\n      day: 86400,\r\n      hour: 3600,\r\n      minute: 60,\r\n      second: 1,\r\n    };\r\n\r\n    for (const i in intervals) {\r\n      const interval = Math.abs(Math.floor(seconds / intervals[i]));\r\n      if (interval >= 1) {\r\n        return `${interval} ${i}${interval > 1 ? 's' : ''} ago`;\r\n      }\r\n    }\r\n\r\n    return '';\r\n  }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'votes',\r\n  standalone: true\r\n})\r\nexport class VotesPipe implements PipeTransform {\r\n  transform(value: number): string {\r\n    if (value >= 1_000_000) {\r\n      return (value / 1_000_000).toFixed(1).replace(/\\.0$/, '') + 'M';\r\n    } else if (value >= 1_000) {\r\n      return (value / 1_000).toFixed(1).replace(/\\.0$/, '') + 'K';\r\n    } else {\r\n      return value.toString();\r\n    }\r\n  }\r\n}\r\n","import { Component, Input, Type, Output, EventEmitter, ChangeDetectorRef } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { LibMenuItem } from \"@naniteninja/ionic-lib\";\nimport { ICONS } from \"../../_constants/icons\";\nimport { IUser } from \"../../_models/app-user\";\nimport { IComment } from \"../../_models/i-comment\";\nimport { IImage } from \"../../_models/i-image\";\nimport { IVote } from \"../../_models/i-vote.schema\";\nimport { AppService } from \"../../_data/app-service.service\";\nimport { CommentRoutesEnum } from \"../../_enums/comment-routes.enum\";\nimport { Iicon } from \"../../_interface/i-icon\";\nimport { CommentImageService } from \"../../_services/comment-image.service\";\nimport { CommentImagesComponent } from \"../comment-images/comment-images.component\";\n\n@Component({\n  selector: 'app-comment-single',\n  templateUrl: './comment-single.component.html',\n  styleUrl: './comment-single.component.css',\n})\nexport class CommentSingleComponent {\n  @Input() comment: IComment | undefined;\n  @Input() index!: number;\n  @Input() libMenuItem!: LibMenuItem[];\n  @Input() showMenuItems: boolean = true;\n  @Output() upClick: EventEmitter<void> = new EventEmitter<void>();\n  @Output() downClick: EventEmitter<void> = new EventEmitter<void>();\n  @Output() menuClick: EventEmitter<void> = new EventEmitter<void>();\n  @Output() featureToggle: EventEmitter<string> = new EventEmitter<string>();\n\n  ICONS: Iicon = ICONS;\n  isOpen: boolean = false;\n  user: IUser;\n  imageComponent: Type<unknown> = CommentImagesComponent;\n\n  //LIFE CYCLES\n  constructor(\n    private router: Router,\n    private cdr: ChangeDetectorRef,\n    private commentImageService: CommentImageService,\n    appService: AppService\n  ) {\n    this.user = appService.user\n  }\n\n  ngOnInit(): void { }\n\n  //UI LOGIC\n  asUser(value: IUser | string): IUser {\n    return value as IUser;\n  }\n\n  asImage(value:IImage | string): IImage{\n    return value as IImage;\n  }\n\n  handleMenueItemSelect(): void { }\n  handleMenuItemChange(): void { }\n  handleMenuClick(): void {\n    this.menuClick.emit();\n  }\n\n  close = (): void => {\n    this.isOpen = false;\n  };\n\n  showImage(images: string[], currentIndex: number): void {\n    if (this.isOpen) {\n      this.close();\n    }\n\n    setTimeout(() => {\n      this.isOpen = true;\n      this.commentImageService.image = images;\n      this.commentImageService.index = currentIndex;\n      this.cdr.detectChanges();\n    }, 0);\n  }\n\n  getUpVotes(): IVote[] | undefined {\n    return this.comment?.votes?.filter(x => x.vote === 'up');\n  }\n\n  getVoteUpIcon(): string {\n    const vote = this.comment?.votes?.find(x => x.userId === this.user._id);\n    return vote?.vote === 'up' ? ICONS['upvote'] : ICONS['downvote'];\n  }\n\n  getVoteDownIcon(): string {\n    const vote = this.comment?.votes?.find(x => x.userId === this.user._id);\n    return vote?.vote === 'down' ? ICONS['upvote'] : ICONS['downvote'];\n  }\n\n  isUpVote(): boolean {\n    const vote = this.comment?.votes?.find(x => x.userId === this.user._id);\n    return vote?.vote === 'up';\n  }\n\n  isDownVote(): boolean {\n    const vote = this.comment?.votes?.find(x => x.userId === this.user._id);\n    return vote?.vote === 'down';\n  }\n\n  //NAVGIATIONS\n  onUpClick() {\n    this.upClick.emit();\n  }\n\n  onDownClick() {\n    this.downClick.emit();\n  }\n\n  onFeatureToggle() {\n    if (this.comment?._id) {\n      this.featureToggle.emit(this.comment._id);\n    }\n  }\n\n  RedirectToReplies() {\n    this.router.navigate([\n      CommentRoutesEnum.COMMENT_REPLIES,\n      this.comment?._id\n    ]);\n  }\n}\n","<ng-container *ngIf=\"comment\">\n  <div class=\"comment-card text-white p-4 rounded-xl w-full\">\n    <div class=\"flex items-start justify-between\">\n      <!-- Left Side: Profile & Details -->\n      <div class=\"flex space-x-3\">\n        <!-- Profile Image -->\n        <img\n          [src]=\"asUser(comment.user).pictureUrl ?? ICONS['user']\"\n          alt=\"User\"\n          class=\"w-10 h-10 rounded-full\"\n        />\n\n        <!-- Username & Timestamp -->\n        <div>\n          <h4 class=\"text-sm font-semibold\">\n            {{ asUser(comment.user).name }} -\n            {{ comment.createdAt! | timeAgo }}\n            {{ comment.updatedAt ? \"(Edited)\" : \"\" }}\n          </h4>\n          <p class=\"text-md text-gray-300\">{{ comment.comment }}</p>\n        </div>\n      </div>\n\n      @if (showMenuItems) {\n        <lib-menu-btn\n          (select)=\"handleMenueItemSelect()\"\n          (click)=\"handleMenuClick()\"\n          (change)=\"handleMenuItemChange()\"\n          class=\"lib-menu-custom-class lib-menu-bg-none\"\n          [disableTextShadow]=\"true\"\n          [menuItems]=\"libMenuItem\"\n        >\n          <img [src]=\"ICONS['horizontalWhite']\" alt=\"\" />\n        </lib-menu-btn>\n      }\n    </div>\n\n    <!-- Attachments Section (Visible Only If hasAttachment is True) -->\n    <div\n      *ngIf=\"comment.images?.length! > 0\"\n      class=\"grid grid-cols-2 gap-2 mt-3\"\n    >\n      <ng-container *ngFor=\"let image of comment.images; let i = index\">\n        <div class=\"relative\" *ngIf=\"i < 4\">\n          <img\n            [src]=\"asImage(image).value\"\n            alt=\"Attachment\"\n            class=\"w-full h-28 rounded-lg object-cover\"\n          />\n          <div\n            *ngIf=\"i === 3 && comment.images\"\n            class=\"absolute inset-0 bg-black bg-opacity-50 flex items-center justify-center text-white text-xl font-bold\"\n          >\n            +{{ i }}\n          </div>\n        </div>\n      </ng-container>\n    </div>\n\n    <!-- Voting & Actions -->\n    <div class=\"flex items-center justify-between mt-3\">\n      <!-- Upvote/Downvote -->\n      <div class=\"flex flex-col items-center text-pink-500\">\n        <img\n          [src]=\"getVoteUpIcon()\"\n          alt=\"Upvote\"\n          class=\"cursor-pointer\"\n          (click)=\"onUpClick()\"\n          [ngStyle]=\"{\n            transform: !isUpVote() ? 'rotate(180deg)' : 'rotate(0deg)',\n            transition: 'transform 0.3s ease',\n          }\"\n        />\n        <span class=\"text-xs font-semibold text-pink-500\">{{\n          getUpVotes()?.length ?? 0 | votes\n        }}</span>\n        <img\n          [src]=\"getVoteDownIcon()\"\n          alt=\"Downvote\"\n          class=\"cursor-pointer\"\n          (click)=\"onDownClick()\"\n          [ngStyle]=\"{\n            transform: isDownVote() ? 'rotate(180deg)' : 'rotate(0deg)',\n            transition: 'transform 0.3s ease',\n          }\"\n        />\n      </div>\n\n      <!-- Reply & Feature Comment -->\n      <div class=\"flex space-x-4 text-gray-400 text-sm\">\n        <button class=\"flex items-center space-x-1 hover:text-white\">\n          <img [src]=\"ICONS['comment2']\" alt=\"Reply\" />\n          <span>Reply</span>\n        </button>\n        <button class=\"flex items-center space-x-1 hover:text-white\" (click)=\"onFeatureToggle()\">\n          <ng-container *ngIf=\"comment.isFeatured; else notFeatured\">\n            <img [src]=\"ICONS['removeFeature']\" alt=\"Feature\" />\n            <span>Featured</span>\n          </ng-container>\n          <ng-template #notFeatured>\n            <img [src]=\"ICONS['addFeature']\" alt=\"Feature\" />\n            <span>Feature Comment</span>\n          </ng-template>\n        </button>\n      </div>\n    </div>\n\n    <!-- Separator Line -->\n    <div class=\"border-t border-gray-700 mt-2\"></div>\n  </div>\n</ng-container>\n","import {\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  TemplateRef,\r\n} from '@angular/core';  \r\nimport { Iicon } from '../../_interface/i-icon'; \r\nimport { ICONS } from '../../_constants/icons';\r\n\r\n@Component({ \r\n  selector: 'app-header',\r\n  templateUrl: './header.component.html',\r\n  styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent {\r\n  @Input() heading!: string;\r\n  @Input() headerRightIcon: string = ICONS['search'];\r\n  @Input() titleIcon: string = '';\r\n  @Input() cssClass!: string;\r\n  @Output() firstButton: EventEmitter<MouseEvent> =\r\n    new EventEmitter<MouseEvent>();\r\n  @Output() titleIconClick: EventEmitter<MouseEvent> =\r\n    new EventEmitter<MouseEvent>();\r\n  @Input() headerSuffixTemplate!: TemplateRef<any>;\r\n  ICONS: Iicon = ICONS;\r\n\r\n  firstButtonClick(): void {\r\n    this.firstButton.emit();\r\n  }\r\n\r\n  onTitleIconClick() {\r\n    this.titleIconClick.emit();\r\n  }\r\n}\r\n","<div\r\n  [class]=\"\r\n    'header-main-bar pt-5 pb-5 mr-3 flex items-center justify-between ' +\r\n    cssClass\r\n  \"\r\n>\r\n  <lib-icon-btn class=\"checkmark-icon-button\" (click)=\"firstButtonClick()\">\r\n    <img [src]=\"ICONS['back']\" height=\"12\" width=\"13\" />\r\n  </lib-icon-btn>\r\n  <div class=\"flex\">\r\n    <h4 class=\"mr-1\">{{ heading }}</h4>\r\n    <img\r\n      *ngIf=\"titleIcon\"\r\n      [src]=\"ICONS['editPink']\"\r\n      (click)=\"onTitleIconClick()\"\r\n      height=\"8\"\r\n      width=\"8\"\r\n    />\r\n  </div>\r\n  <ng-container *ngIf=\"headerSuffixTemplate\">\r\n    <ng-container *ngTemplateOutlet=\"headerSuffixTemplate\"></ng-container>\r\n  </ng-container>\r\n  <div *ngIf=\"!headerSuffixTemplate\"></div>\r\n</div>\r\n","import {\r\n  Component,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { FormFieldType } from '@naniteninja/ionic-lib';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { IReportOptions } from '../../_interface/report-options';\r\nimport { ModalService } from '../../_services/modal.service';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Component({\r\n  selector: 'app-report-itinerary-modal',\r\n  templateUrl: './report-itinerary-modal.component.html',\r\n  styleUrls: ['./report-itinerary-modal.component.scss'],\r\n})\r\nexport class ReportItineraryModalComponent implements OnInit, OnDestroy {\r\n  @Input() popupTitle!: string;\r\n  selectedItem: number | undefined;\r\n  radio: FormControl = new FormControl(0);\r\n  options: IReportOptions[] = [];\r\n  private destroy$: Subject<void> = new Subject<void>();\r\n  protected readonly FormFieldType = FormFieldType;\r\n\r\n  constructor(\r\n    public modalService: ModalService,\r\n    public http: HttpClient,\r\n  ) { }\r\n\r\n  radioChecked(): void {\r\n    if (this.radio.value === 9) {\r\n      this.selectedItem = 9;\r\n    } else {\r\n      this.selectedItem = 0;\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.http.get<IReportOptions[]>('/assets/jsons/reports-options.json')\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((data: IReportOptions[]) => {\r\n        this.options = data;\r\n      });\r\n\r\n    this.radio.valueChanges\r\n      .pipe(takeUntil(this.destroy$))\r\n      .subscribe((e: number | null) => {\r\n        this.selectedItem = e === 9 ? 9 : 0;\r\n      });\r\n\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  closeModal(): void {\r\n    this.modalService.toggleModal = !this.modalService.toggleModal;\r\n  }\r\n\r\n  onOk(): void { }\r\n}\r\n","<div class=\"report-itineraies max-padd-container\">\r\n  <h1 class=\"p-4\">{{ popupTitle | translate }}</h1>\r\n  <div>\r\n    <lib-form-field [formFieldControl]=\"radio\" [submitted]=\"false\" [required]=\"true\" [maxLength]=\"10\"\r\n      [type]=\"FormFieldType.radio\" [options]=\"options\" [radioDeselectable]=\"false\" class=\"mb-2\"></lib-form-field>\r\n  </div>\r\n\r\n  <lib-text-box class=\"text-feild\" [class.show]=\"selectedItem == 9\" [class.hide]=\"selectedItem != 9\"\r\n    [label]=\"'Please brief your issue'\"></lib-text-box>\r\n  <div class=\"flex justify-center gap-10 mt-5\">\r\n    <button class=\"custom-flat-button font-[Calistoga]\" (click)=\"closeModal()\">{{ \"COMMON.CANCEL\" | translate}}</button>\r\n    <button class=\"custom-flat-button-highlighted-font font-[Calistoga]\"  (click)=\"onOk()\">{{ \"REPORT\" | translate }}</button>\r\n  </div>\r\n</div>\r\n","import { Location } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { EmojiPickerConfig, IText, LibMenuItem, ToastrDescription, ToastrSeverity, ToastrStackConfig } from '@naniteninja/ionic-lib';\r\nimport { Subject, forkJoin } from 'rxjs';\r\nimport { ICONS } from '../../_constants/icons';\r\nimport { IUser } from '../../_models/app-user';\r\nimport { IComment } from '../../_models/i-comment';\r\nimport { IVote } from '../../_models/i-vote.schema';\r\nimport { AppService } from '../../_data/app-service.service';\r\nimport { CommentService } from '../../_data/comment.service';\r\nimport { VoteService } from '../../_data/vote.service';\r\nimport { UpdateCommentDto, CreateCommentDto } from '../../_dtos/comment.dto';\r\nimport { ModalService } from '../../_services/modal.service';\r\nimport { CommentLibService } from '../../comment-lib.service';\r\n\r\n@Component({\r\n  selector: 'app-comment-replies',\r\n  templateUrl: './comment-replies.component.html',\r\n  styleUrl: './comment-replies.component.css',\r\n})\r\nexport class CommentRepliesComponent implements OnInit {\r\n  ICONS = ICONS;\r\n  emojiPickerConfig!: EmojiPickerConfig;\r\n  text: FormControl = new FormControl<IText | null>(null);\r\n  replies: IComment[] = [];\r\n  user: IUser;\r\n  loading: boolean = false;\r\n  comment!: IComment | null;\r\n  selectedCommentId: string = '';\r\n  commentUpdate: boolean = false;\r\n  config$: Subject<ToastrStackConfig> = new Subject<ToastrStackConfig>();\r\n\r\n  parentLibItems: LibMenuItem[] = [\r\n    {\r\n      title: 'REPORT',\r\n      iconUrl: ICONS['report'],\r\n      command: () => this.openReportModal()\r\n    },\r\n    {\r\n      title: 'Add Feature', // Default title, will be toggled based on comment status\r\n      iconUrl: ICONS['removeFeature'],\r\n      command: () => this.toggleFeature()\r\n    },\r\n    {\r\n      title: 'DELETE_COMMENT',\r\n      iconUrl: ICONS['deleteCross'],\r\n      command: () => this.deleteComment()\r\n    }\r\n  ];\r\n\r\n  commentLibItems: LibMenuItem[] = [\r\n    {\r\n      title: 'REPORT',\r\n      iconUrl: ICONS['report'],\r\n      command: () => this.openReportModal()\r\n    },\r\n    {\r\n      title: 'EDIT_COMMENT',\r\n      iconUrl: ICONS['edit'],\r\n      command: () => this.updateComment()\r\n    },\r\n    {\r\n      title: 'Add Feature', // Default title, will be toggled based on comment status\r\n      iconUrl: ICONS['removeFeature'],\r\n      command: () => this.toggleFeature()\r\n    },\r\n    {\r\n      title: 'DELETE_COMMENT',\r\n      iconUrl: ICONS['deleteCross'],\r\n      command: () => this.deleteComment()\r\n    }\r\n  ];\r\n\r\n  constructor(\r\n    private location: Location,\r\n    public modalService: ModalService,\r\n    private commentService: CommentService,\r\n    private activatedRoute: ActivatedRoute,\r\n    private voteService: VoteService,\r\n    private commentLibService: CommentLibService,\r\n    appService: AppService\r\n  ) {\r\n    this.user = appService.user;\r\n    this.emojiPickerConfig = { pickerIcon: ICONS['pickerIcon'] };\r\n    this.setLibItems();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    const id = this.activatedRoute.snapshot.params['id'];\r\n\r\n    if (id) {\r\n      this.loading = true;\r\n      forkJoin({\r\n        comment: this.commentService.getByCommentId(id),\r\n        replies: this.commentService.repliesByParentCommentId(id)\r\n      }).subscribe({\r\n        next: (res: { comment: IComment, replies: IComment[] }) => {\r\n          this.replies = res.replies;\r\n          this.comment = res.comment;\r\n        },\r\n        complete: () => {\r\n          this.loading = false;\r\n        }\r\n      });\r\n    }\r\n\r\n    this.registerListeners();\r\n  }\r\n\r\n  //UI LOGIC\r\n  registerListeners(): void {\r\n    this.commentService.onCommentAdded().subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          // Ensure votes property is initialized as an array for new replies\r\n          if (!res.votes) {\r\n            res.votes = [];\r\n          }\r\n          this.replies.unshift(res);\r\n          this.commentLibService.emitCommentCreated(res);\r\n        }\r\n      }\r\n    });\r\n\r\n    this.commentService.onCommentUpdated().subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          // Ensure votes property is initialized as an array for updated replies\r\n          if (!res.votes) {\r\n            res.votes = [];\r\n          }\r\n          const index = this.replies.findIndex(z => z._id === res._id);\r\n          if (index != -1) {\r\n            this.replies[index] = res;\r\n            this.commentLibService.emitCommentUpdated(res);\r\n          }\r\n        }\r\n      },\r\n      complete: () => this.replies = [...this.replies]\r\n    });\r\n\r\n    this.commentService.onCommentDeleted().subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          const idx = this.replies.findIndex((x) => x._id === res._id);\r\n          this.replies.splice(idx, 1);\r\n          this.commentLibService.emitCommentDeleted(res);\r\n        }\r\n      },\r\n      complete: () => this.replies = [...this.replies]\r\n    });\r\n\r\n    // Vote listeners\r\n    this.voteService.onVoteChanged().subscribe({\r\n      next: (res: IVote | null) => {\r\n        if (res) {\r\n          // Find the comment that was voted on (check both replies and parent comment)\r\n          const comment = this.replies.find(x => x._id === res.modelId) ?? this.comment;\r\n          if (comment) {\r\n            // Ensure votes property is initialized as an array\r\n            if (!comment.votes) {\r\n              comment.votes = [];\r\n            }\r\n            \r\n            const voteIndex = comment.votes.findIndex(x => x.userId === res.userId);\r\n            \r\n            // Check if vote is marked as deleted\r\n            if (res.isDeleted) {\r\n              // Remove the vote from the comment\r\n              if (voteIndex !== -1) {\r\n                comment.votes.splice(voteIndex, 1);\r\n                this.commentLibService.emitCommentUnvoted(comment);\r\n              }\r\n            } else {\r\n              // Vote added or updated\r\n              if (voteIndex !== -1) {\r\n                comment.votes[voteIndex] = res;\r\n              } else {\r\n                comment.votes.push(res);\r\n              }\r\n              this.commentLibService.emitCommentVoted(comment);\r\n            }\r\n          }\r\n        }\r\n      },\r\n      complete: () => {\r\n        this.replies = [...this.replies];\r\n        // Also trigger change detection for the parent comment if it exists\r\n        if (this.comment) {\r\n          this.comment = {...this.comment};\r\n        }\r\n      }\r\n    });\r\n\r\n    // Feature toggle listener\r\n    this.commentService.onCommentFeatureToggled().subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          // Update parent comment if it matches\r\n          if (this.comment && this.comment._id === res._id) {\r\n            this.comment = res;\r\n            if (res.isFeatured) {\r\n              this.commentLibService.emitCommentFeatured(res);\r\n            } else {\r\n              this.commentLibService.emitCommentUnfeatured(res);\r\n            }\r\n          }\r\n          // Update reply if it matches\r\n          const replyIndex = this.replies.findIndex(z => z._id === res._id);\r\n          if (replyIndex !== -1) {\r\n            this.replies[replyIndex] = res;\r\n            if (res.isFeatured) {\r\n              this.commentLibService.emitCommentFeatured(res);\r\n            } else {\r\n              this.commentLibService.emitCommentUnfeatured(res);\r\n            }\r\n          }\r\n        }\r\n      },\r\n      complete: () => {\r\n        this.replies = [...this.replies];\r\n        if (this.comment) {\r\n          this.comment = {...this.comment};\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  setLibItems(): void {\r\n    if (!this.isOwner(this.comment!)) {\r\n      this.parentLibItems = this.parentLibItems.filter(x => x.title === 'REPORT');\r\n    }\r\n  }\r\n\r\n  getLibMenuItems(comment?: IComment): LibMenuItem[] {\r\n    if (!this.isOwner(comment!)) {\r\n      return this.commentLibItems.filter(x => x.title === 'REPORT');\r\n    }\r\n\r\n    // Create a copy of menu items to avoid modifying the original\r\n    const menuItemsCopy = [...this.commentLibItems];\r\n    \r\n    // Find the feature toggle menu item and update its title based on comment's featured status\r\n    const featureMenuItem = menuItemsCopy.find(item => \r\n      item.title === 'Remove Feature' || item.title === 'Add Feature'\r\n    );\r\n    \r\n    if (featureMenuItem && comment) {\r\n      if (comment.isFeatured) {\r\n        featureMenuItem.title = 'Remove Feature';\r\n      } else {\r\n        featureMenuItem.title = 'Add Feature';\r\n      }\r\n    }\r\n\r\n    return menuItemsCopy;\r\n  }\r\n\r\n  getParentLibMenuItems(): LibMenuItem[] {\r\n    if (!this.isOwner(this.comment!)) {\r\n      return this.parentLibItems.filter(x => x.title === 'REPORT');\r\n    }\r\n\r\n    // Create a copy of menu items to avoid modifying the original\r\n    const menuItemsCopy = [...this.parentLibItems];\r\n    \r\n    // Find the feature toggle menu item and update its title based on comment's featured status\r\n    const featureMenuItem = menuItemsCopy.find(item => \r\n      item.title === 'Remove Feature' || item.title === 'Add Feature'\r\n    );\r\n    \r\n    if (featureMenuItem && this.comment) {\r\n      if (this.comment.isFeatured) {\r\n        featureMenuItem.title = 'Remove Feature';\r\n      } else {\r\n        featureMenuItem.title = 'Add Feature';\r\n      }\r\n    }\r\n\r\n    return menuItemsCopy;\r\n  }\r\n\r\n  updateId(id: string): void {\r\n    this.selectedCommentId = id;\r\n  }\r\n\r\n  handleFeatureToggle(commentId: string): void {\r\n    this.selectedCommentId = commentId;\r\n    this.toggleFeature();\r\n  }\r\n\r\n  isOwner(comment: IComment): boolean {\r\n    return (comment?.user as IUser)?._id === this.user._id;\r\n  }\r\n\r\n  addComment(): void {\r\n    if (this.comment) {\r\n      if (this.selectedCommentId && this.commentUpdate) {\r\n        const updatecommentDto: UpdateCommentDto = {\r\n          comment: this.text.value.message,\r\n          images: this.text.value.attachments\r\n        }\r\n\r\n        this.commentService.editComment(this.selectedCommentId, this.user._id, updatecommentDto).subscribe({\r\n          next: (res: IComment) => {\r\n            if (res) {\r\n                this.config$.next({\r\n                  token: 'token',\r\n                  title: 'Comment Updated',\r\n                  description: {\r\n                    content:\r\n                      'Your featured comment will update after being approved by the author.',\r\n                    type: ToastrDescription.STRING,\r\n                  },\r\n                  severity: ToastrSeverity.SUCCESS,\r\n                });\r\n            }\r\n          },\r\n          complete: () => {\r\n            this.selectedCommentId = '';\r\n            this.text.reset();\r\n          },\r\n        });\r\n      }\r\n      else {\r\n        const comment: CreateCommentDto = {\r\n          modelId: this.comment.modelId as string,\r\n          user: this.user._id,\r\n          comment: this.text.value.message!,\r\n          images: this.text.value.attachments,\r\n          parentComment: this.comment._id\r\n        };\r\n\r\n        this.commentService.addComment(comment).subscribe({\r\n          complete: () => {\r\n            this.text.reset();\r\n          },\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  voteUp(id: string): void {\r\n    this.voteService.upVote(id, this.user._id).subscribe({\r\n      next: (_res: IVote) => {\r\n        // Vote handling is now done by the listener\r\n        // The listener will automatically update the UI when votes change\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n  voteDown(id: string): void {\r\n    this.voteService.downVote(id, this.user._id).subscribe({\r\n      next: (_res: IVote) => {\r\n        // Vote handling is now done by the listener\r\n        // The listener will automatically update the UI when votes change\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteComment(): void {\r\n    if (!this.selectedCommentId) return;\r\n\r\n    this.commentService.deleteComment(this.selectedCommentId).subscribe({\r\n      next: (res: boolean) => {\r\n        if (res) {\r\n          const idx = this.replies.findIndex((x) => x._id === this.selectedCommentId);\r\n          if (idx != -1) {\r\n            this.replies.splice(idx, 1);\r\n          }\r\n        }\r\n        this.selectedCommentId = '';\r\n      },\r\n      complete: () => {\r\n        this.replies = [...this.replies];\r\n      },\r\n    });\r\n  }\r\n\r\n  openReportModal(): void {\r\n    this.modalService.toggleModal = !this.modalService.toggleModal;\r\n  }\r\n\r\n  reportComment(): void { }\r\n\r\n  toggleFeature(): void {\r\n    if (!this.selectedCommentId) return; \r\n    this.commentService.toggleFeatureByModelId(this.selectedCommentId).subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          const action = res.isFeatured ? 'featured' : 'unfeatured';\r\n          this.config$.next({\r\n            token: 'token',\r\n            title: `Comment ${action}`,\r\n            description: {\r\n              content: `Comment has been ${action} successfully.`,\r\n              type: ToastrDescription.STRING,\r\n            },\r\n            severity: ToastrSeverity.SUCCESS,\r\n          });\r\n        }\r\n      },\r\n      error: () => {\r\n        this.config$.next({\r\n          token: 'token',\r\n          title: 'Error',\r\n          description: {\r\n            content: 'Failed to toggle comment feature status.',\r\n            type: ToastrDescription.STRING,\r\n          },\r\n          severity: ToastrSeverity.ERROR,\r\n        });\r\n      },\r\n      complete: () => {\r\n        this.selectedCommentId = '';\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n  updateComment(): void {\r\n    if (!this.selectedCommentId) return;\r\n\r\n    const comment = this.replies.find(x => x._id === this.selectedCommentId);\r\n    if (comment) {\r\n      this.commentUpdate = true;\r\n      this.text.patchValue({\r\n        message: comment.comment,\r\n        attachments: comment.images?.map(x => x.value)\r\n      });\r\n    }\r\n  }\r\n\r\n  //NAVIGATIONS\r\n  back() {\r\n    this.location.back();\r\n  }\r\n}\r\n","@if (loading) {\r\n  <div class=\"h-[100vh] w-full flex items-center justify-center\">\r\n    <p>Loading...</p>\r\n  </div>\r\n} @else {\r\n  <div>\r\n    <div class=\"ps-5 pe-5\">\r\n      <app-header heading=\"Replies\" (firstButton)=\"back()\"></app-header>\r\n\r\n      <app-comment-single\r\n        [comment]=\"comment!\"\r\n        [libMenuItem]=\"getParentLibMenuItems()\"\r\n        (upClick)=\"voteUp(comment?._id!)\"\r\n        (downClick)=\"voteDown(comment?._id!)\"\r\n        (menuClick)=\"updateId(comment?._id!)\"\r\n        (featureToggle)=\"handleFeatureToggle($event)\"\r\n      ></app-comment-single>\r\n\r\n      <div class=\"flex w-full items-center px-2\">\r\n        <lib-text-box\r\n          class=\"flex-1 w-full\"\r\n          [formControl]=\"text\"\r\n          [includeImageAttachment]=\"true\"\r\n        >\r\n        </lib-text-box>\r\n\r\n        <button (click)=\"addComment()\" class=\"ml-1 ms-2\">\r\n          <img [src]=\"ICONS['submit']\" class=\"w-10 h-10\" />\r\n        </button>\r\n      </div>\r\n      <div class=\"grid w-full items-center px-5\">\r\n        @if (!loading && replies.length === 0) {\r\n          <div class=\"h-[30vh] w-full flex items-center justify-center\">\r\n            <p>No replies found.</p>\r\n          </div>\r\n        }\r\n\r\n        <ng-container *ngFor=\"let c of replies; let i = index\">\r\n          <app-comment-single\r\n            [comment]=\"c\"\r\n            [libMenuItem]=\"isOwner(c) ? getLibMenuItems(c) : getLibMenuItems()\"\r\n            (upClick)=\"voteUp(c._id!)\"\r\n            (downClick)=\"voteDown(c._id!)\"\r\n            (menuClick)=\"updateId(c?._id!)\"\r\n            (featureToggle)=\"handleFeatureToggle($event)\"\r\n          ></app-comment-single>\r\n        </ng-container>\r\n      </div>\r\n\r\n      <lib-popup\r\n        class=\"lib-menu-custom-class lib-menu-bg-none\"\r\n        [isOpen]=\"modalService.toggleModal\"\r\n      >\r\n        <app-report-itinerary-modal\r\n          popupTitle=\"Report Comment\"\r\n        ></app-report-itinerary-modal>\r\n      </lib-popup>\r\n    </div>\r\n  </div>\r\n}\r\n","export enum RedditSortType {\r\n  BEST = 'best',\r\n  HOT = 'hot',\r\n  NEW = 'new',\r\n  TOP = 'top'\r\n}\r\n\r\nexport enum TopTimePeriod {\r\n  HOUR = 'hour',\r\n  DAY = 'day',\r\n  WEEK = 'week',\r\n  MONTH = 'month',\r\n  YEAR = 'year',\r\n  ALL = 'all'\r\n}\r\n\r\nexport interface SortingOptionsDto {\r\n  sortType: RedditSortType;\r\n  timePeriod?: TopTimePeriod;\r\n  userId?: string; // For personalized sorting (Best algorithm)\r\n  userPreferences?: {\r\n    subscribedSubreddits?: string[];\r\n    upvotedComments?: string[];\r\n    downvotedComments?: string[];\r\n    commentedOn?: string[];\r\n  };\r\n}\r\n\r\nexport interface SortingOptionsResponseDto {\r\n  sortTypes: RedditSortType[];\r\n  timePeriods: TopTimePeriod[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { InputValue } from '../_models/input-value';\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class InputService {\r\n  private inputValue$: BehaviorSubject<InputValue | undefined> = new BehaviorSubject<InputValue | undefined>(undefined);\r\n\r\n  constructor() { }\r\n\r\n  setInputValue(value: InputValue | undefined): void {\r\n    this.inputValue$.next(value);\r\n  }\r\n  get inputValue(): BehaviorSubject<InputValue | undefined> { \r\n    return this.inputValue$;\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  Type,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router'; \r\nimport { LibMenuItem } from '@naniteninja/ionic-lib';\r\nimport { ICONS } from '../../_constants/icons'; \r\nimport { IComment } from '../../_models/i-comment';\r\nimport { IUser } from '../../_models/app-user';\r\nimport { IVote } from '../../_models/i-vote.schema'; \r\nimport { IImage } from '../../_models/i-image';\r\nimport { AppService } from '../../_data/app-service.service';\r\nimport { CommentRoutesEnum } from '../../_enums/comment-routes.enum';\r\nimport { Iicon } from '../../_interface/i-icon';\r\nimport { CommentImageService } from '../../_services/comment-image.service';\r\nimport { CommentImagesComponent } from '../../pages/comment-images/comment-images.component';\r\n\r\n@Component({\r\n  selector: 'app-comment',\r\n  templateUrl: './comment.component.html',\r\n  styleUrl: './comment.component.scss',\r\n})\r\nexport class CommentComponent implements OnInit {\r\n  @Input() libMenuItem!: LibMenuItem[];\r\n  @Input() comment: IComment | undefined;\r\n  @Input() index!: number;\r\n  @Input() showMenuItems: boolean = true;\r\n  @Output() upClick: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() downClick: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() menuClick: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() menuItemSelect: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  ICONS: Iicon = ICONS;\r\n  isOpen: boolean = false;\r\n  user: IUser;\r\n  imageComponent: Type<unknown> = CommentImagesComponent;\r\n\r\n  //LIFE CYCLES\r\n  constructor(\r\n    private router: Router,\r\n    private cdr: ChangeDetectorRef,\r\n    private commentImageService: CommentImageService,\r\n    appService: AppService\r\n  ) { this.user = appService.user }\r\n\r\n  ngOnInit(): void { \r\n\r\n  }\r\n\r\n  //UI LOGIC\r\n  asUser(value: IUser | string): IUser {\r\n    return value as IUser;\r\n  }\r\n\r\n  asImage(value:IImage | string): IImage{\r\n    return value as IImage;\r\n  }\r\n\r\n  handleMenueItemSelect(_event:Event): void {\r\n   }\r\n\r\n   handleMenuItemChange(): void { }\r\n  handleMenuClick(): void {\r\n    this.menuClick.emit();\r\n  }\r\n\r\n  close = (): void => {\r\n    this.isOpen = false;\r\n  };\r\n\r\n  showImage(images: IImage[], currentIndex: number): void {\r\n    if (this.isOpen) {\r\n      this.close();\r\n    }\r\n\r\n    setTimeout(() => {\r\n      this.isOpen = true;\r\n      this.commentImageService.image = images.map((v) => v.value);\r\n      this.commentImageService.index = currentIndex;\r\n      this.cdr.detectChanges();\r\n    }, 0);\r\n  }\r\n\r\n  getUpVotes(): IVote[] | undefined {\r\n    return this.comment?.votes?.filter(x => x.vote === 'up');\r\n  }\r\n\r\n  getVoteUpIcon(): string {\r\n    const vote = this.comment?.votes?.find(x => x.userId === this.user._id);\r\n    return vote?.vote === 'up' ? ICONS['upvote'] : ICONS['downvote'];\r\n  }\r\n\r\n  getVoteDownIcon(): string {\r\n    const vote = this.comment?.votes?.find(x => x.userId === this.user._id);\r\n    return vote?.vote === 'down' ? ICONS['upvote'] : ICONS['downvote'];\r\n  }\r\n\r\n  isUpVote(): boolean {\r\n    const vote = this.comment?.votes?.find(x => x.userId === this.user._id);\r\n    return vote?.vote === 'up';\r\n  }\r\n\r\n  isDownVote(): boolean {\r\n    const vote = this.comment?.votes?.find(x => x.userId === this.user._id);\r\n    return vote?.vote === 'down';\r\n  }\r\n\r\n  isFeatured(): boolean {\r\n    return this.comment?.isFeatured === true;\r\n  }\r\n\r\n  //NAVGIATIONS\r\n  onUpClick() {\r\n    this.upClick.emit();\r\n  }\r\n\r\n  onDownClick() {\r\n    this.downClick.emit();\r\n  }\r\n\r\n  RedirectToReplies() {\r\n    this.router.navigate([\r\n      // ItinerariesRoutesEnum.COMMENTS,\r\n      CommentRoutesEnum.COMMENT_REPLIES,\r\n      this.comment?._id\r\n    ]);\r\n  }\r\n}\r\n","<div class=\"comment-card text-white p-4 rounded-xl w-full\">\r\n  <div class=\"flex items-start justify-between\">\r\n    <div class=\"flex space-x-3 mr-1\">\r\n      <img\r\n        [src]=\"asUser(comment?.user!).pictureUrl ?? ICONS['user']\"\r\n        loading=\"lazy\"\r\n        alt=\"User\"\r\n        class=\"comment-user rounded-full\"\r\n      />\r\n      <div>\r\n        <p class=\"text-sm font-semibold\">\r\n          {{ asUser(comment?.user!).name }} -\r\n          {{ comment?.createdAt! | timeAgo }}\r\n          {{ comment?.isEdited ? \"(Edited)\" : \"\" }}\r\n        </p>\r\n        <p class=\"text-md text-gray-300\">{{ comment?.comment }}</p>\r\n      </div>\r\n    </div>\r\n\r\n    @if (showMenuItems) {\r\n      <lib-menu-btn\r\n        (select)=\"handleMenueItemSelect($event)\"\r\n        (click)=\"handleMenuClick()\"\r\n        (change)=\"handleMenuItemChange()\"\r\n        class=\"lib-menu-custom-class lib-menu-bg-none\"\r\n        [disableTextShadow]=\"true\"\r\n        [menuItems]=\"libMenuItem\"\r\n      >\r\n        <img [src]=\"ICONS['horizontalWhite']\" alt=\"\" />\r\n      </lib-menu-btn>\r\n    }\r\n  </div>\r\n\r\n  <div class=\"flex gap-[18px]\">\r\n    <div class=\"flex flex-col items-center text-pink-500\">\r\n      <img\r\n        [src]=\"getVoteUpIcon()\"\r\n        alt=\"Upvote\"\r\n        class=\"cursor-pointer\"\r\n        (click)=\"onUpClick()\"\r\n        [ngStyle]=\"{\r\n          transform: !isUpVote() ? 'rotate(180deg)' : 'rotate(0deg)',\r\n          transition: 'transform 0.3s ease',\r\n        }\"\r\n      />\r\n      <span class=\"text-xs font-semibold text-pink-500\">{{\r\n        getUpVotes()?.length ?? 0 | votes\r\n      }}</span>\r\n      <img\r\n        [src]=\"getVoteDownIcon()\"\r\n        alt=\"Downvote\"\r\n        class=\"cursor-pointer\"\r\n        (click)=\"onDownClick()\"\r\n        [ngStyle]=\"{\r\n          transform: isDownVote() ? 'rotate(180deg)' : 'rotate(0deg)',\r\n          transition: 'transform 0.3s ease',\r\n        }\"\r\n      />\r\n    </div>\r\n    <div class=\"flex flex-col\">\r\n      <div\r\n        *ngIf=\"(comment?.images)!.length > 0\"\r\n        class=\"grid grid-cols-2 gap-2 mt-3\"\r\n      >\r\n        <ng-container *ngFor=\"let image of comment?.images; let i = index\">\r\n          <div class=\"relative\" *ngIf=\"i < 4\">\r\n            <img\r\n              [src]=\"asImage(image).value\"\r\n              loading=\"lazy\"\r\n              alt=\"Attachment\"\r\n              (click)=\"showImage(comment?.images!, i)\"\r\n              class=\"w-full h-28 rounded-lg object-cover\"\r\n            />\r\n            <div\r\n              *ngIf=\"i === 3 && comment?.images\"\r\n              class=\"absolute inset-0 bg-black bg-opacity-50 flex items-center justify-center text-white text-xl font-bold\"\r\n            >\r\n              +{{ i }}\r\n            </div>\r\n          </div>\r\n        </ng-container>\r\n      </div>\r\n      <div class=\"flex items-center justify-between mt-3\">\r\n        <div class=\"flex space-x-4 text-gray-400 text-sm\">\r\n          <button\r\n            class=\"flex items-center space-x-1 hover:text-white\"\r\n            (click)=\"RedirectToReplies()\"\r\n          >\r\n            <img [src]=\"ICONS['comment2']\" alt=\"Reply\" />\r\n            <p>Reply</p>\r\n          </button>\r\n          <button\r\n            *ngIf=\"isFeatured()\"\r\n            class=\"flex items-center space-x-1 hover:text-white\"\r\n          >\r\n            <img\r\n              style=\"height: 10px; width: 10px\"\r\n              [src]=\"ICONS['featured']\"\r\n              alt=\"Feature\"\r\n            />\r\n            <p>Featured</p>\r\n          </button>\r\n        </div>\r\n      </div>\r\n      <p\r\n        class=\"custom-pink mt-4 font-bold text-sm cursor-pointer\"\r\n        (click)=\"RedirectToReplies()\"\r\n      >\r\n        View Replies\r\n      </p>\r\n    </div>\r\n  </div>\r\n\r\n  <div class=\"border-t border-gray-700 mt-2\"></div>\r\n</div>\r\n\r\n<lib-popup\r\n  [isOpen]=\"isOpen\"\r\n  [modalComponent]=\"imageComponent\"\r\n  [backdropDismiss]=\"true\"\r\n  (afterCloseEvent)=\"close()\"\r\n>\r\n</lib-popup>\r\n","import { \r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n  OnInit,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { ICONS } from '../../_constants/icons';\r\nimport { Iicon } from '../../_interface/i-icon';\r\nimport { IFilterMenuOptions } from '../../_interface/i-filter-menu-option';\r\n\r\n@Component({\r\n  selector: 'app-filter-menu',\r\n  templateUrl: './filter-menu.component.html',\r\n  styleUrl: './filter-menu.component.scss',\r\n})\r\nexport class FilterMenuComponent implements OnInit {\r\n  @Input() cssClass!: string;\r\n  @Input() options: IFilterMenuOptions[] = [];\r\n  @Input() showFilterButton: boolean = true;\r\n  @Input() placeholder: string = 'Select option';\r\n  @Output() onFilterClick: EventEmitter<void> = new EventEmitter<void>();\r\n  @Output() onSelectionChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n  ICONS: Iicon = ICONS;\r\n  filterControl = new FormControl();\r\n  \r\n  //LIFE CYCLE\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n    // Set default selection if any option is marked as selected\r\n    const selectedOption = this.options.find(option => option.selected);\r\n    if (selectedOption) {\r\n      this.filterControl.setValue(selectedOption.value);\r\n    }\r\n\r\n    // Listen to selection changes\r\n    this.filterControl.valueChanges.subscribe((value: string | null) => {\r\n      if (value) {\r\n        this.onSelectionChange.emit(value);\r\n      }\r\n    });\r\n  }\r\n\r\n  //UI LOGIC\r\n  changeSelection(): void {\r\n    this.options.forEach(option => {\r\n      option.selected = option.value === this.filterControl.value;\r\n    });\r\n  }\r\n  \r\n  handleFilterClick = (): void => this.onFilterClick.emit();\r\n}\r\n","<div [class]=\"cssClass + ' filter-menu'\">\r\n  <div class=\"flex gap-2 items-center\">\r\n    <!-- Filter Options -->\r\n    <lib-selectable\r\n      (click)=\"changeSelection()\"\r\n      (selectionchange)=\"changeSelection()\"\r\n      [formControl]=\"filterControl\"\r\n      [options]=\"options\"\r\n      [singleSelectionOnly]=\"true\"\r\n    >\r\n    </lib-selectable>\r\n\r\n    <!-- Filter Button (optional) -->\r\n    <lib-icon-btn \r\n      *ngIf=\"showFilterButton\"\r\n      (click)=\"handleFilterClick()\">\r\n      <img [src]=\"ICONS['filter']\" height=\"15\" width=\"15\" />\r\n    </lib-icon-btn>\r\n  </div>\r\n</div>\r\n","import { Component, OnInit, Input } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { Subject } from \"rxjs\";\r\nimport { IUser } from \"../../_models/app-user\";\r\nimport { IComment } from \"../../_models/i-comment\";\r\nimport { IVote } from \"../../_models/i-vote.schema\";\r\nimport { AppService } from \"../../_data/app-service.service\";\r\nimport { CommentService } from \"../../_data/comment.service\";\r\nimport { VoteService } from \"../../_data/vote.service\";\r\nimport { UpdateCommentDto, CreateCommentDto } from \"../../_dtos/comment.dto\";\r\nimport { ICommentsData } from \"../../_interface/i-comments-data\";\r\nimport { Iicon } from \"../../_interface/i-icon\";\r\nimport { EmojiPickerConfig, IText, LibMenuItem, StatusPosition, ToastrStackConfig, ToastrDescription, ToastrSeverity } from \"@naniteninja/ionic-lib\";\r\nimport { ICONS } from \"../../_constants/icons\";\r\nimport { Location } from \"@angular/common\";\r\nimport { ModalService } from \"../../_services/modal.service\";\r\nimport { InputValue } from \"../../_models/input-value\";\r\nimport { InputService } from \"../../_services/input.service\";\r\nimport { RedditSortType as SortType, TopTimePeriod, SortingOptionsDto } from \"../../_enums/sorting-options.dto\";\r\nimport { IFilterMenuOptions } from \"../../_interface/i-filter-menu-option\";\r\nimport { CommentLibService } from \"../../comment-lib.service\";\r\n\r\n@Component({\r\n  selector: 'app-comments',\r\n  templateUrl: './comments.component.html',\r\n  styleUrl: './comments.component.scss'\r\n})\r\nexport class CommentsComponent implements OnInit {\r\n  @Input() inputValue: InputValue | undefined;\r\n  emojiPickerConfig!: EmojiPickerConfig;\r\n  text: FormControl = new FormControl<IText | null>(null);\r\n  loading: boolean = false;\r\n  ICONS: Iicon = ICONS;\r\n  StatusPosition = StatusPosition;\r\n  config$: Subject<ToastrStackConfig> = new Subject<ToastrStackConfig>();\r\n  user: IUser;\r\n  commentId: string | undefined;\r\n  commentUpdate: boolean = false;\r\n  comments: IComment[] = [];\r\n  commentData: ICommentsData[] = [];\r\n  attachedImages: string[] = [];\r\n  menuItems: LibMenuItem[] = [];\r\n\r\n  // Filter options\r\n  sortOptions: IFilterMenuOptions[] = [\r\n    { label: \"Hot\", value: SortType.HOT, selected: true },\r\n    { label: \"New\", value: SortType.NEW, selected: false },\r\n    { label: \"Best\", value: SortType.BEST, selected: false },\r\n    { label: \"Top\", value: SortType.TOP, selected: false }\r\n  ];\r\n\r\n  timePeriodOptions: IFilterMenuOptions[] = [\r\n    { label: \"Hour\", value: TopTimePeriod.HOUR, selected: false },\r\n    { label: \"Day\", value: TopTimePeriod.DAY, selected: false },\r\n    { label: \"Week\", value: TopTimePeriod.WEEK, selected: false },\r\n    { label: \"Month\", value: TopTimePeriod.MONTH, selected: false },\r\n    { label: \"Year\", value: TopTimePeriod.YEAR, selected: false },\r\n    { label: \"All Time\", value: TopTimePeriod.ALL, selected: true }\r\n  ];\r\n\r\n  currentSortType: SortType = SortType.HOT;\r\n  currentTimePeriod: TopTimePeriod = TopTimePeriod.ALL;\r\n  showTimePeriod: boolean = false;\r\n\r\n  //LIFE CYCLES\r\n  constructor(\r\n    public modalService: ModalService,\r\n    private _location: Location,\r\n    private commentService: CommentService,\r\n    private voteService: VoteService,\r\n    private inputService: InputService,\r\n    private commentLibService: CommentLibService,\r\n    appService: AppService,\r\n  ) {\r\n    this.user = appService.user;\r\n    this.emojiPickerConfig = { pickerIcon: ICONS['pickerIcon'] };\r\n    this.inputService.inputValue.subscribe({\r\n      next: (val: InputValue | undefined) => {\r\n        this.inputValue = val;\r\n      }\r\n    });\r\n\r\n    this.menuItems = [\r\n      {\r\n        title: 'REPORT',\r\n        iconUrl: ICONS['report'],\r\n        command: () => {\r\n          this.openReportModal();\r\n        },\r\n      },\r\n      {\r\n        title: 'EDIT_COMMENT',\r\n        iconUrl: ICONS['edit'],\r\n        command: () => this.editComment()\r\n      },\r\n      {\r\n        title: 'Add Feature', // Default title, will be toggled based on comment status\r\n        iconUrl: ICONS['removeFeature'],\r\n        command: () => this.toggleFeature()\r\n      },\r\n      {\r\n        title: 'DELETE_COMMENT',\r\n        iconUrl: ICONS['deleteCross'],\r\n        command: () => this.deleteComment()\r\n      }\r\n    ];\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.inputValue?.modelId) {\r\n      this.loadCommentsWithSorting({ sortType: SortType.HOT });\r\n    }\r\n    this.registerListeners();\r\n  }\r\n\r\n  //UI LOGIC\r\n  registerListeners(): void {\r\n    this.commentService.onCommentAdded().subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          // Ensure votes property is initialized as an array for new comments\r\n          if (!res.votes) {\r\n            res.votes = [];\r\n          }\r\n          this.comments.unshift(res);\r\n          this.commentLibService.emitCommentCreated(res);\r\n        }\r\n      }\r\n    });\r\n\r\n    this.commentService.onCommentUpdated().subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          // Ensure votes property is initialized as an array for updated comments\r\n          if (!res.votes) {\r\n            res.votes = [];\r\n          }\r\n          const index = this.comments.findIndex(z => z._id === res._id);\r\n          if (index != -1) {\r\n            this.comments[index] = res;\r\n            this.commentLibService.emitCommentUpdated(res);\r\n          }\r\n        }\r\n      },\r\n      complete: () => this.comments = [...this.comments]\r\n    });\r\n\r\n    this.commentService.onCommentDeleted().subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          const idx = this.comments.findIndex((x) => x._id === res._id);\r\n          this.comments.splice(idx, 1);\r\n          this.commentLibService.emitCommentDeleted(res);\r\n        }\r\n      },\r\n      complete: () => this.comments = [...this.comments]\r\n    });\r\n\r\n\r\n    this.voteService.onVoteChanged().subscribe({\r\n      next: (res: IVote | null) => {\r\n        if (res) {\r\n          const comment = this.comments.find(x => x._id === res.modelId);\r\n          if (comment) {\r\n            // Ensure votes property is initialized as an array\r\n            if (!comment.votes) {\r\n              comment.votes = [];\r\n            }\r\n            \r\n            const voteIndex = comment.votes.findIndex(x => x.userId === res.userId);\r\n            \r\n            if (res.isDeleted) {\r\n              if (voteIndex !== -1) {\r\n                comment.votes.splice(voteIndex, 1);\r\n                this.commentLibService.emitCommentUnvoted(comment);\r\n              }\r\n            } else {\r\n              if (voteIndex !== -1) {\r\n                comment.votes[voteIndex] = res;\r\n              } else {\r\n                comment.votes.push(res);\r\n              }\r\n              this.commentLibService.emitCommentVoted(comment);\r\n            }\r\n          }\r\n        }\r\n      },\r\n      complete: () => this.comments = [...this.comments]\r\n    });\r\n\r\n    this.commentService.onCommentFeatureToggled().subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          const index = this.comments.findIndex(z => z._id === res._id);\r\n          if (index !== -1) {\r\n            this.comments[index] = res;\r\n            if (res.isFeatured) {\r\n              this.commentLibService.emitCommentFeatured(res);\r\n            } else {\r\n              this.commentLibService.emitCommentUnfeatured(res);\r\n            }\r\n          }\r\n        }\r\n      },\r\n      complete: () => this.comments = [...this.comments]\r\n    });\r\n  }\r\n\r\n  loadCommentsWithSorting(sortingOptions: SortingOptionsDto): void {\r\n    if (!this.inputValue?.modelId) return;\r\n\r\n    this.loading = true;\r\n    \r\n    const optionsWithUser = {\r\n      ...sortingOptions,\r\n      userId: (sortingOptions.sortType === SortType.BEST || sortingOptions.sortType === SortType.HOT) \r\n        ? this.user._id \r\n        : undefined\r\n    };\r\n\r\n    this.commentService.getCommentsSorted(this.inputValue.modelId, optionsWithUser).subscribe({\r\n      next: (res: IComment[]) => {\r\n        this.comments = [...res];\r\n        this.getLibMenuItems(true);\r\n      },\r\n      complete: () => {\r\n        this.loading = false;\r\n      },\r\n    });\r\n  }\r\n\r\n  onSortChange(sortType: string): void {\r\n    this.currentSortType = sortType as SortType;\r\n    this.showTimePeriod = this.currentSortType === SortType.TOP;\r\n    this.loadCommentsWithCurrentSorting();\r\n  }\r\n\r\n  onTimePeriodChange(timePeriod: string): void {\r\n    this.currentTimePeriod = timePeriod as TopTimePeriod;\r\n    this.loadCommentsWithCurrentSorting();\r\n  }\r\n\r\n  private loadCommentsWithCurrentSorting(): void {\r\n    const sortingOptions: SortingOptionsDto = {\r\n      sortType: this.currentSortType,\r\n      timePeriod: this.showTimePeriod ? this.currentTimePeriod : undefined\r\n    };\r\n    this.loadCommentsWithSorting(sortingOptions);\r\n  }\r\n\r\n  getLibMenuItems(isOwner: boolean, comment?: IComment): LibMenuItem[] {\r\n    if (!isOwner) {\r\n      return this.menuItems.filter(x => x.title === 'REPORT');\r\n    }\r\n\r\n    // Create a copy of menu items to avoid modifying the original\r\n    const menuItemsCopy = [...this.menuItems];\r\n    \r\n    // Find the feature toggle menu item and update its title based on comment's featured status\r\n    const featureMenuItem = menuItemsCopy.find(item => \r\n      item.title === 'REMOVE_FEATURE' || item.title === 'ADD_FEATURE'\r\n    );\r\n    \r\n    if (featureMenuItem && comment) {\r\n      if (comment.isFeatured) {\r\n        featureMenuItem.title = 'REMOVE_FEATURE';\r\n      } else {\r\n        featureMenuItem.title = 'ADD_FEATURE';\r\n      }\r\n    }\r\n\r\n    return menuItemsCopy;\r\n  }\r\n\r\n  addComment(): void {\r\n    if (this.inputValue?.modelId) {\r\n      if (this.commentId && this.commentUpdate) {\r\n        const updatecommentDto: UpdateCommentDto = {\r\n          comment: this.text.value.message,\r\n          images: this.text.value.attachments\r\n        }\r\n        this.commentService.editComment(this.commentId, this.user._id, updatecommentDto).subscribe({\r\n          next: (res: IComment) => {\r\n            if (res) {\r\n              this.config$.next({\r\n                token: 'token',\r\n                title: 'Comment Updated',\r\n                description: {\r\n                  content:\r\n                    'Your comment is updated successfully.',\r\n                  type: ToastrDescription.STRING,\r\n                },\r\n                severity: ToastrSeverity.SUCCESS,\r\n              });\r\n            }\r\n          },\r\n          complete: () => {\r\n            this.commentId = undefined;\r\n            this.text.reset();\r\n          } \r\n        });\r\n      }\r\n      else {\r\n        const comment: CreateCommentDto = {\r\n          modelId: this.inputValue.modelId,\r\n          user: this.user._id,\r\n          comment: this.text.value.message!,\r\n          images: this.text.value.attachments\r\n        };\r\n        this.commentService.addComment(comment).subscribe({\r\n          complete: () => this.text.reset(),\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  voteUp(id: string): void {\r\n    this.voteService.upVote(id, this.user._id).subscribe({\r\n      next: (_res: IVote) => {\r\n        // Vote handling is now done by the listener\r\n        // The listener will automatically update the UI when votes change\r\n      }\r\n    });\r\n  }\r\n\r\n\r\n  voteDown(id: string): void {\r\n    this.voteService.downVote(id, this.user._id).subscribe({\r\n      next: (_res: IVote) => {\r\n        // Vote handling is now done by the listener\r\n        // The listener will automatically update the UI when votes change\r\n      }\r\n    });\r\n  }\r\n\r\n  editComment(): void {\r\n    if (!this.commentId) return;\r\n\r\n    const comment = this.comments.find(x => x._id === this.commentId);\r\n    if (comment) {\r\n      this.commentUpdate = true;\r\n      this.text.patchValue({\r\n        message: comment.comment,\r\n        attachments: comment.images?.map(x => x.value)\r\n      });\r\n    }\r\n  }\r\n\r\n  deleteComment(): void {\r\n    if (!this.commentId) return;\r\n\r\n    this.commentService.deleteComment(this.commentId).subscribe({\r\n      next: (_res: boolean) => this.commentId = undefined\r\n    });\r\n  }\r\n\r\n  menuClick(id: string): void {\r\n    this.commentId = id;\r\n  }\r\n\r\n  openReportModal(): void {\r\n    this.modalService.toggleModal = !this.modalService.toggleModal;\r\n  }\r\n\r\n  isOwner(user: IUser): boolean {\r\n    return user._id === this.user._id;\r\n  }\r\n\r\n  asUser(user: IUser | string): IUser {\r\n    return user as IUser;\r\n  }\r\n\r\n  reportComment(): void { }\r\n\r\n  toggleFeature(): void {\r\n    if (!this.commentId) return; \r\n    this.commentService.toggleFeatureByModelId(this.commentId).subscribe({\r\n      next: (res: IComment) => {\r\n        if (res) {\r\n          const action = res.isFeatured ? 'featured' : 'unfeatured';\r\n          this.config$.next({\r\n            token: 'token',\r\n            title: `Comment ${action}`,\r\n            description: {\r\n              content: `Comment has been ${action} successfully.`,\r\n              type: ToastrDescription.STRING,\r\n            },\r\n            severity: ToastrSeverity.SUCCESS,\r\n          });\r\n        }\r\n      },\r\n      error: () => {\r\n        this.config$.next({\r\n          token: 'token',\r\n          title: 'Error',\r\n          description: {\r\n            content: 'Failed to toggle comment feature status.',\r\n            type: ToastrDescription.STRING,\r\n          },\r\n          severity: ToastrSeverity.ERROR,\r\n        });\r\n      },\r\n      complete: () => {\r\n        this.commentId = undefined;\r\n      }\r\n    });\r\n  }\r\n\r\n  //NAVIGATIONS\r\n  navToCommentSearch(_val: any): void {\r\n    // this.router.navigate([\r\n    //   CommentRoutesEnum.ITINERARY,\r\n    //   CommentRoutesEnum.COMMENT_SEARCH,\r\n    // ]);\r\n  }\r\n\r\n  backButton(): void {\r\n    this._location.back();\r\n  }\r\n}\r\n","<div class=\"w-full\">\n  <div class=\"fixed bottom-0 left-0 z-50 p-4 w-full\">\n    <!-- <lib-toast [position]=\"StatusPosition.bottomLeft\"></lib-toast> -->\n  </div>\n\n  <div class=\"w-full\">\n    <div class=\"pb-10\">\n      <div class=\"ps-5 pe-5\">\n        <app-header\n          [isTextSearch]=\"false\"\n          heading=\"Comments\"\n          (firstButton)=\"backButton()\"\n        ></app-header>\n      </div>\n\n      <form>\n        <div class=\"flex w-full items-center px-2\">\n          <lib-text-box\n            class=\"flex-1 w-full\"\n            [formControl]=\"text\"\n            [includeEmojiPicker]=\"true\"\n            [emojiPickerConfig]=\"emojiPickerConfig\"\n            [includeImageAttachment]=\"true\"\n          >\n          </lib-text-box>\n\n          <button (click)=\"addComment()\">\n            <img [src]=\"ICONS['submit']\" class=\"w-15 h-15\" />\n          </button>\n        </div>\n      </form>\n\n      <!-- Sort Filter Menu -->\n      <app-filter-menu\n        [options]=\"sortOptions\"\n        [showFilterButton]=\"false\"\n        (onSelectionChange)=\"onSortChange($event)\"\n      >\n      </app-filter-menu>\n\n      <!-- Time Period Filter Menu (only shown for Top sorting) -->\n      <app-filter-menu\n        *ngIf=\"showTimePeriod\"\n        [options]=\"timePeriodOptions\"\n        cssClass=\"mt-0\"\n        [showFilterButton]=\"false\"\n        (onSelectionChange)=\"onTimePeriodChange($event)\"\n      >\n      </app-filter-menu>\n      @if (loading) {\n      <div class=\"h-[75vh] flex items-center justify-center w-full\">\n        <p>Loading...</p>\n      </div>\n      } @else {\n      <div class=\"w-full mt-2\">\n        @if (comments.length === 0) {\n        <div class=\"h-[75vh] flex items-center justify-center\">\n          <p>No comments found.</p>\n        </div>\n        } @else {\n        <ng-container *ngFor=\"let c of comments; let i = index\">\n          <app-comment\n            [libMenuItem]=\"getLibMenuItems(isOwner(asUser(c.user)), c)\"\n            [comment]=\"c\"\n            (upClick)=\"voteUp(c._id!)\"\n            (downClick)=\"voteDown(c._id!)\"\n            (menuClick)=\"menuClick(c._id!)\"\n          ></app-comment>\n        </ng-container>\n        }\n      </div>\n      }\n      <lib-popup [isOpen]=\"modalService.toggleModal\">\n        <app-report-itinerary-modal\n          popupTitle=\"Report Comment\"\n        ></app-report-itinerary-modal>\n      </lib-popup>\n    </div>\n  </div>\n</div>\n\n<lib-toastr-stack [config$]=\"config$\"></lib-toastr-stack>\n","import { Routes } from \"@angular/router\";\r\nimport { CommentRepliesComponent } from \"./lib/pages/comment-replies/comment-replies.component\";\r\nimport { CommentsComponent } from \"./lib/pages/comments/comments.component\";\r\n\r\nexport const commentsPageRoutes: Routes = [\r\n  {\r\n    path: '',\r\n    redirectTo: 'comments',\r\n    pathMatch: 'full'\r\n  },\r\n  {\r\n    path: 'comments',\r\n    component: CommentsComponent,\r\n  },\r\n  {\r\n    path: 'comments/:id',\r\n    component: CommentsComponent,\r\n  },\r\n  {\r\n    path: 'replies',\r\n    component: CommentRepliesComponent\r\n  },\r\n  {\r\n    path: 'replies/:id',\r\n    component: CommentRepliesComponent\r\n  }\r\n];","import { \r\n  Component,\r\n  Input,\r\n  OnInit,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';   \r\nimport { ICONS } from '../../_constants/icons';\r\nimport { CommentRoutesEnum } from '../../_enums/comment-routes.enum';\r\nimport { ICommentsData } from '../../_interface/i-comments-data';\r\nimport { Iicon } from '../../_interface/i-icon';  \r\n\r\n@Component({\r\n  selector: 'app-comment-comparison',\r\n  templateUrl: './comment-comparison.component.html',\r\n  styleUrl: './comment-comparison.component.scss',\r\n})\r\nexport class CommentComparisonComponent implements OnInit {\r\n  @Input() isDraft!: boolean;\r\n  cardData: ICommentsData[] | undefined;\r\n  processedCardData: ICommentsData | undefined;\r\n  ICONS: Iicon = ICONS;\r\n\r\n  constructor( \r\n    private router: Router, \r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.getCommentsData();\r\n  }\r\n \r\n  getCommentsData() {\r\n    // this.apiService.get('/assets/commentsData.json').subscribe((data) => {\r\n    //   this.cardData = data as ICommentsData[];\r\n    //   this.processedCardData = this.cardData?.[0]\r\n    //     ? this.processCardData(this.cardData[0])\r\n    //     : undefined;\r\n    //   this.cdr.detectChanges();\r\n    // });\r\n  }\r\n  approve() {\r\n    this.navToComments();\r\n  }\r\n  disapprove() {\r\n    this.navToComments();\r\n  }\r\n  navToComments() {\r\n    this.router.navigate([CommentRoutesEnum.COMMENTS_ROUTE]);\r\n  }\r\n  handleMenueItemSelect(): void {}\r\n  handleMenuItemChange(): void {}\r\n  handleMenuClick(): void {}\r\n}\r\n","<div class=\"text-white p-4 rounded-xl\">\r\n  <div class=\"flex items-start justify-between\">\r\n    <div class=\"flex space-x-3\">\r\n      <img [src]=\"ICONS['user']\" alt=\"User\" class=\"comment-user rounded-full\" />\r\n\r\n      <div>\r\n        <p class=\"text-xs\">Jonathan updated their comment from</p>\r\n        <span class=\"text-xs text-gray-300\">\r\n          {{ processedCardData?.commentText }}\r\n        </span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <div\r\n    *ngIf=\"processedCardData?.hasAttachments\"\r\n    class=\"grid grid-cols-2 gap-2 mt-3\"\r\n  >\r\n    <ng-container\r\n      *ngFor=\"let image of processedCardData?.attachments; let i = index\"\r\n    >\r\n      <div class=\"relative\" *ngIf=\"i < 4\">\r\n        <img\r\n          [src]=\"image\"\r\n          alt=\"Attachment\"\r\n          class=\"w-full h-28 rounded-lg object-cover\"\r\n        />\r\n        <div\r\n          *ngIf=\"i === 3 && processedCardData?.attachments\"\r\n          class=\"absolute inset-0 bg-black bg-opacity-50 flex items-center justify-center text-white text-xl font-bold\"\r\n        >\r\n          +{{ i }}\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n  </div>\r\n\r\n  <div class=\"border-t border-gray-700 mt-2 mb-5\"></div>\r\n\r\n  <p class=\"text-xs\">To</p>\r\n\r\n  <div class=\"flex items-start justify-between\">\r\n    <div class=\"flex space-x-3\">\r\n      <div>\r\n        <span class=\"text-xs text-gray-300\">\r\n          I would like to change my statements here, that place was shit.\r\n        </span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n\r\n  <div\r\n    *ngIf=\"processedCardData?.hasAttachments\"\r\n    class=\"grid grid-cols-2 gap-2 mt-3\"\r\n  >\r\n    <ng-container\r\n      *ngFor=\"let image of processedCardData?.attachments; let i = index\"\r\n    >\r\n      <div class=\"relative\" *ngIf=\"i < 4\">\r\n        <img\r\n          [src]=\"image\"\r\n          alt=\"Attachment\"\r\n          class=\"w-full h-28 rounded-lg object-cover\"\r\n        />\r\n        <div\r\n          *ngIf=\"i === 3 && processedCardData?.attachments\"\r\n          class=\"absolute inset-0 bg-black bg-opacity-50 flex items-center justify-center text-white text-xl font-bold\"\r\n        >\r\n          +{{ i }}\r\n        </div>\r\n      </div>\r\n    </ng-container>\r\n  </div>\r\n\r\n  <div class=\"mt-5 flex gap-4\">\r\n    <lib-primary-btn\r\n      class=\"w-1/2\"\r\n      [disableTextShadow]=\"true\"\r\n      (click)=\"disapprove()\"\r\n      >Disapprove</lib-primary-btn\r\n    >\r\n    <lib-primary-btn class=\"w-1/2\" [hoverOutline]=\"true\" (click)=\"approve()\"\r\n      >Approve</lib-primary-btn\r\n    >\r\n  </div>\r\n</div>\r\n","import { Location } from '@angular/common';\r\nimport { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\nimport { FilterDataRequest, SelectOption } from '@naniteninja/ionic-lib'; \r\nimport { ICONS } from '../../_constants/icons';\r\nimport { Iicon } from '../../_interface/i-icon';\r\n\r\n@Component({\r\n  selector: 'app-comment-search',\r\n  templateUrl: './comment-search.component.html',\r\n  styleUrls: ['./comment-search.component.css'],\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CommentSearchComponent implements OnInit {\r\n  ICONS : Iicon = ICONS;\r\n  searchTerm: string = '';\r\n  filtersss: SelectOption<number>[] = [\r\n    {\r\n      label: 'Hello',\r\n      value: 2,\r\n      selected: true,\r\n    },\r\n  ];\r\n  userFilterList: FilterDataRequest[] = [\r\n    {\r\n      name: 'Filter by Name Ascending',\r\n      projectGridFilterId: '123',\r\n      collectionName: 'Employees',\r\n      userFilters: [\r\n        {\r\n          publicFieldName: 'Name',\r\n          operatorType: 'Contains',\r\n          values: ['John'],\r\n        },\r\n      ],\r\n      sort: {\r\n        field: 'Name',\r\n        direction: 'Ascending',\r\n      },\r\n      order: 1,\r\n    },\r\n    {\r\n      name: 'Filter by Department and Salary Descending',\r\n      projectGridFilterId: '456',\r\n      collectionName: 'Employees',\r\n      userFilters: [\r\n        {\r\n          publicFieldName: 'Department',\r\n          operatorType: 'Equals',\r\n          values: ['IT'],\r\n        },\r\n        {\r\n          publicFieldName: 'Salary',\r\n          operatorType: 'GreaterThan',\r\n          values: [50000],\r\n        },\r\n      ],\r\n      sort: {\r\n        field: 'Salary',\r\n        direction: 'Descending',\r\n      },\r\n      order: 2,\r\n    },\r\n  ];\r\n\r\n  visibleComments: SafeHtml[] = [];\r\n  private comments: string[] = [\r\n    \"I had a great experience out there. I would say it's perfect for a coffee lover.\",\r\n    'Loving the great ideas here, yet it’s time for me to step out.',\r\n    'It’s been a great exchange of ideas, but I’ve reached my limit—peace out!',\r\n    'Absolutely loved the vibe of this place! Can’t wait to visit again.',\r\n    'The discussions here are top-notch. Keep up the great work, everyone!',\r\n    'Such a refreshing perspective! This place never fails to inspire me.',\r\n    \"I'm learning so much from everyone here—thank you all!\",\r\n    'This is exactly the kind of place I was looking for. So insightful!',\r\n    'Had an amazing time here, but I need to wrap up for now. Until next time!',\r\n    'Great energy and discussions! Looking forward to more in the future.',\r\n  ];\r\n\r\n  constructor(\r\n    private sanitizer: DomSanitizer,\r\n    private location: Location,\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this.visibleComments = this.comments.map((comment) =>\r\n      this.sanitizer.bypassSecurityTrustHtml(comment),\r\n    );\r\n  }\r\n\r\n  search(e: string): void {\r\n    this.searchTerm = e.toLowerCase().trim();\r\n\r\n    if (!this.searchTerm) {\r\n      this.visibleComments = this.comments.map((comment) =>\r\n        this.sanitizer.bypassSecurityTrustHtml(comment),\r\n      );\r\n      return;\r\n    }\r\n\r\n    const words = this.searchTerm.split(/\\s+/).filter(Boolean);\r\n\r\n    const filteredComments = this.comments.filter((comment) =>\r\n      words.every((word) => comment.toLowerCase().includes(word)),\r\n    );\r\n\r\n    const combinedRegex = new RegExp(\r\n      `(${words.map((word) => this.escapeRegExp(word)).join('|')})`,\r\n      'gi',\r\n    );\r\n\r\n    this.visibleComments = filteredComments.map((comment) => {\r\n      const highlightedText = comment.replace(\r\n        combinedRegex,\r\n        `<span class=\"highlight\">$1</span>`,\r\n      );\r\n      return this.sanitizer.bypassSecurityTrustHtml(highlightedText);\r\n    });\r\n  }\r\n\r\n  private escapeRegExp(text: string): string {\r\n    return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n  }\r\n\r\n  viewReplies(_comment: any) {\r\n    // this.router.navigate([CommentRoutesEnum.ITINERARY, CommentRoutesEnum.COMMENT_REPLIES])\r\n  }\r\n  //NAVIGATIONS\r\n  navToBack = () => this.location.back();\r\n}\r\n","<div class=\"ps-5 pe-5\">\r\n  <app-header [heading]=\"'Comment Search'\" (firstButton)=\"navToBack()\"></app-header>\r\n  <p class=\"mt-2 mb-3\">\r\n    Create and apply custom advance filters or select popular preset advance\r\n    filters.\r\n  </p>\r\n\r\n  <!-- <lib-filter-bar [filters]=\"filtersss\" [savedFilters]=\"filtersss\" [userFiltersList]=\"userFilterList\"\r\n    [standardFilters]=\"filtersss\" [showAllFilters]=\"true\" (searchStringChange)=\"search($event)\"\r\n    [activeFilter]=\"userFilterList[0]\"></lib-filter-bar> -->\r\n\r\n  <div class=\"mt-5 ml-2\" *ngFor=\"let c of visibleComments\" (click)=\"viewReplies(c)\">\r\n    <img class=\"w-100 mb-2\" [src]=\"ICONS['divider']\" alt=\"divider\" />\r\n    <span [innerHtml]=\"c\"></span>\r\n  </div>\r\n</div>\r\n","import { Location } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-update-comment-request',\r\n  templateUrl: './update-comment-request.component.html',\r\n  styleUrl: './update-comment-request.component.scss'\r\n})\r\nexport class UpdateCommentRequestComponent {\r\n  constructor(private _location: Location) {}\r\n  backButton(): void {\r\n    this._location.back();\r\n  }\r\n}\r\n","<div class=\"relative min-h-screen\">\r\n  <div class=\"z-auto\">\r\n    <div class=\"pb-10\">\r\n      <div class=\"ps-5 pe-5\">\r\n        <app-header heading=\"Comments\" (firstButton)=\"backButton()\"></app-header>\r\n      </div>\r\n      <app-comment-comparison></app-comment-comparison>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { IUser } from './_models/app-user';\r\nimport { AppService } from './_data/app-service.service';\r\n\r\nexport function initializeApp(appService: AppService): () => Promise<void> {\r\n  return () => {\r\n    return new Promise<void>((resolve) => {\r\n      appService.getCurrentUser().subscribe({\r\n        next: (res: IUser) => {\r\n          appService.user = res;\r\n          resolve();            \r\n        },\r\n        error: (_err) => {\r\n          resolve();            \r\n        },\r\n      });\r\n    });\r\n  };\r\n}\r\n","import { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnDestroy, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { InputValue } from './_models/input-value';\r\nimport { InputService } from './_services/input.service';\r\nimport { PopupModalService } from '@naniteninja/ionic-lib';\r\nimport { IComment } from './_models/i-comment';\r\nimport { CommentLibService } from './comment-lib.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'lib-comment-lib',\r\n  template: `\r\n  <router-outlet></router-outlet> <ng-container #dynamicModal></ng-container>\r\n  `,\r\n  styles: ``\r\n})\r\nexport class CommentLibComponent implements OnChanges, AfterViewInit, OnDestroy {\r\n  @Input() inputValue: InputValue | undefined;\r\n  @Output() commentCreated: EventEmitter<IComment> = new EventEmitter<IComment>();\r\n  @Output() commentUpdated: EventEmitter<IComment> = new EventEmitter<IComment>();\r\n  @Output() commentDeleted: EventEmitter<IComment> = new EventEmitter<IComment>();\r\n  @Output() commentVoted: EventEmitter<IComment> = new EventEmitter<IComment>();\r\n  @Output() commentUnvoted: EventEmitter<IComment> = new EventEmitter<IComment>();\r\n  @Output() commentFeatured: EventEmitter<IComment> = new EventEmitter<IComment>();\r\n  @Output() commentUnfeatured: EventEmitter<IComment> = new EventEmitter<IComment>();\r\n  @Output() commentReported: EventEmitter<IComment> = new EventEmitter<IComment>();\r\n  @ViewChild('dynamicModal', { read: ViewContainerRef })\r\n  dynamicModal!: ViewContainerRef;\r\n\r\n  private subscriptions: Subscription[] = [];\r\n\r\n  constructor(\r\n    private inputService: InputService, \r\n    private popupModalService: PopupModalService,\r\n    private commentLibService: CommentLibService\r\n  ) {}\r\n\r\n  ngAfterViewInit(): void {\r\n    this.popupModalService.setRootViewContainerRef(this.dynamicModal);\r\n    this.setupServiceSubscriptions();\r\n  }\r\n\r\n  ngOnChanges(): void {\r\n    this.inputService.setInputValue(this.inputValue!);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach(sub => sub.unsubscribe());\r\n  }\r\n\r\n  private setupServiceSubscriptions(): void {\r\n    this.subscriptions.push(\r\n      this.commentLibService.commentCreated$.subscribe(comment => {\r\n        this.commentCreated.emit(comment);\r\n      }),\r\n      this.commentLibService.commentUpdated$.subscribe(comment => {\r\n        this.commentUpdated.emit(comment);\r\n      }),\r\n      this.commentLibService.commentDeleted$.subscribe(comment => {\r\n        this.commentDeleted.emit(comment);\r\n      }),\r\n      this.commentLibService.commentVoted$.subscribe(comment => {\r\n        this.commentVoted.emit(comment);\r\n      }),\r\n      this.commentLibService.commentUnvoted$.subscribe(comment => {\r\n        this.commentUnvoted.emit(comment);\r\n      }),\r\n      this.commentLibService.commentFeatured$.subscribe(comment => {\r\n        this.commentFeatured.emit(comment);\r\n      }),\r\n      this.commentLibService.commentUnfeatured$.subscribe(comment => {\r\n        this.commentUnfeatured.emit(comment);\r\n      }),\r\n      this.commentLibService.commentReported$.subscribe(comment => {\r\n        this.commentReported.emit(comment);\r\n      })\r\n    );\r\n  }\r\n}\r\n","import { HttpBackend, HttpClient } from \"@angular/common/http\";\r\nimport { TranslateHttpLoader } from \"@ngx-translate/http-loader\";\r\n\r\nexport const httpLoaderFactory = (http: HttpBackend) =>\r\n  new TranslateHttpLoader(new HttpClient(http), './assets/i18n/', '.json');","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, APP_INITIALIZER } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { LibModalModule, ButtonsModule, ImageDeckComponent, TextBoxComponent, SelectableModule, LibToastrModule, LibToastrStackModule } from \"@naniteninja/ionic-lib\";\r\nimport { commentsPageRoutes } from \"./comment-routing.module\";\r\nimport { AppService } from \"./lib/_data/app-service.service\";\r\nimport { TimeAgoPipe } from \"./lib/_pipes/time-ago.pipe\";\r\nimport { VotesPipe } from \"./lib/_pipes/votes.pipe\";\r\nimport { CommentComparisonComponent } from \"./lib/pages/comment-comparison/comment-comparison.component\";\r\nimport { CommentImagesComponent } from \"./lib/pages/comment-images/comment-images.component\";\r\nimport { CommentRepliesComponent } from \"./lib/pages/comment-replies/comment-replies.component\";\r\nimport { CommentSearchComponent } from \"./lib/pages/comment-search/comment-search.component\";\r\nimport { CommentSingleComponent } from \"./lib/pages/comment-single/comment-single.component\";\r\nimport { UpdateCommentRequestComponent } from \"./lib/pages/update-comment-request/update-comment-request.component\";\r\nimport { initializeApp } from \"./lib/initalize.app\";\r\nimport { CommentsComponent } from \"./lib/pages/comments/comments.component\";\r\nimport { CommentLibComponent } from \"./lib/comment-lib.component\";\r\nimport { CommentComponent } from \"./lib/common/comment/comment.component\";\r\nimport { HeaderComponent } from \"./lib/common/header/header.component\";\r\nimport { ReportItineraryModalComponent } from \"./lib/common/report-itinerary-modal/report-itinerary-modal.component\";\r\nimport { FilterMenuComponent } from \"./lib/common/filter-menu/filter-menu.component\";\r\nimport { TranslateLoader, TranslateModule } from \"@ngx-translate/core\";\r\nimport { HttpBackend } from \"@angular/common/http\";\r\nimport { httpLoaderFactory } from \"./http-factory\";\r\n\r\n@NgModule({\r\n  declarations: [\r\n    CommentComponent,\r\n    CommentsComponent,\r\n    CommentImagesComponent,\r\n    CommentRepliesComponent,\r\n    CommentComparisonComponent,\r\n    CommentSearchComponent,\r\n    UpdateCommentRequestComponent,\r\n    CommentSingleComponent,\r\n    CommentLibComponent,\r\n    HeaderComponent,\r\n    ReportItineraryModalComponent,\r\n    FilterMenuComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    RouterModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    LibToastrStackModule,\r\n    LibToastrModule,\r\n    LibModalModule,\r\n    ButtonsModule,\r\n    ImageDeckComponent,\r\n    TimeAgoPipe,\r\n    VotesPipe,\r\n    TextBoxComponent,\r\n    SelectableModule,\r\n     TranslateModule.forRoot({\r\n      defaultLanguage: 'en',\r\n      loader: {\r\n        provide: TranslateLoader,\r\n        useFactory: httpLoaderFactory,\r\n        deps: [HttpBackend],\r\n      },\r\n    }),\r\n    RouterModule.forChild(commentsPageRoutes)\r\n  ],\r\n  exports: [\r\n    CommentLibComponent\r\n  ],\r\n  schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],\r\n  providers: [ \r\n    {\r\n      provide: APP_INITIALIZER,\r\n      useFactory: initializeApp,\r\n      deps: [AppService],\r\n      multi: true,\r\n    },\r\n  ]\r\n})\r\nexport class CommentModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CommentImageService","i2","i2.CommentImageService","i3.AppService","i4","i5","i6.TimeAgoPipe","i7.VotesPipe","i1","i1.ModalService","i3","i2.ModalService","i3.CommentService","i5.VoteService","i6.CommentLibService","i7.AppService","i10.CommentSingleComponent","i11.HeaderComponent","i12.ReportItineraryModalComponent","SortType","i4.VoteService","i5.InputService","i10.CommentComponent","i13.FilterMenuComponent","i3.HeaderComponent","i2.CommentComparisonComponent","i1.InputService","i3.CommentLibService"],"mappings":"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"}