{"version":3,"file":"rangertechnologies-ngnxt.mjs","sources":["../../../projects/nxt-app/src/lib/nxt-app.service.ts","../../../projects/nxt-app/src/lib/nxt-app.component.ts","../../../projects/nxt-app/src/lib/services/change.service.ts","../../../projects/nxt-app/src/lib/wrapper.ts","../../../projects/nxt-app/src/lib/model/errorWrapper.ts","../../../projects/nxt-app/src/lib/sample.ts","../../../projects/nxt-app/src/lib/services/salesforce.service.ts","../../../projects/nxt-app/src/lib/services/data.service.ts","../../../projects/nxt-app/src/lib/services/shared.service.ts","../../../projects/nxt-app/src/lib/i18n-config.service.ts","../../../projects/nxt-app/src/lib/i18n.service.ts","../../../projects/nxt-app/src/lib/components/custom-rich-text/custom-rich-text.component.ts","../../../projects/nxt-app/src/lib/components/custom-rich-text/custom-rich-text.component.html","../../../projects/nxt-app/src/lib/components/button/nxt-button.component.ts","../../../projects/nxt-app/src/lib/components/button/nxt-button.component.html","../../../projects/nxt-app/src/lib/components/pagination/pagination.component.ts","../../../projects/nxt-app/src/lib/components/pagination/pagination.component.html","../../../projects/nxt-app/src/lib/pipe/search-filter/search-filter.pipe.ts","../../../projects/nxt-app/src/lib/pipe/date/date.pipe.ts","../../../projects/nxt-app/src/lib/pipe/time/time.pipe.ts","../../../projects/nxt-app/src/lib/pipe/editColumnCheck/edit-column-check.pipe.ts","../../../projects/nxt-app/src/lib/pipe/editColumnDropdown/edit-column-dropdown.pipe.ts","../../../projects/nxt-app/src/lib/pipe/editColumnType/edit-column-type.pipe.ts","../../../projects/nxt-app/src/lib/pipe/get-value.pipe.ts","../../../projects/nxt-app/src/lib/components/datatable/datatable.component.ts","../../../projects/nxt-app/src/lib/components/datatable/datatable.component.html","../../../projects/nxt-app/src/lib/model/changeWrapper.ts","../../../projects/nxt-app/src/lib/i18n.pipe.ts","../../../projects/nxt-app/src/lib/components/pick-location/pick-location.component.ts","../../../projects/nxt-app/src/lib/components/pick-location/pick-location.component.html","../../../projects/nxt-app/src/lib/components/custom-input/custom-input.component.ts","../../../projects/nxt-app/src/lib/components/custom-input/custom-input.component.html","../../../projects/nxt-app/src/lib/components/custom-text-area/custom-text-area.component.ts","../../../projects/nxt-app/src/lib/components/custom-text-area/custom-text-area.component.html","../../../projects/nxt-app/src/lib/components/custom-date-picker/custom-date-picker.component.ts","../../../projects/nxt-app/src/lib/components/custom-date-picker/custom-date-picker.component.html","../../../projects/nxt-app/src/lib/components/dropdown-with-flag/dropdown-with-flag.component.ts","../../../projects/nxt-app/src/lib/components/dropdown-with-flag/dropdown-with-flag.component.html","../../../projects/nxt-app/src/lib/components/custom-dropdown/custom-dropdown.component.ts","../../../projects/nxt-app/src/lib/components/custom-dropdown/custom-dropdown.component.html","../../../projects/nxt-app/src/lib/components/custom-label/custom-label.component.ts","../../../projects/nxt-app/src/lib/components/custom-label/custom-label.component.html","../../../projects/nxt-app/src/lib/pages/questionnaire/questionnaire.component.ts","../../../projects/nxt-app/src/lib/pages/questionnaire/questionnaire.component.html","../../../projects/nxt-app/src/lib/components/custom-table/custom-table.component.ts","../../../projects/nxt-app/src/lib/components/custom-table/custom-table.component.html","../../../projects/nxt-app/src/lib/services/storage.service.ts","../../../projects/nxt-app/src/lib/components/image-cropper/utils/cropper-position.utils.ts","../../../projects/nxt-app/src/lib/components/image-cropper/component/cropper.state.ts","../../../projects/nxt-app/src/lib/components/image-cropper/interfaces/move-start.interface.ts","../../../projects/nxt-app/src/lib/components/image-cropper/utils/resize.utils.ts","../../../projects/nxt-app/src/lib/components/image-cropper/utils/percentage.utils.ts","../../../projects/nxt-app/src/lib/components/image-cropper/services/crop.service.ts","../../../projects/nxt-app/src/lib/components/image-cropper/utils/exif.utils.ts","../../../projects/nxt-app/src/lib/components/image-cropper/services/load-image.service.ts","../../../projects/nxt-app/src/lib/components/image-cropper/utils/keyboard.utils.ts","../../../projects/nxt-app/src/lib/components/image-cropper/component/image-cropper.component.ts","../../../projects/nxt-app/src/lib/components/image-cropper/component/image-cropper.component.html","../../../projects/nxt-app/src/lib/components/custom-calendar/custom-calendar.component.ts","../../../projects/nxt-app/src/lib/components/custom-calendar/custom-calendar.component.html","../../../projects/nxt-app/src/lib/components/search-box/search-box.component.ts","../../../projects/nxt-app/src/lib/components/search-box/search-box.component.html","../../../projects/nxt-app/src/lib/components/file-upload/file-upload.component.ts","../../../projects/nxt-app/src/lib/components/file-upload/file-upload.component.html","../../../projects/nxt-app/src/lib/components/dependent-table/dependent-table.component.ts","../../../projects/nxt-app/src/lib/components/dependent-table/dependent-table.component.html","../../../projects/nxt-app/src/lib/components/table-appendix/table-appendix.component.ts","../../../projects/nxt-app/src/lib/components/table-appendix/table-appendix.component.html","../../../projects/nxt-app/src/lib/components/custom-date/custom-date.component.ts","../../../projects/nxt-app/src/lib/components/custom-date/custom-date.component.html","../../../projects/nxt-app/src/lib/components/custom-time/custom-time.component.ts","../../../projects/nxt-app/src/lib/components/custom-time/custom-time.component.html","../../../projects/nxt-app/src/lib/components/custom-button/custom-button.component.ts","../../../projects/nxt-app/src/lib/components/custom-button/custom-button.component.html","../../../projects/nxt-app/src/lib/components/custom-model/custom-model.component.ts","../../../projects/nxt-app/src/lib/components/custom-model/custom-model.component.html","../../../projects/nxt-app/src/lib/components/custom-radio/custom-radio.component.ts","../../../projects/nxt-app/src/lib/components/custom-radio/custom-radio.component.html","../../../projects/nxt-app/src/lib/pages/questionbook/questionbook.component.ts","../../../projects/nxt-app/src/lib/pages/questionbook/questionbook.component.html","../../../projects/nxt-app/src/lib/pages/booklet/booklet.component.ts","../../../projects/nxt-app/src/lib/pages/booklet/booklet.component.html","../../../projects/nxt-app/src/lib/components/file-view/file-view.component.ts","../../../projects/nxt-app/src/lib/components/file-view/file-view.component.html","../../../projects/nxt-app/src/lib/pages/summary-page/summary-page.component.ts","../../../projects/nxt-app/src/lib/pages/summary-page/summary-page.component.html","../../../projects/nxt-app/src/lib/i18n.module.ts","../../../projects/nxt-app/src/lib/i18n.component.ts","../../../projects/nxt-app/src/lib/en.i18n.ts","../../../projects/nxt-app/src/lib/ar.i18n.ts","../../../projects/nxt-app/src/lib/tam.i18n.ts","../../../projects/nxt-app/src/lib/components/custom-image/custom-image.component.ts","../../../projects/nxt-app/src/lib/components/custom-image/custom-image.component.html","../../../projects/nxt-app/src/lib/components/loader/loader.component.ts","../../../projects/nxt-app/src/lib/components/loader/loader.component.html","../../../projects/nxt-app/src/lib/directives/componenthost/componenthost.directive.ts","../../../projects/nxt-app/src/environments/version.ts","../../../projects/nxt-app/src/lib/services/form-builder.service.ts","../../../projects/nxt-app/src/lib/services/template.service.ts","../../../projects/nxt-app/src/lib/pages/builder/templates/templates.component.ts","../../../projects/nxt-app/src/lib/pages/builder/templates/templates.component.html","../../../projects/nxt-app/src/lib/pages/builder/element/element.component.ts","../../../projects/nxt-app/src/lib/pages/builder/element/element.component.html","../../../projects/nxt-app/src/lib/pages/builder/properties/properties.component.ts","../../../projects/nxt-app/src/lib/pages/builder/properties/properties.component.html","../../../projects/nxt-app/src/lib/pages/builder/menu/menu.component.ts","../../../projects/nxt-app/src/lib/pages/builder/menu/menu.component.html","../../../projects/nxt-app/src/lib/pages/builder/form/form.component.ts","../../../projects/nxt-app/src/lib/pages/builder/form/form.component.html","../../../projects/nxt-app/src/lib/components/cards/info-card/info-card.component.ts","../../../projects/nxt-app/src/lib/components/cards/info-card/info-card.component.html","../../../projects/nxt-app/src/lib/components/cards/group-info/group-info.component.ts","../../../projects/nxt-app/src/lib/components/cards/group-info/group-info.component.html","../../../projects/nxt-app/src/lib/components/cards/image-card/image-card.component.ts","../../../projects/nxt-app/src/lib/components/cards/image-card/image-card.component.html","../../../projects/nxt-app/src/lib/components/cards/group-card/group-card.component.ts","../../../projects/nxt-app/src/lib/components/cards/group-card/group-card.component.html","../../../projects/nxt-app/src/lib/nxt-app.module.ts","../../../projects/nxt-app/src/public-api.ts","../../../projects/nxt-app/src/rangertechnologies-ngnxt.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NxtAppService {\n\n  constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lib-nxt-app',\n  template: `\n    <p>\n      nxt-app works!\n    </p>\n  `,\n  styles: []\n})\nexport class NxtAppComponent implements OnInit {\n\n  constructor() { }\n\n  ngOnInit() {\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ChangeWrapper } from '../model/changeWrapper';\n\n@Injectable({\n  providedIn: 'root'\n})\n\nexport class ChangeService {\n  // Reference: https://angular.io/guide/observables\n  constructor() { }\n\n  // Observable parentQuestion sources\n  private changeAnnouncedSource = new Subject<ChangeWrapper>();\n  private changeConfirmedSource = new Subject<string>();\n  private validationSource = new Subject<string>();\n  private fieldSource = new Subject<any>();\n  // VD 13Sep24 - databind changes\n  private customChanges = new Subject<any>();\n\n  // Observable parentQuestion streams\n  changeAnnounced$ = this.changeAnnouncedSource.asObservable();\n  changeConfirmed$ = this.changeConfirmedSource.asObservable();\n  submitValidate$ = this.validationSource.asObservable();\n  changeField$ = this.fieldSource.asObservable();\n  // VD 13Sep24 - databind changes\n  customChange$ = this.customChanges.asObservable();\n\n  // Service message commands\n  announceChange(changeValue: ChangeWrapper) {\n    // console.log('inside announceChange');\n    this.changeAnnouncedSource.next(changeValue);\n  }\n\n  confirmChange(childQuestion: string) {\n    // console.log('inside confirmChange');\n    this.changeConfirmedSource.next(childQuestion);\n  }\n  // VD 13Sep24 - databind changes\n  dataChanges(data: string) {\n    console.log('inside data bind change service');\n    this.customChanges.next(data);\n  }\n\n  submitChange(value:string){\n    this.validationSource.next(value);\n  }\n  fieldChange(value:any){\n   console.log('getValue',value);\n   this.fieldSource.next(value);\n  }\n}\n","import { ErrorWrapper } from \"./model/errorWrapper\";\n// HA 19DEC23 Included style in the objects to use them in ts\n// RS 09DEC24 Changed keys\nexport class QuestionBook {\n  id: number;\n  Name: string;\n  category: string;\n  next : string;\n  cancel : string;\n  back : string;\n  submit : string;\n  edit : string;\n  firstQuestion: string;\n  title: string;\n  nextTrackingId: string;\n  backTrackingId: string;\n  cancelTrackingId: string;\n  submitTrackingId: string;\n  totalQuestions: number;\n  summaryText?: string;\n  Questions__r?: QuestionR;\n  progressBar: boolean;\n  subTitle: string;\n  qTyp: string;\n  possibilities: string;\n  summarySubText: string;\n  isShengel?: boolean;\n  style: {\n    labelClass : any,\n    labelStyle : any,\n    labelValueStyle : any,\n    inputClass : any,\n    inputStyle : any,\n    showLabel : boolean,\n    bookStyle : any,\n    direction: any,\n    questionStyle: any;\n  };\n}\nexport class Question {\n  id: string;\n  Name: string;\n  referenceField?:string;\n  dependentRef?: string;\n  allowedFileExtensions :string;\n  question : string;\n  questionText : any;\n  type: string;\n  nextQuestion?: string;\n  isOptional: boolean;\n  title: string;\n  subTitle: string;\n  isTitle: boolean;\n  x24Hours: boolean;\n  errorMessage: string;\n  isDateBackward : boolean;\n  isDateForward : boolean;\n  isHidden: boolean;\n  groupName: string;\n  questionNumber?: string;\n  Question_Options__r?: OptionR;\n  static x24Hours: boolean;\n  options: any;\n  size: number;\n  subText: string;\n  trackingId: string;\n  timeText: string;\n  dateText: string;\n  additionalRichContent? : string;\n  Questions__r?: QuestionR;\n  RecordType: {\n    Name: string;\n  };\n  subQuestions : any;\n  input?: any;\n  error?: ErrorWrapper;\n  valueName?:string;\n  dropDownOnly?:boolean;\n  isDependentPicklist?:boolean;\n  tableDataValue?:any[];\n  tableHeader?:string;\n  startDate?:any;\n  selectedValue?:string;\n  minDate?: any ;\n  isShengel?: boolean;\n  style: {\n    labelClass : any,\n    labelStyle : any,\n    labelValueStyle : any,\n    inputClass : any,\n    inputStyle : any,\n    showLabel : boolean,\n    bookStyle : any,\n    direction: any,\n    questionStyle: any;\n  };\n}\nexport class LocalQuestion {\n  id: string;\n  Name: string;\n  allowedFileExtensions :string;\n  question : string;\n  questionText : string;\n  type: string;\n  title: string;\n  subTitle: string;\n  nextQuestion?: string;\n  isOptional: boolean;\n  isTitle: boolean;\n  isHidden: boolean;\n  x24Hours: boolean;\n  errorMessage: string;\n  isDateBackward : boolean;\n  isDateForward : boolean;\n  timeText : string;\n  dateText : string;\n  groupName: string;\n  questionNumber?: string;\n  Question_Options__r?: OptionR;\n  subText : string;\n  size: number;\n  trackingId: string;\n  additionalRichContent? : string;\n  selectedValue:string;\n  Questions__r?: QuestionR;\n  RecordType: {\n    Name: string;\n  };\n  input?: string;\n  error?: ErrorWrapper;\n  static x24Hours: boolean;\n  uniqueSubQId: string;\n  style: {\n    labelClass : any,\n    labelStyle : any,\n    labelValueStyle : any,\n    inputClass : any,\n    inputStyle : any,\n    showLabel : boolean,\n    bookStyle : any,\n    direction: any,\n    questionStyle: any;\n  };\n}\nexport class QuestionR {\n  records?: Question[];\n}\nexport class OptionR {\n  records?: Option[];\n} \nexport class Option {\n  id: string;\n  Name: string;\n  value: string;\n  trackingId: string;\n  nextQuestion?: string;\n} \nexport class OptionValue {\n  id: string;\n  Name: string;\n  value: string;\n  nextQuestion?: string;\n  checked: boolean;\n}\nexport class AnswerBook {\n  id: string;\n  questionBookId: string;\n  status: string;\n  Answers__r?: AnswerR;\n  answers: any;\n}\nexport class Answer {\n  id: string;\n  quesValue: string;\n  ansValue : string;\n  qTyp: string;\n  quesId: string;\n  groupText: string;\n}\nexport class AnswerR {\n  records?: Answer[];\n}\nexport class AnswerWrapper {\n  ansId?: string;\n  ansNumber?: number;\n  abId: string;\n  quesId: string;\n  quesValue: string;\n  qTyp: string;\n  ansValue: string;\n  groupText: string;\n  squesValue: string;\n  myVal: any; // HA 02FEB24 To display the values in summary\n}\nexport class AttachmentWrapper {\n  parentId: string;\n  fileName: string;\n  fileContent: string;\n}\nexport class Attachment {\n  public attachmentId: string;\n  public attachmentName: string;\n  public attachmentMetaData: any;\n  constructor(id: string,name:string,metaData:any){\n      this.attachmentId = id;\n      this.attachmentName = name;\n      this.attachmentMetaData = metaData;\n  }\n}","export class ErrorWrapper {\n    errorCode: string;\n    errorMsg: string;\n    errorDetails: string;\n}\n","import { Question, QuestionBook, AnswerBook } from \"./wrapper\";\r\n/*\r\nexport const TESTQUESTIONS: Question[] = [\r\n{ Id: 11, Name: '001', question: 'What is your Name?' },\r\n{ Id: 12, Name: '002', question: 'What is your favourite City?' },\r\n{ Id: 13, Name: '003', question: 'How many languages you speak?' },\r\n{ Id: 14, Name: '004', question: 'Share your feedback?' },\r\n];\r\n*/\r\n// Dynamic Field Changes\r\n// HA 19DEC23 Included style in the objects to use them in ts\r\n// RS 09DEC24 Changed keys\r\nexport const TESTQB: QuestionBook = {\r\nid: 2,\r\nName: 'QB-0000',\r\ncategory: 'Simple',\r\nnext : 'weiter',\r\ncancel :'zurück',\r\nback : 'zurück',\r\nsubmit : 'absenden',\r\nedit : 'Bearbeiten',\r\nnextTrackingId: '12345',\r\nbackTrackingId: '12345',\r\ncancelTrackingId: '12345',\r\nsubmitTrackingId: '12345',\r\nfirstQuestion: '1',\r\ntitle: 'Demo Unconditional',\r\ntotalQuestions: 3,\r\nsubTitle: 'subTitle',\r\nqTyp:'type',\r\npossibilities: 'poss',\r\nsummarySubText: 'subText',\r\nprogressBar: true,\r\nstyle: {\r\n  \"labelClass\" : \"slds-grid\",\r\n  \"labelStyle\" : \"align-items: baseline;\",\r\n  \"labelValueStyle\" : \"\",\r\n  \"inputClass\" : \"\",\r\n  \"inputStyle\" : \"border-style: dashed;\",\r\n  \"showLabel\" : true,\r\n  \"bookStyle\" : \"\",\r\n  \"direction\" : \"ltr\",\r\n  \"questionStyle\": \"\"\r\n  },\r\n}\r\n// Text Question\r\nexport const TESTQUESTION: Question = {\r\nid: '11',\r\nName: 'QN-00001',\r\ntype: 'Text',\r\nallowedFileExtensions : '.pdf',\r\nquestionText: 'What is your Name?',\r\nquestion: 'What is your Name?',\r\nnextQuestion: 'a013t000013SS89AAG',\r\ntrackingId: '1234',\r\nisOptional: false,\r\noptions: {\r\n  records: [\r\n      {\r\n        id: '1',\r\n        Name: 'D',\r\n        value: 'D',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '2',\r\n        Name: 'CH',\r\n        value: 'CH',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '3',\r\n        Name: 'UK',\r\n        value: 'UK',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      }\r\n    ]\r\n},\r\nisTitle: true,\r\nx24Hours: true,\r\nerrorMessage: 'Please Enter a Value',\r\nisDateBackward : false,\r\nisDateForward : false,\r\nselectedValue : 'test',\r\nisHidden : false,\r\ngroupName: 'Basic',\r\nsize:1,\r\nquestionNumber: '1',\r\ntimeText: 'hour',\r\nsubQuestions :  [\r\n  {\r\n    id: '170',\r\n    Name: 'QN-000070',\r\n    type: 'Dropdown',\r\n    questionText: 'Land',\r\n    question: 'Land',\r\n    size:1,\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    selectedValue : 'test',\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n    options: {\r\n      records: [\r\n          {\r\n            id: '1',\r\n            Name: 'D',\r\n            value: 'D',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '2',\r\n            Name: 'CH',\r\n            value: 'CH',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '3',\r\n            Name: 'UK',\r\n            value: 'UK',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          }\r\n        ]\r\n    }\r\n  },\r\n  {\r\n    id: '171',\r\n    Name: 'QN-000071',\r\n    type: 'Text',\r\n    size:3,\r\n    allowedFileExtensions : '.pdf',\r\n    questionText: 'PLZ',\r\n    question: 'PLZ',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '172',\r\n    Name: 'QN-000072',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'ORT',\r\n    question: 'ORT',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    selectedValue : 'test',\r\n    isHidden:false,\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '173',\r\n    Name: 'QN-000073',\r\n    type: 'Text',\r\n    questionText: 'StraBe',\r\n    selectedValue : 'test',\r\n    question: 'StraBe',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isHidden:false,\r\n    isDateForward : false,\r\n    allowedFileExtensions : '.pdf',\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '174',\r\n    Name: 'QN-000074',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'Hausnummer',\r\n    question: 'Hausnummer',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    size:4,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  ],\r\ntitle: 'title',\r\nsubTitle: 'subtitle',\r\nsubText: 'subtext',\r\ndateText: 'datetext',\r\nRecordType: {\r\nName: 'UNCONDITIONAL'\r\n},\r\nstyle: {\r\n  \"labelClass\" : \"slds-grid\",\r\n  \"labelStyle\" : \"align-items: baseline;\",\r\n  \"labelValueStyle\" : \"\",\r\n  \"inputClass\" : \"\",\r\n  \"inputStyle\" : \"border-style: dashed;\",\r\n  \"showLabel\" : true,\r\n  \"bookStyle\" : \"\",\r\n  \"direction\" : \"ltr\",\r\n  \"questionStyle\": \"\"\r\n  },\r\n};\r\n// DateTime Question\r\nexport const DTQUESTION: Question = {\r\nid: '12',\r\nName: 'QN-00002',\r\ntype: 'DateTime',\r\noptions: {\r\n  records: [\r\n      {\r\n        id: '1',\r\n        Name: 'D',\r\n        value: 'D',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '2',\r\n        Name: 'CH',\r\n        value: 'CH',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '3',\r\n        Name: 'UK',\r\n        value: 'UK',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      }\r\n    ]\r\n},\r\nsubQuestions :  [\r\n  {\r\n    id: '170',\r\n    Name: 'QN-000070',\r\n    type: 'Dropdown',\r\n    options: {\r\n      records: [\r\n          {\r\n            id: '1',\r\n            Name: 'D',\r\n            value: 'D',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '2',\r\n            Name: 'CH',\r\n            value: 'CH',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '3',\r\n            Name: 'UK',\r\n            value: 'UK',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          }\r\n        ]\r\n    },\r\n    questionText: 'Land',\r\n    question: 'Land',\r\n    size:1,\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    selectedValue : 'test',\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '171',\r\n    Name: 'QN-000071',\r\n    type: 'Text',\r\n    size:3,\r\n    allowedFileExtensions : '.pdf',\r\n    questionText: 'PLZ',\r\n    question: 'PLZ',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '172',\r\n    Name: 'QN-000072',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'ORT',\r\n    question: 'ORT',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    selectedValue : 'test',\r\n    isHidden:false,\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '173',\r\n    Name: 'QN-000073',\r\n    type: 'Text',\r\n    questionText: 'StraBe',\r\n    selectedValue : 'test',\r\n    question: 'StraBe',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isHidden:false,\r\n    isDateForward : false,\r\n    allowedFileExtensions : '.pdf',\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '174',\r\n    Name: 'QN-000074',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'Hausnummer',\r\n    question: 'Hausnummer',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    size:4,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  ],\r\nallowedFileExtensions : '.pdf',\r\nquestionText: 'When did the incident happen?',\r\nquestion: 'When did the incident happen?',\r\nnextQuestion: 'a013t000013SS89AAG',\r\ntrackingId: '1234',\r\nisOptional: false,\r\nselectedValue : 'test',\r\nisTitle: true,\r\nx24Hours: true,\r\nerrorMessage: 'Please Enter a Value',\r\nisDateBackward : true,\r\nisDateForward : true  ,\r\nisHidden: false,\r\ngroupName: 'Basic',\r\nsize:1,\r\nquestionNumber: '1',\r\ntimeText: 'hour',\r\ntitle: 'title',\r\nsubTitle: 'subtitle',\r\nsubText: 'subtext',\r\ndateText: 'datetext',\r\nRecordType: {\r\nName: 'UNCONDITIONAL'\r\n},\r\nstyle: {\r\n  \"labelClass\" : \"slds-grid\",\r\n  \"labelStyle\" : \"align-items: baseline;\",\r\n  \"labelValueStyle\" : \"\",\r\n  \"inputClass\" : \"\",\r\n  \"inputStyle\" : \"border-style: dashed;\",\r\n  \"showLabel\" : true,\r\n  \"bookStyle\" : \"\",\r\n  \"direction\" : \"ltr\",\r\n  \"questionStyle\": \"\"\r\n  },\r\n};\r\n// File Question\r\nexport const FILEQUESTION: Question = {\r\nid: '13',\r\nName: 'QN-00003',\r\noptions: {\r\n  records: [\r\n      {\r\n        id: '1',\r\n        Name: 'D',\r\n        value: 'D',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '2',\r\n        Name: 'CH',\r\n        value: 'CH',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '3',\r\n        Name: 'UK',\r\n        value: 'UK',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      }\r\n    ]\r\n},\r\ntype: 'File',\r\nsubQuestions :  [\r\n  {\r\n    id: '170',\r\n    Name: 'QN-000070',\r\n    options: {\r\n      records: [\r\n          {\r\n            id: '1',\r\n            Name: 'D',\r\n            value: 'D',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '2',\r\n            Name: 'CH',\r\n            value: 'CH',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '3',\r\n            Name: 'UK',\r\n            value: 'UK',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          }\r\n        ]\r\n    },\r\n    type: 'Dropdown',\r\n    questionText: 'Land',\r\n    question: 'Land',\r\n    size:1,\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    selectedValue : 'test',\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '171',\r\n    Name: 'QN-000071',\r\n    type: 'Text',\r\n    size:3,\r\n    allowedFileExtensions : '.pdf',\r\n    questionText: 'PLZ',\r\n    question: 'PLZ',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '172',\r\n    Name: 'QN-000072',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'ORT',\r\n    question: 'ORT',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    selectedValue : 'test',\r\n    isHidden:false,\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '173',\r\n    Name: 'QN-000073',\r\n    type: 'Text',\r\n    questionText: 'StraBe',\r\n    selectedValue : 'test',\r\n    question: 'StraBe',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isHidden:false,\r\n    isDateForward : false,\r\n    allowedFileExtensions : '.pdf',\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '174',\r\n    Name: 'QN-000074',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'Hausnummer',\r\n    question: 'Hausnummer',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    size:4,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  ],\r\nallowedFileExtensions : '.pdf',\r\nquestionText: 'Upload the Incident Report/Images?',\r\nquestion: 'Upload the Incident Report/Images?',\r\nnextQuestion: 'a013t000013SS89AAG',\r\ntrackingId: '1234',\r\nisOptional: false,\r\nisTitle: true,\r\nx24Hours: true,\r\nerrorMessage: 'Please Enter a Value',\r\nisDateBackward : false,\r\nisDateForward : false,\r\nisHidden: false,\r\ngroupName: 'Basic',\r\nsize:1,\r\nselectedValue : 'test',\r\nquestionNumber: '1',\r\ntimeText: 'hour',\r\ntitle: 'title',\r\nsubTitle: 'subtitle',\r\nsubText: 'subtext',\r\ndateText: 'datetext',\r\nRecordType: {\r\nName: 'UNCONDITIONAL'\r\n},\r\nstyle: {\r\n  \"labelClass\" : \"slds-grid\",\r\n  \"labelStyle\" : \"align-items: baseline;\",\r\n  \"labelValueStyle\" : \"\",\r\n  \"inputClass\" : \"\",\r\n  \"inputStyle\" : \"border-style: dashed;\",\r\n  \"showLabel\" : true,\r\n  \"bookStyle\" : \"\",\r\n  \"direction\" : \"ltr\",\r\n  \"questionStyle\": \"\"\r\n  },\r\n};\r\n\r\n\r\n//RS 06JAN25\r\n//Rich text Questions\r\nexport const RTAQUESTION: Question = {\r\n  id: '14',\r\n  options: {\r\n    records: [\r\n        {\r\n          id: '1',\r\n          Name: 'D',\r\n          value: 'D',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '2',\r\n          Name: 'CH',\r\n          value: 'CH',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '3',\r\n          Name: 'UK',\r\n          value: 'UK',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        }\r\n      ]\r\n  },\r\n  Name: 'QN-00004',\r\n  type: 'RichTextArea',\r\n  subQuestions :  [\r\n    {\r\n      id: '170',\r\n      options: {\r\n        records: [\r\n            {\r\n              id: '1',\r\n              Name: 'D',\r\n              value: 'D',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '2',\r\n              Name: 'CH',\r\n              value: 'CH',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '3',\r\n              Name: 'UK',\r\n              value: 'UK',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            }\r\n          ]\r\n      },\r\n      Name: 'QN-000070',\r\n      type: 'Dropdown',\r\n      questionText: 'Land',\r\n      question: 'Land',\r\n      size:1,\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      selectedValue : 'test',\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '171',\r\n      Name: 'QN-000071',\r\n      type: 'Text',\r\n      size:3,\r\n      allowedFileExtensions : '.pdf',\r\n      questionText: 'PLZ',\r\n      question: 'PLZ',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '172',\r\n      Name: 'QN-000072',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'ORT',\r\n      question: 'ORT',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      selectedValue : 'test',\r\n      isHidden:false,\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '173',\r\n      Name: 'QN-000073',\r\n      type: 'Text',\r\n      questionText: 'StraBe',\r\n      selectedValue : 'test',\r\n      question: 'StraBe',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isHidden:false,\r\n      isDateForward : false,\r\n      allowedFileExtensions : '.pdf',\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '174',\r\n      Name: 'QN-000074',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'Hausnummer',\r\n      question: 'Hausnummer',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      size:4,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    ],\r\n  allowedFileExtensions : '.pdf',\r\n  questionText: 'Explain the particulars of the Incident?',\r\n  question: 'Explain the particulars of the Incident?',\r\n  nextQuestion: 'a013t000013SS89AAG',\r\n  trackingId: '1234',\r\n  isOptional: false,\r\n  isTitle: true,\r\n  x24Hours: false,\r\n  errorMessage: 'Please Enter a Value',\r\n  isDateBackward : false,\r\n  isDateForward : false,\r\n  selectedValue : 'test',\r\n  isHidden: false,\r\n  groupName: 'Basic',\r\n  size:1,\r\n  questionNumber: '1',\r\n  timeText: 'hour',\r\n  title: 'title',\r\n  subTitle: 'subtitle',\r\n  subText: 'subtext',\r\n  dateText: 'datetext',\r\n  RecordType: {\r\n  Name: 'UNCONDITIONAL'\r\n  },\r\n  style: {\r\n    \"labelClass\" : \"slds-grid\",\r\n    \"labelStyle\" : \"align-items: baseline;\",\r\n    \"labelValueStyle\" : \"\",\r\n    \"inputClass\" : \"\",\r\n    \"inputStyle\" : \"border-style: dashed;\",\r\n    \"showLabel\" : true,\r\n    \"bookStyle\" : \"\",\r\n    \"direction\" : \"ltr\",\r\n    \"questionStyle\": \"\"\r\n    },\r\n  };\r\n\r\n// DateTime Question\r\nexport const TAQUESTION: Question = {\r\nid: '14',\r\noptions: {\r\n  records: [\r\n      {\r\n        id: '1',\r\n        Name: 'D',\r\n        value: 'D',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '2',\r\n        Name: 'CH',\r\n        value: 'CH',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '3',\r\n        Name: 'UK',\r\n        value: 'UK',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      }\r\n    ]\r\n},\r\nName: 'QN-00004',\r\ntype: 'TextArea',\r\nsubQuestions :  [\r\n  {\r\n    id: '170',\r\n    options: {\r\n      records: [\r\n          {\r\n            id: '1',\r\n            Name: 'D',\r\n            value: 'D',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '2',\r\n            Name: 'CH',\r\n            value: 'CH',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '3',\r\n            Name: 'UK',\r\n            value: 'UK',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          }\r\n        ]\r\n    },\r\n    Name: 'QN-000070',\r\n    type: 'Dropdown',\r\n    questionText: 'Land',\r\n    question: 'Land',\r\n    size:1,\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    selectedValue : 'test',\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '171',\r\n    Name: 'QN-000071',\r\n    type: 'Text',\r\n    size:3,\r\n    allowedFileExtensions : '.pdf',\r\n    questionText: 'PLZ',\r\n    question: 'PLZ',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '172',\r\n    Name: 'QN-000072',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'ORT',\r\n    question: 'ORT',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    selectedValue : 'test',\r\n    isHidden:false,\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '173',\r\n    Name: 'QN-000073',\r\n    type: 'Text',\r\n    questionText: 'StraBe',\r\n    selectedValue : 'test',\r\n    question: 'StraBe',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isHidden:false,\r\n    isDateForward : false,\r\n    allowedFileExtensions : '.pdf',\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '174',\r\n    Name: 'QN-000074',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'Hausnummer',\r\n    question: 'Hausnummer',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    size:4,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  ],\r\nallowedFileExtensions : '.pdf',\r\nquestionText: 'Explain the particulars of the Incident?',\r\nquestion: 'Explain the particulars of the Incident?',\r\nnextQuestion: 'a013t000013SS89AAG',\r\ntrackingId: '1234',\r\nisOptional: false,\r\nisTitle: true,\r\nx24Hours: false,\r\nerrorMessage: 'Please Enter a Value',\r\nisDateBackward : false,\r\nisDateForward : false,\r\nselectedValue : 'test',\r\nisHidden: false,\r\ngroupName: 'Basic',\r\nsize:1,\r\nquestionNumber: '1',\r\ntimeText: 'hour',\r\ntitle: 'title',\r\nsubTitle: 'subtitle',\r\nsubText: 'subtext',\r\ndateText: 'datetext',\r\nRecordType: {\r\nName: 'UNCONDITIONAL'\r\n},\r\nstyle: {\r\n  \"labelClass\" : \"slds-grid\",\r\n  \"labelStyle\" : \"align-items: baseline;\",\r\n  \"labelValueStyle\" : \"\",\r\n  \"inputClass\" : \"\",\r\n  \"inputStyle\" : \"border-style: dashed;\",\r\n  \"showLabel\" : true,\r\n  \"bookStyle\" : \"\",\r\n  \"direction\" : \"ltr\",\r\n  \"questionStyle\": \"\"\r\n  },\r\n};\r\n// Radio Question\r\nexport const RADIOQUESTION: Question = {\r\nid: '15',\r\nName: 'QN-00005',\r\ntype: 'Radio',\r\nsubQuestions :  [\r\n  {\r\n    id: '170',\r\n    Name: 'QN-000070',\r\n    type: 'Dropdown',\r\n    questionText: 'Land',\r\n    question: 'Land',\r\n    size:1,\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    selectedValue : 'test',\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n    options: {\r\n      records: [\r\n          {\r\n            id: '1',\r\n            Name: 'D',\r\n            value: 'D',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '2',\r\n            Name: 'CH',\r\n            value: 'CH',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '3',\r\n            Name: 'UK',\r\n            value: 'UK',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          }\r\n        ]\r\n    }\r\n  },\r\n  {\r\n    id: '171',\r\n    Name: 'QN-000071',\r\n    type: 'Text',\r\n    size:3,\r\n    allowedFileExtensions : '.pdf',\r\n    questionText: 'PLZ',\r\n    question: 'PLZ',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '172',\r\n    Name: 'QN-000072',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'ORT',\r\n    question: 'ORT',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    selectedValue : 'test',\r\n    isHidden:false,\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '173',\r\n    Name: 'QN-000073',\r\n    type: 'Text',\r\n    questionText: 'StraBe',\r\n    selectedValue : 'test',\r\n    question: 'StraBe',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isHidden:false,\r\n    isDateForward : false,\r\n    allowedFileExtensions : '.pdf',\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '174',\r\n    Name: 'QN-000074',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'Hausnummer',\r\n    question: 'Hausnummer',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    size:4,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  ],\r\nallowedFileExtensions : '.pdf',\r\nquestionText: 'Choose your favorite role',\r\nselectedValue : 'test',\r\nquestion: 'Choose your favorite role',\r\ntrackingId: '1234',\r\nnextQuestion: '',\r\nisOptional: false,\r\nisTitle: true,\r\nx24Hours: false,\r\nerrorMessage: 'Please Enter a Value',\r\nisDateBackward : false,\r\nisDateForward : false,\r\nisHidden: false,\r\ngroupName: 'Basic',\r\nsize:1,\r\nquestionNumber:'5',\r\ntimeText: 'hour',\r\ntitle: 'title',\r\nsubTitle: 'subtitle',\r\nsubText: 'subtext',\r\ndateText: 'datetext',\r\nRecordType: {\r\nName: 'UNCONDITIONAL'\r\n},\r\nstyle: {\r\n  \"labelClass\" : \"slds-grid\",\r\n  \"labelStyle\" : \"align-items: baseline;\",\r\n  \"labelValueStyle\" : \"\",\r\n  \"inputClass\" : \"\",\r\n  \"inputStyle\" : \"border-style: dashed;\",\r\n  \"showLabel\" : true,\r\n  \"bookStyle\" : \"\",\r\n  \"direction\" : \"ltr\",\r\n  \"questionStyle\": \"\"\r\n  },\r\noptions: {\r\nrecords: [\r\n            {\r\n              id: '121',\r\n              Name: '121N',\r\n              value: '121V',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '122',\r\n              Name: '122N',\r\n              value: '122V',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '123',\r\n              Name: '123N',\r\n              value: '123V',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            }\r\n          ]\r\n}\r\n};\r\n// Checkbox Question\r\nexport const CHECKQUESTION: Question = {\r\nid: '16',\r\nName: 'QN-00006',\r\ntype: 'Checkbox',\r\nsubQuestions :  [\r\n  {\r\n    id: '170',\r\n    Name: 'QN-000070',\r\n    type: 'Dropdown',\r\n    questionText: 'Land',\r\n    question: 'Land',\r\n    size:1,\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    selectedValue : 'test',\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n    options: {\r\n      records: [\r\n          {\r\n            id: '1',\r\n            Name: 'D',\r\n            value: 'D',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '2',\r\n            Name: 'CH',\r\n            value: 'CH',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '3',\r\n            Name: 'UK',\r\n            value: 'UK',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          }\r\n        ]\r\n    }\r\n  },\r\n  {\r\n    id: '171',\r\n    Name: 'QN-000071',\r\n    type: 'Text',\r\n    size:3,\r\n    allowedFileExtensions : '.pdf',\r\n    questionText: 'PLZ',\r\n    question: 'PLZ',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '172',\r\n    Name: 'QN-000072',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'ORT',\r\n    question: 'ORT',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    selectedValue : 'test',\r\n    isHidden:false,\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '173',\r\n    Name: 'QN-000073',\r\n    type: 'Text',\r\n    questionText: 'StraBe',\r\n    selectedValue : 'test',\r\n    question: 'StraBe',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isHidden:false,\r\n    isDateForward : false,\r\n    allowedFileExtensions : '.pdf',\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '174',\r\n    Name: 'QN-000074',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'Hausnummer',\r\n    question: 'Hausnummer',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    size:4,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  ],\r\nallowedFileExtensions : '.pdf',\r\nquestionText: 'Choose your favorite spots',\r\nquestion: 'Choose your favorite spots',\r\ntrackingId: '1234',\r\nnextQuestion: '',\r\nisOptional: false,\r\nisTitle: false,\r\nselectedValue : 'test',\r\nx24Hours: false,\r\nerrorMessage: 'Please Enter a Value',\r\nisDateBackward : false,\r\nisDateForward : false,\r\nisHidden: false,\r\ngroupName: 'Basic',\r\nsize:1,\r\nquestionNumber:'6',\r\ntimeText: 'hour',\r\ntitle: 'title',\r\nsubTitle: 'subtitle',\r\nsubText: 'subtext',\r\ndateText: 'datetext',\r\nRecordType: {\r\nName: 'CONDITIONAL'\r\n},\r\nstyle: {\r\n  \"labelClass\" : \"slds-grid\",\r\n  \"labelStyle\" : \"align-items: baseline;\",\r\n  \"labelValueStyle\" : \"\",\r\n  \"inputClass\" : \"\",\r\n  \"inputStyle\" : \"border-style: dashed;\",\r\n  \"showLabel\" : true,\r\n  \"bookStyle\" : \"\",\r\n  \"direction\" : \"ltr\",\r\n  \"questionStyle\": \"\"\r\n  },\r\noptions: {\r\nrecords: [\r\n            {\r\n              id: '121',\r\n              Name: '121N',\r\n              value: '121V',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '122',\r\n              Name: '122N',\r\n              value: '122V',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '123',\r\n              Name: '123N',\r\n              value: '123V',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            }\r\n          ]\r\n}\r\n};\r\nexport const GOOGLE_MAP_API_KEY = 'AIzaSyA18odJnD-pDsu7EVJ7WiXVM5sVvpjAQxw';\r\n// Book Question\r\nexport const BOOKQUESTION: Question = {\r\nid: '17',\r\nName: 'QN-00007',\r\ntype: 'Book',\r\noptions: {\r\n  records: [\r\n      {\r\n        id: '1',\r\n        Name: 'D',\r\n        value: 'D',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '2',\r\n        Name: 'CH',\r\n        value: 'CH',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      },\r\n      {\r\n        id: '3',\r\n        Name: 'UK',\r\n        value: 'UK',\r\n        trackingId: '1234',\r\n        nextQuestion: '',\r\n      }\r\n    ]\r\n},\r\nallowedFileExtensions : '.pdf',\r\ntrackingId: '1234',\r\nquestion: 'Provide your Address',\r\nsubQuestions: [\r\n  {\r\n    id: '170',\r\n    Name: 'QN-000070',\r\n    type: 'Dropdown',\r\n    questionText: 'Land',\r\n    question: 'Land',\r\n    size:1,\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    selectedValue : 'test',\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n    options: {\r\n      records: [\r\n          {\r\n            id: '1',\r\n            Name: 'D',\r\n            value: 'D',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '2',\r\n            Name: 'CH',\r\n            value: 'CH',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          },\r\n          {\r\n            id: '3',\r\n            Name: 'UK',\r\n            value: 'UK',\r\n            trackingId: '1234',\r\n            nextQuestion: '',\r\n          }\r\n        ]\r\n    }\r\n  },\r\n  {\r\n    id: '171',\r\n    Name: 'QN-000071',\r\n    type: 'Text',\r\n    size:3,\r\n    allowedFileExtensions : '.pdf',\r\n    questionText: 'PLZ',\r\n    question: 'PLZ',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '172',\r\n    Name: 'QN-000072',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'ORT',\r\n    question: 'ORT',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours: false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    selectedValue : 'test',\r\n    isHidden:false,\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '173',\r\n    Name: 'QN-000073',\r\n    type: 'Text',\r\n    questionText: 'StraBe',\r\n    selectedValue : 'test',\r\n    question: 'StraBe',\r\n    trackingId: '1234',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isHidden:false,\r\n    isDateForward : false,\r\n    allowedFileExtensions : '.pdf',\r\n    size:8,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  {\r\n    id: '174',\r\n    Name: 'QN-000074',\r\n    type: 'Text',\r\n    allowedFileExtensions : '.pdf',\r\n    trackingId: '1234',\r\n    questionText: 'Hausnummer',\r\n    question: 'Hausnummer',\r\n    isOptional: false,\r\n    isTitle: true,\r\n    x24Hours:false,\r\n    errorMessage: 'Please Enter a Value',\r\n    isDateBackward : false,\r\n    isDateForward : false,\r\n    isHidden:false,\r\n    size:4,\r\n    groupName: 'Basic',\r\n    timeText: 'hour',\r\n    selectedValue : 'test',\r\n    title: 'title',\r\n    subTitle: 'subtitle',\r\n    subText: 'subtext',\r\n    dateText: 'datetext',\r\n    RecordType: {\r\n      Name: 'UNCONDITIONAL'\r\n    },\r\n    style: {\r\n      \"labelClass\" : \"slds-grid\",\r\n      \"labelStyle\" : \"align-items: baseline;\",\r\n      \"labelValueStyle\" : \"\",\r\n      \"inputClass\" : \"\",\r\n      \"inputStyle\" : \"border-style: dashed;\",\r\n      \"showLabel\" : true,\r\n      \"bookStyle\" : \"\",\r\n      \"direction\" : \"ltr\",\r\n      \"questionStyle\": \"\"\r\n      },\r\n  },\r\n  ],\r\nquestionText: 'Provide your Address',\r\nselectedValue : 'test',\r\nnextQuestion: '',\r\nisOptional: false,\r\nisTitle: true,\r\nx24Hours: false,\r\nerrorMessage: 'Please Enter a Value',\r\nisDateBackward : false,\r\nisDateForward : false,\r\nisHidden: false,\r\ngroupName: 'Basic',\r\nsize:1,\r\nquestionNumber:'7',\r\ntimeText: 'hour',\r\ntitle: 'title',\r\nsubTitle: 'subtitle',\r\nsubText: 'subtext',\r\ndateText: 'datetext',\r\nstyle: {\r\n  \"labelClass\" : \"slds-grid\",\r\n  \"labelStyle\" : \"align-items: baseline;\",\r\n  \"labelValueStyle\" : \"\",\r\n  \"inputClass\" : \"\",\r\n  \"inputStyle\" : \"border-style: dashed;\",\r\n  \"showLabel\" : true,\r\n  \"bookStyle\" : \"\",\r\n  \"direction\" : \"ltr\",\r\n  \"questionStyle\": \"\"\r\n},\r\nQuestions__r: {\r\nrecords: [\r\n{\r\n  id: '170',\r\n  Name: 'QN-000070',\r\n  type: 'Dropdown',\r\n  questionText: 'Land',\r\n  question: 'Land',\r\n  size:1,\r\n  subQuestions: [\r\n    {\r\n      id: '170',\r\n      Name: 'QN-000070',\r\n      type: 'Dropdown',\r\n      questionText: 'Land',\r\n      question: 'Land',\r\n      size:1,\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      selectedValue : 'test',\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n      options: {\r\n        records: [\r\n            {\r\n              id: '1',\r\n              Name: 'D',\r\n              value: 'D',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '2',\r\n              Name: 'CH',\r\n              value: 'CH',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '3',\r\n              Name: 'UK',\r\n              value: 'UK',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            }\r\n          ]\r\n      }\r\n    },\r\n    {\r\n      id: '171',\r\n      Name: 'QN-000071',\r\n      type: 'Text',\r\n\r\n      size:3,\r\n      allowedFileExtensions : '.pdf',\r\n      questionText: 'PLZ',\r\n      question: 'PLZ',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '172',\r\n      Name: 'QN-000072',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'ORT',\r\n      question: 'ORT',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      selectedValue : 'test',\r\n      isHidden:false,\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '173',\r\n      Name: 'QN-000073',\r\n      type: 'Text',\r\n      questionText: 'StraBe',\r\n      selectedValue : 'test',\r\n      question: 'StraBe',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isHidden:false,\r\n      isDateForward : false,\r\n      allowedFileExtensions : '.pdf',\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '174',\r\n      Name: 'QN-000074',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'Hausnummer',\r\n      question: 'Hausnummer',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      size:4,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    ],\r\n  allowedFileExtensions : '.pdf',\r\n  trackingId: '1234',\r\n  isOptional: false,\r\n  isTitle: true,\r\n  x24Hours:false,\r\n  selectedValue : 'test',\r\n  errorMessage: 'Please Enter a Value',\r\n  isDateBackward : false,\r\n  isDateForward : false,\r\n  isHidden:false,\r\n  groupName: 'Basic',\r\n  timeText: 'hour',\r\n  title: 'title',\r\n  subTitle: 'subtitle',\r\n  subText: 'subtext',\r\n  dateText: 'datetext',\r\n  RecordType: {\r\n    Name: 'UNCONDITIONAL'\r\n  },\r\n  style: {\r\n    \"labelClass\" : \"slds-grid\",\r\n    \"labelStyle\" : \"align-items: baseline;\",\r\n    \"labelValueStyle\" : \"\",\r\n    \"inputClass\" : \"\",\r\n    \"inputStyle\" : \"border-style: dashed;\",\r\n    \"showLabel\" : true,\r\n    \"bookStyle\" : \"\",\r\n    \"direction\" : \"ltr\",\r\n    \"questionStyle\": \"\"\r\n    },\r\n  options: {\r\n    records: [\r\n        {\r\n          id: '1',\r\n          Name: 'D',\r\n          value: 'D',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '2',\r\n          Name: 'CH',\r\n          value: 'CH',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '3',\r\n          Name: 'UK',\r\n          value: 'UK',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        }\r\n      ]\r\n  }\r\n},\r\n{\r\n  id: '171',\r\n  options: {\r\n    records: [\r\n        {\r\n          id: '1',\r\n          Name: 'D',\r\n          value: 'D',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '2',\r\n          Name: 'CH',\r\n          value: 'CH',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '3',\r\n          Name: 'UK',\r\n          value: 'UK',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        }\r\n      ]\r\n  },\r\n  Name: 'QN-000071',\r\n  type: 'Text',\r\n  size:3,\r\n  subQuestions: [\r\n    {\r\n      id: '170',\r\n      Name: 'QN-000070',\r\n      type: 'Dropdown',\r\n      questionText: 'Land',\r\n      question: 'Land',\r\n      size:1,\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      selectedValue : 'test',\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n      options: {\r\n        records: [\r\n            {\r\n              id: '1',\r\n              Name: 'D',\r\n              value: 'D',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '2',\r\n              Name: 'CH',\r\n              value: 'CH',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '3',\r\n              Name: 'UK',\r\n              value: 'UK',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            }\r\n          ]\r\n      }\r\n    },\r\n    {\r\n      id: '171',\r\n      Name: 'QN-000071',\r\n      type: 'Text',\r\n      size:3,\r\n      allowedFileExtensions : '.pdf',\r\n      questionText: 'PLZ',\r\n      question: 'PLZ',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '172',\r\n      Name: 'QN-000072',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'ORT',\r\n      question: 'ORT',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      selectedValue : 'test',\r\n      isHidden:false,\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '173',\r\n      Name: 'QN-000073',\r\n      type: 'Text',\r\n      questionText: 'StraBe',\r\n      selectedValue : 'test',\r\n      question: 'StraBe',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isHidden:false,\r\n      isDateForward : false,\r\n      allowedFileExtensions : '.pdf',\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '174',\r\n      Name: 'QN-000074',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'Hausnummer',\r\n      question: 'Hausnummer',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      size:4,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    ],\r\n  allowedFileExtensions : '.pdf',\r\n  questionText: 'PLZ',\r\n  question: 'PLZ',\r\n  trackingId: '1234',\r\n  isOptional: false,\r\n  isTitle: true,\r\n  x24Hours: false,\r\n  errorMessage: 'Please Enter a Value',\r\n  isDateBackward : false,\r\n  isDateForward : false,\r\n  isHidden:false,\r\n  groupName: 'Basic',\r\n  timeText: 'hour',\r\n  selectedValue : 'test',\r\n  title: 'title',\r\n  subTitle: 'subtitle',\r\n  subText: 'subtext',\r\n  dateText: 'datetext',\r\n  RecordType: {\r\n    Name: 'UNCONDITIONAL'\r\n  },\r\n  style: {\r\n    \"labelClass\" : \"slds-grid\",\r\n    \"labelStyle\" : \"align-items: baseline;\",\r\n    \"labelValueStyle\" : \"\",\r\n    \"inputClass\" : \"\",\r\n    \"inputStyle\" : \"border-style: dashed;\",\r\n    \"showLabel\" : true,\r\n    \"bookStyle\" : \"\",\r\n    \"direction\" : \"ltr\",\r\n    \"questionStyle\": \"\"\r\n    },\r\n},\r\n{\r\n  id: '172',\r\n  options: {\r\n    records: [\r\n        {\r\n          id: '1',\r\n          Name: 'D',\r\n          value: 'D',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '2',\r\n          Name: 'CH',\r\n          value: 'CH',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '3',\r\n          Name: 'UK',\r\n          value: 'UK',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        }\r\n      ]\r\n  },\r\n  Name: 'QN-000072',\r\n  type: 'Text',\r\n  subQuestions: [\r\n    {\r\n      id: '170',\r\n      Name: 'QN-000070',\r\n      type: 'Dropdown',\r\n      questionText: 'Land',\r\n      question: 'Land',\r\n      size:1,\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      selectedValue : 'test',\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n      options: {\r\n        records: [\r\n            {\r\n              id: '1',\r\n              Name: 'D',\r\n              value: 'D',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '2',\r\n              Name: 'CH',\r\n              value: 'CH',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '3',\r\n              Name: 'UK',\r\n              value: 'UK',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            }\r\n          ]\r\n      }\r\n    },\r\n    {\r\n      id: '171',\r\n      Name: 'QN-000071',\r\n      type: 'Text',\r\n      size:3,\r\n      allowedFileExtensions : '.pdf',\r\n      questionText: 'PLZ',\r\n      question: 'PLZ',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '172',\r\n      Name: 'QN-000072',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'ORT',\r\n      question: 'ORT',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      selectedValue : 'test',\r\n      isHidden:false,\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '173',\r\n      Name: 'QN-000073',\r\n      type: 'Text',\r\n      questionText: 'StraBe',\r\n      selectedValue : 'test',\r\n      question: 'StraBe',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isHidden:false,\r\n      isDateForward : false,\r\n      allowedFileExtensions : '.pdf',\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '174',\r\n      Name: 'QN-000074',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'Hausnummer',\r\n      question: 'Hausnummer',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      size:4,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    ],\r\n  allowedFileExtensions : '.pdf',\r\n  trackingId: '1234',\r\n  questionText: 'ORT',\r\n  question: 'ORT',\r\n  isOptional: false,\r\n  isTitle: true,\r\n  x24Hours: false,\r\n  errorMessage: 'Please Enter a Value',\r\n  isDateBackward : false,\r\n  isDateForward : false,\r\n  selectedValue : 'test',\r\n  isHidden:false,\r\n  size:8,\r\n  groupName: 'Basic',\r\n  timeText: 'hour',\r\n  title: 'title',\r\n  subTitle: 'subtitle',\r\n  subText: 'subtext',\r\n  dateText: 'datetext',\r\n  RecordType: {\r\n    Name: 'UNCONDITIONAL'\r\n  },\r\n  style: {\r\n    \"labelClass\" : \"slds-grid\",\r\n    \"labelStyle\" : \"align-items: baseline;\",\r\n    \"labelValueStyle\" : \"\",\r\n    \"inputClass\" : \"\",\r\n    \"inputStyle\" : \"border-style: dashed;\",\r\n    \"showLabel\" : true,\r\n    \"bookStyle\" : \"\",\r\n    \"direction\" : \"ltr\",\r\n    \"questionStyle\": \"\"\r\n    },\r\n},\r\n{\r\n  id: '173',\r\n  options: {\r\n    records: [\r\n        {\r\n          id: '1',\r\n          Name: 'D',\r\n          value: 'D',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '2',\r\n          Name: 'CH',\r\n          value: 'CH',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '3',\r\n          Name: 'UK',\r\n          value: 'UK',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        }\r\n      ]\r\n  },\r\n  Name: 'QN-000073',\r\n  type: 'Text',\r\n  subQuestions: [\r\n    {\r\n      id: '170',\r\n      Name: 'QN-000070',\r\n      type: 'Dropdown',\r\n      questionText: 'Land',\r\n      question: 'Land',\r\n      size:1,\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      selectedValue : 'test',\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n      options: {\r\n        records: [\r\n            {\r\n              id: '1',\r\n              Name: 'D',\r\n              value: 'D',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '2',\r\n              Name: 'CH',\r\n              value: 'CH',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '3',\r\n              Name: 'UK',\r\n              value: 'UK',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            }\r\n          ]\r\n      }\r\n    },\r\n    {\r\n      id: '171',\r\n      Name: 'QN-000071',\r\n      type: 'Text',\r\n      size:3,\r\n      allowedFileExtensions : '.pdf',\r\n      questionText: 'PLZ',\r\n      question: 'PLZ',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '172',\r\n      Name: 'QN-000072',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'ORT',\r\n      question: 'ORT',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      selectedValue : 'test',\r\n      isHidden:false,\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '173',\r\n      Name: 'QN-000073',\r\n      type: 'Text',\r\n      questionText: 'StraBe',\r\n      selectedValue : 'test',\r\n      question: 'StraBe',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isHidden:false,\r\n      isDateForward : false,\r\n      allowedFileExtensions : '.pdf',\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '174',\r\n      Name: 'QN-000074',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'Hausnummer',\r\n      question: 'Hausnummer',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      size:4,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    ],\r\n  questionText: 'StraBe',\r\n  selectedValue : 'test',\r\n  question: 'StraBe',\r\n  trackingId: '1234',\r\n  isOptional: false,\r\n  isTitle: true,\r\n  x24Hours:false,\r\n  errorMessage: 'Please Enter a Value',\r\n  isDateBackward : false,\r\n  isHidden:false,\r\n  isDateForward : false,\r\n  allowedFileExtensions : '.pdf',\r\n  size:8,\r\n  groupName: 'Basic',\r\n  timeText: 'hour',\r\n  title: 'title',\r\n  subTitle: 'subtitle',\r\n  subText: 'subtext',\r\n  dateText: 'datetext',\r\n  RecordType: {\r\n    Name: 'UNCONDITIONAL'\r\n  },\r\n  style: {\r\n    \"labelClass\" : \"slds-grid\",\r\n    \"labelStyle\" : \"align-items: baseline;\",\r\n    \"labelValueStyle\" : \"\",\r\n    \"inputClass\" : \"\",\r\n    \"inputStyle\" : \"border-style: dashed;\",\r\n   \"showLabel\" : true,\r\n    \"bookStyle\" : \"\",\r\n    \"direction\" : \"ltr\",\r\n    \"questionStyle\": \"\"\r\n    },\r\n},\r\n{\r\n  id: '174',\r\n  Name: 'QN-000074',\r\n  options: {\r\n    records: [\r\n        {\r\n          id: '1',\r\n          Name: 'D',\r\n          value: 'D',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '2',\r\n          Name: 'CH',\r\n          value: 'CH',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        },\r\n        {\r\n          id: '3',\r\n          Name: 'UK',\r\n          value: 'UK',\r\n          trackingId: '1234',\r\n          nextQuestion: '',\r\n        }\r\n      ]\r\n  },\r\n  type: 'Text',\r\n  subQuestions: [\r\n    {\r\n      id: '170',\r\n      Name: 'QN-000070',\r\n      type: 'Dropdown',\r\n      questionText: 'Land',\r\n      question: 'Land',\r\n      size:1,\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      selectedValue : 'test',\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n      options: {\r\n        records: [\r\n            {\r\n              id: '1',\r\n              Name: 'D',\r\n              value: 'D',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '2',\r\n              Name: 'CH',\r\n              value: 'CH',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            },\r\n            {\r\n              id: '3',\r\n              Name: 'UK',\r\n              value: 'UK',\r\n              trackingId: '1234',\r\n              nextQuestion: '',\r\n            }\r\n          ]\r\n      }\r\n    },\r\n    {\r\n      id: '171',\r\n      Name: 'QN-000071',\r\n      type: 'Text',\r\n      size:3,\r\n      allowedFileExtensions : '.pdf',\r\n      questionText: 'PLZ',\r\n      question: 'PLZ',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '172',\r\n      Name: 'QN-000072',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'ORT',\r\n      question: 'ORT',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours: false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      selectedValue : 'test',\r\n      isHidden:false,\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '173',\r\n      Name: 'QN-000073',\r\n      type: 'Text',\r\n      questionText: 'StraBe',\r\n      selectedValue : 'test',\r\n      question: 'StraBe',\r\n      trackingId: '1234',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isHidden:false,\r\n      isDateForward : false,\r\n      allowedFileExtensions : '.pdf',\r\n      size:8,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    {\r\n      id: '174',\r\n      Name: 'QN-000074',\r\n      type: 'Text',\r\n      allowedFileExtensions : '.pdf',\r\n      trackingId: '1234',\r\n      questionText: 'Hausnummer',\r\n      question: 'Hausnummer',\r\n      isOptional: false,\r\n      isTitle: true,\r\n      x24Hours:false,\r\n      errorMessage: 'Please Enter a Value',\r\n      isDateBackward : false,\r\n      isDateForward : false,\r\n      isHidden:false,\r\n      size:4,\r\n      groupName: 'Basic',\r\n      timeText: 'hour',\r\n      selectedValue : 'test',\r\n      title: 'title',\r\n      subTitle: 'subtitle',\r\n      subText: 'subtext',\r\n      dateText: 'datetext',\r\n      RecordType: {\r\n        Name: 'UNCONDITIONAL'\r\n      },\r\n      style: {\r\n        \"labelClass\" : \"slds-grid\",\r\n        \"labelStyle\" : \"align-items: baseline;\",\r\n        \"labelValueStyle\" : \"\",\r\n        \"inputClass\" : \"\",\r\n        \"inputStyle\" : \"border-style: dashed;\",\r\n        \"showLabel\" : true,\r\n        \"bookStyle\" : \"\",\r\n        \"direction\" : \"ltr\",\r\n        \"questionStyle\": \"\"\r\n        },\r\n    },\r\n    ],\r\n  allowedFileExtensions : '.pdf',\r\n  trackingId: '1234',\r\n  questionText: 'Hausnummer',\r\n  question: 'Hausnummer',\r\n  isOptional: false,\r\n  isTitle: true,\r\n  x24Hours:false,\r\n  errorMessage: 'Please Enter a Value',\r\n  isDateBackward : false,\r\n  isDateForward : false,\r\n  isHidden:false,\r\n  size:4,\r\n  groupName: 'Basic',\r\n  timeText: 'hour',\r\n  selectedValue : 'test',\r\n  title: 'title',\r\n  subTitle: 'subtitle',\r\n  subText: 'subtext',\r\n  dateText: 'datetext',\r\n  RecordType: {\r\n    Name: 'UNCONDITIONAL'\r\n  },\r\n  style: {\r\n    \"labelClass\" : \"slds-grid\",\r\n    \"labelStyle\" : \"align-items: baseline;\",\r\n    \"labelValueStyle\" : \"\",\r\n    \"inputClass\" : \"\",\r\n    \"inputStyle\" : \"border-style: dashed;\",\r\n    \"showLabel\" : true,\r\n    \"bookStyle\" : \"\",\r\n    \"direction\" : \"ltr\",\r\n    \"questionStyle\": \"\"\r\n    },\r\n},\r\n]\r\n},\r\nRecordType: {\r\nName: 'CONDITIONAL'\r\n},\r\n};","import { Injectable } from '@angular/core';\nimport {Router} from '@angular/router';\n\ndeclare class Visualforce {\n    static remoting: { Manager: { invokeAction: any } };\n}\n\n@Injectable({\n    providedIn: 'root'\n})\n\nexport class SalesforceService {\n    public getSFResource = (path: string) => `${window['_VfResources']}${path}`;\n    public getRNXTMethodName = () => `${window['_rnxtMethodName']}`;\n\n    public remoteAction(methodName: string,\n                        params: string[],\n                        resolve,\n                        reject,\n                        config?: any) {\n      // console.log('inside SalesforceService.remoteAction for ' + methodName);\n      const self = this;\n      var nsMethodName = this.getRNXTMethodName();\n      //console.log('method name in lib = ' + nsMethodName);\n\n      Visualforce.remoting.Manager.invokeAction(\n        nsMethodName,\n        //'NxtController.process',\n        //`{!$RemoteAction.NxtController.process}`,\n        ...params,\n        function (result, event) {\n          try {\n            result = JSON.parse(result);\n          } catch (error) {\n            reject(error);\n          }\n          //console.log('Function called was - ' + methodName);\n          //console.log(result);\n          //console.log(resolve(result));\n          if (result.status) {\n              resolve(result);\n          } else {\n              resolve(result);\n          }\n        },\n        config || { buffer: false, escape: false }\n      );\n    }\n\n    constructor(private _router: Router) {\n\n    }\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DataService {\n  apiUrl: any;\n  // VD 23JAN24 optionally declared httpClient\n  constructor(@Optional() private http: HttpClient) { }\n\n  public getAPIData(tkn: string, \n    params: string[],\n    resolve,\n    reject,\n    config?: any) {\n      console.log('inside DataService.getAPIData for ' + tkn);\n      const self = this;\n\n      // Call the ShengelGo Server\n      const headers = new HttpHeaders().set('Authorization', `${tkn}`);\n      headers.append('Accept', 'application/json');\n      headers.append('Access-Control-Allow-Origin', '*');\n\n      // MR 23JAN24 - This should be removed, for now testing with dev-hse-api\n      this.http.get('https://dev-hse-api.rangerfusion.com/nxt/api/process/?dataType=' + params[0] + '&operation=' + params[1] + '&param=' + params[2], { headers: headers , observe: 'response' })\n        .subscribe(response => {\n          if(response.status == 200) {\n            resolve(response.body);\n          } else {\n            reject(response.body);\n          }\n        }, error => {\n          console.log(error.status);\n          reject(error);\n        });\n  }\n\n  //calling the node api\n  public getAPIFromNode(dataType: string, operation: string, param1: string,param2: string,api:string){\n    const apiUrl = api ? api : 'http://localhost:3001/nxt';\n    console.log('indside data service..');\n    // let params = new HttpParams()\n    //   .set('dataType', dataType)\n    //   .set('operation', operation)\n    //   .set('param1', param1)\n    //   .set('param2',param2)\n\n    let body = {\n      \"dataType\" :dataType ,\n      \"operation\" :operation ,\n      \"param1\" :param1, \n      \"param2\" : param2,\n    }\n    return this.http.post<any>(apiUrl,body );\n\n  }\n\n    \n// VD 22May24 -funtion to  handling multiple child objects\npublic getValue(element: any, columns: any) {\n  if (!element || !columns) return null; //AP-25MAR25 Ensure both element and column are valid\n// MSM27MAR25 check if columns is an array\n  if(typeof columns === 'string' && !Array.isArray(columns)  ) {\n    columns = [columns];\n  }\n  columns.forEach((column) => {\n    let flds = column?.split('.');\n\n    for (let i = 0; i < flds.length; i++) {\n      if (element == null) return null; //AP-25MAR25 Prevent errors if element is null or undefined\n\n      let splitFlds = flds[i].split('[');\n      if (splitFlds.length === 1) {\n        element = element[flds[i]] !== undefined ? element[flds[i]] : null;\n      } else {\n        let index = Number(splitFlds[1].split(']')[0]);\n        element = element[splitFlds[0]] && Array.isArray(element[splitFlds[0]]) \n          ? element[splitFlds[0]][index] !== undefined ? element[splitFlds[0]][index] : null\n          : null;\n      }\n    }\n  });\n  return element;\n}\n// AP-16APR25 Sets the API URL with the provided apidata\napikey(apidata: any){\n  this.apiUrl = apidata;\n}\n// VD 23JAN24 get callout \n  public apiResponse(endpoint: string): Observable<any> {\n    if(this.apiUrl && this.apiUrl.trim() !== ''){\n    // AP-16APR25 If apiUrl is set, make the request with the base URL\n    return this.http?.get(this.apiUrl+endpoint);\n    }\n    else{\n      // AP-16APR25 If no apiUrl is set, make the request to the endpoint directly\n      return this.http?.get(endpoint);\n    }\n  }\n\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class SharedService {\n  // VD 23JAN24 optionally declared httpClient\n  constructor(@Optional() private __http: HttpClient) { }\n  // loader changes\n  private loadingSubject = new BehaviorSubject<boolean>(false);\n  public isLoading$ = this.loadingSubject.asObservable();\n\n  processViewFile(fileName: string = '',api:string) {\n    if (fileName) {\n      this.viewFile(fileName,api).subscribe( (apiResponse: any) => {\n        if (apiResponse && apiResponse.sas_url) {\n          window.open(apiResponse.sas_url, '_blank');\n        }\n      }, (apiError) => {\n         console.error('ERROR WHILE VIEWING File');\n      });\n    }\n  }\n\n  viewFile(fileName: string = '',api:string) {\n    const params = { file_name: fileName };\n    return this.__http.post(api , params);\n  }\n\n docIcon(ext) {\n    if (ext === 'pdf') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-PDF.png';\n    } else if (ext === 'xlsx') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-XLSX.png';\n    } else if (ext === 'docx') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-DOCX.png';\n    } else if (ext === 'avi') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-AVI.png';\n    } else if (ext === 'doc') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-DOC.png';\n    } else if (ext === 'gif') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-GIF.png';\n    } else if (ext === 'jpg') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-JPG.png';\n    } else if (ext === 'mov') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-MOV.png';\n    } else if (ext === 'mp3') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-MP3.png';\n    } else if (ext === 'mp4') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-MP4.png';\n    } else if (ext === 'mpeg') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-MPEG.png';\n    } else if (ext === 'mpg') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-MPG.png';\n    } else if (ext === 'png') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-PNG.png';\n    } else if (ext === 'ppt') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-PPT.png';\n    } else if (ext === 'txt') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-TXT.png';\n    } else if (ext === 'xls') {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/img-file-XLS.png';\n    } else {\n      return 'https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_document.svg';\n    }\n  }\n  // VD loader changes\n\n  showLoader() {\n    this.loadingSubject.next(true);\n  }\n\n  hideLoader() {\n    this.loadingSubject.next(false);\n  }\n}\n","// HA 19DEC23 File created for translation\nimport { InjectionToken } from '@angular/core';\n\nexport const i18nConfigService = new InjectionToken<any>('i18nConfig');\n","// HA 19DEC23 File created for translation\nimport { Injectable, Inject, EventEmitter, Output } from '@angular/core';\n// import arI18n from '../../assets/i18n/fr.i18n';\n// import enI18n from '../../assets/i18n/en.i18n';\nimport { i18nConfigService } from './i18n-config.service';\nimport { HttpClient } from '@angular/common/http';\nimport { DOCUMENT } from '@angular/common';\n@Injectable(\n  // {providedIn: 'root'}\n)\nexport class I18nService {\n  @Output() dropdownChanged = new EventEmitter<string>();\n  currentLanguage = '';\n\n  constructor(@Inject(i18nConfigService) public langList, @Inject(DOCUMENT) private document: Document) {\n    this.initLang();\n  }\n\n  initLang() {\n    if (localStorage.getItem('lang')) {\n      this.currentLanguage = localStorage.getItem('lang');\n      if(this.currentLanguage === 'rtl'){\n        this.languageChange(this.currentLanguage);\n      }\n    } else {\n      localStorage.setItem('lang', 'EN');\n      this.currentLanguage = 'ltr';\n    }\n  }\n\n  getString(key) {\n    // HA 28DEC23 added ternary to avoid exceptions\n    // VD 23JAN24 added ternary to avoid exceptions\n    return this.langList[this.langList.map((e, i) => e.lang === this.currentLanguage ? i : null).filter(e => e !== null)[0]]?.file?.default[key];\n  }\n\n  languageChange(lang) {\n    this.currentLanguage = lang;\n    let htmlTag = this.document.getElementsByTagName('html')[0] as HTMLHtmlElement;\n    htmlTag.dir = this.currentLanguage === 'rtl' ? 'rtl' : 'ltr';\n    localStorage.setItem('lang', lang);\n    this.dropdownChanged.emit(this.currentLanguage);\n  }\n}\n","// Changes commented out due to Angular version compatibility; will apply after upgrade.\n// // RS 06JAN2025\nimport { Component, EventEmitter, Input, OnInit, Output, OnDestroy, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { I18nService } from '../../i18n.service';\nimport { Subscription } from 'rxjs';\nimport { ChangeService } from '../../services/change.service';\nimport { DependencyMeta } from '../../interfaces/dependencyMeta';\nimport { QuillEditorComponent, QuillModules } from 'ngx-quill';\nimport { FormsModule } from '@angular/forms'\nimport Quill from 'quill';\nimport { Mention } from 'quill-mention';\nimport ImageResizor from 'quill-image-resizor'\nimport { CommonModule } from '@angular/common';\n\n// RS 17JAN2025\n// An array fontFamilyArr is created containing a list of font family names as strings.\nconst fontFamilyArr = [\"Roboto\", \"Roboto Condensed\", \"Arial\", \"Verdana\", \"Tahoma\", \"Trebuchet MS\",\n  \"Georgia\", \"Times New Roman\", \"Courier New\", \"Palatino Linotype\",\n  \"Segoe UI\", \"Calibri\", \"Calibri Light\", \"Sans-Serif\", \"Helvetica\",\n  \"Impact\", \"Garamond\", \"Comic Sans MS\", \"Lucida Console\", \"Franklin Gothic Medium\"];\n\n// Register Quill modules\nQuill.register('modules/mention', Mention);\nImageResizor.Quill = Quill\nQuill.register('modules/imageResizor', ImageResizor)\n\n// RS 17JAN2025\n//The Quill font style attributor is imported and it is registered with Quil\nlet fonts: any = Quill.import(\"attributors/style/font\");\nfonts.whitelist = fontFamilyArr;\nQuill.register(fonts, true);\n\nexport const QuillConfiguration: QuillModules = {\n    imageResizor: {},\n  toolbar: {\n    container: [\n      [{ 'font': fontFamilyArr }],  //RS 17JAN2025  Added font family dropdown\n      ['bold', 'italic', 'underline', 'strike'],\n      ['blockquote', 'code-block'],\n      [{ header: [1, 2, 3, 4, 5, 6, false] }],\n      [{ list: 'ordered' }, { list: 'bullet' }],\n      [{ color: [] }, { background: [] }],\n      [{ align: [] }],\n      ['link', 'image', 'video'],\n      ['formula'],\n      ['clean'],\n    ],\n  },\n  mention: {\n    allowedChars: /^[A-Za-z\\sÅÄÖåäö]*$/,\n    mentionDenotationChars: ['@', '#'],\n    source: function (searchTerm: string, renderList: any) {\n      const values = [\n        { id: 1, value: 'User 1' },\n        { id: 2, value: 'User 2' },\n      ];\n\n      if (searchTerm.length === 0) {\n        renderList(values, searchTerm);\n      } else {\n        const matches = values.filter((item) =>\n          item.value.toLowerCase().includes(searchTerm.toLowerCase())\n        );\n        renderList(matches, searchTerm);\n      }\n    },\n  },\n};\n\n// resize: {\n//     displaySize: true,\n//     modules: ['Resize', 'DisplaySize', 'Toolbar'],\n//     toolbarStyles: {\n//         backgroundColor: 'black',\n//         border: 'none',\n//         color: 'white'\n//     },\n//     handleStyles: {\n//         backgroundColor: 'black',\n//         border: 'none',\n//         color: 'white'\n//     }\n// },\n@Component({\n    imports: [QuillEditorComponent, FormsModule ,CommonModule],\n    selector: 'app-custom-rich-text',\n    standalone: true,\n    templateUrl: './custom-rich-text.component.html',\n    styleUrls: ['./custom-rich-text.component.css']\n})\n\nexport class CustomRichTextComponent implements OnInit, OnDestroy {\n  @Input() value: any | any[] = '';\n  @Input() placeholder: string;\n  @Input() error: any;\n  @Input() question: any;\n  @Input() rows:Number; //The number of visible text lines for the control\n  @Input() readOnly = false;\n  @Output() textValueChange: EventEmitter<string> = new EventEmitter<string>();\n  @Input() minLength?: number;\n  @Input() maxLength?: number;\n  // @Input() value: any = ''; // Set default value\n\n  quillConfiguration: QuillModules = QuillConfiguration;\n  subscription: Subscription;\n\n  constructor(\n    public i18nService: I18nService,\n    private changeService: ChangeService\n  ) { }\n\n  ngOnInit(): void {\n    if (this.value === undefined || this.value === null) {\n      this.value = '';\n      this.textValueChange.emit('');\n\n    }\n    this.initializeDependency();\n  }\n\n  // Separated dependency initialization for better organization\n  private initializeDependency(): void {\n    // AP-25MAR25 Parse subText if it's not already an object\n    this.question['subText'] = typeof this.question?.subText === 'object' ? this.question?.subText : JSON.parse(this.question['subText'] || {});\n    if (this.question?.subText) {\n        console.log('subText:', this.question.subText);\n        try {\n            const dependencyObj: DependencyMeta = this.question.subText;\n            if (dependencyObj?.sourceQuestionId) {\n                this.subscription = this.changeService.changeAnnounced$.subscribe(\n                    (changeValue) => {\n                        console.log('Change Value:', changeValue);\n                        if (changeValue && changeValue.valueObj &&\n                            changeValue.fromQuestionId === dependencyObj.sourceQuestionId) {\n                            this.value = changeValue.valueObj[dependencyObj.valueField];\n                            this.textValueChange.emit(this.value);\n                        }\n                        this.changeService.confirmChange(dependencyObj.sourceQuestionId);\n                    }\n                );\n            }\n        } catch (error) {\n            console.error('Error parsing subText:', error);\n        }\n    }\n}\n\n\n// onEditorChange(event: any): void {\n//   if (event && event.html !== undefined) {\n//     this.textValueChange.emit(event.html);\n//   } else {\n//     this.textValueChange.emit('');\n//   }\n// }\n// onEditorChange(event: any): void {\n//   console.log('Typing detected...', event.html);\n\n//   if (this.typingTimer) {\n//     clearTimeout(this.typingTimer); // Clear previous timer\n//   }\n//   this.typingTimer = setTimeout(() => {\n//     console.log('Debounced event fired:', event.html);\n\n//     const newValue = event?.html ? event.html : ''; // Ensure empty values are handled\n//     this.textValueChange.emit(newValue);\n//   }, this.doneTypingInterval);\n// }\n\n// RS 28JAN2015\nonEditorFocusOut(): void {\n  const currentValue = this.value || '';\n  this.textValueChange.emit(currentValue);\n  console.log('Rich Text Editor Focus Out - Emitting Value:', currentValue);\n}\n\n  // Added ngOnDestroy to prevent memory leaks\n  ngOnDestroy(): void {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n}\n\n\n","<!-- RS 06JAN25 -->\n<div class=\"rich-text-container\">\n  <quill-editor\n    [(ngModel)]=\"value\"\n    [placeholder]=\"placeholder\"\n    [modules]=\"quillConfiguration\"\n    [readOnly]=\"readOnly\"\n    (focusout)=\"onEditorFocusOut()\"\n    [class.error]=\"error\">\n  </quill-editor>\n  <div *ngIf=\"error\" class=\"error-message\">\n    {{ error }}\n  </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\n@Component({\n  selector: 'nxt-button',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './nxt-button.component.html',\n  styleUrls: ['./nxt-button.component.css']\n})\nexport class NxtButtonComponent implements OnInit {\n \n  @Input() buttonValue: string = ''; //SKS24JAN25 button text \n  @Input() buttonType: string = 'primary'; //SKS24JAN25 If the button type is 'text-only', it should display only the text without a border or outline. For 'grey-text', the button should have a border and a background color, but the text color should be gray, similar to 'blue-text'\n  @Input() type: string = 'button'; //SKS24JAN25 The button types are \"button,\" \"group,\" and \"dropdown.\"\n  @Input() buttonDisable: boolean = false; //SKS24JAN25 use this input to disable a button when needed.\n  @Input() fcBtnBgColor: string = ''; // Use this input to set a custom background color for the button.\n  @Input() fcBtnBorder: string = ''; // Use this input to set a custom border style for the button.\n  @Input() fcBtnTextColor: string = ''; // Use this input to set a custom text color for the button.\n  @Input() fcBtnHeight: string = ''; // Use this input to set a custom height for the button.\n  @Input() fcBtnWidth: string = ''; // Use this input to set a custom width for the button.\n  @Input() fcBtnIconLeftSrc: string = ''; // Use this input to set the source of the left-side icon for the button.\n  @Input() fcBtnIconRightSrc: string = ''; // Use this input to set the source of the right-side icon for the button.\n  @Input() fcBtnHoverBgColor: string = ''; // Use this input to set the background color of the button on hover.\n  @Input() fcBtnHoverTextColor: string = ''; // Use this input to set the text color of the button on hover.\n  @Input() fcBtnId: string = 'default'; // Use this input to set a custom ID for the button. Default is 'default'.\n  @Input() dataDismiss: string = ''; // Use this input to specify the dismiss action for the button (e.g., 'modal' to close a modal).\n  @Input() fcButtonBorder: string = '0px'; // Use this input to set the border size of the button. Default is '0px' for no border.\n  @Input() modalToTrigger: string = ''; // Use this input to specify the ID or target of the modal to be triggered.\n  @Input() isImageSvg: boolean = false; // Use this input to determine if the image is an SVG. Default is false (non-SVG).\n  @Input() tabIndex: any = '';// Use this input to set the tab index for the element, controlling the focus order.\n  @Input() buttonConfig: any = ''; // Use this input to pass configuration settings for the group and dropdown buttons (e.g., styles, actions).\n\n  @Output() buttonClickEmit:EventEmitter<any> = new EventEmitter<any>();\n  iconSrc: any = ''; // Ensure it's always a string\n  isDropdownOpen = false;\n\n  \n\n  // SKS24JAN25 dropdown button config\n\n  // dropdownButton = {\n  //   fcBtnBgColor: '#007bff',\n  //   fcBtnBorder: '1px solid #0056b3',\n  //   fcBtnTextColor: '#ffffff',\n  //   fcBtnHeight: '40px',\n  //   fcBtnWidth: '150px',\n  //   fcBtnHoverBgColor: '#0056b3',\n  //   fcBtnHoverTextColor: '#ffffff',\n  //   label: 'Dropdown',\n  //   iconSrc: '',\n  //   items: [\n  //     { label: 'Action 1',iconSrc: '', hover: false },\n  //     { label: 'Action 2',iconSrc: '', hover: false },\n  //     { label: 'Action 3',iconSrc: '', hover: false }\n  //   ]\n  // };\n  constructor(private elementRef: ElementRef) { }\n\n  ngOnInit(): void {}\n  //SKS24JAN25 Function to get styles for dropdown and group buttons based on the provided configuration.\n  getButtonStyles(config: any): { [key: string]: string } {\n    return {\n      '--fc-button-custom-bg': config.fcBtnBgColor || '',\n      '--fc-button-custom-border': config.fcBtnBorder || '',\n      '--fc-button-custom-color': config.fcBtnTextColor || '',\n      '--fc-button-custom-height': config.fcBtnHeight || '',\n      '--fc-button-custom-width': config.fcBtnWidth || '',\n      '--fc-button-hover-bg': config.fcBtnHoverBgColor || '',\n      '--fc-button-hover-text-color': config.fcBtnHoverTextColor || ''\n    };\n  }\n  \n\n  buttonClicked($event:any){\n    this.buttonClickEmit.emit($event);\n    if(this.isDropdownOpen){\n      this.isDropdownOpen=false\n    }\n  }\n\n  toggleDropdown() {\n    this.isDropdownOpen = !this.isDropdownOpen;\n  }\n//SKS24JAN25 Listener for clicks outside the dropdown button to close or manage its state.\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n    if (this.isDropdownOpen && !this.elementRef.nativeElement.contains(event.target)\n    ) {\n      this.isDropdownOpen = false;\n    }\n  }\n}\n","<!-- SKS24JAN25 group button -->\n<div *ngIf=\"type === 'group'\" class=\"btn-group\" role=\"group\" aria-label=\"Button Group\">\n    <button *ngFor=\"let btn of buttonConfig.buttons\"\n            type=\"button\"\n            class=\"btn btn-icon {{btn.buttonType}} tooltip-container\"\n            [attr.tabindex]=\"btn.tabIndex\"\n            [attr.data-bs-toggle]=\"btn.modalToTrigger ? 'modal' : null\"\n            [attr.data-bs-target]=\"btn.modalToTrigger ? '#' + btn.modalToTrigger : null\"\n            [ngStyle]=\"getButtonStyles(btn)\"\n            [disabled]=\"btn.buttonDisable\"\n            [attr.data-bs-dismiss]=\"btn.dataDismiss\"\n            (click)=\"buttonClicked(btn)\"\n            [attr.id]=\"btn.fcBtnId !== 'default' ? btn.fcBtnId : null\">\n        <img *ngIf=\"btn.isImageSvg\" [src]=\"btn.iconSrc\">\n        <span class=\"custom-tooltip\" \n            style=\"background-color:{{btn.tooltipBcColor}};\n            color:{{btn.tooltipColor}};\n            font-size:{{btn.tooltipFSize}}\">\n            {{ btn.tooltip }}\n            <div class=\"tooltip-pointer\" style=\"background-color:{{btn.tooltipBcColor}};\"></div>\n        </span>\n    </button>\n</div>\n  \n<!-- SKS24JAN25 single button -->\n<button type=\"button\"  *ngIf=\"type !== 'group' && type !== 'dropdown'\" class=\"btn btn-primary fc-button {{buttonType}}\" [tabindex]=\"tabIndex\"\n    [attr.data-bs-toggle]=\"modalToTrigger != '' ? 'modal' : ''\"\n    [attr.data-bs-target]=\"modalToTrigger != '' ? '#'+modalToTrigger : ''\"\n    style=\"--fc-button-custom-bg: {{fcBtnBgColor}};--fc-button-custom-border: {{fcBtnBorder}};--fc-button-custom-color: {{fcBtnTextColor}};--fc-button-custom-height: {{fcBtnHeight}};--fc-button-custom-width: {{fcBtnWidth}};--fc-button-hover-bg: {{fcBtnHoverBgColor}};--fc-button-hover-text-color: {{fcBtnHoverTextColor}};\"\n    [disabled]=\"buttonDisable\" [attr.data-bs-dismiss]='dataDismiss' (click)=\"buttonClicked($event)\"\n    [attr.id]=\"fcBtnId != 'default' ? fcBtnId : null\">\n    <img *ngIf=\"fcBtnIconLeftSrc != '' && isImageSvg\" src=\"{{fcBtnIconLeftSrc}}\"\n        class=\"fc-btn-icon left-icon\">\n    <img *ngIf=\"fcBtnIconLeftSrc != '' && !isImageSvg\" src=\"{{fcBtnIconLeftSrc}}\" class=\"fc-btn-icon left-icon\">\n    <span class=\"fc-btn-text\">{{buttonValue}}</span>\n    <img *ngIf=\"fcBtnIconRightSrc != '' && isImageSvg\" src=\"{{fcBtnIconRightSrc}}\"\n        class=\"fc-btn-icon right-icon\">\n    <img *ngIf=\"fcBtnIconRightSrc != '' && !isImageSvg\" src=\"{{fcBtnIconRightSrc}}\" class=\"fc-btn-icon right-icon\">\n</button>\n\n<!-- SKS24JAN25 dropdown button -->\n<div *ngIf=\"type === 'dropdown'\" class=\"dropdown\">\n    <svg class=\"clickable-img\" (click)=\"toggleDropdown()\"  width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n        <rect x=\"0.3\" y=\"0.3\" width=\"39.4\" height=\"39.4\" rx=\"11.7\" fill=\"#FAFBFD\" stroke=\"#D5D5D5\" stroke-width=\"0.6\"/>\n        <path d=\"M19.9999 25.6667C23.6818 25.6667 26.6666 22.6819 26.6666 19C26.6666 15.3181 23.6818 12.3334 19.9999 12.3334C16.318 12.3334 13.3333 15.3181 13.3333 19C13.3333 22.6819 16.318 25.6667 19.9999 25.6667Z\" fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        <path d=\"M17.6467 18.16L20.0001 20.5067L22.3534 18.16\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n    </svg>  \n    <div class=\"dropdown-menu\"  *ngIf=\"isDropdownOpen\">\n        <button *ngFor=\"let btn of buttonConfig.buttons\"\n            type=\"button\"\n            class=\"btn btn-icon {{btn.buttonType}} tooltip-container\"\n            [attr.tabindex]=\"btn.tabIndex\"\n            [attr.data-bs-toggle]=\"btn.modalToTrigger ? 'modal' : null\"\n            [attr.data-bs-target]=\"btn.modalToTrigger ? '#' + btn.modalToTrigger : null\"\n            [ngStyle]=\"getButtonStyles(btn)\"\n            [disabled]=\"btn.buttonDisable\"\n            [attr.data-bs-dismiss]=\"btn.dataDismiss\"\n            (click)=\"buttonClicked(btn)\"\n            [attr.id]=\"btn.fcBtnId !== 'default' ? btn.fcBtnId : null\">\n            <img *ngIf=\"btn.isImageSvg\" [src]=\"btn.iconSrc\">\n            <span class=\"fc-btn-text\" style=\"padding-left: 12px;\">{{btn.name}}</span>\n        </button>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n\n@Component({\n  selector: 'nxt-pagination',\n  standalone: true,\n  imports: [CommonModule, FormsModule],\n  templateUrl: './pagination.component.html',\n  styleUrl: './pagination.component.css'\n})\nexport class NxtPagination implements OnInit {\n  @Output() event = new EventEmitter<any>;\n  // page size Options\n  @Input() pageSizeOptions: number[] = [5, 10, 15, 20, 50];\n  /** The total number of records */\n  @Input() collectionSize = 0;\n\n  /** The number of records to display */\n  @Input() pageSize = 10;\n\n  /** Current page */\n  @Input() currentPage = 1;\n\n  /** The number of buttons to show either side of the current page */\n  @Input() maxSize = 2;\n\n  /** Display the First/Last buttons */\n  @Input() firstLastButtons = false;\n\n  /** Display the Next/Previous buttons */\n  @Input() nextPreviousButtons = true;\n\n  /** Display small pagination buttons */\n  @Input() small = false;\n\n  totalPages: any[] = [];\n\n  constructor() {}\n\n  ngOnInit(): void {\n    this.pageSize = this.pageSize ?? 10; // Ensure a default value\n    this.currentPage = this.currentPage === 0 ? 1 : this.currentPage\n    if (this.collectionSize) {\n      this.totalPages = new Array(Math.ceil(this.collectionSize / Number(this.pageSize)));\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.pageSize = this.pageSize ?? 10; // Ensure a default value\n    this.currentPage = this.currentPage === 0 ? 1 : this.currentPage ?? 1\n    if (this.collectionSize) {\n      this.totalPages = new Array(Math.ceil(this.collectionSize / Number(this.pageSize)));\n    }\n  }\n  get startIndex(): number {\n    return (this.currentPage - 1) * Number(this.pageSize);\n  }\n\n  get endIndex(): number {\n    return Math.min( Number(this.startIndex) + Number(this.pageSize), this.collectionSize);\n  }\n  /** Set page number */\n  selectPageNumber(pageNumber: number) {\n    this.currentPage = pageNumber;\n    this.emit()\n  }\n\n  /** Set next page number */\n  next() {\n    const nextPage = this.currentPage + 1;\n    nextPage <= this.totalPages.length && this.selectPageNumber(nextPage);\n  }\n\n  /** Set previous page number */\n  previous() {\n    const previousPage = this.currentPage - 1;\n    previousPage >= 1 && this.selectPageNumber(previousPage);\n  }\n  onPageSizeChange(newSize:any): void {\n    this.pageSize = newSize; // Update the pageSize\n    this.totalPages = new Array(Math.ceil(this.collectionSize / this.pageSize));\n    // Ensure the current page is within bounds\n    // if (this.currentPage > this.totalPages.length) {\n    //   this.currentPage = this.totalPages.length;\n    // }\n    this.currentPage = 1\n    this.emit(); // Emit an event if necessary\n  }    \n  emit(){\n    this.event.emit({\"length\":this.collectionSize, \"pageSize\": this.pageSize, \"pageIndex\" : this.currentPage})\n  }\n}","<!-- SKS24JAN25 -->\n<div class=\"flex content-space-between main-cont\">\n    <div class=\"info\">\n     <div *ngIf=\"endIndex\">\n      Showing data {{ startIndex + 1 }} to {{ endIndex }} of {{ collectionSize }} entries\n    </div>\n   </div>\n    <div>\n     <ul [class]=\"small ? 'pagination pagination-sm' : 'pagination'\" style=\"align-items: center; padding-top: 18px;\">\n        <!-- select button -->\n       <div style=\"font-size: 14px; font-weight: 400; padding-right: 10px; align-items: center;\" for=\"perPage\">Result per page</div>\n       <div class=\"dropdown-wrapper\">\n         <select id=\"perPage\" [ngModel]=\"pageSize\" (ngModelChange)=\"onPageSizeChange($event)\">\n           <option *ngFor=\"let size of pageSizeOptions\" [value]=\"size\">{{ size }}</option>\n         </select>\n         <svg class=\"dropdown-arrow\" width=\"9\" height=\"6\" viewBox=\"0 0 9 6\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n           <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M0.684136 0.767477C0.922999 0.5378 1.30282 0.545248 1.5325 0.784111L4.5 3.93431L7.4675 0.784111C7.69718 0.545248 8.077 0.5378 8.31587 0.767477C8.55473 0.997153 8.56218 1.37698 8.3325 1.61584L4.9325 5.21584C4.81938 5.33349 4.66321 5.39998 4.5 5.39998C4.33679 5.39998 4.18062 5.33349 4.0675 5.21584L0.667501 1.61584C0.437825 1.37698 0.445272 0.997153 0.684136 0.767477Z\" fill=\"#626262\"/>\n          </svg>   \n       </div>     \n       <!-- first button -->\n       <li [class]=\"currentPage === 1 ? 'page-item disabled' : 'page-item'\" *ngIf=\"firstLastButtons\" >\n         <button class=\"page-link\" (click)=\"selectPageNumber(1)\">««</button>\n       </li>\n       <!-- last button -->\n       <li [class]=\"currentPage === totalPages.length ? 'page-item disabled' : 'page-item'\" *ngIf=\"firstLastButtons\">\n         <button class=\"page-link\" (click)=\"selectPageNumber(totalPages.length)\">»»</button>\n       </li>\n       <!-- previous button -->\n       <li [class]=\"currentPage === 1 ? 'page-item disabled' : 'page-item'\" *ngIf=\"nextPreviousButtons\" >\n         <button class=\"page-link\" (click)=\"previous()\">«</button>\n       </li>\n       <!-- page numbers -->\n       <ng-container *ngFor=\"let p of totalPages; index as i\">\n         <li *ngIf=\"i + 1 >= currentPage - maxSize && i + 1 <= currentPage + maxSize\" [class]=\"currentPage === i + 1 ? 'page-item active' : 'page-item'\">\n           <button class=\"page-link\" (click)=\"selectPageNumber(i + 1)\">\n             {{ i + 1 }}\n           </button>\n         </li>\n       </ng-container>\n       <!-- next button -->\n       <li [class]=\"currentPage === totalPages.length ? 'page-item disabled' : 'page-item'\" *ngIf=\"nextPreviousButtons\">\n         <button class=\"page-link\" (click)=\"next()\">»</button>\n       </li>\n     </ul>\n    </div>\n </div>\n   ","import { Pipe, PipeTransform } from '@angular/core';\n\n\n@Pipe({\n  name: 'searchFilter',\n  standalone: true\n})\nexport class SearchFilterPipe implements PipeTransform {\n\n\n  //getting the array datas and search data from pipe element on every change\n  transform(items: any[], searchText: string, ele?:any): any[] {\n    if (!items) return [];\n    if (!searchText) return items;\n    return this.searchItems(items, searchText?.toLowerCase(), ele);\n  }\n  // passing that data here, and if the search element included in that array, that element will be returned in new array\n  private searchItems(items: any[], searchText: string, ele?:any): any[] {\n    let results: any[] = [];\n    items.forEach((data: any) => {\n      if(ele){\n        if (data[ele]?.toLowerCase().includes(searchText)) {\n          results.push(data);\n        }\n      } else {\n        if (data?.toLowerCase().includes(searchText)) {\n          results.push(data);\n        }\n      }\n    });\n    return results;\n  }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'date',\n  standalone: true,\n  pure: false\n})\nexport class DatePipe implements PipeTransform {\n  transform(value: any, format: string = 'MMM d, yyyy'): any {\n    const date = new Date(value);\n\n    // Check if the input is a valid date\n    if (isNaN(date.getTime())) {\n      return value; // Return the original value if invalid\n    }\n\n    // Format the valid date and return it\n    return new Intl.DateTimeFormat('en-US', {\n      month: 'short',\n      day: '2-digit',\n      year: 'numeric'\n    }).format(date);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'time',\n  standalone: true,\n  pure: false\n})\nexport class TimePipe implements PipeTransform {\n\n  transform(value: any, timeFormat: string = 'HH:mm'): any {\n    const date = new Date(value);\n\n    // Check if the input is a valid time\n    if (isNaN(date.getTime())) {\n      return value; // Return the original value if invalid\n    }\n\n    // Extract hours and minutes from the valid time\n    const hours = date.getHours().toString().padStart(2, '0');\n    const minutes = date.getMinutes().toString().padStart(2, '0');\n    return `${hours}:${minutes}`; // Return the formatted time\n  }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'editColumnCheck',\n  standalone: true\n})\nexport class EditColumnCheckPipe implements PipeTransform {\n\n  // SK10APR24 condition to check the edit column\n  transform(arg:any, element: any, editCol: any): any {\n    var returnVal = \"\";\n    if(editCol.length > 0){\n      if(typeof editCol[0] === 'string'){\n        if(editCol.includes(element)) returnVal = \"string\";\n      } else if(typeof editCol[0] === 'object'){\n        returnVal = (editCol.filter((col:any)=>col.name === element)).length > 0 ? \"object\" : \"\";\n      }\n    }\n    return returnVal \n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'editColumnDropdown',\n  standalone: true\n})\nexport class EditColumnDropdownPipe implements PipeTransform {\n\n  // SK10APR24 to check the data type of table value is dropdown\n  transform(arg:any, element: any, editCol: any): any {\n    var returnVal :any ;\n    returnVal = (editCol.filter((col:any)=>col.name === element));\n    return returnVal[0].values;\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'editColumnType',\n  standalone: true\n})\nexport class EditColumnTypePipe implements PipeTransform {\n// SK10APR24 to check the type of edit column in table\ntransform(arg:any, element: any, editCol: any): any {\n  var returnVal :any ;\n  returnVal = (editCol.filter((col:any)=>col.name === element));\n  return returnVal[0].type; \n}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'getValue',\n  standalone: true\n})\nexport class GetValuePipe implements PipeTransform {\n\n  transform(arg:any, element: any, column: any): any {\n    const initialEl = element;\n    let flds = column?.split('.');\n    for(let i=0; i<flds?.length; i++){\n      let splitFlds = flds[i].split('[');\n      if(splitFlds.length === 1){\n        if(typeof element[flds[i]] === \"number\"){\n          element = element[flds[i]] || 0 as any;\n          // VD 23Aug24 handle boolean Type\n        }else if(typeof element[flds[i]] === \"boolean\"){\n          element = element[flds[i]];\n        } else {\n          element = element[flds[i]] || \"\" as any;\n        }\n        \n      } else {\n        let index = Number(splitFlds[1].split(']')[0]);\n        if(typeof element[flds[i]] === \"number\"){\n          element = element[splitFlds[0]][index]  || 0 as any;\n          // VD 23Aug24 handle boolean Type\n        }else if(typeof element[flds[i]] === \"boolean\"){\n          element = element[splitFlds[0]][index];\n        }else {\n          element = element[splitFlds[0]][index]  || '' as any;\n        }\n      }\n    }\n   // Object.assign(initialEl, { [column]: element });\n    return element;  \n  }\n\n\n}\n","import { Component, ViewChild, Input, Output, EventEmitter, ElementRef, HostListener, ViewChildren, QueryList, Renderer2, SimpleChanges } from '@angular/core';\nimport { MatSort } from '@angular/material/sort';\nimport { CommonModule } from '@angular/common';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NxtButtonComponent } from '../button/nxt-button.component';\nimport { NxtPagination } from '../pagination/pagination.component';\nimport { SearchFilterPipe } from '../../pipe/search-filter/search-filter.pipe';\nimport { DatePipe } from '../../pipe/date/date.pipe';\nimport { TimePipe } from '../../pipe/time/time.pipe';\nimport { EditColumnCheckPipe } from '../../pipe/editColumnCheck/edit-column-check.pipe';\nimport { EditColumnDropdownPipe } from '../../pipe/editColumnDropdown/edit-column-dropdown.pipe';\nimport { EditColumnTypePipe } from '../../pipe/editColumnType/edit-column-type.pipe';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { APIMeta } from '../../interfaces/apimeta';\nimport { DataService } from '../../services/data.service';\nimport { ChangeService } from '../../services/change.service';\nimport { Subscription } from 'rxjs';\nimport { GetValuePipe } from '../../pipe/get-value.pipe';\n\n@Component({\n  selector: 'nxt-datatable',\n  standalone: true,\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    FormsModule,\n    NxtButtonComponent,\n    NxtPagination,\n    SearchFilterPipe,\n    DatePipe,\n    TimePipe,\n    EditColumnCheckPipe,\n    EditColumnDropdownPipe,\n    EditColumnTypePipe,\n    MatTooltipModule,\n    GetValuePipe\n    // RowResizerDirective\n  ],\n  templateUrl: './datatable.component.html',\n  styleUrl: './datatable.component.css'\n})\nexport class NxtDatatable {\n  @Input() data: any[] = [];  //  get data that to be displayed in a array\n  @Input() columns: Array<any> = []; // Columns have a label, a column type, and filter details.\n  @Input() withCheckBox: boolean;  // get if with or without checkbox in table\n  @Input() searchBar: boolean; // if it is true, the search bar will be displayed on table\n  @Input() tableSaveButton = false; // save button for editing LOP in payroll table,  changed name from 'saveLOP'\n  @Input() stickyColumn = false; // if the last column should be sticky, it should be sent as boolean value\n  @Input() tableWidth = '100%'; // width of table can be adjusted from parent, by default it is 100%\n  @Input() actionColumHeader = 'Action';  // to change the header for action column\n  @Input() actionButton: boolean;  //to show button colum as action\n  @Input() title: any;// the title for the table;\n  @Input() isButtons: boolean;// is button present in table;\n  @Input() buttonArray: any;// buttons to be displayed;\n  @Input() tableId: any; // id of table\n  @Input() isEditRow: boolean; // if it is true, the row can be edited\n  @Input() isDeleteRow: boolean; // if it is true, the row can be deleted\n  @Input() addInlineRecord: boolean; // if it is true, the row can be added inline\n  @Input() searchConfigs: any; // search configurations\n  @Input() direction: 'rtl' | 'ltr' = 'ltr'; // direction of table\n  @Input() pagination: any; // pagination configurations\n  @Input() actionButtonArray: any; // action button configurations\n  @Input() multipleFilter: any; // if pagination true then this will be used\n  @Input() isPagination: any; // pagination configurations if true then pagination will be enabled\n  @Input() isNosIndicator: any; // if true then no data indicator will be shown\n  @Input() isEditable: any; // if true then table will be editable\n  @Input() from: any; // from date paltform based initialize inputs ex:- 'formBuilder'\n  @Input() question: any; // question is used for nxt form builder table preview\n  @Input() rowTextSize: any; // size of row text\n  @Input() rowTextColor: any; // color of row text\n  @Input() apiMeta: string; // api meta is used for nxt form builder table preview\n  @Input() summaryRows: any; // Input for configurable summary rows\n  @Input() summaryColumns: any; // Input for summary columns config\n  @Input() isLoading: any; //SKS28MAR25 Input for loading indicator\n  @Input() tableConfig: any; // table config for nxt form builder table\n  @Input() tableParams: any; //SKS17APR25 Receives tableParams information from parent component\n  @Input() listViews: any[] = []; //SKS26APR25 Predefined list views\n\n  @Output() tableRowClick = new EventEmitter<any>; // datas to be passed when table row is clicked\n  @Output() onEditData = new EventEmitter<any>; // if edit button is clicked, the data of that row will be passed\n  @Output() saveButtonData = new EventEmitter<any>; // edited rows data will be passed\n  @Output() onDeleteData = new EventEmitter<any>;  // when delete button clicked pass the data\n  @Output() buttonEmit = new EventEmitter<any>; // this will emit a table top button click event\n  @Output() hyperLinkEmit = new EventEmitter<any>; // hyper link click event\n  @Output() sideNavEmit = new EventEmitter<{ data: any, col: any, config: any }>; // rightnav column emit\n  @Output() actionButtonEmit = new EventEmitter<any>; // datas to be passed when table row active button is clicked\n  @Output() columnSelected = new EventEmitter<{ column: string, data: any[] }>();\n  @Output() removeColumn = new EventEmitter<{ column: string, data: any[] }>();\n  @Output() valueChange: EventEmitter<any> = new EventEmitter<any>();\n  @Output() selectedValues = new EventEmitter<any[]>(); // to pass the selected checkbox values\n  @Output() fileEmit = new EventEmitter<any>(); // to pass the file\n  @Output() NxtTableParamsEmit = new EventEmitter<any>; //SKS17APR25 to pass the tableParams information\n  @Output() NxtTableEmit = new EventEmitter<any>;\n  // {\n  //   \"pagination\": {       // 4\n  //       \"pageSize\": 10,\n  //       \"pageIndex\": 10\n  //   },\n  //   \"tableSearch\": {      // 1\n  //       \"fields\" : [\n  //           \"lightType\",\n  //           \"system\",\n  //           \"status\"\n  //       ] ,\n  //       \"value\": 'r-001' \n  //   },  \n  //   \"searchFilterData\": {  // 2\n  //       \"lightType\": [\n  //           \"AA\",\n  //           \"BB\" \n  //       ]\n  //   },\n  //   \"sort\": {              // 3\n  //       \"column\": \"assetCode\",\n  //       \"direction\": \"asc\"\n  //   }\n  // }\n\n  @ViewChild(MatSort) sort!: MatSort;\n  @ViewChild('tableContainer') tableContainer!: ElementRef<HTMLElement>;\n\n  selection: any; // to get the selected row\n  stickyCondition!: number; // to get the sticky column index\n  searchFilter = false; // to get the search filter\n  filterArray: Array<any> = []; // to get the filter array\n  selectedFilter: any; // to get the selected filter\n  renderColumns: string = 'displayedColumns'; // to get the rendered columns\n  pageSizeOptions: Array<any>  // for pagination get the page size options\n  dataSource: any;  // for table data source\n  totalCount!: number // count of total records\n  searchBoxValue: any; // to get the search box value\n  prevSearch: any; // to get the previous search value\n  activeColumn: string | null = null; // Track the active column\n  isScrolled = false; // Boolean flag to track scroll state\n  isShadowHidden = false; // Boolean flag to track shadow state\n  currentSortColumn: string = ''; // to get the current sort column\n  currentSortDirection: 'asc' | 'desc' | 'none' = 'none'; // to get the current sort direction\n  originalData: any; // Store original data for sorting\n  hoveredColumn: string | null = null; // Track the hovered column\n  searchText: any; // to get the search text\n  multipleFilterArray: any; // to get the multiple filter array\n  filterDataArray: any = {} // to get the filter data array\n  isResized: boolean = false; // for table column resize\n  sFilterData: any; // to get the search filter data\n  headerLabels: Array<any> = []; // to get the header labels\n  displayedColumns: Array<any> = []; // to get the displayed columns\n  filterColumns: Array<any> = []; // to get the filter columns\n  sortColumns: Array<any> = []; // to get the filter columns\n  hyperLinkColumns: Array<string> = []; // to get the hyper link columns\n  editColumn: Array<any> = [];  // to get the edit column\n  dateColumns: Array<any> = []; // to get the date columns\n  timeColumns: Array<any> = [];  // to get the time columns\n  objectColumns: Array<any> = [];  // to get the object columns\n  fileColumns: Array<any> = [];  // to get the file columns\n  booleanColumns : Array<any> = [];  // to get the boolean columns\n  inlineElement: any // for add a new row on table\n  pageSize: any  // for pagination get the page size\n  pageIndex: any // for pagination get the page index\n  totalRecords: number; // for pagination get the total records\n  configPagination: boolean = false; // flag for config pagination\n  deleteData: any; // to get the delete row\n  deleteModal = false; // for conformation popup\n  dropdownActionButton: any; // for action column dropdown button\n  currentOpenIndex: number | null = null; // track the current open action dropdown icon index\n  clickListener: any; // action column dropdown button click listener for close a dropdown button\n  selectedColumn: string | null = null; // to get the selected column\n  subscription: Subscription;  // for table data subscription\n  deleteIndex: number; // to get the delete index\n  showPopover = true;\n  summaryValues: { [label: string]: number } = {}; // SKS20MAR25 Object to store summary row values\n  isSummaryColumn: boolean = false; // SKS20MAR25 Flag to check if the column is in the displycolumns array\n  isSummaryStartColumn: any[];\n  isSummaryEndColumn: any[];\n  filterBoxData: any;\n  filterTableNos: any;\n  selectedView: string = '';         // Selected list view name\n  isDropdownOpen: boolean = false; // Tracks dropdown visibility\n\n  constructor(private renderer: Renderer2, private dataService: DataService, private changeService: ChangeService) { }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.dataSource = { data: [] }; // or use a proper data structure\n    // console.log(\"ngOnChanges is running\")\n    if (this.from === 'formBuilder') {\n      this.data = this.question?.input ? this.question?.input : []\n      const parsedMeta = typeof this.question['fieldsMeta'] === 'object' ? this.question['fieldsMeta'] : JSON.parse(this.question['fieldsMeta']);\n      if ( parsedMeta === null ||  parsedMeta === undefined || !Array.isArray(parsedMeta) || parsedMeta?.length === 0) {\n        console.warn('No valid metadata provided');\n        return;\n      }\n      if (this.tableConfig) {\n        const config = this.tableConfig;\n        this.isNosIndicator = config?.isNosIndicator !== false;\n        this.addInlineRecord = config.addInlineRecord !== false;\n        this.isPagination = config.isPagination !== false;\n        this.actionButton = config.actionButton !== false;\n        this.isDeleteRow = config.isDeleteRow !== false;\n        this.isEditRow = config.isEditRow !== false;\n        this.searchBar = config.searchBar !== false;\n        this.isButtons = config.isButtons !== false; //summaryColumn\n        this.pageSize = config.itemsPerPage || 5;\n      }\n      this.headerLabels = parsedMeta\n        .filter(column => column.summaryColumn !== true && column.summaryRow !== true && column.label) // Exclude only when explicitly true\n        .map(column => column.label);\n\n      this.displayedColumns = parsedMeta\n        .filter(column => column.summaryColumn !== true && column.summaryRow !== true && column.apiName) // Exclude only when explicitly true\n        .map(column => column.apiName);\n\n        this.filterColumns = parsedMeta.filter(column => column.filter === true).map(column => column.apiName);\n        this.sortColumns = parsedMeta.filter(column => column.sort === true).map(column => column.apiName);\n        this.hyperLinkColumns = parsedMeta.filter(column => column.hyperLink === true).map(column => column.apiName);\n        this.editColumn = parsedMeta.filter(column => column.readOnly === false).map(column => column.apiName);\n        this.dateColumns = parsedMeta.filter(column => column.type === 'Date').map(column => column.apiName);\n        this.timeColumns = parsedMeta.filter(column => column.type === 'Time').map(column => column.apiName);\n        this.objectColumns = parsedMeta.filter(column => column.type === 'Object').map(column => column.apiName);\n        this.fileColumns = parsedMeta.filter(column => column.type === 'File').map(column => column.apiName);\n        this.booleanColumns = parsedMeta.filter(column => column.type === 'Boolean').map(column => column.apiName);\n\n      this.summaryColumns = parsedMeta\n        .filter(column => column.summaryColumn === true)\n        .map(({ apiName, fldType, ...rest }) => ({\n          fieldName: apiName,\n          type: fldType,\n          ...rest\n        }));\n      this.summaryRows = parsedMeta\n        .filter(column => column.summaryRow === true)\n        .map(({ apiName, fldType, ...rest }) => ({\n          fieldName: apiName,\n          type: fldType,\n          ...rest\n        }));\n    }\n    // Ensure `this.data` is an array\n    if (!this.data || !Array.isArray(this.data)) {\n      console.warn('Data is not initialized or is not an array');\n      this.data = [];  // Initialize as an empty array if it's not valid\n    }\n    // Ensure `this.dataSource.data` is initialized\n    //SKS15FEB25 Initialize this in your data fetch method\n    this.originalData = [...this.data];\n    this.sFilterData = [...this.data];\n    this.dataSource.data = this.originalData;\n    this.pageSize = this.pagination?.pageSize ? this.pagination['pageSize'] : this.pageSize || 10;\n    this.pageIndex = this.pagination?.pageIndex ? this.pagination['pageIndex'] : this.pageIndex || 1;\n    this.totalRecords = this.pagination?.totalRecords ? this.pagination['totalRecords'] : undefined;\n    this.pageSizeOptions = this.pagination?.pageSizeOptions ? this.pagination['pageSizeOptions'] : ['5', '10', '25', '50', '100', '200'];\n    this.configPagination = !!(this.pagination && Object.keys(this.pagination).length > 0);\n    this.isPagination === undefined || this.isPagination === true ? this.isPagination = true : this.isPagination = false;\n    this.isNosIndicator === undefined || this.isNosIndicator === true ? this.isNosIndicator = true : this.isNosIndicator = false;\n    this.isEditable === undefined || this.isEditable === false ? this.isEditable = false : this.isEditable = true\n\n\n    this.headerLabels = this.from !== 'formBuilder' ? this.columns.map(column => column.label) : this.headerLabels;\n    this.displayedColumns = this.from !== 'formBuilder' ? this.columns.map(column => column.fieldName) : this.displayedColumns;\n    // SKS20MAR25 Check if the displycolumn's have a summary column\n    if (this.summaryColumns && this.summaryColumns.length > 0) {\n      this.displayedColumns = [...this.displayedColumns, ...this.summaryColumns.map(column => column.fieldName)];\n      this.headerLabels = [...this.headerLabels, ...this.summaryColumns.map(column => column.label)];\n    }\n    if (this.summaryRows && this.summaryRows.length > 0 && this.displayedColumns.length > 0) {\n      this.isSummaryColumn = this.displayedColumns.some(element => element === this.summaryRows[0].column);\n      if (this.isSummaryColumn) {\n        const index = this.displayedColumns.indexOf(this.summaryRows[0].column);\n        if (index !== -1) {\n          this.isSummaryStartColumn = this.displayedColumns.slice(0, index - 1);\n          this.isSummaryEndColumn = this.displayedColumns.slice(index + 1);\n        }\n      }\n    }\n    this.filterColumns =  this.from !== 'formBuilder' ? this.columns.filter(column => column.filter === true).map(column => column.fieldName) : this.filterColumns;\n    this.sortColumns =  this.from !== 'formBuilder' ? this.columns.filter(column => column.sort === true).map(column => column.fieldName) : this.sortColumns;\n    this.hyperLinkColumns =  this.from !== 'formBuilder' ? this.columns.filter(column => column.hyperLink === true).map(column => column.fieldName) : this.hyperLinkColumns;\n    this.editColumn = this.from !== 'formBuilder' ? this.columns.filter(column => column.edit === true).map(column => column.fieldName) : this.editColumn;\n    this.dateColumns =  this.from !== 'formBuilder' ? this.columns.filter(column => column.fldType === 'date').map(column => column.fieldName) : this.dateColumns;\n    this.timeColumns =  this.from !== 'formBuilder' ? this.columns.filter(column => column.fldType === 'time').map(column => column.fieldName) : this.timeColumns;\n    this.objectColumns =  this.from !== 'formBuilder' ? this.columns.filter(column => column.fldType === 'object').map(column => column.fieldName) : this.objectColumns;\n    this.fileColumns =  this.from !== 'formBuilder' ? this.columns.filter(column => column.fldType === 'file').map(column => column.fieldName) : this.fileColumns;\n    this.booleanColumns =  this.from !== 'formBuilder' ? this.columns.filter(column => column.fldType === 'boolean').map(column => column.fieldName) : this.booleanColumns;\n\n    this.inlineElement = Object.fromEntries(this.displayedColumns.map(key => [key, \"\"]));\n\n    this.dropdownActionButton = (this.actionButtonArray?.buttonArray && this.actionButtonArray?.buttonArray?.length > 0) ? this.actionButtonArray?.buttonArray?.slice(this.actionButtonArray?.size) : [];\n    \n    //SKS26APR25 Convert string array to object array with `name` property\n    if (this.listViews.length && typeof this.listViews[0] === 'string') {\n      this.listViews = this.listViews.map(view => ({ name: view }));\n    }\n    this.listViews && this.listViews.length > 0 ? this.selectListView(this.listViews[0].name) : ''\n    this.selection = new SelectionModel<any>(true, []);\n    if (!this.totalRecords && this.data && this.isPagination) {\n      this.dataSource.data = this.data?.slice(0, this.pageSize || 10);\n    } else if (!this.isPagination) {\n      this.dataSource.data = this.data\n    }\n    setTimeout(() => {\n      this.dataSource.sort = this.sort;\n    }, 100)\n    this.totalCount = this.totalRecords || this.data?.length\n    this.filterTableNos = this.totalRecords || this.data?.length\n    if (this.stickyColumn === true && this.displayedColumns) {\n      this.stickyCondition = this.displayedColumns?.length;\n    } else {\n      this.stickyCondition = this.displayedColumns?.length + 1;\n    }\n    if (this.withCheckBox && this.actionButton) {\n      this.renderColumns = 'both';\n    } else if (this.withCheckBox) {\n      this.renderColumns = 'select';\n    } else if (this.actionButton) {\n      this.renderColumns = 'action';\n    }\n    if (this.searchConfigs?.searchFilterVal) {\n      this.searchBoxValue = this.searchConfigs?.searchFilterVal; // Show value in the search box\n      this.prevSearch = this.searchConfigs?.searchFilterVal;\n    }\n    if (this.filterColumns?.length > 0 && !this.configPagination) {\n      this.multipleFilterArray = {};\n      const filtObjs: any = {};\n      this.filterColumns.forEach((element: any) => {\n        this.multipleFilterArray[element] = null;\n        filtObjs[element] = [];\n      });\n      this.data.forEach(element => {\n        this.filterColumns.forEach((key: any) => {\n          const value = this.getValue(element, key);  // <- get nested value\n    \n          if (value !== undefined) {\n            filtObjs[key].push(value);\n            this.multipleFilterArray[key] = new Set(filtObjs[key]);\n          }\n        });\n      });\n      this.multipleFilterArray = this.multipleFilterArray;\n    } else {\n      this.multipleFilterArray = this.multipleFilter;\n    }\n    setTimeout(() => {\n      if (this.tableContainer?.nativeElement) {\n        const tableBody = this.tableContainer.nativeElement.querySelector('.table-body');\n        if (tableBody && this.isPagination) {\n          this.isShadowHidden = !(tableBody.scrollHeight < 450)\n        }\n      }\n    }, 1500); // Waits 100ms for rendering\n    // SKS20MAR25 Initialize summaryValues for input rows and compute values\n    if (changes['summaryRows'] || changes['summaryColumns'] || changes['data']) {\n      this.computeSummaryColumns(); // Compute per-row summary columns first\n      this.summaryRows?.forEach(row => {\n        if (row.type === 'input' && this.summaryValues[row.fieldName] === undefined) {\n          this.summaryValues[row.fieldName] = 0; // Default to 0 for inputs\n        }\n      });\n      this.computeSummaryValues();\n    }\n    this.searchConfigs && this.searchBoxValue ? this.emptySearch(this.searchBoxValue) : this.applyFilter(this.searchBoxValue) // SKS17APR25 update search box value\n  }\n\n  ngOnInit(): void {\n    this.dataSource = { data: [] }; // or use a proper data structure\n    // SKS13MAR25 get data from question if from formBuilder\n    if (this.from === 'formBuilder') {\n      this.data = this.question?.input ? this.question?.input : []\n      const parsedMeta = typeof this.question['fieldsMeta'] === 'object' ? this.question['fieldsMeta'] || [] : JSON.parse(this.question['fieldsMeta']);\n      if ( parsedMeta === null ||  parsedMeta === undefined || !Array.isArray(parsedMeta) || parsedMeta?.length === 0) {\n        console.warn('No valid metadata provided');\n        return;\n      }\n      if (this.tableConfig) {\n        const config = this.tableConfig;\n        this.isNosIndicator = config?.isNosIndicator !== false;\n        this.addInlineRecord = config.addInlineRecord !== false;\n        this.isPagination = config.isPagination !== false;\n        this.actionButton = config.actionButton !== false;\n        this.isDeleteRow = config.isDeleteRow !== false;\n        this.isEditRow = config.isEditRow !== false;\n        this.searchBar = config.searchBar !== false;\n        this.isButtons = config.isButtons !== false;\n        this.pageSize = config.itemsPerPage || 5;\n      }\n      this.headerLabels = parsedMeta\n        .filter(column => column.summaryColumn !== true && column.summaryRow !== true && column.label) // Exclude only when explicitly true\n        .map(column => column.label);\n\n      this.displayedColumns = parsedMeta\n        .filter(column => column.summaryColumn !== true && column.summaryRow !== true && column.apiName) // Exclude only when explicitly true\n        .map(column => column.apiName);\n\n        this.filterColumns = parsedMeta.filter(column => column.filter === true).map(column => column.apiName);\n        this.sortColumns = parsedMeta.filter(column => column.sort === true).map(column => column.apiName);\n        this.hyperLinkColumns = parsedMeta.filter(column => column.hyperLink === true).map(column => column.apiName);\n        this.editColumn = parsedMeta.filter(column => column.readOnly === false).map(column => column.apiName);\n        this.dateColumns = parsedMeta.filter(column => column.fldType === 'Date').map(column => column.apiName);\n        this.timeColumns = parsedMeta.filter(column => column.fldType === 'Time').map(column => column.apiName);\n        this.objectColumns = parsedMeta.filter(column => column.fldType === 'Object').map(column => column.apiName);\n        this.fileColumns = parsedMeta.filter(column => column.fldType === 'File').map(column => column.apiName);\n        this.booleanColumns = parsedMeta.filter(column => column.fldType === 'Boolean').map(column => column.apiName);\n\n      this.summaryColumns = parsedMeta\n        .filter(column => column.summaryColumn === true)\n        .map(({ apiName, fldType, ...rest }) => ({\n          fieldName: apiName,\n          type: fldType,\n          ...rest\n        }));\n      this.summaryRows = parsedMeta\n        .filter(column => column.summaryRow === true)\n        .map(({ apiName, fldType, ...rest }) => ({\n          fieldName: apiName,\n          type: fldType,\n          ...rest\n        }));\n        if (this.apiMeta !== undefined) {\n          let options = [];\n          // AP-26MAR25 Ensure that this.apiMeta is always an object.  \n         //AP-26MAR25 If it's already an object, keep it as is; otherwise, parse it from a JSON string.\n          this.apiMeta = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);\n          let apiObj: any = this.apiMeta;\n          if (apiObj && apiObj.endpoint) {\n          this.dataService.apiResponse(apiObj.endpoint)?.subscribe((apiResponse) => {\n            let responses;\n            if (apiObj.variable) {\n              // VD 22May24 - handling multiple child objects\n              responses = this.dataService.getValue(apiResponse, apiObj.variable);\n              let results = [];\n              // HA 19JAN24 To avoid undefined error in console\n              for (let i = 0; i < responses?.length; i++) {\n                var resp = responses[i];\n                results.push(resp);\n              }\n              options = results;\n            } else {  // VD 19JAN24 - if response has value(which is array) only\n              responses = apiResponse;\n              options = responses;\n            }\n            options = options.map((obj: any) => ({ ...obj, edit: false }));\n            this.data = options;\n\n          });\n        }\n\n        // VD NOV23 - handle the dependent update for dropdown\n        let sourceId = apiObj?.sourceQuestionId;\n        let field = apiObj?.field;        // VD 13MAY24 - dynamic field changes\n        if (sourceId) {\n          // // VD 10May24 Subscribe for the changes\n          this.subscription = this.changeService.changeAnnounced$.subscribe(\n            (changeValue) => {\n              if (changeValue != undefined) {\n                if (changeValue.valueObj != undefined && changeValue.fromQuestionId == apiObj.sourceQuestionId) {\n                  options = options.map((obj: any) => ({ ...obj, edit: false }));\n                  let item = changeValue.valueObj;\n                  let validItem = true;\n                  // VD 13MAY24 - bind dynamic field\n                  if (this.data.length > 0) {\n                    this.data.forEach(element => {\n                      // VD 26Jun24 - to handle multiple objects\n                      const objElementValue = this.dataService.getValue(element, field);\n                      const objItemValue = this.dataService.getValue(item, field)\n                      if (objElementValue == objItemValue) {\n                        validItem = false;\n                      }\n                    });\n                  }\n                  //RS 14FEB2025\n                  //Update Pagination before emit\n                  if (validItem) {\n                    if (this.data.length > 0) {\n                      this.data = [...this.data, item];\n                    } else {\n                      this.data.push(item);\n                    }\n                    this.data = [...this.data];\n                    this.emitTableDataValue(this.data);\n                    // SKS20MAR25 Manually trigger ngOnChanges\n                    this.ngOnChanges({});\n                  }\n                }\n                this.changeService.confirmChange(apiObj?.sourceQuestionId);\n              }\n            }\n          );\n        }\n      }\n    }\n    this.searchBar === undefined || this.searchBar === true ? this.searchBar = true : this.searchBar = false;\n    this.withCheckBox === undefined || this.withCheckBox === false ? this.withCheckBox = false : this.withCheckBox = true;\n    this.isEditRow === undefined || this.isEditRow === false ? this.isEditRow = false : this.isEditRow = true;\n    this.isDeleteRow === undefined || this.isDeleteRow === false ? this.isDeleteRow = false : this.isDeleteRow = true;\n    this.actionButton === undefined || this.actionButton === false ? this.actionButton = false : this.actionButton = true;\n    this.isButtons === undefined || this.isButtons === false ? this.isButtons = false : this.isButtons = true;\n    this.addInlineRecord === undefined || this.addInlineRecord === false ? this.addInlineRecord = false : this.addInlineRecord = true;\n    this.isPagination === undefined || this.isPagination === true ? this.isPagination = true : this.isPagination = false;\n    this.isNosIndicator === undefined || this.isNosIndicator === true ? this.isNosIndicator = true : this.isNosIndicator = false;\n    this.isEditable === undefined || this.isEditable === false ? this.isEditable = false : this.isEditable = true\n\n\n    this.headerLabels = this.from !== 'formBuilder' ? this.columns.map(column => column.label) : this.headerLabels;\n    this.displayedColumns = this.from !== 'formBuilder' ? this.columns.map(column => column.fieldName) : this.displayedColumns;\n    if (this.summaryColumns && this.summaryColumns.length > 0) {\n      this.displayedColumns = [...this.displayedColumns, ...this.summaryColumns.map(column => column.fieldName)];\n      this.headerLabels = [...this.headerLabels, ...this.summaryColumns.map(column => column.label)];\n    }\n\n    this.filterColumns =this.from !== 'formBuilder' ? this.columns.filter(column => column.filter === true).map(column => column.fieldName) : this.filterColumns;\n    this.sortColumns =this.from !== 'formBuilder' ? this.columns.filter(column => column.sort === true).map(column => column.fieldName) : this.sortColumns;\n    this.hyperLinkColumns =this.from !== 'formBuilder' ? this.columns.filter(column => column.hyperLink === true).map(column => column.fieldName) : this.hyperLinkColumns;\n    this.editColumn = this.from !== 'formBuilder' ? this.columns.filter(column => column.edit === true).map(column => column.fieldName) : this.editColumn;\n    this.dateColumns =this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'date').map(column => column.fieldName): this.dateColumns;\n    this.timeColumns =this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'time').map(column => column.fieldName) : this.timeColumns;\n    this.objectColumns =this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'object').map(column => column.fieldName) : this.objectColumns;\n    this.fileColumns =this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'file').map(column => column.fieldName) : this.fileColumns;\n    this.booleanColumns =this.from !== 'formBuilder' ? this.columns.filter(column => column.type === 'boolean').map(column => column.fieldName) : this.booleanColumns;\n\n    this.inlineElement = Object.fromEntries(this.displayedColumns.map(key => [key, \"\"]));\n\n    this.pageSize = this.pagination?.pageSize ? this.pagination['pageSize'] : this.tableParams?.pagination?.pageSize ||10;\n    this.pageIndex = this.pagination?.pageIndex ? this.pagination['pageIndex'] : this.tableParams?.pagination?.pageIndex ||1;\n    this.totalRecords = this.pagination?.totalRecords ? this.pagination['totalRecords'] : undefined;\n    this.pageSizeOptions = this.pagination?.pageSizeOptions ? this.pagination['pageSizeOptions'] : ['5', '10', '25', '50', '100', '200'];\n    this.configPagination = !!(this.pagination && Object.keys(this.pagination).length > 0);\n\n    this.dropdownActionButton = this.actionButtonArray?.buttonArray?.slice(this.actionButtonArray?.size);\n\n    this.originalData = [...this.data];\n    this.sFilterData = [...this.data];\n    this.dataSource.data = this.originalData;\n\n    //SKS26APR25 Convert string array to object array with `name` property\n    if (this.listViews.length && typeof this.listViews[0] === 'string') {\n      this.listViews = this.listViews.map(view => ({ name: view }));\n    }\n    this.listViews && this.listViews.length > 0 ? this.selectListView(this.listViews[0].name) : ''\n    if (!this.configPagination && this.data && this.isPagination) {\n      this.dataSource.data = this.data?.slice(0, this.pageSize || 10);\n    } else if (!this.isPagination) {\n      this.dataSource.data = this.data\n    }\n    if (this.filterColumns?.length > 0 && !this.configPagination) {\n      this.multipleFilterArray = {};\n      const filtObjs: any = {};\n      this.filterColumns.forEach((element: any) => {\n        this.multipleFilterArray[element] = null;\n        filtObjs[element] = [];\n      });\n      this.data.forEach(element => {\n        this.filterColumns.forEach((key: any) => {\n          const value = this.getValue(element, key);  // <- get nested value\n    \n          if (value !== undefined) {\n            filtObjs[key].push(value);\n            this.multipleFilterArray[key] = new Set(filtObjs[key]);\n          }\n        });\n      });\n      this.multipleFilterArray = this.multipleFilterArray;\n    } else {\n      this.multipleFilterArray = this.multipleFilter;\n    }\n    this.selection = new SelectionModel<any>(true, []);\n    setTimeout(() => {\n      this.dataSource.sort = this.sort;\n    }, 0)\n    this.totalCount = this.totalRecords || this.data?.length\n    this.filterTableNos = this.totalRecords || this.data?.length\n    const NxtDataTable = JSON.parse(localStorage.getItem('NxtDataTable'));\n    this.currentSortColumn = NxtDataTable?.currentSortColumn;\n    this.currentSortDirection = NxtDataTable?.currentSortDirection;\n    if (NxtDataTable?.addRecord === true) {\n      this.pageSize = NxtDataTable?.pageSize\n      this.pageIndex = NxtDataTable?.pageIndex\n      var obj: any = {};\n      const keys = Object.keys(this.inlineElement);\n      keys.forEach((elementKey: any) => {\n        obj[elementKey] = '';\n      });\n      this.data.push(obj);\n      const data: any = this.data;\n      this.dataSource.data = data;\n\n      this.selection.select(this.data[this.data.length - 1]);\n      this.data[this.data.length - 1].editRow = true;\n      localStorage.setItem('NxtDataTable', JSON.stringify({ addRecord: false, pageSize: 10, pageIndex: this.pageIndex, currentSortColumn: this.currentSortColumn, currentSortDirection: this.currentSortDirection }));\n    }\n    if (this.stickyColumn === true && this.displayedColumns) {\n      this.stickyCondition = this.displayedColumns?.length;\n    } else {\n      this.stickyCondition = this.displayedColumns?.length + 1;\n    }\n    if (this.withCheckBox && this.actionButton) {\n      this.renderColumns = 'both';\n    } else if (this.withCheckBox) {\n      this.renderColumns = 'select';\n    } else if (this.actionButton) {\n      this.renderColumns = 'action';\n    }\n\n    // SKS19MAR25 add first line for formbuilder table\n    if (this.isEditable) { this.addTableRecord(this.inlineElement) }\n\n    setTimeout(() => {\n      if (this.tableContainer?.nativeElement) {\n        const tableBody = this.tableContainer.nativeElement.querySelector('.table-body');\n        if (tableBody && this.isPagination) {\n          this.isShadowHidden = !(tableBody.scrollHeight < 450)\n        }\n      }\n    }, 1500); // Waits 100ms for rendering\n    // SKS17APR25 table parems data update\n    if (this.searchConfigs?.searchFilterVal) {\n      this.searchBoxValue = this.searchConfigs?.searchFilterVal; // Show value in the search box\n      this.prevSearch = this.searchConfigs?.searchFilterVal;\n    } else if(this.tableParams?.tableSearch){\n      this.searchBoxValue = this.tableParams?.tableSearch;\n    }\n    this.searchConfigs && this.searchBoxValue ? this.emptySearch(this.searchBoxValue) : this.applyFilter(this.searchBoxValue)\n    this.filterDataArray = this.tableParams?.searchFilterData ? this.tableParams?.searchFilterData : {};\n    this.sortData(this.tableParams?.sort?.column, this.tableParams?.sort?.direction)\n  }\n\n  // SKS20MAR25 summary columns calc\n  computeSummaryColumns() {\n    if (this.summaryColumns && this.summaryColumns.length > 0) {\n      this.data = this.data.map(row => {\n        const newRow = { ...row };\n        this.summaryColumns.forEach(summaryCol => {\n          if (summaryCol.type === 'calculation' && summaryCol.operation === 'sum' && summaryCol.operands) {\n            const sum = summaryCol.operands.reduce((acc, operand) => acc + (Number(newRow[operand]) || 0), 0);\n            newRow[summaryCol.fieldName] = sum;\n          } else if (summaryCol.type === 'calculation' && summaryCol.operation === 'subtract' && summaryCol.operands) {\n            const [firstOperand, ...restOperands] = summaryCol.operands;\n            let sum = Number(newRow[firstOperand]) || 0; // Start with the first operand\n            sum = restOperands.reduce((acc, operand) => acc - (Number(newRow[operand]) || 0), sum);\n            newRow[summaryCol.fieldName] = sum;\n          } else if (summaryCol.type === 'calculation' && summaryCol.operation === 'multiply' && summaryCol.operands) {\n            const product = summaryCol.operands.reduce((acc, operand) => acc * (Number(newRow[operand]) || 0), 1); // Start with 1\n            newRow[summaryCol.fieldName] = product;\n          }\n        });\n        return newRow;\n      });\n      this.dataSource.data = this.data; // Update dataSource\n      if (!this.totalRecords && this.data && this.isPagination) {\n        this.dataSource.data = this.data?.slice(0, this.pageSize || 10);\n      } else if (!this.isPagination) {\n        this.dataSource.data = this.data\n      }\n    }\n  }\n  // SKS20MAR25 Compute values for summary rows\n  computeSummaryValues() {\n    this.summaryRows?.forEach(row => {\n      if (row.type === 'calculation') {\n        if (row.operation === 'sum' && row.column) {\n          // Correct sum operation\n          this.summaryValues[row.fieldName] = this.data.reduce(\n            (acc, dataRow) => acc + (Number(dataRow[row.column]) || 0),\n            0\n          );\n        } else if (row.operation === 'subtract' && row.column) {\n          // Subtract should start with the first value\n          this.summaryValues[row.fieldName] = this.data.reduce(\n            (acc, dataRow, index) => index === 0 ? Number(dataRow[row.column]) || 0 : acc - (Number(dataRow[row.column]) || 0),\n            0\n          );\n        } else if (row.operation === 'multiply' && row.column) {\n          // Multiply should start with 1\n          this.summaryValues[row.fieldName] = this.data.reduce(\n            (acc, dataRow) => acc * (Number(dataRow[row.column]) || 0), // Use 1 instead of 0\n            1\n          );\n        } else if (row.operation === 'subtract' && row.operands) {\n          // Subtract based on operands\n          const [op1, op2] = row.operands;\n          this.summaryValues[row.fieldName] = (this.summaryValues[op1] || 0) - (this.summaryValues[op2] || 0);\n        } else if (row.operation === 'sum' && row.operands) {\n          // Sum based on operands\n          const [op1, op2] = row.operands;\n          this.summaryValues[row.fieldName] = (this.summaryValues[op1] || 0) + (this.summaryValues[op2] || 0);\n        } else if (row.operation === 'multiply' && row.operands) {\n          // Multiply based on operands\n          const [op1, op2] = row.operands;\n          this.summaryValues[row.fieldName] = (this.summaryValues[op1] || 0) * (this.summaryValues[op2] || 0);\n        }\n      }\n    });\n  }\n\n  // SKS20MAR25 Handle manual input changes in summary rows \n  onSummaryInputChange() {\n    this.computeSummaryValues();\n  }\n  // SKS15FEB25 Custom sort function\n  sortData(column: string, sortingState?: any | undefined) {\n    // Define sorting states\n    const sortingStates = ['asc', 'desc', 'none'];\n    if (!this.configPagination || this.dataSource.data.length === this.totalRecords) {\n      // Determine the current sorting state\n      if (this.currentSortColumn === column && !sortingState) {\n        // Move to the next sorting state\n        const currentIndex = sortingStates.indexOf(this.currentSortDirection);\n        this.currentSortDirection = sortingStates[(currentIndex + 1) % sortingStates.length] as \"asc\" | \"desc\" | \"none\";\n      } else {\n        // If a new column is selected, start with ascending sort\n        this.currentSortColumn = column;\n        this.currentSortDirection = sortingState || 'asc';\n      }\n      const data = [...this.dataSource.data];\n      // Only sort if the direction is 'asc' or 'desc'\n      if (this.currentSortDirection === 'asc' || this.currentSortDirection === 'desc') {\n        data.sort((a, b) => {\n          let valueA = this.getValue(a, column);\n          let valueB = this.getValue(b, column);\n          // Handle undefined or null values\n          if (valueA == null && valueB == null) return 0; // Both are null/undefined\n          if (valueA == null) return this.currentSortDirection === 'asc' ? 1 : -1; // valueA is null\n          if (valueB == null) return this.currentSortDirection === 'asc' ? -1 : 1; // valueB is null\n          // Handle date sorting\n          if (this.isDateColumn(column)) {\n            const dateA = new Date(valueA);\n            const dateB = new Date(valueB);\n            valueA = dateA.getTime();\n            valueB = dateB.getTime();\n          } else if (typeof valueA === 'number' && typeof valueB === 'number') {\n            // Handle number sorting\n            valueA = Number(valueA);\n            valueB = Number(valueB);\n          } else if (typeof valueA === 'string' && typeof valueB === 'string') {\n            // Handle string comparison\n            valueA = valueA.toLowerCase();\n            valueB = valueB.toLowerCase();\n          }\n          // Compare values\n          if (valueA < valueB) {\n            return this.currentSortDirection === 'asc' ? -1 : 1;\n          } else if (valueA > valueB) {\n            return this.currentSortDirection === 'asc' ? 1 : -1;\n          } else {\n            // If values are the same, return 0 to maintain original order\n            return 0;\n          }\n        });\n        this.dataSource.data = data;\n      } else {\n        this.dataSource.data = this.filterBoxData ? this.filterBoxData?.slice(0, this.pageSize || 10) : this.data?.slice(0, this.pageSize || 10);\n      }\n    } else {\n      // Determine the current sorting state\n      if (this.currentSortColumn === column) {\n        // Move to the next sorting state\n        const currentIndex = sortingStates.indexOf(this.currentSortDirection);\n        this.currentSortDirection = sortingStates[(currentIndex + 1) % sortingStates.length] as \"asc\" | \"desc\" | \"none\";\n      } else {\n        // If a new column is selected, start with ascending sort\n        this.currentSortColumn = column;\n        this.currentSortDirection = 'asc';\n      }\n      localStorage.setItem('NxtDataTable', JSON.stringify({ addRecord: false, pageSize: this.pageSize, pageIndex: this.pageIndex, currentSortColumn: this.currentSortColumn, currentSortDirection: this.currentSortDirection }));\n      // Only sort if the direction is 'asc' or 'desc'\n      this.NxtTableEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex }, tableSearch: { fields: this.displayedColumns, value: this.searchBoxValue }, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection,listView: this.selectedView} })\n    }\n    this.NxtTableParamsEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex },tableSearch: this.searchBoxValue, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView}})\n  }\n\n  onScroll(tableContainer: HTMLElement) {\n    this.isScrolled = tableContainer.scrollTop > 0;\n    const tableBodyHeight = tableContainer.scrollHeight;\n    const isAtBottom = tableBodyHeight - tableContainer.scrollTop <= tableContainer.clientHeight + 1;\n    //SKS15FEB25 Ensure shadow is hidden only if table body height is greater than 400px\n    if (this.isPagination) {\n      this.isShadowHidden = !(isAtBottom || tableBodyHeight < 450);\n    }\n  }\n\n  //SKS15FEB25 losing the filter component when the mouse is clicked outside table\n  @HostListener('document:click', ['$event']) onDocumentClick(event: any) {\n    this.searchFilter = false;\n    event.stopPropagation(); // prevents any other default action\n    const target = event.target as HTMLElement;\n    if (!target.closest('.list-view-filter')) {\n      this.isDropdownOpen = false;\n    }\n  }\n\n  //SKS15FEB25 filter data that to be displayed in header filter icon is passed in 'filterArray' array\n  filter(datas: any) {\n    this.filterArray = [];\n    this.selectedFilter = datas;\n    this.filterArray = this.multipleFilterArray?.[datas];\n    this.searchFilter = !this.searchFilter;\n    this.isResized = this.filterDataArray[this.selectedFilter]?.length > 0\n  }\n\n  // SKS15FEB25  emitting pagr size and index to parent on paginating\n  pageParams(event: any) {\n    this.pageIndex = event.pageIndex\n    this.pageSize = event.pageSize\n    this.filterTableNos = this.filterBoxData?.length\n    if (!this.configPagination || this.dataSource.data.length === this.totalRecords) {\n      this.applyFilter(this.searchBoxValue)\n      const start = (Number(event.pageIndex) - 1) * Number(event.pageSize);\n      const end = start + Number(event.pageSize);\n      this.dataSource.data = this.filterBoxData?.slice(start, end);\n    } else {\n      this.NxtTableEmit.emit({ pagination: { pageSize: event.pageSize, pageIndex: event.pageIndex }, tableSearch: { fields: this.displayedColumns, value: this.searchBoxValue }, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView} })\n    }\n    this.NxtTableParamsEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex },tableSearch: this.searchBoxValue, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView}})\n  }\n\n  // SKS15FEB25 apply search bar filter using mat\n  applyFilter(event: any) {\n    let filterValue = event;\n    filterValue ? filterValue = filterValue.trim().toLowerCase() : filterValue = '';\n    this.searchBoxValue = filterValue\n    if (!filterValue) {\n      this.dataSource.data = [...this.originalData]; // Reset to original data\n    } else {\n      this.dataSource.data = this.originalData.filter(item =>\n        this.displayedColumns.some(column => {\n          const value = item[column]?.toString().toLowerCase() || '';\n          return value.includes(filterValue);\n        })\n      );\n    }\n    this.pageIndex = 1\n    this.sFilterData = this.dataSource.data\n    this.filterTableNos = this.sFilterData?.length\n    this.totalCount = this.data.length\n    const start = (Number(this.pageIndex) - 1) * Number(this.pageSize);\n    const end = start + Number(this.pageSize);\n    this.dataSource.data = this.dataSource.data?.slice(start, end);\n    this.filterRetain(this.filterDataArray)\n  }\n\n  /** SKS15FEB25 Whether the number of selected elements matches the total number of rows. */\n  isAllSelected() {\n    // check if all rows are selected\n    const numSelected = this.selection.selected.length;\n    const numRows = this.dataSource.data.length;\n    return numSelected === numRows;\n  }\n\n  /** SKS15FEB25 Selects all rows if they are not all selected; otherwise clear selection. */\n  masterToggle() {\n    // if there is a selection then clear that selection\n    // emit the selected value only to parent\n    if (this.isSomeSelected()) {\n      //   to remove the editRow, if the checkbox is unchecked\n      this.selection.selected.forEach((element: any) => {\n        if (element?.editRow) element.editRow = false;\n      });\n      this.selection.clear();\n      this.selectedValues.emit(this.selection.selected);\n    } else {\n      // If no items are selected, either select all items or clear the selection\n      // emit the selected values to parent\n      this.isAllSelected() ? this.selection.clear() : this.dataSource.data.forEach((row: any) => this.selection.select(row));\n      this.selectedValues.emit(this.selection.selected);\n    }\n  }\n\n\n\n  // SKS15FEB25 Checks whether any items are currently selected in the table.\n  isSomeSelected() {\n    return this.selection.selected.length > 0;\n  }\n\n\n  // SKS15FEB25 emit the check box values, that selected separately\n  separateRowSelect(data: any, element: any) {\n    //   to remove the editRow id check box is unchecked on separate row\n    if (data && element?.editRow) {\n      element.editRow = false;\n    }\n    if (data) {\n      this.selectedValues.emit(this.selection.selected)\n    }\n  }\n\n  //SKS15FEB25 data that to be passed, when table row is clicked\n  tableClick(data: any) {\n    this.tableRowClick.emit(data);\n  }\n\n  //SKS15FEB25 Retain the filterdata\n  filterRetain(filterkey: any) {\n    if (filterkey && Object.keys(filterkey).length == 0) {\n      this.data = this.sFilterData;\n    } else {\n      this.data = [];\n      let isDataChecked = false;\n      for (let key of Object.keys(filterkey)) {\n        if (filterkey[key] && filterkey[key].length > 0) {\n          isDataChecked = true;\n        }\n      }\n      if (!isDataChecked) {\n        this.data = this.sFilterData;\n      } else {\n        for (let key of Object.keys(filterkey)) {\n          if (filterkey[key]) {\n            const data = this.sFilterData.filter((name: any) => filterkey[key]?.includes(name[key]));\n            const data1 = [...this.data, ...data];\n            this.data = this.removeDuplicates(data1);\n          }\n        }\n      }\n    }\n    this.pageIndex = 1\n    const start = (Number(this.pageIndex) - 1) * Number(this.pageSize);\n    const end = start + Number(this.pageSize);\n    this.filterBoxData = this.data\n    this.filterTableNos = this.filterBoxData?.length\n    this.dataSource.data = this.data?.slice(start, end);\n    this.data = this.originalData\n    this.sortData(this.currentSortColumn ,this.currentSortDirection)\n  }\n\n// SKS15FEB25 to remove duplicate object from two arrays (safe stringify)\nremoveDuplicates(objects: any) {\n  const seen = new Set<string>();\n  const uniqueObjects: any[] = [];\n\n  const safeStringify = (obj: any) => {\n    const seenObjs = new WeakSet();\n    return JSON.stringify(obj, (key, value) => {\n      if (value === undefined) return null; // replace undefined to avoid issues\n      if (typeof value === \"object\" && value !== null) {\n        if (seenObjs.has(value)) return; // skip circular\n        seenObjs.add(value);\n      }\n      return value;\n    });\n  };\n\n  objects.forEach((obj: any) => {\n    const key = safeStringify(obj);\n    if (!seen.has(key)) {\n      seen.add(key);\n      uniqueObjects.push(obj);\n    }\n  });\n\n  return uniqueObjects;\n}\n\n  // SKS15FEB25  on delete click save the data in variables\n  deleteRecord(data: any, index: number) {\n    if (this.from === 'formBuilder') {\n      const updatedData = [...this.dataSource.data]; // Create a new reference\n      updatedData.splice(index, 1);\n      this.dataSource.data = updatedData; // Reassign to trigger change detection\n      this.data = updatedData; // Sync this.data\n      this.computeSummaryValues();\n      this.emitTableDataValue(this.dataSource.data)\n    } else {\n      this.deleteData = data;\n      this.deleteIndex = index;\n      this.deleteModal = true;\n    }\n  }\n\n  // SKS15FEB25  after clicking yes in delete alert modal, emit to parent\n  deleteRecordData() {\n    this.onDeleteData.emit({ data: this.deleteData, allData: this.data });\n    this.deleteModal = false;\n  }\n\n  //SKS15FEB25 to save the edited data in table;\n  saveButton() {\n    // emitting all data with selected data\n    this.saveButtonData.emit({ selectedData: this.selection.selected, allData: this.data });\n  }\n\n  //SKS15FEB25 pass the rejected reason\n  onEdit(data: any) {\n    if (typeof data === 'object') data.editRow = true; // made editing row as true //  solve undefined error on string\n    this.selection.select(data);\n    this.onEditData.emit({ data: data, allData: this.data });\n  }\n\n  // SKS15FEB25 table top buttons emit\n  commonButtonClick(button: any) {\n    this.buttonEmit.emit(button);\n  }\n\n  // SKS15FEB25 This function is used to retrieve data from objects. \n  // In 'element' we will pass object and in 'column' we will pass path as string eg.employee.financeInfo[0].uan to retieve uan value \n  getValue(element: any, column: string) {\n    if (!element || !column) {\n      return ''; // Return empty string or null if element or column is invalid\n    }\n    let flds = column.split('.');\n    let current = element;\n    for (let i = 0; i < flds.length; i++) {\n      let splitFlds = flds[i].split('[');\n      if (splitFlds.length === 1) {\n        current = current[flds[i]] ?? ''; // Use nullish coalescing to handle undefined/null\n      } else {\n        let index = Number(splitFlds[1].split(']')[0]);\n        current = current[splitFlds[0]]?.[index] ?? ''; // Safely access array index\n      }\n    }\n    return current;\n  }\n  //SKS15FEB25 hyperlinl columns only emitted\n  onClickHyperlink(column: any, element: any, isHyperLink: any) {\n    if (isHyperLink) this.hyperLinkEmit.emit({ column: column, element: element });\n  }\n\n  // SKS15FEB25 to check whether the hyperlink action is present in that column\n  checkHyperlinkCheck(col: any) {\n    return this.hyperLinkColumns?.includes(col) ? true : false;\n  }\n\n  // SKS15FEB25 on add record in table, the 'inlineElement' values will be assigned to the table data \n  addTableRecord(element: any) {\n    if (!this.configPagination || this.dataSource.data.length === this.totalRecords) {\n      var obj: any = {};\n      const keys = Object.keys(element);\n      keys.forEach((elementKey: any) => {\n        obj[elementKey] = '';\n      });\n      // SKS20MAR25 Compute summary columns for the new row\n      if (this.summaryColumns && this.summaryColumns.length > 0) {\n        this.summaryColumns.forEach(summaryCol => {\n          if (summaryCol.type === 'calculation' && summaryCol.operation === 'sum' && summaryCol.operands) {\n            const sum = summaryCol.operands.reduce((acc, operand) => acc + (Number(obj[operand]) || 0), 0);\n            obj[summaryCol.fieldName] = sum;\n          } else if (summaryCol.type === 'calculation' && summaryCol.operation === 'subtract' && summaryCol.operands) {\n            const sum = summaryCol.operands.reduce((acc, operand) => acc - (Number(obj[operand]) || 0), 0);\n            obj[summaryCol.fieldName] = sum;\n          } else if (summaryCol.type === 'calculation' && summaryCol.operation === 'multiply' && summaryCol.operands) {\n            const sum = summaryCol.operands.reduce((acc, operand) => acc * (Number(obj[operand]) || 0), 0);\n            obj[summaryCol.fieldName] = sum;\n          }\n          else if (summaryCol.type === 'calculation' && summaryCol.operation === 'subtract' && summaryCol.operands) {\n            const sum = summaryCol.operands.slice(1).reduce(\n              (acc, operand) => acc - (Number(obj[operand]) || 0),\n              Number(obj[summaryCol.operands[0]]) || 0\n            );\n            obj[summaryCol.fieldName] = sum;\n          }\n          else if (summaryCol.type === 'calculation' && summaryCol.operation === 'multiply' && summaryCol.operands) {\n            const product = summaryCol.operands.reduce(\n              (acc, operand) => acc * (Number(obj[operand]) || 0),\n              1\n            );\n            obj[summaryCol.fieldName] = product;\n          }\n        });\n      }\n      this.data.push(obj);\n      const data: any = this.data;\n      this.dataSource.data = data;\n\n      if (this.stickyColumn === true && this.displayedColumns) {\n        this.stickyCondition = this.displayedColumns?.length;\n      } else {\n        this.stickyCondition = this.displayedColumns?.length + 1;\n      }\n      this.pageSize = 10\n      this.totalCount = this.data.length\n      this.filterTableNos += 1 \n      this.pageIndex = Math.ceil(this.totalCount / this.pageSize);\n      const start = (Number(this.pageIndex) - 1) * Number(this.pageSize);\n      const end = start + Number(this.pageSize);\n      if (!this.isPagination) {\n        this.dataSource.data = this.data\n      } else {\n        this.dataSource.data = this.data?.slice(start, end);\n      }\n      this.selection.select(this.data[this.data.length - 1]);\n      this.data[this.data.length - 1].editRow = true;\n    } else {\n      const pageIndex = Math.ceil(this.totalRecords / 10);\n      localStorage.setItem('NxtDataTable', JSON.stringify({ addRecord: true, pageSize: 10, pageIndex: pageIndex, currentSortColumn: this.currentSortColumn, currentSortDirection: this.currentSortDirection }));\n      this.NxtTableEmit.emit({ pagination: { pageSize: 10, pageIndex: pageIndex }, tableSearch: { fields: this.displayedColumns, value: this.searchBoxValue }, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView} })\n    }\n    if (this.from === 'formBuilder') {\n      this.emitTableDataValue(this.dataSource.data);\n    }\n    this.computeSummaryValues();\n    this.NxtTableParamsEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex },tableSearch: this.searchBoxValue, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView}})\n  }\n\n  // SKS15FEB25 Action button conditionally displayed function\n  isConditionMet(element: any, conditions: any): boolean {\n    if (conditions !== undefined) {\n      const { andConditionList, orConditionList } = conditions;\n      //  If andConditionList exists, check that all conditions are met\n      const isAndConditionMet = andConditionList ? andConditionList.every((cond: { condition: string | any[]; column: string | number; }) =>\n        cond.condition.includes(element[cond.column])\n      ) : true; //  If no andConditionList, consider it as always met\n      //  If orConditionList exists, check if at least one condition is met\n      const isOrConditionMet = orConditionList ? orConditionList.some((cond: { condition: string | any[]; column: string | number; }) =>\n        cond.condition.includes(element[cond.column])\n      ) : true; //  If no orConditionList, consider it as always met\n      //  Return true if the AND condition is met and the OR condition is met\n      return isAndConditionMet && isOrConditionMet;\n    } else {\n      return true;\n    }\n  }\n\n  // SKS15FEB25 Check if the column is a date column\n  isDateColumn(column: string): boolean {\n    return this.dateColumns?.includes(column) ?? false;\n  }\n\n  // SKS15FEB25 Check if the column is a time column\n  isTimeColumn(column: string): boolean {\n    return this.timeColumns?.includes(column) ?? false;\n  }\n\n  // SKS15FEB25 config search filter box function\n  onSearch(event: any) {\n    this.searchBoxValue = event; // Update the displayed value in the search box\n    if (this.searchConfigs || this.dataSource.data.length === this.totalRecords) {\n      this.pageIndex = 1\n      this.pageSize = 10\n      this.NxtTableEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: Number(this.pageIndex) }, tableSearch: { fields: this.displayedColumns, value: this.searchBoxValue }, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView} })\n    }\n    this.NxtTableParamsEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex },tableSearch: this.searchBoxValue, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView}})\n  }\n\n  // SKS15FEB25 If the value in the search box is empty, call the onSearch function automatically\n  emptySearch(event: any) {\n    if (!event.trim() && (this.prevSearch != event.trim())) {\n      this.onSearch(event)\n    }\n    this.prevSearch = event.trim()\n  }\n\n  // SKS15FEB25 infoSidescreen emit \n  onSideNavInfoClick(data: any, col: any) {\n    this.sideNavEmit.emit({\n      data, col,\n      config: undefined\n    })\n  }\n\n  // SKS15FEB25 for active column select\n  onColumnClick(column: string) {\n    this.activeColumn = column;\n    if (!this.isEditable) {\n      // Existing sort/filter logic\n      return;\n    }\n\n    if (this.selectedColumn === column) {\n      this.selectedColumn = null;\n      this.columnSelected.emit(null);\n    } else {\n      this.selectedColumn = column;\n      const columnData = this.dataSource.data.map(row => ({\n        value: row[column],\n        id: row.id // or unique identifier\n      }));\n      this.columnSelected.emit({ column, data: columnData });\n    }\n  }\n\n  // SKS15FEB25 for close search filter box\n  closefilter() {\n    this.pageSize = this.pageSize || 10\n    this.pageIndex = 1\n    this.filterDataArray[this.selectedFilter] = []\n    this.isResized = false\n    if (!this.configPagination || this.dataSource.data.length === this.totalRecords) {\n      this.filterRetain(this.filterDataArray)\n    } else {\n      this.NxtTableEmit.emit({ pagination: { pageSize: 10, pageIndex: 1 }, tableSearch: { fields: this.displayedColumns, value: this.searchBoxValue }, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView} })\n    }\n    this.NxtTableParamsEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex },tableSearch: this.searchBoxValue, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView}})\n  }\n\n  // SKS15FEB25 search filter box checkbox retain\n  isSelected(event: any) {\n    if (this.filterDataArray[this.selectedFilter] && this.filterDataArray[this.selectedFilter].includes(event)) {\n      return true\n    } else {\n      return false\n    }\n  }\n\n  // SKS15FEB25 search filter box checkbox select\n  checkedData(event: any) {\n    let selectedArray = []\n    selectedArray = this.filterDataArray[this.selectedFilter] ? this.filterDataArray[this.selectedFilter] : []\n    if (selectedArray && selectedArray.includes(event)) {\n      selectedArray = selectedArray.filter((item: any) => item !== event);\n    } else {\n      selectedArray.push(event);\n    }\n    this.filterDataArray[this.selectedFilter] = selectedArray\n    this.isResized = selectedArray?.length > 0\n    if (this.dataSource.data.length !== this.totalRecords && this.configPagination) {\n      this.pageIndex = 1\n      this.pageSize = 10\n      this.NxtTableEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: Number(this.pageIndex) }, tableSearch: { fields: this.displayedColumns, value: this.searchBoxValue }, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView} })\n    } else {\n      this.filterRetain(this.filterDataArray)\n    }\n    this.NxtTableParamsEmit.emit({ pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex },tableSearch: this.searchBoxValue, searchFilterData: this.filterDataArray, sort: { column: this.currentSortColumn, direction: this.currentSortDirection ,listView: this.selectedView}})\n  }\n\n  // SKS15FEB25  action column dropdown buttons close\n  private addClickOutsideListener() {\n    if (!this.clickListener) {\n      this.clickListener = this.renderer.listen('document', 'click', (event) => {\n        if (!event.target.closest('.dropdown')) {\n          this.currentOpenIndex = null;\n          this.removeClickListener();\n        }\n      });\n    }\n  }\n\n  //SKS15FEB25 if close the dropdown menu stop the click listener\n  private removeClickListener() {\n    if (this.clickListener) {\n      this.clickListener();\n      this.clickListener = null;\n    }\n  }\n\n  // SKS15FEB25  action column dropdown buttons open / c;ose\n  toggleDropdown(index: number) {\n    this.currentOpenIndex = this.currentOpenIndex === index ? null : index;\n    this.addClickOutsideListener();\n  }\n\n  //SKS15FEB25 action button evnt emit\n  actionButtonClicked(event: any, data: any) {\n    this.actionButtonEmit.emit({ event, data })\n  }\n\n  removeCol(column: string) {\n    this.selectedColumn = null;\n    // Emit deselection\n    if (!this.isEditable) {\n      // Existing sort/filter logic\n      return;\n    }\n\n    const columnData = this.dataSource.data.map(row => ({\n      value: row[column],\n      id: row.id // or unique identifier\n    }));\n    this.removeColumn.emit({ column, data: columnData });\n\n  }\n  emitTableDataValue(updatedTableData: any[]): void {\n    this.valueChange.emit(updatedTableData);\n  }\n\n  updateEdit(index: number, value: any, element: any, column: any): void {\n    const updatedElement = this.updateValue(element, column, value);\n    this.dataSource.data[index] = updatedElement;\n\n    // SKS20MAR25 Ensure this.data is updated since summary uses the full dataset\n    const dataIndex = this.data.findIndex((item: any) => item === element);\n    if (dataIndex !== -1) {\n      this.data[dataIndex] = updatedElement;\n    }\n    // Recompute summary columns for the updated row\n    if (this.summaryColumns && this.summaryColumns.length > 0) {\n      this.summaryColumns.forEach(summaryCol => {\n        if (summaryCol.type === 'calculation' && summaryCol.operands && summaryCol.operands.length) {\n          if (summaryCol.operation === 'sum') {\n            updatedElement[summaryCol.fieldName] = summaryCol.operands.reduce(\n              (acc, operand) => acc + (Number(updatedElement[operand]) || 0),\n              0\n            );\n          } else if (summaryCol.operation === 'multiply') {\n            updatedElement[summaryCol.fieldName] = summaryCol.operands.reduce(\n              (acc, operand) => acc * (Number(updatedElement[operand]) || 0),  // Start with 1 instead of 0\n              1\n            );\n          } else if (summaryCol.operation === 'subtract') {\n            updatedElement[summaryCol.fieldName] = summaryCol.operands.slice(1).reduce(\n              (acc, operand) => acc - (Number(updatedElement[operand]) || 0),\n              Number(updatedElement[summaryCol.operands[0]]) || 0\n            );\n          }\n        }\n      });\n      this.dataSource.data[index] = updatedElement;\n      if (dataIndex !== -1) {\n        this.data[dataIndex] = updatedElement;\n      }\n    }\n    if (this.from === 'formBuilder') {\n      this.dataSource.data[index] = this.updateValue(element, column, value);\n      this.emitTableDataValue(this.dataSource.data)\n    }\n    this.computeSummaryValues();\n  }\n  // SKS18MAR25 update element\n  updateValue(element: any, column: string, value: any) {\n    let flds = column?.split('.');\n    let obj = element; // Keep reference to the original object\n\n    for (let i = 0; i < flds.length - 1; i++) {\n      let splitFlds = flds[i].split('[');\n      if (splitFlds.length === 1) {\n        obj = obj[flds[i]] || (obj[flds[i]] = {});\n      } else {\n        let index = Number(splitFlds[1].split(']')[0]);\n        obj = obj[splitFlds[0]] || (obj[splitFlds[0]] = []);\n        obj = obj[index] || (obj[index] = {});\n      }\n    }\n\n    // Update the final property\n    let lastKey = flds[flds.length - 1];\n    let splitLastKey = lastKey.split('[');\n    if (splitLastKey.length === 1) {\n      obj[lastKey] = value;\n    } else {\n      let index = Number(splitLastKey[1].split(']')[0]);\n      obj[splitLastKey[0]][index] = value;\n    }\n\n    return element;\n  }\n\n  expenseAttachment(event: any) {\n    this.fileEmit.emit(event)\n  }\n  //SKS26APR25 Toggle dropdown visibility\n  listFilterToggleDropdown() {\n    this.isDropdownOpen = !this.isDropdownOpen;\n  }\n  //SKS26APR25 Select a list view and apply filter\n  selectListView(viewName: string) {\n    this.selectedView = viewName;\n    this.applyListViewFilter();\n  }\n\n  //SKS26APR25 Apply the selected list view filter\n  applyListViewFilter() {\n    this.searchBoxValue = ''; // Reset search bar\n    this.filterDataArray = {}; // Reset column filters\n\n    let filteredData;\n    if (!this.selectedView) {\n      filteredData = [...this.originalData];\n    } else {\n      const selectedViewObj = this.listViews.find(view => view.name === this.selectedView);\n      if (selectedViewObj && selectedViewObj.filters) {\n        filteredData = this.originalData.filter(item =>\n          selectedViewObj.filters.every(condition => this.applyCondition(item, condition))\n        );\n      } else {\n        filteredData = [...this.originalData];\n      }\n    }\n\n    //SKS26APR25 Update table data and pagination\n    this.filterBoxData = filteredData;\n    this.totalCount = filteredData.length;\n    this.filterTableNos = filteredData.length;\n    this.pageIndex = 1;\n\n    if (!this.configPagination || this.dataSource.data.length === this.totalRecords) {\n      const start = (this.pageIndex - 1) * this.pageSize;\n      const end = start + this.pageSize;\n      this.dataSource.data = filteredData.slice(start, end);\n    } else {\n      this.NxtTableEmit.emit({\n        pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex },\n        tableSearch: { fields: this.displayedColumns, value: this.searchBoxValue },\n        searchFilterData: this.filterDataArray,\n        sort: { column: this.currentSortColumn, direction: this.currentSortDirection },\n        listView: this.selectedView\n      });\n    }\n\n    this.NxtTableParamsEmit.emit({\n      pagination: { pageSize: this.pageSize, pageIndex: this.pageIndex },\n      tableSearch: this.searchBoxValue,\n      searchFilterData: this.filterDataArray,\n      sort: { column: this.currentSortColumn, direction: this.currentSortDirection },\n      listView: this.selectedView\n    });\n\n    // Close dropdown after selection\n    this.isDropdownOpen = false;\n  }\n\n  //SKS26APR25 Apply a single filter condition\n  private applyCondition(item: any, condition: any): boolean {\n    const value = this.getValue(item, condition.column)?.toString().toLowerCase() || '';\n    const filterValue = condition.value?.toString().toLowerCase();\n\n    switch (condition.operator) {\n      case '=': return value === filterValue;\n      case '!=': return value !== filterValue;\n      case 'contains': return value.includes(filterValue);\n      case '>': return Number(value) > Number(filterValue);\n      case '<': return Number(value) < Number(filterValue);\n      default: return true;\n    }\n  }\n}\n","<div class=\"table-layout\" [id]=\"tableId\" [ngStyle]=\"{'padding-top': '1px', 'width': tableWidth}\" [dir]=\"direction\">\n    <div> <!-- class=\"m-4\" -->\n        <div *ngIf=\"title\" class=\"d-flex justify-content-center table-title align-text-center pt-3\">\n            {{title}}\n        </div>\n        <div *ngIf=\"isNosIndicator || searchBar || isButtons\" class=\"flex justify-content-between\" style=\"padding-bottom: 20px;\">\n            <div class=\"flex\">\n                <!-- SKS26APR25 List View Filter -->\n                <div *ngIf=\"listViews && listViews.length > 0\" class=\"list-view-filter\">\n                    <div class=\"filter-label\">Data Related to</div>\n                    <div class=\"select-wrapper\">\n                        <svg class=\"filter-icon\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <rect width=\"24\" height=\"24\" rx=\"5\" fill=\"#F1F1F1\"/>\n                            <path d=\"M5.51288 4.5H12.1879C12.7429 4.5 13.2004 4.9575 13.2004 5.5125V6.62249C13.2004 7.02749 12.9454 7.53 12.6979 7.785L10.5229 9.705C10.2229 9.96 10.0204 10.4625 10.0204 10.8675V13.0425C10.0204 13.3425 9.8179 13.7475 9.5629 13.905L8.85789 14.3625C8.19789 14.7675 7.29037 14.31 7.29037 13.5V10.8225C7.29037 10.47 7.08789 10.0125 6.88539 9.75751L4.96539 7.7325C4.71039 7.4775 4.5079 7.02749 4.5079 6.71999V5.5575C4.5004 4.9575 4.95788 4.5 5.51288 4.5Z\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                            <path d=\"M4.5 11.9999V14.2499C4.5 17.9999 6 19.4999 9.75 19.4999H14.25C18 19.4999 19.5 17.9999 19.5 14.2499V9.74994C19.5 7.40994 18.915 5.93993 17.5575 5.17493C17.175 4.95743 16.41 4.79243 15.7125 4.67993\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                            <path d=\"M12.75 12.75H16.5\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                            <path d=\"M11.25 15.75H16.5\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                        </svg>\n                  \n                      <div class=\"custom-dropdown\">\n                        <div class=\"selected-option\">{{ selectedView }}</div>\n                        <ul *ngIf=\"isDropdownOpen\" class=\"dropdown-options\">\n                          <li *ngFor=\"let view of listViews\" [class.selected]=\"selectedView === view.name\" (click)=\"selectListView(view.name)\">\n                            {{ view.name }}\n                            <span *ngIf=\"selectedView === view.name\" class=\"checkmark\">✓</span>\n                          </li>\n                        </ul>\n                      </div>\n                  \n                      <svg class=\"chevron-icon\" (click)=\"listFilterToggleDropdown()\" width=\"24\" height=\"24\" viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                        <path d=\"M19.9999 25.6667C23.6818 25.6667 26.6666 22.6819 26.6666 19C26.6666 15.3181 23.6818 12.3334 19.9999 12.3334C16.318 12.3334 13.3333 15.3181 13.3333 19C13.3333 22.6819 16.318 25.6667 19.9999 25.6667Z\" fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                        <path d=\"M17.6467 18.16L20.0001 20.5067L22.3534 18.16\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n                    </svg>\n                    </div>\n                  </div>\n                <div *ngIf=\"isNosIndicator\" class=\"noOfRec\" style=\"display: flex; align-items: flex-end;\">\n                    <p style=\"font-weight: 500; margin-right: 5px; margin-bottom: 0px;\">\n                        Nos </p>\n                    <div style=\"color: rgb(43, 87, 249);\">{{totalRecords || totalCount}}</div>\n                </div>\n            </div>\n\n            <div class=\"flex\" style=\"align-items: center;\">\n                <div *ngIf=\"searchBar\" class=\"search\">\n                    <div class=\"flex search-bar\">\n                        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <path\n                                d=\"M11.6413 19.25C16.6322 19.25 20.6781 15.3511 20.6781 10.5417C20.6781 5.73218 16.6322 1.83333 11.6413 1.83333C6.6504 1.83333 2.60449 5.73218 2.60449 10.5417C2.60449 15.3511 6.6504 19.25 11.6413 19.25Z\"\n                                stroke=\"#787486\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                            <path d=\"M21.6295 20.1667L19.7271 18.3333\" stroke=\"#787486\" stroke-width=\"1.5\"\n                                stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                        </svg>\n                        <input type=\"text\" placeholder=\"Search\"\n                            (keyup)=\"searchConfigs ? emptySearch($event.target.value) : applyFilter($event.target.value)\"\n                            [value]=\"searchBoxValue || ''\" #input>\n                        <svg *ngIf=\"searchConfigs && searchBar\" class=\"configSearch\" (click)=\"onSearch(input.value)\"\n                            width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <path d=\"M14 5H20\" stroke=\"#ffffff\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                stroke-linejoin=\"round\" />\n                            <path d=\"M14 8H17\" stroke=\"#ffffff\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                stroke-linejoin=\"round\" />\n                            <path d=\"M21 11.5C21 16.75 16.75 21 11.5 21C6.25 21 2 16.75 2 11.5C2 6.25 6.25 2 11.5 2\"\n                                stroke=\"#ffffff\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                            <path d=\"M22 22L20 20\" stroke=\"#ffffff\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                stroke-linejoin=\"round\" />\n                        </svg>\n                    </div>\n                </div>\n\n                <div class=\"flex\" *ngIf=\"isButtons\" style=\"padding-left: 7px; gap: 7px;\">\n                    <div class=\"flex\" *ngFor=\"let button of buttonArray\">\n                        <nxt-button class=\"data-table-fsbtn\"\n                            (buttonClickEmit)=\"(button.type === 'group' || button.type === 'dropdown') ? commonButtonClick($event) : commonButtonClick(button)\"\n                            [buttonType]=\"button.class\" [buttonValue]=\"button.name\" [buttonConfig]=\"button.buttonConfig\"\n                            [type]=\"button.type\" class=\"ms-2 me-2\" [fcBtnIconLeftSrc]=\"button.fcBtnIconLeftSrc\"\n                            [isImageSvg]=\"button.isImageSvg\">\n                        </nxt-button>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"table-margin\">\n            <div class=\"table-container\" [ngStyle]=\"{ height: isPagination ? '450px' : 'auto' }\" #tableContainer\n                (scroll)=\"onScroll(tableContainer)\">\n                <ng-container>\n                    <div class=\"custom-table\">\n                        <!--SKS15FEB25 Table Header -->\n                        <div class=\"table-header\" [ngClass]=\"{ 'shadow': isScrolled }\">\n                            <div class=\"table-row\">\n                                <!--SKS15FEB25 Checkbox Column -->\n                                <div *ngIf=\"withCheckBox\" class=\"table-cell sticky-column head-color\">\n                                    <input type=\"checkbox\" (click)=\"$event.stopPropagation()\" (change)=\"masterToggle()\"\n                                        [checked]=\"selection?.hasValue()\"\n                                        [indeterminate]=\"selection?.hasValue() && !isAllSelected()\"\n                                        class=\"custom-checkbox\">\n                                </div>\n\n                                <!--SKS15FEB25 Data Columns -->\n                                <div *ngFor=\"let column of displayedColumns; let i = index\"\n                                    class=\"table-cell tableHeader head-color\"\n                                    [class.sticky-column]=\"i === (stickyCondition - 1)\"\n                                    [class.active-column]=\"activeColumn === column\"\n                                    [class.selected-column]=\"isEditable && selectedColumn === column\"\n                                    (click)=\"$event.stopPropagation(); onColumnClick(column); sortColumns.includes(column) ? sortData(column) : ''\"\n                                    (mouseenter)=\"hoveredColumn = column\" (mouseleave)=\"hoveredColumn = null\">\n                                    <div class=\"columnDiv\">\n                                        <div class=\"column-header\">\n                                            <!-- Add close button for selected column -->\n                                            <div *ngIf=\"isEditable && selectedColumn === column\"\n                                                class=\"close-column-btn\"\n                                                (click)=\"$event.stopPropagation(); removeCol(column)\">\n                                                ✕\n                                            </div>\n                                            <div class=\"ellipsis\"\n                                                [title]=\"headerLabels[displayedColumns.indexOf(column)]\">\n                                                {{ headerLabels[displayedColumns.indexOf(column)] }}\n                                            </div>\n                                            <div class=\"position-relative\">\n                                                <svg *ngIf=\"filterColumns.includes(column)\" (click)=\"filter(column)\"\n                                                    style=\"padding-right: 2px;\" width=\"12\" height=\"11\"\n                                                    viewBox=\"0 0 12 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                                                    <path\n                                                        d=\"M10.75 1.25H0.75L4.75 5.71722V8.80556L6.75 9.75V5.71722L10.75 1.25Z\"\n                                                        stroke=\"#242533\" stroke-width=\"1.2\" stroke-linecap=\"round\"\n                                                        stroke-linejoin=\"round\" />\n                                                    <!--SKS15FEB25 Red dot for active filter -->\n                                                    <circle\n                                                        *ngIf=\"filterDataArray && filterDataArray[column]?.length > 0\"\n                                                        cx=\"9\" cy=\"2\" r=\"2.5\" fill=\"red\"></circle>\n                                                </svg>\n                                                <div *ngIf=\"sortColumns.includes(column)\" class=\"sort-indicators\">\n                                                    <span *ngIf=\"currentSortColumn === column\" class=\"sort-direction\">\n                                                        {{ currentSortDirection === 'asc' ? '↑' : currentSortDirection\n                                                        === 'desc' ? '↓' : '' }}\n                                                    </span>\n                                                    <span\n                                                        *ngIf=\"hoveredColumn === column && currentSortColumn !== column\"\n                                                        class=\"sort-direction\">\n                                                        ↑\n                                                    </span>\n                                                </div>\n                                                <div *ngIf=\"searchFilter && column === selectedFilter\"\n                                                    class=\"search-component position-absolute\">\n                                                    <div class=\"card\">\n                                                        <div class=\"content\">\n                                                            <div class=\"flex\">\n                                                                <div class=\"fsearch\" [class.resized]=\"isResized\">\n                                                                    <div class=\"fsearch-bar\">\n                                                                        <svg class=\"searchSvg\" width=\"18\" height=\"20\"\n                                                                            viewBox=\"0 0 24 22\" fill=\"none\"\n                                                                            xmlns=\"http://www.w3.org/2000/svg\">\n                                                                            <path\n                                                                                d=\"M11.6413 19.25C16.6322 19.25 20.6781 15.3511 20.6781 10.5417C20.6781 5.73218 16.6322 1.83333 11.6413 1.83333C6.6504 1.83333 2.60449 5.73218 2.60449 10.5417C2.60449 15.3511 6.6504 19.25 11.6413 19.25Z\"\n                                                                                stroke=\"#787486\" stroke-width=\"1.5\"\n                                                                                stroke-linecap=\"round\"\n                                                                                stroke-linejoin=\"round\" />\n                                                                            <path d=\"M21.6295 20.1667L19.7271 18.3333\"\n                                                                                stroke=\"#787486\" stroke-width=\"1.5\"\n                                                                                stroke-linecap=\"round\"\n                                                                                stroke-linejoin=\"round\" />\n                                                                        </svg>\n                                                                        <input class=\"width-100\" type=\"text\"\n                                                                            placeholder=\"Search\"\n                                                                            [(ngModel)]=\"searchText\"\n                                                                            class=\"searchinput\">\n                                                                    </div>\n                                                                </div>\n                                                                <svg *ngIf=\"isResized\" (click)=\"closefilter()\"\n                                                                    class=\"close-icon\" width=\"24\" height=\"24\"\n                                                                    viewBox=\"0 0 24 24\" fill=\"none\"\n                                                                    xmlns=\"http://www.w3.org/2000/svg\">\n                                                                    <path d=\"M9.16998 14.83L14.83 9.17001\"\n                                                                        stroke=\"currentColor\" stroke-width=\"1.5\"\n                                                                        stroke-linecap=\"round\"\n                                                                        stroke-linejoin=\"round\" />\n                                                                    <path d=\"M14.83 14.83L9.16998 9.17001\"\n                                                                        stroke=\"currentColor\" stroke-width=\"1.5\"\n                                                                        stroke-linecap=\"round\"\n                                                                        stroke-linejoin=\"round\" />\n                                                                    <path\n                                                                        d=\"M9 22H15C20 22 22 20 22 15V9C22 4 20 2 15 2H9C4 2 2 4 2 9V15C2 20 4 22 9 22Z\"\n                                                                        stroke=\"currentColor\" stroke-width=\"1.5\"\n                                                                        stroke-linecap=\"round\"\n                                                                        stroke-linejoin=\"round\" />\n                                                                </svg>\n                                                            </div>\n                                                            <div class=\"filter-content\" [style]=\"'overflow-y: auto'\">\n                                                                <div\n                                                                    *ngFor=\"let data of filterArray | searchFilter : searchText\">\n                                                                    <div class=\"mt-3 mb-3 checkboxdiv\"\n                                                                        style=\"gap: 5px;\">\n                                                                        <input type=\"checkbox\"\n                                                                            [checked]=\"isSelected(data)\" [value]=\"data\"\n                                                                            [id]=\"data\" (change)=\"checkedData(data)\">\n                                                                        <div class=\"ms-2 label-data\">{{data}}</div>\n                                                                    </div>\n                                                                </div>\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div class=\"resize-handle\"></div> <!--SKS15FEB25 appRowResizer -->\n                                    </div>\n                                </div>\n\n                                <!--SKS15FEB25 Action Column -->\n                                <div *ngIf=\"actionButton || isDeleteRow || isEditRow\"\n                                    class=\"table-cell head-color actionCol sticky-column\"\n                                    style=\"padding: 12px !important;\">\n                                    {{actionColumHeader}}\n                                </div>\n                            </div>\n                        </div>\n\n                        <!--SKS15FEB25 Table Body -->\n                        <div class=\"table-body\" *ngIf=\"!isLoading\">\n                            <div *ngFor=\"let element of dataSource.data; let i = index\" class=\"table-row\"\n                                (click)=\"tableClick(element)\">\n                                <!--SKS15FEB25 Checkbox Cell -->\n                                <div *ngIf=\"withCheckBox\" class=\"table-cell sticky-column body-color\">\n                                    <input type=\"checkbox\" class=\"custom-checkbox\" (click)=\"$event.stopPropagation()\"\n                                        (change)=\"separateRowSelect(selection.toggle(element), element)\"\n                                        [checked]=\"selection.isSelected(element)\"\n                                        [disabled]=\"(element.isPayProcessed === true)\">\n                                </div>\n\n                                <!--SKS15FEB25 Data Cells -->\n                                <div *ngFor=\"let column of displayedColumns; let last = last; ellipsis\"\n                                    class=\"table-cell body-color\"\n                                    [class.selected-cell]=\"isEditable && selectedColumn === column\">\n                                    <div>\n                                        <div *ngIf=\"hyperLinkColumns?.includes(column)\">\n                                            <ng-container *ngIf=\"isDateColumn(column); else checkTime\">\n                                                <div (click)=\"onClickHyperlink(column,element, checkHyperlinkCheck(column))\"\n                                                    class=\"{{checkHyperlinkCheck(column) ? ' hyper-link clickable ' : ''}} ellipsis\"\n                                                    style=\"font-size: {{rowTextSize ? rowTextSize : '13px'}}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\">\n                                                    {{ ('-' | getValue: element : column) | date }}\n                                                </div>\n                                            </ng-container>\n                                            <ng-template #checkTime>\n                                                <ng-container *ngIf=\"isTimeColumn(column); else default\">\n                                                    <div (click)=\"onClickHyperlink(column,element, checkHyperlinkCheck(column))\"\n                                                        class=\"{{checkHyperlinkCheck(column) ? ' hyper-link clickable ' : ''}} ellipsis\"\n                                                        style=\"font-size: {{rowTextSize ? rowTextSize : '13px'}}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\">\n                                                        {{ ('-' | getValue: element : column) | time }}\n                                                    </div>\n                                                </ng-container>\n                                            </ng-template>\n                                            <ng-template #default>\n                                                <div (click)=\"onClickHyperlink(column,element, checkHyperlinkCheck(column))\"\n                                                    class=\"{{checkHyperlinkCheck(column) ? ' hyper-link clickable ' : ''}} ellipsis\"\n                                                    style=\"font-size: {{rowTextSize ? rowTextSize : '13px'}}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\">\n                                                    {{ '-' | getValue: element : column }}\n                                                </div>\n                                            </ng-template>\n                                            <!--SKS15FEB25 rightnav column -->\n                                            <ng-container *ngIf=\"objectColumns?.includes(column)\">\n                                                <svg class=\"ms-2\" (click)=\"onSideNavInfoClick(element, column)\"\n                                                    width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\n                                                    xmlns=\"http://www.w3.org/2000/svg\">\n                                                    <path\n                                                        d=\"M6.00033 11.8334C2.77866 11.8334 0.166992 9.22171 0.166992 6.00008C0.166992 2.77842 2.77866 0.166748 6.00033 0.166748C9.22196 0.166748 11.8337 2.77842 11.8337 6.00008C11.8337 9.22171 9.22196 11.8334 6.00033 11.8334ZM5.41699 5.41675V8.91675H6.58366V5.41675H5.41699ZM5.41699 3.08341V4.25008H6.58366V3.08341H5.41699Z\"\n                                                        fill=\"#434555\" fill-opacity=\"0.5\" />\n                                                </svg>\n                                            </ng-container>\n                                        </div>\n\n                                        <div *ngIf=\"!editColumn?.includes(column)\">\n                                            <div *ngIf=\"!checkHyperlinkCheck(column) && !fileColumns?.includes(column)\"\n                                                style=\"font-size: {{rowTextSize ? rowTextSize : '13px'}}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\">\n                                                <ng-container *ngIf=\"isDateColumn(column); else checkTime\">\n                                                    <!-- {{ getValue(element,column) | date }} -->\n                                                    {{ ('-' | getValue: element : column) | date }}\n                                                </ng-container>\n                                                <ng-template #checkTime>\n                                                    <ng-container *ngIf=\"isTimeColumn(column); else default\">\n                                                        <!-- {{ getValue(element,column) | time }} -->\n                                                        {{ ('-' | getValue: element : column) | time }}\n                                                    </ng-container>\n                                                </ng-template>\n                                                <ng-template #default>\n                                                    <!-- {{ getValue(element,column)}} -->\n                                                    {{ '-' | getValue: element : column }}\n                                                </ng-template>\n                                                <!--SKS15FEB25 rightnav column -->\n                                                <ng-container *ngIf=\"objectColumns?.includes(column)\">\n                                                    <svg class=\"ms-2\" (click)=\"onSideNavInfoClick(element, column)\"\n                                                        width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\"\n                                                        xmlns=\"http://www.w3.org/2000/svg\">\n                                                        <path\n                                                            d=\"M6.00033 11.8334C2.77866 11.8334 0.166992 9.22171 0.166992 6.00008C0.166992 2.77842 2.77866 0.166748 6.00033 0.166748C9.22196 0.166748 11.8337 2.77842 11.8337 6.00008C11.8337 9.22171 9.22196 11.8334 6.00033 11.8334ZM5.41699 5.41675V8.91675H6.58366V5.41675H5.41699ZM5.41699 3.08341V4.25008H6.58366V3.08341H5.41699Z\"\n                                                            fill=\"#434555\" fill-opacity=\"0.5\" />\n                                                    </svg>\n                                                </ng-container>\n                                            </div>\n                                            <!-- SKS18MAR25 file column -->\n                                            <div *ngIf=\"fileColumns?.includes(column)\"\n                                                style=\"font-size: {{ rowTextSize ? rowTextSize : '13px' }}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\"\n                                                class=\"popover-container\">\n                                                <!-- Trigger -->\n                                                <div class=\"hover-base\">\n                                                    <svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" fill=\"none\"\n                                                        xmlns=\"http://www.w3.org/2000/svg\">\n                                                        <path\n                                                            d=\"M13 7.78525L7.04859 13.7602C6.81767 13.9945 6.54217 14.1805 6.23819 14.3076C5.9342 14.4346 5.60784 14.5 5.27817 14.5C4.94849 14.5 4.62213 14.4346 4.31814 14.3076C4.01416 14.1805 3.73866 13.9945 3.50774 13.7602L1.72732 11.9578C1.26124 11.4864 1 10.8516 1 10.1902C1 9.52876 1.26124 8.89388 1.72732 8.42257L8.06883 2.08913C8.2548 1.90245 8.47605 1.75429 8.71983 1.65317C8.96361 1.55206 9.22508 1.5 9.48917 1.5C9.75325 1.5 10.0147 1.55206 10.2585 1.65317C10.5023 1.75429 10.7235 1.90245 10.9095 2.08913L11.6197 2.79616C11.8072 2.98131 11.956 3.20159 12.0576 3.44429C12.1591 3.68699 12.2114 3.94731 12.2114 4.21023C12.2114 4.47316 12.1591 4.73348 12.0576 4.97618C11.956 5.21888 11.8072 5.43916 11.6197 5.62431L5.99834 11.2408C5.90535 11.3341 5.79472 11.4082 5.67284 11.4587C5.55095 11.5093 5.42021 11.5353 5.28817 11.5353C5.15612 11.5353 5.02539 11.5093 4.9035 11.4587C4.78161 11.4082 4.67098 11.3341 4.578 11.2408L4.22791 10.8823C4.13416 10.7897 4.05975 10.6795 4.00897 10.5582C3.95819 10.4368 3.93205 10.3067 3.93205 10.1752C3.93205 10.0438 3.95819 9.91361 4.00897 9.79226C4.05975 9.67091 4.13416 9.56077 4.22791 9.46819L7.99881 5.74381\"\n                                                            stroke=\"#434555\" stroke-width=\"1.3\" stroke-linecap=\"round\"\n                                                            stroke-linejoin=\"round\" />\n                                                    </svg>\n                                                </div>\n\n                                                <!-- Popover Content -->\n                                                <div class=\"hover-content\">\n                                                    <div class=\"expenseCon\">\n                                                        <div *ngFor=\"let data of element[column]\">\n                                                            <div class=\"cursor-pointer expense-file\"\n                                                                (click)=\"expenseAttachment(data?.file)\">\n                                                                {{ data?.fileName }}\n                                                            </div>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n\n                                        <!--SKS15FEB25 added input box for inline edit input-->\n                                        <div *ngIf=\"editColumn && editColumn.length > 0\">\n                                            <div *ngIf=\" ('-' | editColumnCheck: column : editColumn) === ('string') \"\n                                                class=\"on-edit d-flex\">\n                                                <input #editColElement class=\"nxt-lop-input table-width\"\n                                                    style=\"font-size: {{ rowTextSize ? rowTextSize : '13px' }}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\"\n                                                    [class]=\"element.editRow ? 'input-box' : '' \"\n                                                    [attr.placeholder]=\"element.editRow ? 'Enter' : ''\"\n                                                    [ngModel]=\"getValue(element,column)\"\n                                                    (ngModelChange)=\"updateEdit(i,$event, element,column)\"\n                                                    [readOnly]=\"element.editRow ? false : true\">\n                                            </div>\n                                            <!--SKS15FEB25 In table, like text input, added drop down and time inputs as well -->\n                                            <div *ngIf=\" ('-' | editColumnCheck: column : editColumn) === ('object') \"\n                                                class=\"on-edit d-flex\">\n                                                <input\n                                                    *ngIf=\" ('-' | editColumnType: column : editColumn) === ('text') \"\n                                                    #editColElement class=\"nxt-lop-input table-width\"\n                                                    style=\"font-size: {{ rowTextSize ? rowTextSize : '13px' }}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\"\n                                                    [class]=\"element.editRow ? 'input-box' : '' \"\n                                                    [attr.placeholder]=\"element.editRow ? 'Enter' : ''\"\n                                                    [ngModel]=\"getValue(element,column)\"\n                                                    (ngModelChange)=\"updateEdit(i,$event,element,column)\"\n                                                    [readOnly]=\"element.editRow ? false : true\">\n                                                <input\n                                                    *ngIf=\" ('-' | editColumnType: column : editColumn) === ('time') \"\n                                                    type=\"time\" class=\"nxt-lop-input table-width\"\n                                                    style=\"font-size: {{ rowTextSize ? rowTextSize : '13px' }}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\"\n                                                    [ngModel]=\"getValue(element,column)\"\n                                                    [class]=\"element.editRow ? 'input-box' : '' \" placeholder=\"HH:mm:ss\"\n                                                    (ngModelChange)=\"updateEdit(i,$event,element,column)\"\n                                                    [disabled]=\"element.editRow ? false : true\" />\n                                                <div\n                                                    *ngIf=\" ('-' | editColumnType: column : editColumn) === ('dropdown') \">\n                                                    <select type=\"dropdown\" *ngIf=\"element.editRow\"\n                                                        class=\"nxt-lop-input table-width\"\n                                                        style=\"font-size: {{ rowTextSize ? rowTextSize : '13px' }}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\"\n                                                        [class]=\"element.editRow ? 'input-box' : '' \"\n                                                        (ngModelChange)=\"updateEdit(i,$event,element,column)\">\n                                                        <option [disabled]=\"element.editRow ? false : true\"\n                                                            *ngFor=\"let data of [] | editColumnDropdown: column : editColumn \"\n                                                            [ngModel]=\"data.value || data.name\">{{data.name}}</option>\n                                                    </select>\n                                                    <input *ngIf=\"!element.editRow\" #editColElement\n                                                        class=\"nxt-lop-input table-width\"\n                                                        style=\"font-size: {{ rowTextSize ? rowTextSize : '13px' }}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\"\n                                                        [class]=\"element.editRow ? 'input-box' : '' \"\n                                                        [attr.placeholder]=\"element.editRow ? 'Enter' : ''\"\n                                                        [ngModel]=\"getValue(element,column)\"\n                                                        (ngModelChange)=\"updateEdit(i,$event,element,column)\"\n                                                        [readOnly]=\"true\">\n                                                </div>\n\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n\n                                <!--SKS15FEB25 Action Buttons -->\n                                <div *ngIf=\"actionButton || isDeleteRow || isEditRow\" class=\"table-cell actionCol\">\n                                    <div class=\"actionButton\" style=\"display: flex; align-items: center;\">\n\n                                        <!--SKS15FEB25 Edit Button -->\n                                        <div *ngIf=\"isEditRow\" class=\"eicon-container\" matTooltip=\"Edit Record\"\n                                            style=\"padding: 2px; border: 1px solid #dcdcdc; border-radius: 5px; margin-left: 3px; margin-right: 3px;\">\n                                            <div class=\" edit-icon\"\n                                                style=\"padding: 2px 4px; border-radius: 5px; background-color: #f5f5f5;\">\n                                                <svg (click)=\"onEdit(element)\" width=\"16\" height=\"16\"\n                                                    viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                                                    <path\n                                                        d=\"M11.1067 6.07174L9.92833 4.8934L2.16667 12.6551V13.8334H3.345L11.1067 6.07174ZM12.285 4.8934L13.4633 3.71507L12.285 2.53674L11.1067 3.71507L12.285 4.8934ZM4.035 15.5001H0.5V11.9642L11.6958 0.768403C11.8521 0.612177 12.064 0.524414 12.285 0.524414C12.506 0.524414 12.7179 0.612177 12.8742 0.768403L15.2317 3.1259C15.3879 3.28218 15.4757 3.4941 15.4757 3.71507C15.4757 3.93604 15.3879 4.14796 15.2317 4.30424L4.03583 15.5001H4.035Z\"\n                                                        fill=\"#6C757D\" />\n                                                </svg>\n                                            </div>\n                                        </div>\n\n\n                                        <!--SKS15FEB25 Delete Button -->\n                                        <div *ngIf=\"isDeleteRow\" class=\"dicon-container\" matTooltip=\"Delete Record\"\n                                            style=\"padding: 2px; border: 1px solid #ffb5b5; border-radius: 5px; margin-left: 3px; margin-right: 3px;\">\n                                            <div class=\"delete-icon\"\n                                                style=\"padding: 2px 4px; border-radius: 5px; background-color: #feeeed;\">\n                                                <svg (click)=\"deleteRecord(element,i)\" width=\"16\" height=\"16\"\n                                                    viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                                                    <path\n                                                        d=\"M14 3.98726C11.78 3.76726 9.54667 3.65393 7.32 3.65393C6 3.65393 4.68 3.7206 3.36 3.85393L2 3.98726\"\n                                                        stroke=\"#FF2C10\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                                        stroke-linejoin=\"round\" />\n                                                    <path\n                                                        d=\"M5.6665 3.31362L5.81317 2.44028C5.91984 1.80695 5.99984 1.33362 7.1265 1.33362H8.87317C9.99984 1.33362 10.0865 1.83362 10.1865 2.44695L10.3332 3.31362\"\n                                                        stroke=\"#FF2C10\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                                        stroke-linejoin=\"round\" />\n                                                    <path\n                                                        d=\"M12.5667 6.09375L12.1334 12.8071C12.06 13.8537 12 14.6671 10.14 14.6671H5.86002C4.00002 14.6671 3.94002 13.8537 3.86668 12.8071L3.43335 6.09375\"\n                                                        stroke=\"#FF2C10\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                                        stroke-linejoin=\"round\" />\n                                                    <path d=\"M6.88647 11.0004H9.10647\" stroke=\"#FF2C10\"\n                                                        stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                                        stroke-linejoin=\"round\" />\n                                                    <path d=\"M6.3335 8.33325H9.66683\" stroke=\"#FF2C10\"\n                                                        stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                                        stroke-linejoin=\"round\" />\n                                                </svg>\n                                            </div>\n                                        </div>\n\n                                        <!--SKS15FEB25 Render inline buttons up to Size -->\n                                        <div *ngFor=\"let button of actionButtonArray?.buttonArray; let i = index\">\n                                            <div *ngIf=\"i < actionButtonArray?.size\"\n                                                style=\" margin-left: 3px; margin-right: 3px;\">\n                                                <div *ngIf=\"isConditionMet(element, button.conditions)\"\n                                                    [matTooltip]=button.tooltip\n                                                    (click)=\"actionButtonClicked(button,element)\"\n                                                    (mouseenter)=\"$event.target.style.border = '1px solid ' + button.hoverBorderColor\"\n                                                    (mouseleave)=\"$event.target.style.border = '1px solid ' + button.borderColor\"\n                                                    style=\"padding: 2px; border-radius: {{button.borderRadius}}px;  border: 1px solid {{button.borderColor}};\">\n                                                    <div (mouseenter)=\"$event.target.style.backgroundColor = button.hoverBackgroundColor\"\n                                                        (mouseleave)=\"$event.target.style.backgroundColor = button.backgroundColor\"\n                                                        style=\"padding: {{button.padding}}px {{button.padding + 2}}px; border-radius: {{button.borderRadius}}px; background-color: {{button.backgroundColor}};\">\n                                                        <img *ngIf=\"button.iconSrc\" #imgElement [src]=\"button.iconSrc\"\n                                                            (mouseenter)=\"imgElement.src = button.hoverIconSrc || button.iconSrc\"\n                                                            (mouseleave)=\"imgElement.src = button.iconSrc\">\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div *ngIf=\"dropdownActionButton && dropdownActionButton.length > 0\"\n                                            class=\"dropdown\">\n                                            <div class=\"clickable-img\" (click)=\"toggleDropdown(i)\"\n                                                style=\" margin-left: 3px; margin-right: 3px;\">\n                                                <div\n                                                    style=\"background-color: #f5f5f5; padding: 2px 4px; border-radius: 5px;\">\n                                                    <svg style=\"background-color: #f5f5f5; border-radius: 5px; border: 1px solid #6c757d;\"\n                                                        width=\"16\" height=\"16\" viewBox=\"0 0 40 40\" fill=\"none\"\n                                                        xmlns=\"http://www.w3.org/2000/svg\">\n                                                        <path\n                                                            d=\"M19.9999 25.6667C23.6818 25.6667 26.6666 22.6819 26.6666 19C26.6666 15.3181 23.6818 12.3334 19.9999 12.3334C16.318 12.3334 13.3333 15.3181 13.3333 19C13.3333 22.6819 16.318 25.6667 19.9999 25.6667Z\"\n                                                            fill=\"#292D32\" stroke=\"#292D32\" stroke-width=\"1.5\"\n                                                            stroke-miterlimit=\"10\" stroke-linecap=\"round\"\n                                                            stroke-linejoin=\"round\" />\n                                                        <path d=\"M17.6467 18.16L20.0001 20.5067L22.3534 18.16\"\n                                                            stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                                            stroke-linejoin=\"round\" />\n                                                    </svg>\n                                                </div>\n                                            </div>\n\n                                            <div class=\"dropdown-menu\"\n                                                [style.right]=\"((actionButtonArray?.size ?? 0) - (actionButtonArray?.buttonArray?.size ?? 0) + (isEditRow ? 1 : 0) + (isDeleteRow ? 1 : 0) + (dropdownActionButton?.length > 0 ? 1 : 0)) * 100 + '%'\"\n                                                *ngIf=\"currentOpenIndex === i\">\n                                                <div *ngFor=\"let btn of dropdownActionButton\">\n                                                    <button *ngIf=\"isConditionMet(element, btn.conditions)\"\n                                                        [attr.data-id]=\"element.id\" style=\"display: flex;\" type=\"button\"\n                                                        class=\"btn btn-icon {{btn.buttonType}} tooltip-container\"\n                                                        [matTooltip]=btn.tooltip [disabled]=\"btn.buttonDisable\"\n                                                        (click)=\"actionButtonClicked(btn,element)\">\n                                                        <img *ngIf=\"btn.iconSrc\" [src]=\"btn.iconSrc\">\n                                                        <div class=\"fc-btn-text\" style=\"padding-left: 10px;\">\n                                                            {{btn.name}}</div>\n                                                    </button>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n\n                        <!-- SKS20MAR25 Summary Rows -->\n                        <ng-container\n                            *ngIf=\"summaryRows && summaryRows.length > 0 && isSummaryColumn && dataSource.data && dataSource?.data?.length > 0 && !isLoading\">\n                            <div *ngFor=\"let row of summaryRows\" class=\"table-row summary-row\">\n                                <!-- Label in the first column -->\n                                <div *ngIf=\"withCheckBox\" class=\"non-summary-table-cell\"></div>\n                                <!-- Empty cells to align with data columns -->\n                                <div *ngFor=\"let col of isSummaryStartColumn; let last = last\"\n                                    class=\"non-summary-table-cell\" [class.last-cell]=\"last\">\n                                </div> <!-- Value or input in the last column -->\n                                <div class=\"summary-table-cell\"\n                                    [class.selected-cell]=\"isEditable && selectedColumn === row.fieldName\"\n                                    (click)=\"$event.stopPropagation(); onColumnClick(row.fieldName)\">{{ row.label }}\n                                </div>\n                                <div class=\"summary-table-cell\"\n                                    [class.selected-cell]=\"isEditable && selectedColumn === row.fieldName\">\n                                    <ng-container *ngIf=\"row.type === 'calculation'\">\n                                        <!-- Add close button for selected column -->\n                                        <div *ngIf=\"isEditable && selectedColumn === row.fieldName\"\n                                            class=\"close-column-btn\"\n                                            (click)=\"$event.stopPropagation(); removeCol(row.fieldName)\">\n                                            ✕\n                                        </div>\n                                        {{ summaryValues[row.fieldName] | number }}\n                                    </ng-container>\n                                    <ng-container *ngIf=\"row.type === 'input'\">\n                                        <input type=\"number\" [(ngModel)]=\"summaryValues[row.fieldName]\"\n                                            (ngModelChange)=\"onSummaryInputChange()\" class=\"nxt-lop-input table-width\"\n                                            style=\"font-size: {{ rowTextSize ? rowTextSize : '13px' }}; color: {{rowTextColor ? rowTextColor : '#2c3137'}};\">\n                                    </ng-container>\n                                </div>\n                                <!-- SKS20MAR25 Empty cells to align with data columns -->\n                                <div *ngFor=\"let col of isSummaryEndColumn; let last = last\"\n                                    class=\"non-summary-table-cell\">\n                                </div>\n                                <div *ngIf=\"actionButton || isDeleteRow || isEditRow\"\n                                    class=\"non-summary-table-cell actionCol sticky-column\">\n                                </div>\n                            </div>\n                        </ng-container>\n\n                        <!--SKS28MAR25 In the Loading section -->\n                        <div class=\"table-body\" *ngIf=\"isLoading\">\n                            <!-- Repeat for 5 skeleton rows -->\n                            <div *ngFor=\"let _ of [1,2,3,4,5]\" class=\"table-row\">\n                                <!-- Checkbox Column -->\n                                <div *ngIf=\"withCheckBox\" class=\"skeleton-cell sticky-column\"></div>\n\n                                <!-- Data Columns -->\n                                <div *ngFor=\"let col of displayedColumns\" class=\"skeleton-cell \"></div>\n\n                                <!-- Action Column -->\n                                <div *ngIf=\"actionButton || isDeleteRow || isEditRow\" class=\"skeleton-cell actionCol\"></div>\n                            </div>\n                        </div>\n                        <!--SKS15FEB25 No Data Row -->\n                        <div *ngIf=\"dataSource.data && dataSource?.data?.length === 0 && !isLoading && from !== 'formBuilder'\" class=\"\">\n                            No records/data found.\n                        </div>\n                        <!-- <div *ngIf=\"dataSource.data && dataSource?.data?.length === 0 && !isLoading && from === 'formBuilder'\" class=\"form-builder-table-box\">\n                            Add  / drags fields from elements sections\n                        </div> -->\n                    </div>\n                </ng-container>\n            </div>\n            <!--SKS15FEB25 Pagination -->\n            <div [class.shadow-hidden]=\"isShadowHidden\">\n                <!-- table input save button changes -->\n                <div class=\"d-flex inlineAdd justify-content-end\">\n                    <div class=\"flex addIconBor cursor-pointer\" *ngIf=\"addInlineRecord \"\n                        (click)=\"addTableRecord(inlineElement)\" matTooltip=\"Add Record\">\n                        <div class=\"addIcon\">\n                            <svg class=\"nav-icon\" xmlns=\"http://www.w3.org/2000/svg\" height=\"24\"\n                                viewBox=\"0 -960 960 960\" width=\"24\">\n                                <path\n                                    d=\"M440-280h80v-160h160v-80H520v-160h-80v160H280v80h160v160Zm40 200q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\" />\n                            </svg>\n                        </div>\n                    </div>\n                    <!--SKS15FEB25 removed button disable logic, added another condition for button showing-->\n                    <!--SKS15FEB25 SR06JAN2025 button disable logic for not select any employee-->\n                    <nxt-button *ngIf=\"(editColumn?.length > 0  || tableSaveButton) && from != 'formBuilder'\"\n                        buttonType=\"btn btn-primary\" [buttonDisable]=\"selection?.selected?.length === 0\"\n                        (buttonClickEmit)=\"saveButton()\" buttonValue=\"Save\"></nxt-button>\n                </div>\n                <nxt-pagination *ngIf=\"isPagination\" [pageSizeOptions]=\"pageSizeOptions\" [collectionSize]=\"configPagination ? totalRecords || totalCount : filterTableNos\"\n                    [pageSize]=\"pageSize\" [currentPage]=\"pageIndex\" [firstLastButtons]=\"true\"\n                    (event)=\"pageParams($event)\">\n                </nxt-pagination>\n            </div>\n        </div>\n    </div>\n</div>\n\n<!--SKS15FEB25 alert on deleting record -->\n<div *ngIf=\"deleteModal\" class=\"modal modal-backdrop show  d-block\" id=\"deleteRecord\" tabindex=\"-1\"\n    aria-labelledby=\"deleteRecordLabel\" [attr.aria-hidden]=\"!deleteModal\">\n    <div class=\"modal-dialog\">\n        <div class=\"modal-content\">\n            <div class=\"modal-header\">\n                <b class=\"modal-title fs-5\" id=\"deleteRecordLabel\">Delete Record</b>\n                <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\n                    (click)=\"deleteModal = false\"></button>\n            </div>\n            <div class=\"modal-body\">\n                Are you sure want to delete the record ?\n            </div>\n            <div class=\"modal-footer\">\n                <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\"\n                    (click)=\"deleteModal = false\">No</button>\n                <button type=\"button\" class=\"btn btn-primary\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\n                    (click)=\"deleteRecordData()\">Yes</button>\n            </div>\n        </div>\n    </div>\n</div>","export class ChangeWrapper {\n    fromQuestionId: string;\n    fromQuestionName: string;\n    toQuestionId: string;\n    toQuestionName: string;\n    valueObj: any;\n    selectedObj: string; // HA 19JAN24 As we need dropdown as object also, to store we are using\n    referenceField:string;\n    field:string; // VD 20Aug24 getting the field name\n}\n","// HA 19DEC23 File created for translation\nimport { Pipe, PipeTransform } from '@angular/core';\nimport { I18nService } from './i18n.service';\n\n@Pipe({\n  name: 'i18n'\n})\nexport class I18nPipe implements PipeTransform {\n  constructor(private i18nService: I18nService) { }\n  transform(value: any, ...args: any[]): any {\n    if (value) {\n      return this.i18nService.getString(value);\n    }\n    return value;\n  }\n\n}\n","import { Component, ElementRef, EventEmitter, Input,ChangeDetectorRef, NgModule, NgZone, OnInit, Output, SimpleChanges, ViewChild, OnChanges } from '@angular/core';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\n // VD 21DEC23 - dependent field change\nimport { ChangeWrapper } from '../../model/changeWrapper';\nimport { Question } from '../../wrapper';\ndeclare var $: any;\n\n@Component({\n  selector: 'app-pick-location',\n  templateUrl: './pick-location.component.html',\n  styleUrls: ['./pick-location.component.css']\n})\nexport class PickLocationComponent implements OnInit ,OnChanges {\n  latitude = null;\n  longitude = null;\n  zoom: number = 10;\n  private geoCoder;\n // public formGroup: FormGroup;\n  @ViewChild('search', { static: true })\n  public searchElementRef: ElementRef<HTMLInputElement>;\n  showModal: boolean = false;\n  @Input() address:string;\n   // VD 21DEC23 - dependent field change\n  @Input() question: Question\n  @Output() locationSelected: EventEmitter<ChangeWrapper> = new EventEmitter<ChangeWrapper>();\n  navigatorGeolocation: any;\n  markerPosition: { lat: any; lng: any; };\n  center: { lat: any; lng: any; };\n  markerOptions:any;\n  @Input() apiKey: any; // HA10012024 declared Api key to src\n\n  constructor(\n   // private mapsAPILoader: MapsAPILoader,\n   public i18nService: I18nService,\n    private ngZone: NgZone,\n    private cdr: ChangeDetectorRef\n  ) {\n      // HA09012024 is to avoid google is undefined error and calling the below created function\n  }\n\n  ngOnInit(): void {\n    // HA-11-01-2024 Changed the map Call from constructor to ngOnInit as it was giving undefined values in the outsourced\n    if(this.apiKey){\n      this.loadGoogleMapsScript().then(() => {\n        this.geoCoder = new google.maps.Geocoder();\n        this.markerOptions = new google.maps.Marker ({\n          draggable: true,\n          animation: google.maps.Animation.DROP\n        });\n        this.initAutocomplete();\n        this.onMarkerDragEnd();\n      });\n    }\n  }\n// RS 23JAN2025\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['address'] && changes['address'].currentValue !== changes['address'].previousValue) {\n      // Ensure latitude & longitude update when the address changes\n      if (this.address) {\n        this.geoCoder.geocode({ address: this.address }, (results, status) => {\n          if (status === 'OK' && results[0]?.geometry?.location) {\n            this.latitude = results[0].geometry.location.lat();\n            this.longitude = results[0].geometry.location.lng();\n            this.markerPosition = { lat: this.latitude, lng: this.longitude };\n            this.center = { lat: this.latitude, lng: this.longitude };\n            this.zoom = 18;\n            this.cdr.detectChanges();  // Force Angular to update the UI\n\n          }\n        });\n      } else {\n        // Reset if no address is provided\n        this.latitude = null;\n        this.longitude = null;\n        this.markerPosition = null;\n        this.center = null;\n        this.cdr.detectChanges();  // FORCE UI UPDATE\n\n      }\n    }\n  }\n\n\n\n\n\n  // HA09012024 is to avoid google is undefined error\n  private loadGoogleMapsScript(): Promise<void> {\n    const script = document.createElement('script');\n    script.type = 'text/javascript';\n    // HA10012024 Assigned Api key to src\n    script.src = `https://maps.googleapis.com/maps/api/js?key=${this.apiKey}&libraries=geometry,places`;\n    script.async = true;\n    script.defer = true;\n    document.body.appendChild(script);\n\n    return new Promise<void>((resolve, reject) => {\n      script.onload = () => {\n        resolve();\n      };\n      script.onerror = (error: any) => {\n        reject(error);\n      };\n    });\n  }\n\n  initAutocomplete(): void {\n    if (this.geoCoder) {\n      const autocomplete = new google.maps.places.Autocomplete(this.searchElementRef?.nativeElement, {\n        types: []\n      });\n      autocomplete.addListener('place_changed', () => {\n        this.ngZone.run(() => {\n          const place: google.maps.places.PlaceResult = autocomplete.getPlace();\n\n          if (place.geometry === undefined || place.geometry === null) {\n            return;\n          }\n          this.latitude = place.geometry.location.lat();\n          this.longitude = place.geometry.location.lng();\n          this.zoom = 18;\n          this.address = place.formatted_address;\n          // VD 21DEC23 - dependent field change\n          let change = new ChangeWrapper();\n          // RS 09DEC24 Changed keys\n          change.fromQuestionId = this.question.id;\n          let addObj = {};\n          addObj['address'] = this.address;\n          addObj['latitude'] = this.latitude;\n          addObj['longitude'] = this.longitude;\n          change.valueObj = addObj;\n         this.locationSelected.emit(change);\n        });\n      });\n    }\n  }\n\n  onMarkerDragEnd(): void {\n    google.maps.event.addListener(this.markerOptions, 'dragend', (event) => {\n      console.log('dragable working',event);\n      this.latitude = event.latLng.lat();\n      this.longitude = event.latLng.lng();\n      this.getAddress(this.latitude, this.longitude);\n  });\n  }\n\n  onMapClick(event: google.maps.MapMouseEvent): void {\n    console.log('onMapClick',event);\n    this.latitude = event.latLng.lat();\n    this.longitude = event.latLng.lng();\n    this.getAddress(this.latitude, this.longitude);\n  }\n\n\n  private setCurrentLocation() {\n    if ('geolocation' in navigator) {\n      navigator.geolocation.getCurrentPosition((position) => {\n        this.latitude = position.coords.latitude;\n        this.longitude = position.coords.longitude;\n        this.markerPosition = { lat: this.latitude, lng: this.longitude };\n        this.center = { lat: this.latitude, lng: this.longitude };\n        this.zoom = 8;\n        this.getAddress(this.latitude, this.longitude);\n      });\n    }\n  }\n\n\n  getAddress(latitude: number, longitude: number) {\n    if (this.geoCoder) {\n      this.geoCoder.geocode({ location: { lat: latitude, lng: longitude } }, (results, status) => {\n        console.log('results',results);\n        console.log('status',status);\n        if (status === 'OK') {\n          if (results[0]) {\n           // this.zoom = 18;\n            this.address = results[0].formatted_address;\n             // VD 21DEC23 - dependent field change\n            let change = new ChangeWrapper();\n            // RS 09DEC24 Changed keys\n            change.fromQuestionId = this.question.id;\n            let addObj1 = {};\n            addObj1['address'] = this.address;\n            addObj1['latitude'] = latitude;\n            addObj1['longitude'] = longitude;\n            change.valueObj = addObj1;\n            this.locationSelected.emit(change);\n          } else {\n            console.log('No results found');\n          }\n        } else {\n          console.log('Geocoder failed due to: ' + status);\n        }\n      });\n    }\n  }\n\n  openMap() {\n    this.showModal = true;\n    if(!this.address){\n      this.latitude = this.longitude = null;\n    }\n    if (!(this.latitude && this.longitude)) {\n      this.setCurrentLocation();\n    }else{\n      this.markerPosition = { lat: this.latitude, lng: this.longitude };\n      this.center = { lat: this.latitude, lng: this.longitude };\n      this.zoom = 8;\n    }\n  }\n\n  closeModal() {\n    this.showModal = false;\n  }\n\n\n}\n\n","<div>\n     <!-- <label class=\"she-label\">Location</label> -->\n    <!-- HA 19DEC23 For translation -->\n     <input #search class=\"she-line-input form-control\" type=\"text\" placeholder=\"{{ 'enterLocation' | i18n:i18nService.currentLanguage }}\"\n        (keydown.enter)=\"$event.preventDefault()\" placeholder=\"{{ 'searchNearestLocation' | i18n:i18nService.currentLanguage }}\" autocorrect=\"off\"\n        autocapitalize=\"off\" spellcheck=\"off\" type=\"text\"  [(ngModel)]=\"address\"\n        >\n        <a (click)=\"openMap()\"\n        style=\"color:#48B7FF;position:relative;top:5px;cursor: pointer;\">\n        <i class=\"fa fa-location-arrow\" aria-hidden=\"true\">\n        <!-- HA 19DEC23 For translation -->\n        </i> {{ 'pickLocation' | i18n:i18nService.currentLanguage }}</a>\n</div>\n\n<div class=\"map-overlay\" *ngIf=\"showModal\">\n  <div class=\"map-modal\">\n    <div class=\"map-modal-content\">\n      <div class=\"map-modal-header\">\n        <!-- HA 19DEC23 For translation -->\n        <h4>{{ 'pickYourLocation' | i18n:i18nService.currentLanguage }}</h4>\n        <button class=\"close-button\" (click)=\"closeModal()\">X</button>\n      </div>\n      <!-- Modal content goes here -->\n    <!-- <agm-map [latitude]=\"latitude\" [longitude]=\"longitude\" [zoom]=\"zoom\" (mapClick)=\"markerDragEnd($event)\"\n    [fullscreenControl]=\"true\">\n    <agm-marker [latitude]=\"latitude\" [longitude]=\"longitude\" [markerDraggable]=\"true\"\n      (dragEnd)=\"markerDragEnd($event)\"></agm-marker>\n    </agm-map> -->\n    <google-map [latitude]=\"latitude\"  [longitude]=\"longitude\" [zoom]=\"zoom\" [center]=\"center\" (mapClick)=\"onMapClick($event)\">\n      <map-marker [position]=\"markerPosition\" [options]=\"markerOptions\"></map-marker>\n    </google-map>\n    </div>\n  </div>\n</div>\n\n\n\n\n\n\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { ChangeService } from '../../services/change.service';\nimport { ChangeWrapper } from '../../model/changeWrapper';\nimport { Question } from '../../wrapper';\nimport { DependencyMeta } from '../../interfaces/dependencyMeta';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\nimport { DataService } from '../../services/data.service';\n\n@Component({\n  selector: 'app-custom-input',\n  templateUrl: './custom-input.component.html',\n  styleUrls: ['./custom-input.component.css']\n})\n\nexport class CustomInputComponent implements OnInit {\n  @Input() value: any | any[]; // input value\n  @Input() question: Question\n  @Input() disabled: boolean = false; // input disabled or not\n  @Input() placeholder:string;\n  @Input() error:any;\n  @Input() fromShengel: boolean = false;\n  @Input() readOnly :boolean = false; // VD 12Jun24 - readonly change\n\n  @Input() ngClassValue:any;\n  @Input() idValue:any;\n  @Input() focusEvent: any;\n  @Output() inputValue = new EventEmitter<any>(); \n\n  subscription: Subscription;\n\n  constructor(private changeService: ChangeService, public i18nService: I18nService, private dataService: DataService) { \n  }\n\n  // RS 09DEC24 Changed keys\n  ngOnInit(): void {\n    // Since the idValue holds the Parent Question\n    // AP-25MAR25 Parse subText if it's not already an object\n    this.question['subText'] = \n    typeof this.question?.subText === 'object'\n      ? this.question.subText\n      : (typeof this.question['subText'] === 'string' && this.question['subText'].trim() !== '' \n          ? JSON.parse(this.question['subText']) \n          : {});\n  \n    if(this.question.subText != undefined) {\n      this.disabled = true;\n      let dependencyObj: any = this.question.subText;\n      if(dependencyObj.disabled && dependencyObj.disabled == \"false\"){\n        this.disabled = false;\n      }else{\n        this.disabled = true;\n      }\n      // Subscribe for the changes\n      this.subscription = this.changeService.changeAnnounced$.subscribe(\n        (changeValue) => {\n          if(changeValue != undefined) {\n            // console.log('inside subscription for the change');\n            if(changeValue.valueObj != undefined && changeValue.fromQuestionId == dependencyObj.sourceQuestionId) {\n              // VD 20Aug24 handling the multiple object\n              this.value = this.dataService.getValue(changeValue.valueObj,dependencyObj.valueField);\n              this.inputValue.emit(this.value);\n            }\n            this.changeService.confirmChange(dependencyObj.sourceQuestionId);\n          }\n        }\n      );\n    }\n  }\n\n  ngOnChange(): void {\n  }\n\n  ngOnDestroy() {\n    // prevent memory leak when component destroyed\n    this.subscription?.unsubscribe();\n  }\n  \n  onInputChange(input:any){\n    this.inputValue.emit(input.target.value);\n  }\n}\n"," <!-- HA 19DEC23 Included Style value from Salesforce -->\n  <!-- HA 18-JAN-24 Added these classes for style, HA 31-JAN-24 Added ternary for style -->\n  <!-- HA 02FEB24 question input will hold the value to display -->\n  <!-- // VD 12Jun24 - readonly change-->\n  <!-- RS 09DEC24 Changed keys--> \n  <input *ngIf=\"!fromShengel\" type=\"text\" \n       [(ngModel)]=\"question.input\" \n       [ngClass]=\"ngClassValue\"\n       class=\"she-line-input form-control\"\n       [id]=\"idValue\"\n       (focus)=\"focusEvent\"\n       [readOnly]=\"readOnly\"\n       [style.border-color]=\"error ? 'red !important' : ''\"\n       [style]=\"question?.style?.inputStyle\"\n       [placeholder]=\"placeholder ? placeholder : ''\"\n       (input)=\"onInputChange($event)\" />\n\n<input *ngIf=\"fromShengel\" \n       [(ngModel)]=\"question.input\"\n       type=\"text\" \n       [readOnly]=\"readOnly\"\n       class=\"she-line-input form-control\" \n       [placeholder]=\"placeholder ? placeholder : '' \"\n       [disabled]=\"disabled\"\n       [style]=\"question?.style?.inputStyle\"\n       (input)=\"onInputChange($event)\" />\n<!-- HA 19DEC23 For translation -->\n<span *ngIf=\"error\" class=\"error-msg\">{{question?.errorMessage}}*</span>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\nimport { Subscription } from 'rxjs';\nimport { ChangeService } from '../../services/change.service';\nimport { DependencyMeta } from '../../interfaces/dependencyMeta';\n\n@Component({\n  selector: 'app-custom-text-area',\n  templateUrl: './custom-text-area.component.html',\n  styleUrls: ['./custom-text-area.component.css']\n})\nexport class CustomTextAreaComponent implements OnInit {\n  @Input() value: any | any[]; // input value\n  @Input() placeholder:string;\n  @Input() rows:Number; //The number of visible text lines for the control\n  @Input() error:any;\n  @Input() question:any;\n  @Input() readOnly = false; // VD 12Jun24 - readonly change\n  @Output() textareaValueChange: EventEmitter<string> = new EventEmitter<string>(); \n  subscription: Subscription;\n\n  constructor(public i18nService: I18nService,private changeService: ChangeService) { }\n  // RS 09DEC24 Changed keys\n  ngOnInit(): void {\n    // AP-25MAR25 Parse subText if it's not already an object\n    this.question['subText'] = typeof this.question?.subText === 'object' ? this.question?.subText : JSON.parse(this.question['subText'] || {});\n    // 10MAY24 - VD Dependent update\n      if(this.question.subText){\n        let dependencyObj: DependencyMeta = this.question.subText;\n        if(dependencyObj.sourceQuestionId){\n          // Subscribe for the changes\n          this.subscription = this.changeService.changeAnnounced$.subscribe(\n            (changeValue) => {\n              if(changeValue != undefined) {\n                if(changeValue.valueObj != undefined && changeValue.fromQuestionId == dependencyObj.sourceQuestionId) {\n                  this.value = changeValue.valueObj[dependencyObj.valueField];\n                  this.textareaValueChange.emit(this.value);\n                }\n                this.changeService.confirmChange(dependencyObj.sourceQuestionId);\n              }\n            }\n          );\n      }\n    }\n    \n  }\n\n  onTextareaChange(event:any): void {\n    this.textareaValueChange.emit(event.target.value);\n  }\n\n}\n","<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- RS 09DEC24 Changed keys--> \n<textarea \n    [class]=\"error ? 'invalid' : ''\"\n    [(ngModel)] =\"value\" \n    [rows]=\"rows\" \n    class=\"she-line-input form-control\" \n    [placeholder]=\"placeholder\"\n    [readOnly]=\"readOnly\"\n    (input)=\"onTextareaChange($event)\"\n></textarea>\n<!-- HA 19DEC23 For translation -->\n<span *ngIf=\"error\" class=\"error-msg\">{{ question?.errorMessage }}</span>","import { Component, OnInit,Input,Output,EventEmitter} from '@angular/core';\nimport { I18nService } from '../../i18n.service';\n\n@Component({\n  selector: 'app-custom-date-picker',\n  templateUrl: './custom-date-picker.component.html',\n  styleUrls: ['./custom-date-picker.component.css']\n})\nexport class CustomDatePickerComponent implements OnInit {\n  @Input() date: string;\n  @Input() minDate:any;\n  @Input() maxDate:any;\n  @Input() error:any;\n  @Input() errorMessage:string;\n  @Input() readOnly = false; // VD 12Jun24 - readonly change\n  @Output() dateChange: EventEmitter<any> = new EventEmitter<any>();\n  dateSelected:any\n  constructor(public i18nService: I18nService) { }\n\n  ngOnInit(): void {\n    console.log('read only check',this.readOnly);\n   this.dateSelected = new Date(this.date);\n  }\n\n  onDateChange(event: any) {\n    this.dateChange.emit(event);\n  }\n\n}\n","<!-- <div class=\"date-picker-container\">\n    <label>{{label}}</label>\n    <input type=\"date\" [min]=\"minDate\" [max]=\"maxDate\" [required]=\"required\" (change)=\"onDateChanged($event)\">\n</div> -->\n<!-- <mat-form-field>\n    <input matInput [matDatepicker]=\"picker\" [placeholder]=\"placeholder\" [min]=\"minDate\" [max]=\"maxDate\" [(ngModel)]=\"selectedDate\" (dateChange)=\"onDateChange($event)\">\n    <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n    <mat-datepicker #picker></mat-datepicker>\n</mat-form-field> -->\n<!--VD 12Jun24 - readonly change --> \n<!-- VD 01Aug24 - validation change-->\n<p>\n    <input  \n    [class]=\"error ? 'invalid' : ''\"\n    [(ngModel)]=\"dateSelected\" \n    [owlDateTimeTrigger]=\"dt\" \n    [owlDateTime]=\"dt\"  \n    [min]=\"minDate\"\n    [disabled]=\"readOnly\"\n    placeholder=\"DD/MM/YYYY HH:MM\"\n    (input)=\"onDateChange($event)\"\n    style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n    (dateTimeChange)=\"onDateChange($event)\">\n    <owl-date-time #dt></owl-date-time>\n</p>\n<span *ngIf=\"error\" class=\"error-msg\">{{errorMessage}}</span>\n  ","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\n\n@Component({\n  selector: 'app-dropdown-with-flag',\n  templateUrl: './dropdown-with-flag.component.html',\n  styleUrls: ['./dropdown-with-flag.component.css']\n})\nexport class DropdownWithFlagComponent implements OnInit {\n  @Input() certified:boolean= false;\n  // @Input() getValue:string = '';\n  @Input() JobPerformerCertificates: any[] = [];\n  @Output() flagDropDownChange: EventEmitter<any> = new EventEmitter<any>(); \n  selectedValue:string = '';\n\n  constructor(public i18nService: I18nService) { }\n\n  ngOnInit(): void {\n  }\n  ngOnChanges(){\n    this.selectedValue = null;\n  }\n  \n  onJobPerformerCertified(event:any){\n     this.flagDropDownChange.emit(event);\n  }\n\n}\n","<div class=\"she-title\">\n    <label class=\"switch\">\n      <input  class=\"switch-input\" type=\"checkbox\" disabled=\"true\" [checked]=\"certified\"/>\n      <span class=\"switch-label\" data-on=\"Certified\" data-off=\"Not Certified\"></span> \n      <span class=\"switch-handle\"></span> \n    </label> \n    <!-- HA 19DEC23 For translation -->\n    <ng-select *ngIf=\"certified\"\n      style=\"margin-left: 36px; width: 205px; margin-bottom: 8px;\" \n      [items]=\"JobPerformerCertificates\"\n      [(ngModel)]=\"selectedValue\"\n      (change)=\"onJobPerformerCertified($event)\"\n      placeholder=\"---{{ 'select' | i18n:i18nService.currentLanguage }}---\">\n    </ng-select>\n  </div>   ","import { Component, OnInit,Input,Output,EventEmitter, Optional } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { APIMeta } from '../../interfaces/apimeta';\nimport { ChangeWrapper } from '../../model/changeWrapper';\nimport { ChangeService } from '../../services/change.service';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\n// VD 23JAN24 used service file for callout\nimport { DataService } from '../../services/data.service';\n\n@Component({\n  selector: 'app-custom-dropdown',\n  templateUrl: './custom-dropdown.component.html',\n  styleUrls: ['./custom-dropdown.component.css']\n})\nexport class CustomDropdownComponent implements OnInit {\n  @Input() options: any[] = []; \n  @Input() placeholder: string;\n  @Input() apiMeta: string;\n  @Input() selectedValue: string;\n  @Input() progressBar: boolean;\n  @Input() id:string;\n  @Input() readOnly : boolean = false; // VD 12Jun24 - readonly change\n  @Input() errorMessage: string;\n  @Input() error:any;\n  @Input() fromShengel: boolean = false;\n  @Input() question:any;\n  @Input() referenceField:string;\n  @Input() token:string;    // VD 19JAN24 - getting token as input\n  @Output() valueChange: EventEmitter<ChangeWrapper> = new EventEmitter<ChangeWrapper>();\n  invalidFieldIds:string[] = [];\n  constructor( \n    private changeService: ChangeService, \n    private dataService: DataService,\n    public i18nService: I18nService,\n        ) { \n    this.changeService.submitValidate$.subscribe((data)=>{\n      // to get the error message's field id's\n      this.invalidFieldIds.push(data);\n    })\n  }\n\n  public labelField: string;\n  public valueField: string;\n  subscription: Subscription;\n  //public apiObj:APIMeta;\n  public uniqueKey:string;\n  apiObj: any = {};\n\n\n  ngOnInit(): void {\n    \n  }\n  getOptions(){\n    console.log('test click');\n    // console.log('inside oninit of custom-dropdown of ' + this.id);\n    // console.log(this.apiMeta);\n    //VD 07Aug24 - isDependentField change\n    // VD 25Oct24 - changes\n    this.placeholder = this.placeholder ? this.placeholder : '---Select option---';\n    if(this.apiMeta) {\n    try {\n      // MSM-27MAR25 Ensure ques.subText is always an object by parsing it if it's a string\n      this.apiObj = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);\n\n      // Check if apiObj and apiObj.field are defined\n      if (this.apiObj && this.apiObj.field) {\n        this.labelField = this.apiObj.field;\n        this.uniqueKey = this.apiObj.uniqueKey;\n        const cachedOptions = localStorage.getItem(this.uniqueKey);\n        if (cachedOptions) {\n          this.options = JSON.parse(cachedOptions);\n        }else {\n          if(!this.apiObj.isDependentField){\n            this.options = [];\n          }\n\n          // VD 09Sep24- setup the query param for api call // MR 08JAN24 DependentField API Fix moved below logic from above if condition\n          let fullEndPoint ;\n          if(this.apiObj.endpoint) {\n            if(this.apiObj.queryValueReference && this.apiObj.queryField) {\n              // process the end point with query param\n              let queryReferences = this.apiObj.queryValueReference.split(',');\n              let queryFields = this.apiObj.queryField.split(',');    // MR 08JAN24 similar to above valuereference get list of QUERY Fields\n              let queryValues = this.apiObj.queryValue.split(',');    // MR 08JAN24 similar to above valuereference get list of QUERY Values (Default)\n              let queryParams = [];\n              let qIndex = 0;                                         // MR 08JAN24 Query Index\n              // Iterate over queryReferences and find the corresponding element in referenceData\n              queryReferences.forEach(reference => {\n                // Find the element in referenceData that matches the current reference\n                // RS 09DEC24 Changed keys\n                let matchingElement = this.question?.referenceQueryData.find(element => element.referenceField === reference);\n              // If a matching element is found, get its input value and create a query parameter\n                if (reference && matchingElement) {   // MR 08JAN24 if reference exist & matching element found\n                  queryParams.push(`${queryFields[qIndex]}=${matchingElement.input}`);    // MR 08JAN24 removed reference\n                } else {    // MR 08JAN24 included option for multiple query params and default value in case of reference is not found\n                  queryParams.push(`${queryFields[qIndex]}=${queryValues[qIndex]}`);\n                }\n\n                qIndex++;\n              });\n              fullEndPoint = this.apiObj.endpoint + '?' + queryParams.join('&');\n              console.log(fullEndPoint);\n            } else {\n                // if no query param get the actual endPoint\n              fullEndPoint = this.apiObj.endpoint;\n            }\n\n            // VD 19JAN24 - added one more param for authentication\n            this.dataService.apiResponse(fullEndPoint)?.subscribe((apiResponse) => {\n              // HA 18-JAN-24 Assigned apiresponse directly if we have the response in array also\n              // VD 19JAN24 - if response has key with value(which is array)\n              let responses;\n              if(this.apiObj.variable){\n                // VD 21May24 - handling multiple child objects\n                // VD 22May24 - used common service file\n                responses = this.dataService.getValue(apiResponse,this.apiObj.variable);\n                let results = [];\n                // HA 19JAN24 To avoid undefined error in console\n                for (let i = 0; i < responses?.length; i++) {\n                  var resp = responses[i];\n                  results.push(resp);\n                }\n                this.options = results;\n              }else{  // VD 19JAN24 - if response has value(which is array) only\n                responses = apiResponse;\n                this.options = responses;\n              }\n              // VD 25Oct24 - Store fetched options in local storage\n              if(this.uniqueKey){\n                localStorage.setItem(this.uniqueKey, JSON.stringify(this.options));\n              }\n              // Reference https://www.npmjs.com/package/@ng-select/ng-select\n            })\n          }\n\n          // VD NOV23 - handle the dependent update for dropdown\n          // VD 09Sep24- push the dependent field values for dropdown\n          let sourceId = this.apiObj.sourceQuestionId;\n          if(sourceId && this.apiObj.variable || this.apiObj.valueField){\n            // Subscribe for the changes\n            this.subscription = this.changeService.changeAnnounced$.subscribe(\n              (changeValue) => {\n                if(changeValue != undefined) {\n                  // console.log('inside subscription for the change');\n                  if(changeValue.valueObj != undefined && changeValue.fromQuestionId == this.apiObj.sourceQuestionId) {\n                    //  this.selectedValue = changeValue.valueObj[this.apiObj.valueField];\n                    //  let value ={};\n                    //  value['name'] = this.selectedValue;\n                      let responses;\n                      if(this.apiObj.variable){\n                        responses = this.dataService.getValue(changeValue.valueObj,this.apiObj.variable);\n                        let results = [];\n                        for (let i = 0; i < responses?.length; i++) {\n                          var resp = responses[i];\n                          results.push(resp);\n                        }\n                        this.options = results;\n                      }else{\n                        responses = changeValue.valueObj;\n                        this.options = responses;\n                      }\n                    // VD 25Oct24 - Store fetched options in local storage\n                    if(this.uniqueKey){\n                      localStorage.setItem(this.uniqueKey, JSON.stringify(this.options));\n                    }\n                    }\n                  this.changeService.confirmChange(this.apiObj.sourceQuestionId);\n                }\n            }\n          );\n          }\n        }\n      }\n    } catch (error) {\n      console.error('Error parsing apiMeta:', error);\n    }\n  } \n}\n// VD 22May24 - used common service file\n\n  selectChange(event:any) {\n    console.log('inside selectChange from ' + this.id);\n    // console.log(event);\n    let change = new ChangeWrapper(); // ChangeWrapper = JSON.parse('{}');\n    change.fromQuestionId = this.id;\n    change.valueObj = event ? event : '';\n    change.referenceField = this.referenceField;\n    change.selectedObj = event ? event[this.labelField] : '';\n    this.valueChange.emit(change);\n    // once got value in dropdown remove the error validation\n    if(event){\n      this.invalidFieldIds =[];\n    }\n  }\n}\n","<!-- HA 18-JAN-24 Commenting these lines as we don't have to use shengel here -->\n<!-- <select\n  [ngClass]=\"{\n    'dt-line dpDown down myt-dropbox myt-border-r myt-font1': progressBar,\n    'custom-select': !progressBar\n  }\" class=\"custom-select mr-sm-2 dd-height\" \n  [id]=\"id\" \n  [(ngModel)]=\"selectedValue\"\n  (change)=\"selectChange($event.target.value);\" \n  [style.borderColor]=\"error ? 'red' : '#858585'\"\n  [style.color]=\"error ? 'red' : ''\">\n    <option *ngFor=\"let option of options\" [value]=\"this.apiMeta !== undefined ? option.title : option.value\" class=\"option\">{{ this.apiMeta !== undefined ? option.title : option.value }}</option>\n    <option *ngIf=\"errorMessage\" value=\"\" disabled hidden>{{ errorMessage }}</option>\n</select> -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<!-- VD 07Aug24 - isDependentField change-->\n<!-- VD 25Oct24 - changes-->\n<!-- RS 09DEC24 Changed keys--> \n <!-- AP 28MAR25 LabelField Checking -->\n  <!-- AP 02APR25 If apiObj exists and is not a dependent field, use option[labelField], otherwise use option.value -->\n<ng-select\n  [class]=\"invalidFieldIds.includes(id) || error ? 'shengel-custom-select invalid' : 'shengel-custom-select'\"\n  [(ngModel)]=\"selectedValue\" \n  [placeholder]=\"placeholder\"\n  [disabled]=\"readOnly\"\n  (click)=\"getOptions()\"\n  (change)=\"selectChange($event)\"\n  [id]=\"id\">\n  <ng-option \n    *ngFor=\"let option of options\" \n    [value]=\"apiObj && !apiObj.isDependentField && option[labelField] ? option[labelField] : option?.value\">\n    {{ apiObj && !apiObj.isDependentField && option[labelField] ? option[labelField] : option?.value }}\n  </ng-option> \n</ng-select>\n<span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">{{errorMessage}}</span>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ChangeService } from '../../services/change.service';\n\n@Component({\n  selector: 'app-custom-label',\n  templateUrl: './custom-label.component.html',\n  styleUrls: ['./custom-label.component.css']\n})\nexport class CustomLabelComponent implements OnInit {\n\n  @Input() labelValue:string;\n  @Input() labelStyle: string;\n\n  constructor() { \n  }\n\n  ngOnInit(): void {\n  }\n\n}\n","\n<div style={{labelStyle}}>{{ labelValue }}</div>\n","import {\n  Component,\n  OnInit,\n  OnChanges,\n  Inject,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ElementRef,\n  SimpleChanges,\n} from \"@angular/core\";\nimport { ActivatedRoute, Params } from \"@angular/router\";\nimport { SalesforceService } from \"../../services/salesforce.service\";\nimport { IMyDateModel, IMyDpOptions } from \"mydatepicker\";\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\nimport { UntypedFormBuilder } from \"@angular/forms\";\nimport { NgxSpinnerService } from \"ngx-spinner\";\n//import { NgxIndexedDBService, IndexDetails} from 'ngx-indexed-db';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport * as moment from 'moment';\nimport { DataService } from '../../services/data.service';\nimport { ChangeService } from '../../services/change.service';\nimport { SharedService } from \"../../services/shared.service\";\nimport {\n  Question,\n  QuestionBook,\n  AnswerBook,\n  AnswerWrapper,\n  Option,\n  OptionValue,\n  AttachmentWrapper,\n  Attachment,\n  LocalQuestion\n} from \"../../wrapper\";\nimport { ErrorWrapper } from \"../../model/errorWrapper\";\nimport {\n  TESTQUESTION,\n  DTQUESTION,\n  FILEQUESTION,\n  TAQUESTION,\n  RADIOQUESTION,\n  CHECKQUESTION,\n  BOOKQUESTION,\n  TESTQB,\n  RTAQUESTION //RS 06JAN25\n} from \"../../sample\";\nimport { from } from \"rxjs\";\n// HA 19DEC23 imported translation service\nimport { I18nService } from \"../../i18n.service\";\n@Component({\n  selector: \"lib-questionnaire\",\n  templateUrl: \"./questionnaire.component.html\",\n  encapsulation: ViewEncapsulation.None,\n  providers: [ChangeService],\n  styleUrls: [\"./questionnaire.component.css\"],\n})\nexport class QuestionnaireComponent implements OnInit {\n  @Input() qbId: string;\n  @Input() insuranceStartDate: string;\n  @Input() serv: string;\n  @Input() tkn: string;\n  @Input() api: string; // VD getting the api as input\n  @Output() handleEvent = new EventEmitter();\n  @Output() handlePage: EventEmitter<any> = new EventEmitter();\n  @Output() handleQuestion: EventEmitter<any> = new EventEmitter();\n  @Output() handleBook: EventEmitter<any> = new EventEmitter();\n  @Output() handleSubmit: EventEmitter<any> = new EventEmitter();\n\n  params: Params;\n  public deviceInfo = null;\n  public abItem: AnswerBook;\n  public qbItem: QuestionBook;\n  public questionItem: Question;\n  public answerWrap: AnswerWrapper;\n \n  // CONDITIONAL TYPES\n  public radioFlag: boolean = false;\n  public dataFlag: boolean = false;\n \n  // OPTIONONLY TYPES\n  public dropdownFlag: boolean = false;\n  public checkboxFlag: boolean = false;\n \n  // UNCONDITIONAL TYPES\n  public textFlag: boolean = false;\n  public taFlag: boolean = false;\n  public rtaFlag: boolean = false;\n  public dtFlag: boolean = false;\n  public timeFlag: boolean = false;\n  public dateFlag: boolean = false;\n  public fileFlag: boolean = false;\n  public emailFlag: boolean = false;\n  public numberFlag: boolean = false;\n  public alphanumericFlag: boolean = false;\n  public bookFlag: boolean = false;\n  public listFlag: boolean= false;\n  //Back button\n  public backButtonFlag: boolean = false;\n  // VD disabled\n  public isButtonDisabled: boolean = false;\n  public optionValues: OptionValue[] = [];\n  public subQuestions: Question[] = [];\n  public inpValue: string;\n  public answerMap = new Map();\n  public dateMap = new Map();\n  public selectedhourMap = new Map();\n  public selectedminuteMap = new Map();\n  public attachmentsMap = new Map();\n  public sqOptions = new Map();\n  public subAnsMap = new Map();\n  public localSubQuestions: LocalQuestion[] = [];\n  public questionStack = [];\n  public questionName = [];\n  public attachments: any[] = [];\n  public attachmentIdList: any[] = [];\n  public attachmentId: string = \"\";\n  public attachment: any;\n  public allowedFileExtension: string[];\n  public fileExceededLimit: boolean = false;\n  public fileTypeIncorrect: boolean = false;\n  public back: boolean = false;\n  public backicon: boolean = true;\n  public check: boolean;\n  public pop: boolean;\n  public localDate: string;\n  public currentName: string;\n  public pathquestion: number;\n  public percent: number;\n  public count: number;\n  public taFocusOut: boolean = false;\n  public notValidAccNum: boolean = false;\n  public splCCBackClick: boolean = false;\n  public summary = [];\n  public localSubQMap = new Map();\n  public keyIndex: number = 0;\n  //public sques: string;\n  public selDate: any = {};\n  public selectDate: string;\n  private today: Date = new Date();\n  private el: HTMLElement;\n  public innerhtml: any;\n  public possibilities: any;\n  public innerhtml1: any;\n  public summaryData =[];\n \n  public hours: any[] = [\n    \"01\",\n    \"02\",\n    \"03\",\n    \"04\",\n    \"05\",\n    \"06\",\n    \"07\",\n    \"08\",\n    \"09\",\n    \"10\",\n    \"11\",\n    \"12\",\n  ];\n \n  public minutes: string[] = [\n    \"00\",\n    \"01\",\n    \"02\",\n    \"03\",\n    \"04\",\n    \"05\",\n    \"06\",\n    \"07\",\n    \"08\",\n    \"09\",\n    \"10\",\n    \"11\",\n    \"12\",\n    \"13\",\n    \"14\",\n    \"15\",\n    \"16\",\n    \"17\",\n    \"18\",\n    \"19\",\n    \"20\",\n    \"21\",\n    \"22\",\n    \"23\",\n    \"24\",\n    \"25\",\n    \"26\",\n    \"27\",\n    \"28\",\n    \"29\",\n    \"30\",\n    \"31\",\n    \"32\",\n    \"33\",\n    \"34\",\n    \"35\",\n    \"36\",\n    \"37\",\n    \"38\",\n    \"39\",\n    \"40\",\n    \"41\",\n    \"42\",\n    \"43\",\n    \"44\",\n    \"45\",\n    \"46\",\n    \"47\",\n    \"48\",\n    \"49\",\n    \"50\",\n    \"51\",\n    \"52\",\n    \"53\",\n    \"54\",\n    \"55\",\n    \"56\",\n    \"57\",\n    \"58\",\n    \"59\",\n  ];\n \n  public selectedHour: string = \"\";\n  public selectedMinute: string = \"\";\n  public selectedMeridiem: string = \"\";\n  public valueName: string = \"\";\n  public valueName1: string = \"\";\n  public bookFlagAccept: string[];\n  public recordId: string;\n  public currentQuestionId: string;\n  public spinnerType: string;\n  public spinnerName: string;\n  public nextValue:string ='';\n \n  start_date?: any;\n \n  //search component\n  public tempoAddress: any[] = [];\n  public selectedValue: string;\n  public selectedPostalcode: string;\n  public selectedProvince: string;\n  public selectedCity: string;\n  public selectedArea: string;\n  public localaddress: any[] = [];\n  public allAddress :any [] = [];\n  public PostalCode:string;\n  public places: any[] = [];\n  public province:any[]=[];\n \n  // REQ-01 PROGRESS BAR\n  public progressStyle: string = \"0%\";\n  public answerCount: number = 0;\n  public indexCount: number = 0;\n  public addFlag: boolean = true;\n  public myDatePickerOptions: IMyDpOptions = {};\n  individualBookButton: boolean;\n \n  public allInputValues = []; // HA 02FEB24 To store all the input values\n  constructor(\n    private sfService: SalesforceService,\n    private dataService: DataService,\n    private changeService: ChangeService,\n    private sharedService: SharedService,\n    private route: ActivatedRoute,\n    private sanitizer: DomSanitizer,\n    private spinner: NgxSpinnerService,\n    private _formBuilder: UntypedFormBuilder,\n    //private dbService: NgxIndexedDBService,\n    private deviceService: DeviceDetectorService,\n    el: ElementRef,\n    public i18nService: I18nService\n  ) {\n    // VD 10Aug24-spinner changes\n    this.spinnerName = \"sp1\";\n    this.spinnerType = \"ball-spin-clockwise-fade\";\n  }\n \n  // HA 02FEB24 On date change need to store the changed value so passing the question\n  // RS 09DEC24 Changed keys\n  onDateChanged(event: IMyDateModel, ques: any) {\n    //console.log('Inside the onDateChanged');\n    //to change the border color\n    if (this.qbItem.progressBar) {\n      //console.log('Inside the progressBar cond');\n      this.inpValue =\n        event.date.day + \"/\" + event.date.month + \"/\" + event.date.year;\n      if(this.questionItem.type ==\"Book\"){\n        this.selectDate =  event.date.day + \"/\" + event.date.month + \"/\" + event.date.year;\n      }\n    } else {\n      //console.log('Inside the ELSE of progressBar cond');\n      if(this.questionItem.type ==\"Book\"){\n        this.selectDate =  event.date.day + \"-\" + event.date.month + \"-\" + event.date.year;\n      }\n      this.inpValue =\n        event.date.year + \"-\" + event.date.month + \"-\" + event.date.day;\n    }\n    const htmlElement = window.document.getElementsByClassName(\"mydp\");\n    htmlElement\n      .item(0)\n      .setAttribute(\"style\", \"border-color:#87be1c;width:100%\");\n    this.dateMap.set(this.questionItem.id, event);\n    if (\n      event.date.day === 0 &&\n      event.date.month === 0 &&\n      event.date.year === 0\n    ) {\n      this.dateMap.delete(this.questionItem.id);\n      this.answerMap.delete(this.questionItem.id);\n    }\n    //console.log('this.inpValue = '+this.inpValue);\n    //console.log('this.selectDate = '+this.selectDate);\n    // HA 02FEB24 Assigning input value to ques input\n    ques.input = this.inpValue;\n  }\n\n  ngOnInit() {\n    this.deviceInfo = this.deviceService.getDeviceInfo();\n    this.route.queryParams.subscribe((params: Params) => {\n      if (params['id']) {\n        this.individualBookButton = true;\n      }else if(params['bookletId']){\n        this.individualBookButton = false;\n      }\n    });\n    this.inpValue = \"\";\n    this.selectedMeridiem = \"AM\";\n    this.processQB();\n    //console.log(localStorage.getItem('address'));\n    if(localStorage.getItem(\"address\")){\n      this.localaddress = JSON.parse(localStorage.getItem(\"address\"));\n      //console.log('Length='+this.localaddress.length);\n      this.allAddress=this.localaddress.filter((item, index) => {\n        if (this.localaddress.indexOf(item) == index){\n          return item;\n        }\n      });\n      this.allAddress.sort(function(a, b){\n        return a.zipCode - b.zipCode\n      });\n    } else if(this.deviceInfo.os === 'iOS'){\n        let openRequest = indexedDB.open(\"addressDB\");\n        openRequest.onsuccess = (event) => {\n          const targetNew = event.target as IDBRequest;\n          let dbNew = targetNew.result;\n          const requestNew = dbNew.transaction('addressTable')\n                .objectStore('addressTable')\n                .get(1);\n          requestNew.onsuccess = ()=> {\n              const tempVar = requestNew.result;\n              this.localaddress = JSON.parse(tempVar.wholeAddressString);\n              this.allAddress=this.localaddress.filter((item, index) => {\n                if (this.localaddress.indexOf(item) == index){\n                  return item;\n                }\n              });\n              this.allAddress.sort(function(a, b){\n                return a.zipCode - b.zipCode\n              });\n        }\n      };\n    }\n  }\n\n ngAfterViewInit() {\n    // SKS20MAR25 Ensure the child component is available before calling the method\n     // AP-25MAR25 Empty string replace null\n    setTimeout(() => {\n      this.subQuestions.forEach(ques => {\n        let input: any;\n        if(ques.type == 'Dropdown' || ques.type == 'Radio' || ques.type == 'Location'){\n          input = {}\n          input['valueObj'] = ques.input || null\n          input['referenceField'] = ques.referenceField || null\n          input['fromQuestionId'] = ques.id || null\n        } else if(ques.type == 'Date' || ques.type == 'DateTime'){\n          input = {}\n          input['value'] = ques.input || null\n        } else if(ques.type == 'List'){\n          input = {}\n          ques['subText'] = typeof ques?.subText === 'object' ? ques?.subText : JSON.parse(ques['subText']);\n          let apiObj: any = ques.subText;\n          input['valueObj'] = ques.input || null\n          input['field'] = apiObj.defaultField || apiObj.field[0] || apiObj.field || null\n        } else {\n          input = ques.input || null\n        }\n        this.childEventCapture(input, ques);\n      });\n    });\n  }\n// call when bookId changes\n  ngOnChanges(simplechanges: SimpleChanges) {\n    if(simplechanges['qbId']){\n      this.processQB();\n    }\n  }\n   // RS 09DEC24 Changed keys\n  date_TimeMap() {\n    this.selectedhourMap.set(this.questionItem.id, this.selectedHour);\n    this.selectedminuteMap.set(this.questionItem.id, this.selectedMinute);\n  }\n \n  day() {\n    this.myDatePickerOptions = {\n      dateFormat: \"dd.mm.yyyy\",\n      sunHighlight: false,\n      disableDateRanges: [],\n      showClearDateBtn: false,\n      disableSince: {\n        year: 0,\n        month: 0,\n        day: 0,\n      },\n      disableUntil: {\n        year: 0,\n        month: 0,\n        day: 0,\n      },\n      showTodayBtn: false,\n      dayLabels: {\n        su: \"Dom\",\n        mo: \"Lun\",\n        tu: \"Mar\",\n        we: \"Mié\",\n        th: \"Jue\",\n        fr: \"Vie\",\n        sa: \"Sáb\",\n      },\n      monthLabels: {\n        1: \"Ene\",\n        2: \"Feb\",\n        3: \"Mar\",\n        4: \"Abr\",\n        5: \"Mayo\",\n        6: \"Jun\",\n        7: \"Jul\",\n        8: \"Ago\",\n        9: \"Sep\",\n        10: \"Oct\",\n        11: \"Nov\",\n        12: \"Dic\",\n      },\n    };\n  }\n \n  change() {\n    const htmlElement = window.document.getElementsByClassName(\"mydp\");\n    if (this.selDate === null || this.inpValue.length === 0) {\n      htmlElement\n        .item(0)\n        .setAttribute(\"style\", \"width:100%;border: 1px solid red\");\n    } else {\n      htmlElement\n        .item(0)\n        .setAttribute(\"style\", \"border: 1px solid #87be1c ;width:100%\");\n    }\n  }\n \n  processQB() {\n    \n    console.log('ProcessQB');\n    //this.qbItem\n    console.log(this.qbId);\n    //console.log('Version in process is 8bf11efa7f91a391d957bf6b5078edc7e656b67c');\n    if (this.qbId) {\n      if (this.qbId.length == 18) {\n        this.readQuestionBook(this.qbId);\n      } else {\n        //console.log('Inside the else part');\n        //console.log('Setting the Question Directly for testing');\n        this.questionItem = DTQUESTION;\n        this.qbItem = TESTQB;\n        this.processQuestion();\n      }\n    }\n  }\n \n  trimLastDummy(input: string) {\n    return (input = input.substring(0, input.length - 6));\n  }\n \n  getProperTime(def: string, input: string) {\n    return input === \"\" ? def : input;\n  }\n   // RS 09DEC24 Changed keys\n  //Summary Question Clickable Logic\n  handleEditClick(value: string) {\n    this.backicon = false;\n    if (this.abItem?.status == \"Pending\") {\n      if (value == null) {\n        return;\n      }\n      this.readQuestion(value);\n      //console.log(' in side summaryopen'+ this.summary.length);\n \n      //Assign question stack length from summary part\n      var arrayLength = this.questionStack.length;\n      var lengthValue = this.questionStack.indexOf(value);\n \n      for (let i = arrayLength; i > lengthValue; i--) {\n           this.questionStack.pop();\n      }\n      if (this.qbItem.progressBar === true) {\n        var arrayLength1 = this.questionName.length;\n        for (let j = arrayLength1; j > lengthValue; j--) {\n          this.questionName.pop();\n        }\n      }\n      this.summary = [];\n      this.summaryData = [];\n    }\n  }\n \n  handleNextClick() {\n   // this.sharedService.showLoader();\n   this.spinner.show(this.spinnerName);\n    this.isButtonDisabled = true;\n    this.backButtonFlag = false;\n    this.AnswerSave();\n  }\n \n  AnswerSave(){\n    //this.updateProgress();\n    if (this.currentQuestionId === null) {\n      return;\n    }\n    var questionTxt='';\n    this.clearError();\n    this.handleEvent.emit(this.qbItem.nextTrackingId);\n    this.recordId = null;\n    var cQuestion: Question = new Question();\n    cQuestion = this.questionItem;\n    // MR 30JAN24 - Added Condition for this.questionItem.Questions__r (Book Question and Non-Book)\n    if(this.questionItem.subQuestions) {\n        // Create an array of objects to store the values\n        for (var i=0; i<this.questionItem.subQuestions.length;i++) {\n          if(this.questionItem.subQuestions[i].questionText){\n            var questionText = this.questionItem.subQuestions[i].questionText.replace(/<[^>]+>/g, ''); // Remove HTML tags from the questionText value\n          }else{\n            questionText = 'undefined';\n          }\n          const input = this.questionItem.subQuestions[i].input;\n          const obj = { [questionText]: input }; // Create an object with the questionText as the key and the input as the value\n          this.summaryData.push(obj); // Add the object to the data array\n        }\n    } else {\n      var questionText = this.questionItem.questionText.replace(/<[^>]+>/g, '');\n      const input = this.questionItem.input;\n      const obj = { [questionText]: input }; // Create an object with the questionText as the key and the input as the value\n      this.summaryData.push(obj); // Add the object to the data array\n    }\n \n         var typ = cQuestion.type;\n    // this.sques += cQuestion.question + '@@##$$';\n    var quesValue = cQuestion.questionText;\n    var mailformat =\n      \"^[^.][a-zA-Z0-9!#$%&'*+-/=?^_`{|}~]+[^.]@[^-][a-zA-Z0-9.-]+[^-].[a-zA-Z]{2,}$\";\n \n    // Process Inputs\n    if (this.checkboxFlag) {\n      this.inpValue = \"\";\n      // Save all the selected options in the inpValue\n      for (var ov of this.optionValues.filter((item) => item.checked)) {\n        this.inpValue += ov.value + \"@@##$$\";\n        this.recordId = ov.nextQuestion;\n      }\n      this.inpValue = this.trimLastDummy(this.inpValue);\n    } else if (this.emailFlag) {\n      if (this.inpValue && this.inpValue.match(mailformat)) {\n        this.recordId = this.questionItem.nextQuestion;\n      } else {\n        this.questionItem.error = new ErrorWrapper();\n        return;\n      }\n    } else if (this.alphanumericFlag) {\n      var isNotValidAccNum = this.isNotValidAccNumber(this.inpValue);\n      if (isNotValidAccNum) {\n        this.notValidAccNum = true;\n        this.recordId = this.questionItem.nextQuestion;\n        return;\n      }\n      this.notValidAccNum = false;\n    } else if (this.numberFlag) {\n      if (this.inpValue) {\n        this.recordId = this.questionItem.nextQuestion;\n      } else {\n        this.questionItem.error = new ErrorWrapper();\n        return;\n      }\n    } else if (this.bookFlag) {\n      this.inpValue = \"\";\n      var hasMissingInput = false;\n      for (var item of this.questionItem.subQuestions) {\n        var count = 0;\n \n        if(item.type == \"Date\" || item.type == \"Time\") {\n          //this one\n          this.change();\n            if(item.type == \"Date\"){\n              //console.log('Inside the date type cond = '+this.selectDate);\n              this.inpValue = this.selectDate;\n              //console.log(this.inpValue)\n              //console.log(this.selectDate)\n \n            }\n           if(item.type == \"Time\"){\n             //console.log(this.selectedHour+this.selectedMeridiem+this.selectedMinute)\n \n          if (this.questionItem.x24Hours === false) {\n              this.questionItem.input =\n                (this.selectedMeridiem === \"PM\" && this.selectedHour != \"12\"\n                  ? Number(this.selectedHour) + 12\n                  : this.selectedHour) +\n                \":\" +\n                this.selectedMinute + \" PM\";\n              if (this.selectedMeridiem === \"AM\" && this.selectedHour === \"12\") {\n                this.questionItem.input = \"00\" + \":\" + this.selectedMinute + \" AM\";\n              }\n              if (this.qbItem.progressBar) {\n                if(this.selectDate){\n                  this.inpValue = this.selectDate+\" \"+this.questionItem.input;\n                }else{\n                  this.inpValue = \" \"+this.questionItem.input;\n                }\n              } else {\n                if(this.selectDate){\n                  this.inpValue = this.selectDate+\" \"+this.questionItem.input;\n                }else{\n                  this.inpValue = \" \"+this.questionItem.input;\n                }\n \n              }\n            }\n            if (this.questionItem.x24Hours === true) {\n              this.questionItem.input =\n                this.selectedHour + \":\" + this.selectedMinute;\n              if (this.qbItem.progressBar) {\n                this.inpValue = this.questionItem.input;\n              } else {\n                this.inpValue = this.questionItem.input;\n              }\n            }\n          }\n          // HA 31-JAN-24 Removed the selectHour and selectMinute condition\n          if (this.selDate === null || this.selDate === undefined || !this.inpValue || !this.selectDate) {\n            //console.log('Inside the null condition of input');\n            this.questionItem.error = new ErrorWrapper();\n            const htmlElement = window.document.getElementsByClassName(\"mydp\");\n            htmlElement\n              .item(0)\n              .setAttribute(\"style\", \"width:100%;border-bottom: 1px solid red !important;\");\n            return;\n          }\n          this.date_TimeMap();\n      }\n      // HA 31-JAN-24 Added text error condition\n      if(item.type== \"Text\"){\n        if (!item.input) {\n          item.input = \"\";\n          item.error = new ErrorWrapper();\n          hasMissingInput = true;\n        }\n        // this.inpValue = item.input; 634\n      }\n \n        if (\n          !item.isOptional &&\n        //  ((item.type != \"File\" && !item.input && item.type != 'Date' && item.type != 'Time') ||\n         //   (item.type == \"File\" && this.attachments.length == 0))\n         (item.type == \"File\" && this.attachments.length == 0)\n        ) {\n          item.error = new ErrorWrapper();\n          hasMissingInput = true;\n        }\n        if (item.type == \"Radio\") {\n          if (!item.input) {\n            item.error = new ErrorWrapper();\n            hasMissingInput = true;\n          }\n        }\n        if (item.type == \"Dropdown\") {\n          if (!item.input) {\n            item.input = \"\";\n            item.error = new ErrorWrapper();\n            hasMissingInput = true;\n          }\n        }\n        if (item.type == \"Email\") {\n          if (item.input && item.input.match(mailformat)) {\n            this.recordId = cQuestion.nextQuestion;\n          } else {\n            item.error = new ErrorWrapper();\n            hasMissingInput = true;\n          }\n        }\n        if (item.type == \"File\" && this.attachments.length > 0) {\n          for (var attachmentItem of this.attachments) {\n            this.inpValue +=\n              attachmentItem.attachmentId +\n              \"@#$\" +\n              attachmentItem.attachmentName +\n              \",\";\n            if (item.input == this.inpValue) {\n              this.recordId = cQuestion.nextQuestion;\n              //console.log('inside' + recordId);\n            }\n          }\n          // this.attachments = [];\n        } //item.input == this.inpValue;\n \n        this.inpValue += (item.input != undefined ? item.input : \"\") + \"@@##$$\";\n        questionTxt += item.question + \"@@##$$\";\n        //console.log('inside book1' + this.inpValue)\n      }\n      if (hasMissingInput) {\n        return;\n      }\n      this.inpValue = this.trimLastDummy(this.inpValue);\n      questionTxt = questionTxt ? this.trimLastDummy(questionTxt) : questionTxt;\n    }\n    else if (this.listFlag) {\n      this.inpValue = '';\n      var hasMissingInput = false;\n      if(this.localSubQMap.has(this.questionItem.id)){\n        this.subAnsMap = new Map();\n        for (var localQues of this.localSubQMap.get(this.questionItem.id)) {\n            if(!localQues.input) {\n              localQues.error = new ErrorWrapper();\n              hasMissingInput = true;\n            }\n          if(!this.subAnsMap.has(localQues.id)){\n            // console.log('inside ans map')\n            this.subAnsMap.set(localQues.id,localQues.input);\n          } else {\n            // console.log('inside ans map else')\n            this.subAnsMap.set(localQues.id,this.subAnsMap.get(localQues.id) + '$$@@##'+localQues.input);\n          }\n        }\n \n        if (hasMissingInput) {\n          //console.log('file two')\n          return;\n        }\n        this.subAnsMap.forEach((value, key) => {\n          // console.log('inside Map' );\n          // console.log(value);\n          this.inpValue += (value != undefined ? value : '') + '@@##$$';\n        });\n        this.inpValue = this.trimLastDummy(this.inpValue);\n      }\n    }\n    else if (this.dropdownFlag) {\n      if (this.inpValue.length <= 1) {\n        this.inpValue = \".\";\n        this.questionItem.error = new ErrorWrapper();\n      }\n    } else if (this.dtFlag && this.dateFlag && this.timeFlag) {\n      //this one\n      this.change();\n      if (this.inpValue) {\n        this.selectedHour = this.getProperTime(\"12\", this.selectedHour);\n        this.selectedMinute = this.getProperTime(\"00\", this.selectedMinute);\n        this.selectedMeridiem = this.getProperTime(\"AM\", this.selectedMeridiem);\n        //console.log(this.inpValue.length);\n \n        if (this.questionItem.x24Hours === false) {\n          this.questionItem.input =\n            (this.selectedMeridiem === \"PM\" && this.selectedHour != \"12\"\n              ? Number(this.selectedHour) + 12\n              : this.selectedHour) +\n            \":\" +\n            this.selectedMinute + \" PM\";\n          if (this.selectedMeridiem === \"AM\" && this.selectedHour === \"12\") {\n            this.questionItem.input = \"00\" + \":\" + this.selectedMinute + \" AM\";\n          }\n          if (this.qbItem.progressBar) {\n            this.inpValue = this.inpValue + \" \" + this.questionItem.input;\n          } else {\n            this.inpValue = this.inpValue + \"T\" + this.questionItem.input;\n          }\n        }\n        if (this.questionItem.x24Hours === true) {\n          this.questionItem.input =\n            this.selectedHour + \":\" + this.selectedMinute;\n          if (this.qbItem.progressBar) {\n            this.inpValue = this.inpValue + \" \" + this.questionItem.input;\n          } else {\n            this.inpValue = this.inpValue + \"T\" + this.questionItem.input;\n          }\n        }\n        if (this.qbItem.progressBar) {\n          //console.log(\"ans => \" + this.inpValue);\n          var date1: any = this.inpValue.split(\" \");\n          date1 = date1[0].split(\"/\");\n          date1 = [date1[2], date1[1], date1[0]].join(\"-\");\n          date1 = new Date(date1);\n          //console.log(date1)\n          var date2: any = this.insuranceStartDate.split(\" \");\n          date2 = new Date(date2[0]);\n          //console.log(date2);\n          if (date1 < date2) {\n            this.questionItem.error = new ErrorWrapper();\n            this.questionItem.error.errorMsg =\n              \"No es posible dar de alta la reclamación debido a que la fecha del incidente es anterior a la fecha de contratación de la póliza\";\n            //console.log('inside')\n            return;\n          }\n        }\n        if (this.selDate === null || !this.inpValue) {\n          this.questionItem.error = new ErrorWrapper();\n          return;\n        }\n        this.date_TimeMap();\n      }\n    } else if (this.timeFlag && this.dtFlag && !this.dateFlag) {\n      this.date_TimeMap();\n      if (this.questionItem.x24Hours === false) {\n        this.inpValue =\n          (this.selectedMeridiem === \"PM\" && this.selectedHour != \"12\"\n            ? Number(this.selectedHour) + 12\n            : this.selectedHour) +\n          \":\" +\n          this.selectedMinute;\n      } else {\n        this.inpValue = this.selectedHour + \":\" + this.selectedMinute;\n      }\n      if (this.inpValue.length < 5) {\n        this.questionItem.error = new ErrorWrapper();\n        return;\n      }\n    } else if (this.dateFlag && this.dtFlag && !this.timeFlag) {\n      this.change();\n      if (this.inpValue.length < 7 || this.selDate === null) {\n        this.questionItem.error = new ErrorWrapper();\n        return;\n      }\n    } else if (this.fileFlag) {\n      //console.log('four')\n      this.inpValue = \"\";\n      if (this.attachments.length > 0) {\n        for (var attachmentItem of this.attachments) {\n          this.inpValue +=\n            attachmentItem.attachmentId +\n            \"@#$\" +\n            attachmentItem.attachmentName +\n            \",\";\n        }\n        //console.log('inside filesss' + this.inpValue);\n        this.inpValue = this.inpValue.substr(0, this.inpValue.length - 1);\n      } else {\n        this.questionItem.error = new ErrorWrapper();\n        return;\n      }\n    }\n \n    // Check for the answer before saving to the DB\n    if (!this.questionItem.isOptional && !this.inpValue) {\n      // Show error that the question must be answered\n      this.questionItem.error = new ErrorWrapper();\n      // VD disabled\n      //this.sharedService.hideLoader();\n      this.spinner.hide(this.spinnerName);\n      this.isButtonDisabled = false\n      return;\n    }\n    // Save the Answer in the DB\n    this.answerWrap = new AnswerWrapper();\n    this.answerWrap.abId = this.abItem.id;\n    this.answerWrap.quesId = cQuestion.id;\n    this.answerWrap.quesValue = quesValue;\n    this.answerWrap.qTyp = typ;\n    // HA 02FEB24 To display the values in summary using this\n    this.allInputValues = [];\n    this.subQuestions.forEach(element => {\n      var inputValue = {};\n      inputValue['Id'] = element?.id;\n      inputValue['type'] = element?.type;\n      inputValue['referenceField'] = element?.referenceField;\n      inputValue['questionText'] = element?.questionText;\n      inputValue['input'] = element?.input;\n      inputValue ? this.allInputValues.push(inputValue) : this.allInputValues;\n    });\n    this.answerWrap.myVal = this.allInputValues;\n    this.answerWrap.ansValue = this.inpValue;\n    this.answerWrap.groupText = cQuestion.groupName;\n    console.log('this.answerWrap.qTyp',this.answerWrap.qTyp);\n   if(this.answerWrap.qTyp == \"Alphanumeric\"){\n      this.answerWrap.ansValue = 'ES'+ this.inpValue;\n      // console.log('Bank condition');\n      // console.log(this.answerWrap.ansValue);\n    }\n    /*if (cQuestion.type == 'Book'){\n    for (var qb of cQuestion.Questions__r.records){\n      //console.log(qb.question+'****'+\"@@##$$\")\n    }\n  }*/\n    //this.answerWrap.squesValue = cQuestion.question;\n    this.questionItem.input = this.inpValue;\n    // emit the current question with input to parent\n    let questionAns = {}\n    questionAns['questionDetail'] = this.questionItem;\n    questionAns['answerBookDetail'] = this.abItem;\n    console.log(questionAns);\n    this.handleQuestion.emit(questionAns);\n    console.log('questionItem-->');\n    console.log(this.questionItem);\n    this.answerWrap.squesValue = questionTxt ? questionTxt : cQuestion.question;\n    this.saveAnswer();\n  }\n   // RS 09DEC24 Changed keys\n  next() {\n    var cQuestion: Question = new Question();\n    cQuestion = this.questionItem;\n    var typ = cQuestion.type;\n    // If no error then move to next steps\n    if (this.questionItem.error) {\n      return;\n    }\n \n    this.questionStack.push(cQuestion.id);\n    //  this.questionName.push(cQuestion.Name);\n \n    // CONDITIONAL vs OPTIONONLY & UNCONDITIONAL\n    // HA 31-JAN-24 Added ternary even in else conditions below\n    if (cQuestion?.RecordType?.Name == \"CONDITIONAL\") {\n      for (var cOpt of cQuestion.options) {\n        // Radio / Data\n        //console.log('Option => ' + cOpt.value + ' matching with ' + ansVal);\n        if (cOpt.value == this.inpValue) {\n          //console.log('Match Found using ' + cOpt.nextQuestion);\n          if(cOpt.nextQuestion){\n            this.recordId = cOpt.nextQuestion;\n          }else {\n            this.recordId = cQuestion.nextQuestion;\n          }\n          //console.log('conditional record id'+ this.recordId);\n        }\n      }\n      // Could be of type Data and existing value\n      if (this.recordId && typ == \"Data\") {\n        this.recordId = cQuestion.nextQuestion;\n      }\n    } else if (cQuestion?.RecordType?.Name == \"OPTIONONLY\") {\n      //  OPTIONONLY logic\n      this.recordId = cQuestion.nextQuestion;\n    } else if (cQuestion?.RecordType?.Name == \"UNCONDITIONAL\") {\n      //Unconditional  logic\n      //console.log(\"inside unconditional\");\n      //inside Book Type\n      if (cQuestion.type == \"Book\" && cQuestion.questionNumber !='6') {\n        //console.log(\"inside book\");\n        for (let opt of cQuestion.subQuestions) {\n          //console.log(opt.type);\n          if (opt.type == \"Dropdown\" || opt.type == \"Radio\") {\n            for (var opt1 of opt.options) {\n            if (this.valueName == opt1.value) {\n                this.recordId =opt1.nextQuestion || cQuestion.nextQuestion;\n              } else {\n                //console.log('Else'+this.recordId)\n                this.recordId = cQuestion.nextQuestion;\n \n              }\n            }\n          } else {\n            this.recordId = cQuestion.nextQuestion;\n          }\n        }\n      }\n      else if(cQuestion.type == \"Book\" && cQuestion.questionNumber =='6' ) {\n        for (let opt of cQuestion.subQuestions) {\n          if (opt.type == \"Dropdown\" || opt.type == \"Radio\"){\n          for (var opt1 of opt.options) {\n            if (this.valueName == opt1.value) {\n            this.recordId = opt1.nextQuestion;\n            }\n          }\n        }\n        }\n      }\n \n      else {\n        this.recordId = cQuestion.nextQuestion;\n      }\n    }\n    // HA 31-JAN-24 Added else to keep the assignment default\n    else{\n      this.recordId = cQuestion.nextQuestion;\n    }\n \n    // CATEGORIZATION\n    //this.stepperCateg();\n \n    // Calling the progres bar update function\n    this.answerCount++;\n    this.updateProgress();\n \n \n    // CATEGORIZATION\n    //this.stepperCateg();\n \n    if (this.recordId) {\n      this.readQuestion(this.recordId);\n      this.pop = true;\n    } else {\n      this.pop = false;\n      // VD disabled\n     // this.sharedService.hideLoader();\n      this.spinner.hide(this.spinnerName);\n      this.isButtonDisabled = false;\n      // Reset the Variables\n      this.inpValue = \"\";\n      this.answerWrap = new AnswerWrapper();\n      this.optionValues = [];\n      this.subQuestions = [];\n \n      this.resetFlag(typ);\n      this.questionItem = null;\n \n      // Show Summary\n      for (var q of this.questionStack) {\n        //console.log('Handling Question => ' + q);\n        var ansWrap = this.answerMap.get(q);\n        if (ansWrap) {\n          //console.log('Handling Answer for ' + ansWrap.quesId + ' of type ' + ansWrap.qTyp);\n          if(ansWrap.qTyp == 'File' || ansWrap.qTyp == 'Book'||ansWrap.qTyp == 'List' || ansWrap.qTyp == 'Checkbox'){\n            var newStr = '';\n            for (var ansStr of ansWrap.ansValue.split('@@##$$')) {\n              for (var ansStr1 of ansStr.split('$$@@##')) {\n              //  if(ansStr1.includes('answerString')){ //remove the answer string\n               //   const withoutAnswerString = ansStr1.replace(\"answerString: \", \"\");\n                //  ansStr1 = withoutAnswerString;\n              //  }\n                if (ansStr1.length > 0) {\n                  if (newStr.length == 0) {\n                    newStr = ansStr1;\n                  } else {\n                    newStr += '; ' + ansStr1;  //comma(,) changed as semi colon(;) because of address contains comma(,)\n                    if(this.attachmentsMap.has(ansWrap.quesId)){\n                      for(var att of this.attachmentsMap.get(ansWrap.quesId)){\n                        newStr = newStr.replace(att.attachmentId,'');\n                      }\n                    }\n                    newStr = (newStr.replace(',,',', ')).replace(', ,',', ');\n                    newStr = newStr.startsWith(',') ? newStr.substring(1, newStr.length) : (newStr.endsWith(',') ? newStr.substring(0, newStr.length - 1) : newStr);\n                  }\n                }\n              }\n            }\n            ansWrap.ansValue = newStr;\n            ansWrap.myVal = this.allInputValues;\n        }\n          // VD Check if the summary already contains an entry for the same quesId\n          const existingAnsWrap = this.summary.find(item => item.quesId === ansWrap.quesId);\n          if (existingAnsWrap) {\n            // If it exists, update the ansValue and myVal\n            existingAnsWrap.ansValue = ansWrap.ansValue;\n            existingAnsWrap.myVal = ansWrap.myVal;\n          } else {\n            // If it doesn't exist, push the ansWrap to the summary array\n            this.summary.push(ansWrap);\n          }\n          this.backicon = true;\n        }\n      }\n    }\n  }\n \n  getText(value) {\n    var doc = new DOMParser().parseFromString(value, \"text/html\");\n    //console.log( doc.documentElement.textContent);\n    return this.sanitizer.bypassSecurityTrustHtml(\n      doc.documentElement.textContent\n    );\n  }\n \n  handleBackClick() {\n    this.back = true;\n    if (this.pop === true) {\n      this.questionName.pop();\n    }\n    this.handleEvent.emit(this.qbItem.backTrackingId);\n    var cQuestion: Question = new Question();\n    cQuestion = this.questionItem;\n    if(cQuestion.questionNumber =='1'){\n      this.handleEvent.emit(this.qbItem.back);\n    }\n \n \n    this.answerCount--;\n    this.updateProgress();\n    // CATEGORIZATION\n    //this.stepperCateg();\n \n    if (this.summary) {\n      //console.log('summary true');\n      this.summary = [];\n    }\n    if(this.summaryData){\n      this.summaryData =[];\n    }\n \n    // Read the previous question from DB\n    // VD disabled\n   // this.sharedService.showLoader();\n    this.spinner.show(this.spinnerName);\n    this.isButtonDisabled = true;\n    this.readQuestion(this.questionStack.pop());\n    //console.log(this.questionStack);\n  }\n \n  handleBackClickNew() {\n    this.handleEvent.emit(this.qbItem.edit);\n  }\n \n  //updating status once Q&A completed.\n \n  private updateAnswerBook = (uuid: string) => {\n    if(this.serv == \"api\") {\n      // this.dataService.getAPIData(\n      //   this.tkn,\n      //   [\"AnswerBook\", \"Update\", uuid],\n      //   this.successupdateAB,\n      //   this.failureupdateAB\n      // );\n      let paramMap = { createAnswerBookFlag: false };\n      // HA 09FEB24 to clear the error: createAnswerBook is false\n      paramMap['c__qb_id'] = uuid;\n      paramMap[\"c__record_id\"] = '';\n      this.dataService.getAPIFromNode('AnswerBook','Update',uuid,JSON.stringify(paramMap),this.api).subscribe(\n      (data)=>{\n        console.log('updated succussfully');\n        console.log(data);\n        this.successupdateAB(JSON.parse(data))\n      },(error) => {\n        console.error('Failed to fetch question books', error);\n      }\n      )\n    } else {\n      // VD 15FEB24 - used processNew method\n       // VD 31NOV24 param changes with new method\n      let paramMap = { createAnswerBookFlag: false };\n      paramMap['c__qb_id'] = uuid;\n      paramMap[\"c__record_id\"] = '';\n      let para = {\n        dataType: \"AnswerBook\",\n        operation: \"Update\",\n        param1: uuid,\n        paramJSON: JSON.stringify(paramMap),\n        languageCode : ''\n      }\n // VD 12Jun24 - translation changes\n      this.sfService.remoteAction(\n        \"NxtController.processData\",\n        [JSON.stringify(para)],\n        this.successupdateAB,\n        this.failureupdateAB\n      );\n    }\n  }\n \n  private successupdateAB = (response) => {\n    console.log(response);\n    let data = response;\n    if(data){\n      this.handleSubmit.emit(data);\n      this.abItem.status = \"Completed\";\n      this.deleteAnswers(data.AnswerBook)\n    }\n  };\n \n  // VD for delete answers\n  deleteAnswers(answerbook){\n    if(this.serv == \"api\"){\n      if(answerbook && answerbook.status == 'Completed'){\n        const ansBookId = answerbook.id;\n        let paramMap = { createAnswerBookFlag: false };\n        // HA 09FEB24 to clear the error: createAnswerBook is false\n        paramMap['c__qb_id'] = '';\n        paramMap[\"c__record_id\"] = '';\n        this.dataService.getAPIFromNode('AnswerBook','delete',ansBookId,JSON.stringify(paramMap),this.api).subscribe(\n        (data)=>{\n          console.log(data);\n          this.successDeleteAB(JSON.parse(data))\n        },(error) => {\n          console.error('Failed to fetch question books', error);\n        }\n        )\n      }\n    }\n  }\n  // VD for delete answers\n  private successDeleteAB = (response) => {\n    console.log(response);\n    if(response.status == 'success'){\n       console.log(response.message);\n    }else {\n     console.error('error', response.message);\n    }\n }\n\n private failureupdateAB = (response) => {\n   //console.log('status failed')\n };\n\n private readQuestionBook = (uuid: string) => {\n   if(this.serv == \"api\") {\n     // this.dataService.getAPIData(\n     //   this.tkn,\n     //   [\"QuestionBook\", \"read\", uuid],\n     //   this.successReadBook,\n     //   this.failureReadBook\n     // );\n     //this.sharedService.showLoader();\n     this.spinner.show(this.spinnerName);\n     let paramMap = { createAnswerBookFlag: true };\n     // HA 09FEB24 to clear the error: createAnswerBook is false\n     paramMap['c__qb_id'] = uuid;\n     paramMap[\"c__record_id\"] = '';\n     this.dataService.getAPIFromNode('QuestionBook','read',uuid,JSON.stringify(paramMap),this.api).subscribe(\n     (data)=>{\n      // this.sharedService.hideLoader();\n      // this.spinner.hide(this.spinnerName);\n       // VD disabled\n       this.isButtonDisabled = false;\n       console.log(data);\n      // this.sharedService.hide();\n       this.successReadBook(JSON.parse(data))\n     },(error) => {\n       console.error('Failed to fetch question books', error);\n     }\n     )\n   } else {\n     // MR 30JAN24 - Passing flag from NGNXT\n     let paramMap = { createAnswerBookFlag: true };\n     // HA 09FEB24 to clear the error: createAnswerBook is false\n     // VD 31NOV24 param changes with new method\n     paramMap['c__qb_id'] = uuid;\n     paramMap[\"c__record_id\"] = '';\n     let para1 = {\n      dataType: \"QuestionBook\",\n      operation: \"read\",\n      param1: uuid,\n      paramJSON: JSON.stringify(paramMap),\n      languageCode : ''\n    }\n     // , JSON.stringify(paramMap)\n// VD 12Jun24 - translation changes\n     this.sfService.remoteAction(\n     // HA 09FEB24 to clear the error: createAnswerBook is false\n       \"NxtController.processData\",\n       [JSON.stringify(para1)],\n       this.successReadBook,\n       this.failureReadBook\n     );\n   }\n }\n private successReadBook = (response) => {\n   console.log('Inside the successReadBook');\n   console.log(response);\n   if(response != null || response != undefined){\n     this.qbItem = response.questionbook;\n     this.abItem = response.answerbook;\n     this.handleBook.emit(response);\n\n   }\n  // console.log('readingQuestion using ' + this.qbItem);\n   if (this.abItem?.status == \"Pending\") {\n     if (\n       this.abItem.answers == null ||\n       this.abItem.answers.length == 0\n     ) {\n       this.readQuestion(this.qbItem.firstQuestion);\n     } else {\n       // Populate the existing answers\n       var lastQuestionId = \"\";\n\n       for (var ansObject of this.abItem.answers) {\n         lastQuestionId = ansObject.quesId;\n\n         this.questionStack.push(ansObject.quesId);\n\n         this.answerMap.set(ansObject.quesId, {\n           quesValue: ansObject.quesValue,\n           ansValue: ansObject.ansValue,\n           quesId: ansObject.quesId,\n           qTyp: ansObject.qTyp,\n           groupText:ansObject.groupText,\n         });\n\n         //console.log(this.questionStack)\n         if (ansObject.qTyp == \"Book\") {\n           var av1 = ansObject.ansValue.split(\"@@##$$\");\n           // //console.log(\"book log\");\n\n           //  //console.log(\"bookid\" + av1[0]);\n           this.attachmentsMap.set(ansObject.quesId, [\n             { attachmentName: av1[1], attachmentId: av1[0] },\n           ]);\n           //  //console.log(this.attachmentsMap);\n         } else if (ansObject.qTyp == \"File\") {\n           //  //console.log(\"inside if\");\n           var attList;\n           var att;\n           for (var attVar of ansObject.ansValue.split(\",\")) {\n             var attIdName = attVar.split(\"@@##$$\");\n             att.attachmentName = attIdName[1];\n             att.attachmentId = attIdName[0];\n             attList.push(att);\n           }\n           this.attachmentsMap.set(ansObject.quesId, attList);\n           //  //console.log(this.attachmentsMap);\n         }\n       }\n\n       this.questionStack.pop();\n       //console.log(this.answerMap);\n       // Read the last answered question\n       this.readQuestion(lastQuestionId);\n     }\n   } else if (this.abItem?.status == \"Completed\") {\n     this.handleEvent.emit(\"Summaryupdated\");\n     this.spinner.hide(this.spinnerName);\n     // Temporary Fix for duplicate answers on the summary.\n     this.summary = [];\n     this.percent = 100;\n     this.progressStyle = \"100%\";\n     if(this.serv != 'api'){\n      // VD 31NOV24 wrapper changes\n       for (var answer of this.abItem.answers) {\n         var answers = {};\n         if (answer.qTyp == \"File\") {\n           var files = \"\";\n           var fIndex = 0;\n           var fileList = answer.ansValue.split(\",\");\n           for (var fileIdName of fileList) {\n             var fileName = fileIdName.split(\"@#$\");\n             if (fIndex == 0) {\n               files = fileName[1];\n             } else {\n               files = files + \" ,\" + fileName[1];\n             }\n             fIndex++;\n           }\n\n           answers = {\n             groupText:answer.groupText,\n             quesValue: answer.quesValue,\n             ansValue: files,\n           };\n         //  this.summary.push(answers);\n         } else if (answer.qTyp == \"Book\") {\n           /*  var quesNo=0;\n          if(answer.ansValue.includes(\"@@##$$\")){\n             //console.log('line 1223');\n             for (var bqAnswerValue of answer.ansValue.split(\"@@##$$\")) {\n               var quesValue=answer.questionText.split(\"@@##$$\");\n               answers = {};\n               answers = {\n                // groupText:answer.questionText,\n                 quesValue:  \"&lt;p&gt;\"+ quesValue[quesNo]+\"&lt;p&gt;\",\n                 ansValue: bqAnswerValue,\n               };\n               quesNo++;\n               this.summary.push(answers);\n             }\n            }*/\n           if(answer.ansValue.includes(\"@@##$$\")){\n             var answervalues = answer.ansValue.split(\"@@##$$\");\n             //console.log('value')\n             answers = {\n              //groupText:answer.groupText,\n              quesValue: answer.quesValue,\n              ansValue: answervalues,\n            };\n            //console.log(answers)\n           // this.summary.push(answers);\n            }\n           else{\n             answers = {\n               //groupText:answer.groupText,\n               quesValue: answer.quesValue,\n               ansValue: answer.ansValue,\n             };\n            // this.summary.push(answers);\n           }\n         } else {\n          // var ans1 = answer.ansValue.split(\"@@##$$\");\n           answers = {\n             //groupText:answer.groupText,\n             quesValue: answer.quesValue,\n             ansValue: answer.ansValue,\n           };\n          // this.summary.push(answers);\n         }\n       }\n     }\n\n   }\n };\n\n private failureReadBook = (response) => {\n   console.log('Inside the failureReadBook');\n   console.log(response);\n };\n\n private readAnswerbook = (uuid: string) => {\n   if(this.serv = \"api\") {\n     this.dataService.getAPIData(\n       this.tkn,\n       [\"AnswerBook\", \"read\", uuid],\n       this.successAnswerBookRead,\n       this.failureAnswerBookRead\n     );\n   } else {\n     // VD 15FEB24 - used processNew method\n     let paramMap = { createAnswerBookFlag: false };\n     paramMap['c__qb_id'] = uuid;\n     paramMap[\"c__record_id\"] = '';\n     // VD 31NOV24 param changes with new method\n     let para2 = {\n      dataType: \"AnswerBook\",\n      operation: \"read\",\n      param1: uuid,\n      paramJSON: JSON.stringify(paramMap),\n      languageCode : ''\n    }\n// VD 12Jun24 - translation changes\n     this.sfService.remoteAction(\n       \"NxtController.processData\",\n       [JSON.stringify(para2)],\n       this.successAnswerBookRead,\n       this.failureAnswerBookRead\n     );\n   }\n }\n\n\n private successAnswerBookRead = (response) => {\n   if (this.abItem?.status == \"Completed\") {\n     for (var answer of this.abItem.answers) {\n       var av = answer.ansValue.split(\"@@##$$\");\n       var answers = { quesValue: answer.quesValue, ansValue: av, groupText:answer.groupText };\n       //console.log(answers)\n       this.summary.push(answers);\n     }\n     this.handleEvent.emit(\"Summaryupdated\");\n   }\n };\n\n private failureAnswerBookRead = (response) => {\n   //console.log('inside failureread');\n   //console.log(response);\n };\n\n private readQuestion = (uuid: string) => {\n   if(this.serv == \"api\") {\n     // this.dataService.getAPIData(\n     //   this.tkn,\n     //   [\"Question\", \"read\", uuid],\n     //   this.successRead,\n     //   this.failureRead\n     // );\n     //this.sharedService.showLoader();\n     let paramMap = { createAnswerBookFlag: true };\n     // HA 09FEB24 to clear the error: createAnswerBook is false\n     paramMap['c__qb_id'] = uuid;\n     paramMap[\"c__record_id\"] = '';\n     this.dataService.getAPIFromNode('Question','read',uuid,JSON.stringify(paramMap),this.api).subscribe(\n       (data)=>{\n        // this.sharedService.hideLoader();\n         this.spinner.hide(this.spinnerName);\n         // VD disabled\n         this.isButtonDisabled = false;\n         console.log('data came sucessfully');\n         console.log(data);\n         this.successRead(JSON.parse(data))\n       },(error) => {\n         //this.sharedService.hideLoader();\n         this.spinner.hide(this.spinnerName);\n         console.error('Failed to fetch question books', error);\n       }\n       )\n   } else {\n     // HA 09FEB24 to clear the error: createAnswerBook is false\n     // // VD 15FEB24 - make createAnswerBookFlag false only\n     let paramMap = { createAnswerBookFlag: false };\n     paramMap['c__qb_id'] = uuid;\n     paramMap[\"c__record_id\"] = '';\n     // VD 31NOV24 param changes with new method\n     let para2 = {\n      dataType: \"Question\",\n      operation: \"read\",\n      param1: uuid,\n      paramJSON: JSON.stringify(paramMap),\n      languageCode : ''\n    }\n     this.sfService.remoteAction(\n     // HA 09FEB24 to clear the error: createAnswerBook is false\n       \"NxtController.processData\",\n       [JSON.stringify(para2)],\n       this.successRead,\n       this.failureRead\n     );\n   }\n }\n\n private successRead = (response) => {\n  this.spinner.hide(this.spinnerName);\n  // VD disabled\n  this.isButtonDisabled = false;\n   console.log('Inside the successRead');\n   console.log(response);\n   // HA 02FEB24 For testing for used this and in future it can be used to test with static data\n   // var ab = ['first','last','123','12-12-2000','22','Male','12 cross 1','EmContact','98765','A','Single'];\n   // for(const [index,item] of response.question.subQuestions.entries()){\n   //   item.input = ab[index];\n   // }\n   // console.log(this.questionItem);\n   // Reset the Variables\n\n   if (this.questionItem) {\n     this.inpValue = \"\";\n     this.answerWrap = new AnswerWrapper();\n     this.optionValues = [];\n     this.subQuestions = [];\n     this.resetFlag(this.questionItem.type);\n   }\n   this.questionItem = response.question;\n   // console.log(this.questionItem);\n\n   if(this.questionItem.type === 'Alphanumeric'){\n     this.splCCBackClick = true;\n   }\n\n   this.currentQuestionId = this.questionItem.id;\n   this.handlePage.emit(this.questionItem.trackingId);\n   // Handle the subQuestion options\n   if (response.sqOptions) {\n     //var newRecords = [];\n     for (var q of this.questionItem.subQuestions) {\n       //console.log(q.Name);\n       var sq = response.sqOptions[q.id];\n       if (sq) {\n         //console.log('found options for subquestion ' + q.Name);\n         if (!q.options) {\n           q.options = sq.options;\n         }\n       }\n     }\n   }\n   this.processQuestion();\n   this.innerhtml = this.sanitizer.bypassSecurityTrustHtml(\n     this.questionItem.additionalRichContent\n   );\n   this.trackId();\n };\n\n trackId() {\n   var qtrackId = this.questionItem.trackingId;\n   //console.log('trackId-question'+qtrackId);\n }\n\n private failureRead = (response) => {\n   //console.log('inside failureread');\n   //console.log(response);\n };\n\n private saveAnswer = () => {\n   // Set the Answer Number based on the Question Stack Length\n   if (this.inpValue != \".\") {\n     this.currentQuestionId = null;\n   }\n   this.answerWrap.ansNumber = this.questionStack.length + 1;\n\n   if(this.serv == \"api\") {\n     // this.dataService.getAPIData(\n     //   this.tkn,\n     //   [\"Answer\", \"create\", JSON.stringify(this.answerWrap)],\n     //   this.successSave,\n     //   this.failureSave\n     // );\n     let paramMap = { createAnswerBookFlag: false };\n     // HA 09FEB24 to clear the error: createAnswerBook is false\n     paramMap['c__qb_id'] = '';\n     paramMap[\"c__record_id\"] = '';\n     this.dataService.getAPIFromNode('Answer','create',JSON.stringify(this.answerWrap),JSON.stringify(paramMap),this.api).subscribe(\n     (data)=>{\n       console.log('data came sucessfully');\n       console.log(data);\n       this.successSave(JSON.parse(data))\n     },(error) => {\n       console.error('Failed to fetch question books', error);\n     }\n     )\n   } else {\n     // VD 15FEB24 - used processNew method\n     let paramMap = { createAnswerBookFlag: false };\n     paramMap['c__qb_id'] = '';\n     paramMap[\"c__record_id\"] = '';\n     // VD 31NOV24 param changes with new method\n     let para3 = {\n      dataType: \"Answer\",\n      operation: \"create\",\n      param1: JSON.stringify(this.answerWrap),\n      paramJSON: JSON.stringify(paramMap),\n      languageCode : ''\n    }\n// VD 12Jun24 - translation changes\n     this.sfService.remoteAction(\n       \"NxtController.processData\",\n       [JSON.stringify(para3)],\n       this.successSave,\n       this.failureSave\n     );\n   }\n };\n\n htmlDecode(input) {\n   var doc = new DOMParser().parseFromString(input, \"text/html\");\n   return doc.documentElement.textContent;\n }\n\n private successSave = (response) => {\n   if (response.status == \"success\") {\n     //this.abItem = response.answerbook;\n     this.answerMap.set(response.answer.quesId, response.answer);\n   } else {\n     this.questionItem.error = new ErrorWrapper();\n     this.questionItem.error.errorMsg = response.error.errorMsg;\n   }\n   if(!this.backButtonFlag){\n     this.next();\n   }\n };\n\n private failureSave = (response) => {\n   //console.log('inside failureSave');\n   //console.log(response);\n };\n\n private processQuestion = () => {\n   // console.log('Inside the processQuestion');\n   // console.log('splCCBackClick = '+this.splCCBackClick);\n   // console.log(this.questionStack);\n   //console.log(this.questionItem);\n   this.pop = true;\n\n   // if(!this.back){\n   //   this.questionName.push(this.questionItem.Name)\n   // }\n\n   if (this.qbItem.progressBar === true) {\n     if (!this.back) {\n       this.questionName.push(this.questionItem.Name);\n     }\n     this.back = false;\n     if (this.questionName[0] === this.questionName[1]) {\n       this.questionName.pop();\n     }\n\n     this.currentName = this.questionItem.Name;\n     this.pathquestion = this.questionName.indexOf(this.currentName);\n     this.possibilities = this.qbItem.possibilities;\n   }\n\n   this.myDatePickerOptions;\n   this.day();\n   //console.log('processing question ' + this.questionItem.Name + ' existing answers are ' + this.answerMap.size); // => ' + JSON.stringify(this.questionItem));\n\n   // Set the Flags to show right fields\n   this.setFlag(this.questionItem.type);\n   //console.log('After the setFlag method dtFlag = '+this.dtFlag);\n\n   // Check the existing answer from answerMap\n   if (this.answerMap.has(this.questionItem.id)) {\n     //  //console.log(\"existing answer found for this.questionItem.Name\");\n     var eAnswer = this.answerMap.get(this.questionItem.id);\n     // Get the existing answer from the Map\n     this.inpValue = eAnswer.ansValue;\n     //console.log('inpValue has been set to ' + this.inpValue);\n     if (this.attachmentsMap.has(this.questionItem.id)) {\n       this.attachments = this.attachmentsMap.get(this.questionItem.id);\n     }\n   } else {\n     //console.log('inside removing attachment array');\n     this.attachments = [];\n   }\n   // console.log(this.inpValue);\n   if(this.splCCBackClick && this.inpValue && this.inpValue.includes('ES')){\n     // console.log('Inside the if cond');\n     this.splCCBackClick = false;\n     this.inpValue = this.inpValue.replace('ES','');\n   }\n\n   if (this.checkboxFlag) {\n     // Set the Options for Checkbox\n     this.setOptions(this.questionItem.options);\n   } else if (this.bookFlag) {\n     //console.log('Inise the expected bookFlag cond');\n     //console.log('dtFlag = '+this.dtFlag);\n//  HA 20FEB24 Label Fix\n     this.questionItem.subQuestions.forEach(element => {\n       element.questionText = element.questionText.replace(/<[^>]+>/g, '');\n     });\n     this.setSubQuestions(this.questionItem.subQuestions);\n   } else if (this.listFlag) {\n     // Set the LocalSubQuestions\n     // console.log('inside list flag');\n     // console.log(this.questionItem.Questions__r.records);\n     // console.log(this.abItem.Questions__r.records);\n     if(!this.localSubQMap.has(this.questionItem.id)){\n       this.setSubQuestions(this.questionItem.subQuestions);\n     }\n   } else if (this.dtFlag) {\n     //console.log('Inise the unexpected dtFlag cond');\n     this.selectedHour = \"\";\n     this.selectedMinute = \"\";\n     this.selDate = \"\";\n     // 2021-5-16T00:00\n     if (this.dateMap.has(this.questionItem.id)) {\n       this.selDate = this.dateMap.get(this.questionItem.id);\n     }\n     if (this.selectedhourMap.has(this.questionItem.id)) {\n       this.selectedHour = this.selectedhourMap.get(this.questionItem.id);\n     }\n     if (this.selectedminuteMap.has(this.questionItem.id)) {\n       this.selectedMinute = this.selectedminuteMap.get(this.questionItem.id);\n     }\n     if (this.questionItem.x24Hours === true) {\n       this.hours.push(\n         \"13\",\n         \"14\",\n         \"15\",\n         \"16\",\n         \"17\",\n         \"18\",\n         \"19\",\n         \"20\",\n         \"21\",\n         \"22\",\n         \"23\",\n         \"00\"\n       );\n     }\n     if (this.questionItem.x24Hours === false) {\n       this.hours = this.hours.slice(0, 12);\n     }\n     if (this.dtFlag && this.inpValue) {\n       var dtVal = this.inpValue.split(\"T\");\n       var dtval0 = this.inpValue.split(\" \");\n       this.inpValue = dtVal[0];\n       this.inpValue = dtval0[0];\n\n       this.questionItem.input = dtVal[1];\n       this.questionItem.input = dtval0[1];\n     }\n     if (\n       this.questionItem.isDateBackward ||\n       this.questionItem.isDateForward\n     ) {\n       if (this.questionItem.isDateBackward === true) {\n         this.myDatePickerOptions.disableSince = {\n           year: this.today.getFullYear(),\n           month: this.today.getMonth() + 1,\n           day: this.today.getDate() + 1,\n         };\n       }\n       if (this.questionItem.isDateForward === true) {\n         this.myDatePickerOptions.disableUntil = {\n           year: this.today.getFullYear(),\n           month: this.today.getMonth() + 1,\n           day: this.today.getDate(),\n         };\n       }\n     }\n   } else if (this.fileFlag) {\n     this.fileUI();\n     // logic\n     this.allowedFileExtension =\n     this.questionItem.allowedFileExtensions?.split(\";\");\n     //console.log(this.allowedFileExtension);\n   }\n\n   if (this.qbItem.progressBar === true) {\n     this.updateProgress();\n   }\n };\n\n setFlag(typ) {\n   //console.log('inside setFlag for ' + typ);\n\n   if (typ) {\n     // Set the Flags\n     if (typ == \"Text\") {\n       this.textFlag = true;\n\n       //this.numberFlag = true;\n     } else if (typ == \"Number\") {\n       this.numberFlag = true;\n     } else if (typ == \"AlphaNumeric\") {\n       this.alphanumericFlag = true;\n       /*if(this.inpValue.length === 0){\n         this.inpValue='ES'\n       }*/\n     } else if (typ == \"Email\") {\n       this.emailFlag = true;\n     } else if (typ == \"File\") {\n       this.fileFlag = true;\n     } else if (typ == \"DateTime\") {\n       this.dtFlag = true;\n       this.timeFlag = true;\n       this.dateFlag = true;\n     } else if (typ == \"TextArea\") {\n       this.taFlag = true;\n     } else if (typ == \"Radio\") {\n       this.radioFlag = true;\n      } \n    //   else if (typ == \"RichTextArea\") {\n    //     this.rtaFlag = true;\n    //  } \n     else if (typ == \"Dropdown\") {\n       this.dropdownFlag = true;\n     } else if (typ == \"Checkbox\") {\n       this.checkboxFlag = true;\n     } else if (typ == \"Book\") {\n       this.bookFlag = true;\n     }else if (typ == 'List'){\n       this.listFlag = true;\n     } else if (typ == \"Time\") {\n       //console.log('Inside the Time cond');\n       this.dtFlag = true;\n       this.timeFlag = true;\n       //console.log(this.dtFlag);\n     } else if (typ == \"Date\") {\n       //console.log('Inside the Date cond');\n       this.dtFlag = true;\n       this.dateFlag = true;\n       //console.log(this.dtFlag);\n     }\n   }\n }\n\n resetFlag(typ) {\n   if (typ) {\n     // Set the Flags\n     if (typ == \"Text\") {\n       this.textFlag = false;\n       //this.numberFlag = false;\n     } else if (typ == \"Number\") {\n       this.numberFlag = false;\n     } else if (typ == \"Alphanumeric\") {\n       this.alphanumericFlag = false;\n     } else if (typ == \"Email\") {\n       this.emailFlag = false;\n     } else if (typ == \"File\") {\n       this.fileFlag = false;\n      } \n    //   else if (typ == \"RichTextArea\") {\n    //     this.rtaFlag = false;\n    //  } \n     else if (typ == \"DateTime\") {\n       this.dtFlag = false;\n       this.dateFlag = false;\n       this.timeFlag = false;\n     } else if (typ == \"TextArea\") {\n       this.taFlag = false;\n     } else if (typ == \"Radio\") {\n       this.radioFlag = false;\n     } else if (typ == \"Dropdown\") {\n       this.dropdownFlag = false;\n     } else if (typ == \"Checkbox\") {\n       this.checkboxFlag = false;\n     } else if (typ == \"Book\") {\n       this.bookFlag = false;\n     } else if (typ == 'List'){\n       this.listFlag = false;\n     } else if (typ == \"Time\") {\n       this.dtFlag = false;\n       this.timeFlag = false;\n     } else if (typ == \"Date\") {\n       this.dtFlag = false;\n       this.dateFlag = false;\n     }\n   }\n }\n\n setOptions(records) {\n   for (var opt of records) {\n     var ov = new OptionValue();\n     ov.id = opt.id;\n     ov.Name = opt.Name;\n     ov.value = opt.value;\n     ov.nextQuestion = opt.nextQuestion;\n     ov.checked = false;\n\n     if (\n       this.inpValue &&\n       this.inpValue.split(\"@@##$$\").includes(opt.value)\n     ) {\n       ov.checked = true;\n     }\n\n     this.optionValues.push(ov);\n   }\n }\n\n // Capture and Process Child Event\n childEventCapture(event, ques?:any) {\n   console.log('inside childEventCapture ');\n   console.log(event);\n   this.changeService.announceChange(event);\n   // HA 31-JAN-24 Assign values to dropdown question\n   ques.input = event?.valueObj;\n   //ques.input = event; // here when using the ng-select got event as value\n }\n\n//  RS 06JAN25\n// for richtext\n handleRichTextChange(value: string) {\n  // this.inpValue = value;\n  // this.clearError(); \n    console.log('Rich Text Change Captured:', value);\n}\n\n setSubQuestions(records) {\n   // console.log('inside setSubQuestions');\n   // console.log(records);\n   var qaMap = new Map();\n   // console.log(this.inpValue);\n   if (this.inpValue) {\n     var aIndex = 0;\n     // search changed as semi colon because of address contains comma\n     if ((this.inpValue.search(\"; \") == -1)) {\n      // const withoutAnswerString = this.inpValue.replace(\"answerString: \", \"\"); //remove the answer string\n      // this.inpValue = withoutAnswerString;\n       this.inpValue = this.inpValue + '@@##$$' ;\n       for (var ansStr of this.inpValue.split(\"@@##$$\")) {\n         aIndex++;\n         qaMap.set(aIndex, ansStr);\n         //console.log('Setting the qaMap for ' + aIndex + ' with ' + ansStr);\n       }\n     } else {\n       for (var ansStr of this.inpValue.split(\"; \")) {\n         aIndex++;\n         qaMap.set(aIndex, ansStr);\n         //console.log('Setting the qaMap ' + aIndex + ' with ' + ansStr);\n       }\n     }\n   }\n   // console.log('after setting values from inpvalue qa map are');\n   // console.log(qaMap);\n\n   for (var ques of records) {\n     if (ques.type == \"File\") {\n       this.valueName1 = ques.allowedFileExtensions;\n       //console.log(this.valueName1);\n     }\n\n     var ans = '';\n     if (qaMap.has(ques.questionNumber)) {\n         ques.input = qaMap.get(ques.questionNumber);\n         // console.log('after fetching map values');\n         // console.log(ques.input);\n         if(ques.input.indexOf('$$@@##') > 0){\n           // console.log('answer supposed to be trimmed');\n           // console.log(ques.input);\n           ans = ques.input.substring(ques.input.indexOf('$$@@##')+6,ques.input.length);\n           // console.log(ans);\n           ques.input = ques.input.substring(0,ques.input.indexOf('$$@@##'));\n           // console.log(ques.input);\n         }\n       }\n\n     if ((ques.type === \"Date\") && (ques.isDateBackward || ques.isDateForward)) {\n       //console.log('Inside the date backward/forward cond');\n       if (ques.isDateBackward === true) {\n         //console.log('Inside the isDateBackward');\n         this.myDatePickerOptions.disableSince = {\n           year: this.today.getFullYear(),\n           month: this.today.getMonth() + 1,\n           day: this.today.getDate() + 1,\n         };\n       }\n       if (ques.isDateForward === true) {\n         //console.log('Inside the isDateForward');\n         this.myDatePickerOptions.disableUntil = {\n           year: this.today.getFullYear(),\n           month: this.today.getMonth() + 1,\n           day: this.today.getDate(),\n         };\n       }\n       //console.log(this.myDatePickerOptions);\n     }\n\n     this.subQuestions.push(ques);\n     for(var i=0; i<this.subQuestions.length;i++){\n       // to show/hide the dependent dropdown only field using the dropDownOnly boolean\n       if(this.subQuestions[i].size == 4){\n         this.subQuestions[i].dropDownOnly = true;\n       }else{\n         this.subQuestions[i].dropDownOnly = false;\n       }\n     }\n     if(ans != ''){\n       for(var an of (ans.split('$$@@##'))){\n         var sQ = new Question();\n         Object.assign(sQ,ques);\n         sQ.input = an;\n         this.subQuestions.push(sQ);\n       }\n     }\n   }\n   if (this.valueName1 != null && this.valueName1.length > 0) {\n     this.bookFlagAccept = this.valueName1.split(\";\");\n     //console.log(this.subQuestions);\n   }\n   this.structLocalSubQuestion(null);\n   // HA 02FEB24 On Edit to display the value usiing this\n   if(this.allInputValues.length > 0){\n     this.subQuestions.forEach(element => {\n       for(let singleInput of this.allInputValues){\n         if(element.id == singleInput.id){\n           element.input = singleInput.input;\n         }\n       }\n     });\n   }\n }\n\n optionChange(selValue) {\n   let radioTrackingId: string = \"\";\n   for (var opt of this.questionItem.options) {\n     //console.log('optionChange TrackingId'+opt.trackingId);\n     if (opt.value == selValue) {\n       //console.log('inside if'+opt.trackingId)\n       radioTrackingId = opt.trackingId;\n     }\n   }\n\n   this.handleEvent.emit(radioTrackingId);\n   this.clearError();\n   // //console.log('inside optionChange using ' + selValue);\n\n   this.inpValue = selValue;\n }\n\n clearError() {\n   if (this.questionItem.error) {\n     this.questionItem.error = null;\n   }\n }\n\n clearLocalSubQuesError(quesId) {\n   quesId.error = null;\n }\n\n inputValidate(e) {\n   var keyCode = e.keyCode || e.which;\n   // Only ASCII character in that range allowed\n   var ASCIICode = (e.which) ? e.which : e.keyCode;\n   if (ASCIICode > 31 && (ASCIICode < 48 || ASCIICode > 57)){\n     return false;\n   }else{\n     return true;\n   }\n }\n\n CCOnChange(inpValue: string) {\n\n     if (inpValue.length == 2) {\n       this.inpValue += \" \";\n     }\n     else if (inpValue.length == 7) {\n       this.inpValue += \" \";\n     }\n     else if (inpValue.length == 12) {\n       this.inpValue += \" \";\n     }\n     else if (inpValue.length == 17) {\n       this.inpValue += \" \";\n     }\n     else if (inpValue.length == 22) {\n       this.inpValue += \" \";\n     }\n\n }\n\n isNotValidAccNumber(s: string) {\n   s = s.replace(/\\s+/g, \"\");\n   s = 'ES' + s;\n   var isNotValidStr = false;\n   if (s.length == 24) {\n     for (var i = 0; i < s.length; i++) {\n       if (i <= 1 && /[a-zA-Z]/.test(s.charAt(i))) {\n         //console.log(\"Valid char: \" + s.charAt(i));\n       } else if (i > 1 && /[0-9]/.test(s.charAt(i))) {\n         //console.log(\"Valid numeric: \" + s.charAt(i));\n       } else {\n         isNotValidStr = true;\n         //console.log(\"Not a valid char\");\n       }\n     }\n   } else {\n     isNotValidStr = true;\n     //console.log(\"Not a valid acc number\");\n   }\n   return isNotValidStr;\n }\n\n clearSQError(quesId) {\n   var sqList = this.subQuestions.filter((item) => item.id == quesId);\n   for (var sq of sqList) {\n     sq.error = null;\n   }\n }\n\n uploadFile(event,ques?:any) {\n   //console.log('inside upload');\n   this.clearError();\n   this.fileTypeIncorrect = false;\n   var local = this;\n   local.attachment = event.target.files[0];\n   // Validate the file extension\n   //console.log(local.attachment);\n   let fileNameWithType: string =\n     local.attachment && local.attachment.name.toLowerCase();\n   if (\n     !fileNameWithType.endsWith(\".jpg\") &&\n     !fileNameWithType.endsWith(\".png\") &&\n     !fileNameWithType.endsWith(\".pdf\") &&\n     !fileNameWithType.endsWith(\".jpeg\") &&\n     !fileNameWithType.endsWith(\".heic\") &&\n     !fileNameWithType.endsWith(\".heif\") &&\n     !fileNameWithType.endsWith(\".JPG\") &&\n     !fileNameWithType.endsWith(\".PNG\") &&\n     !fileNameWithType.endsWith(\".PDF\") &&\n     !fileNameWithType.endsWith(\".JPEG\") &&\n     !fileNameWithType.endsWith(\".HEIC\") &&\n     !fileNameWithType.endsWith(\".HEIF\")\n   ) {\n     local.fileTypeIncorrect = true;\n   }\n   // Return when the file type is incorrect\n   if (local.fileTypeIncorrect) {\n     return;\n   }\n   let fileContent: any;\n   var reader = new FileReader();\n\n   reader.onload = function () {\n     fileContent = reader.result;\n     local.fileExceededLimit = local.attachment.size > 3242880; //Validating file size\n     // Upload the file to Salesforce when the limit is within range\n     if (!local.fileExceededLimit) {\n       let fileWrapper = new AttachmentWrapper();\n       fileWrapper.parentId = local.abItem.id;\n       fileWrapper.fileName = local.attachment.name;\n       fileWrapper.fileContent = fileContent;\n       local.createAttachment(fileWrapper);\n       ques.input = fileWrapper.fileName;\n     }\n   };\n   this.spinner.show(this.spinnerName);\n   reader.readAsDataURL(event.target.files[0]);\n }\n\n private successAttachmentCreate = (response) => {\n   let createdAttachment: Attachment = new Attachment(\n     response.attachmentId,\n     response.attachmentName,\n     this.attachment.lastModifiedDate\n   );\n   this.attachments.push(createdAttachment);\n   this.attachmentsMap.set(this.questionItem.id, this.attachments);\n   this.spinner.hide(this.spinnerName);\n };\n\n private successAttachmentDelete = (response) => {\n   for (let i = 0; i < this.attachments.length; i++) {\n     if (this.attachments[i].attachmentId === this.attachmentId) {\n       this.attachments.splice(i, 1);\n     }\n   }\n };\n\n private failureAttachmentCreate = (response) => {\n   //console.log('inside failureAttachmentCreate');\n };\n\n private failureAttachmentDelete = (response) => {\n   //console.log('inside failureAttachmentDelete');\n };\n\n handleSubmitClick() {\n   this.handleEvent.emit(this.qbItem.submitTrackingId);\n   this.updateAnswerBook(this.abItem.id);\n }\n\n handleCancelClick() {\n   this.handleEvent.emit(this.qbItem.cancelTrackingId);\n }\n\n private createAttachment = (fileWrapper: any) => {\n   if(this.serv == \"api\") {\n     // this.dataService.getAPIData(\n     //   this.tkn,\n     //   [\"Attachment\", \"create\", JSON.stringify(fileWrapper)],\n     //   this.successAttachmentCreate,\n     //   this.failureAttachmentCreate\n     // );\n     let paramMap = { createAnswerBookFlag: false };\n     paramMap['c__qb_id'] = '';\n     paramMap[\"c__record_id\"] = '';\n     this.dataService.getAPIFromNode('Attachment','create', JSON.stringify(fileWrapper),JSON.stringify(paramMap),this.api).subscribe(\n     (data)=>{\n       console.log('updated succussfully');\n       console.log(data);\n       this.successAttachmentCreate(JSON.parse(data))\n     },(error) => {\n       this.failureAttachmentCreate(error);\n       console.error('Failed to fetch question books', error);\n     }\n     )\n   } else {\n     // VD 15FEB24 - used processNew method\n     let paramMap = { createAnswerBookFlag: false };\n     paramMap['c__qb_id'] = '';\n     paramMap[\"c__record_id\"] = '';\n   // VD 12Jun24 - translation changes\n   // VD 31NOV24 param changes with new method\n    let para3 = {\n      dataType: \"Attachment\",\n      operation: \"create\",\n      param1: JSON.stringify(fileWrapper),\n      paramJSON: JSON.stringify(paramMap),\n      languageCode : ''\n    }\n     this.sfService.remoteAction(\n       \"NxtController.processData\",\n       [JSON.stringify(para3)],\n       this.successAttachmentCreate,\n       this.failureAttachmentCreate\n     );\n   }\n }\n\n deleteAttachment(attachmentId: string) {\n   this.attachmentId = attachmentId;\n   this.handleEvent.emit(\"deleteAttachment\");\n   this.deleteSFAttachment(attachmentId);\n }\n\n private deleteSFAttachment = (fileId: string) => {\n   if(this.serv == \"api\") {\n     // this.dataService.getAPIData(\n     //   this.tkn,\n     //   [\"Attachment\", \"delete\", fileId],\n     //   this.successAttachmentDelete,\n     //   this.failureAttachmentDelete\n     // );\n     let paramMap = { createAnswerBookFlag: false };\n     paramMap['c__qb_id'] = '';\n     paramMap[\"c__record_id\"] = '';\n     this.dataService.getAPIFromNode('Attachment','delete',fileId ,JSON.stringify(paramMap),this.api).subscribe(\n     (data)=>{\n       console.log('updated succussfully');\n       console.log(data);\n       this.successAttachmentDelete(JSON.parse(data))\n     },(error) => {\n       this.failureAttachmentDelete(error);\n       console.error('Failed to fetch question books', error);\n     }\n     )\n   } else {\n     // VD 15FEB24 - used processNew method\n     let paramMap = { createAnswerBookFlag: false };\n     paramMap['c__qb_id'] = '';\n     paramMap[\"c__record_id\"] = '';\n     // VD 31NOV24 param changes with new method\n     let para4 = {\n      dataType: \"Attachment\",\n      operation: \"delete\",\n      param1: fileId,\n      paramJSON: JSON.stringify(paramMap),\n      languageCode : ''\n    }\n     this.sfService.remoteAction(\n       \"NxtController.processData\",\n       [fileId,JSON.stringify(para4)],\n       this.successAttachmentDelete,\n       this.failureAttachmentDelete\n     );\n   }\n }\n\n getFileName(fileNamewithIdandType) {\n   //truncate file path\n   var fileNameWithType = fileNamewithIdandType.substr(\n     fileNamewithIdandType.indexOf(\"::::\") + 4\n   );\n   return fileNameWithType; //fileNameWithType.replace(/^(.*(\\/|\\\\))(.+)$/, '$3');\n }\n fileUI() {\n   if (this.attachments.length === 0) {\n   }\n }\n\n //Update function for categorization\n // stepperCateg() {\n //   this.firstFormGroup = this._formBuilder.group({\n //     firstCtrl: ['', Validators.required]\n //   });\n //   this.secondFormGroup = this._formBuilder.group({\n //     secondCtrl: ['', Validators.required]\n //   });\n\n // }\n\n // Update Function for the Progress Bar\n updateProgress() {\n   if (this.qbItem.progressBar === true) {\n     let j = [];\n     for (let i = 0; i < this.possibilities.total; i++) {\n       var pathposs = Object.values(this.possibilities.paths[i].questions);\n       if (pathposs[this.pathquestion] === this.currentName) {\n         j.push(i);\n         this.check = true;\n       } else {\n         this.check = false;\n       }\n     }\n     if (j.length === 1) {\n       this.count = j[0];\n     }\n     if (j.length > 1) {\n       var width =\n         90 * (this.questionStack.length / this.possibilities.maxQuestions);\n       this.progressStyle = Math.round(width) + \"%\";\n     } else if (j.length === 1) {\n       var width =\n         90 *\n         (this.questionStack.length /\n           this.possibilities.paths[this.count].count);\n       this.progressStyle = Math.round(width) + \"%\";\n     }\n     this.percent = +Math.round(width);\n   }\n }\n\n townName(area) {\n   this.selectedValue = area.town;\n   //console.log('this value='+this.selectedValue)\n   this.tempoAddress = [];\n }\n\n getTownLocal() {\n   this.tempoAddress = [];\n   if (this.selectedValue.length > 0) {\n     for (var val of this.localaddress) {\n       if (\n         val.town.substring(0, this.selectedValue.length) == this.selectedValue\n       ) {\n         //console.log(val.country)\n         this.tempoAddress.push(val);\n         //console.log('tempoAddress'+this.tempoAddress)\n         if (this.tempoAddress.length == 6) {\n           break;\n         }\n       }\n     }\n   }\n   document.getElementById(\"selectList\").style.display = \"block\";\n   this.setSearchListWidth();\n }\n\n clearList() {\n   setTimeout(() => {\n     this.tempoAddress = [];\n   }, 500);\n }\n\n setSearchListWidth() {\n   //to resize search list based on the screen size\n   const searchBoxWidth = window.document.getElementById(\"autocomplete-input\").offsetWidth;\n   document.getElementById(\"selectList\").style.width = searchBoxWidth + \"px\";\n }\n\n   getCode(){\n     this.tempoAddress = [];\n     if (this.selectedPostalcode.length > 0) {\n       for (var val of this.allAddress) {\n         if (val.zipCode.substring(0, this.selectedPostalcode.length) == this.selectedPostalcode) {\n           //console.log(val.country)\n           this.tempoAddress.push(val);\n           //console.log('tempoAddress'+this.tempoAddress)\n           if (this.tempoAddress.length == 6) {\n             break;\n           }\n         }\n       }\n     }\n     document.getElementById(\"selectList\").style.display = \"block\";\n     this.setSearchListWidth();\n   }\n   getPostalcode(value){\n    this.places=[];\n    this.province=[];\n     var province;\n     var town;\n     this.selectedPostalcode = value.zipCode;\n     this.selectedValue = value.country;\n     this.tempoAddress=[];\n\n\n     for(var val of this.localaddress){\n       if(this.selectedPostalcode == val.zipCode ){\n         this.places.push(val);\n         this.province.push(val);\n         this.selectedValue = val.country;\n         province = val.province\n         town = val.town;\n       }\n     }\n     if(this.places.length == 1){\n\n       this.selectedProvince =province;\n       this.selectedCity = town;\n     }else if(this.places.length >1 || this.places.length ==0){\n\n         this.selectedCity ='';\n         this.selectedProvince='';\n     }\n   }\n   closeDropdown() {\n     if(this.selectedPostalcode.length == 5){\n       this.getPostalcode({zipCode:this.selectedPostalcode});\n     }\n\n  setTimeout(()=> {\n     document.getElementById('selectList').style.display = \"none\";\n   }, 500);\n  }\n\n\n  //Plus button implementation.\n  structLocalSubQuestion(ques: LocalQuestion){\n   // console.log('inside structLocalSubQuestion');\n     for(var i = 0; i < this.subQuestions.length; i++){\n       var localSubQuestion = new LocalQuestion();\n         localSubQuestion.id = this.subQuestions[i].id;\n         localSubQuestion.Name = this.subQuestions[i].Name;\n         localSubQuestion.question = this.subQuestions[i].question;\n         localSubQuestion.questionText = this.subQuestions[i].questionText;\n         localSubQuestion.type = this.subQuestions[i].type;\n         localSubQuestion.title = this.subQuestions[i].title;\n         localSubQuestion.subTitle = this.subQuestions[i].subTitle;\n         localSubQuestion.isOptional = this.subQuestions[i].isOptional;\n         localSubQuestion.errorMessage = this.subQuestions[i].errorMessage;\n         localSubQuestion.nextQuestion = this.subQuestions[i].nextQuestion;\n         localSubQuestion.groupName = this.subQuestions[i].groupName;\n         localSubQuestion.questionNumber = this.subQuestions[i].questionNumber;\n         localSubQuestion.allowedFileExtensions = this.subQuestions[i].allowedFileExtensions;\n         localSubQuestion.uniqueSubQId = ''+this.subQuestions[i].id + i;\n         localSubQuestion.input = this.subQuestions[i].input;\n         this.localSubQuestions.push(localSubQuestion);\n     }\n // console.log('final local sub questions');\n // console.log(this.localSubQuestions);\n // console.log(this.questionItem.id);\n this.localSubQMap.set(this.questionItem.id,this.localSubQuestions);\n this.localSubQuestions = [];\n // console.log('final key localSubQMap map');\n // console.log(this.localSubQMap);\n }\n\n addInputBox(question: LocalQuestion, index: number){\n   var arra = this.localSubQMap.get(this.questionItem.id);\n   var qIndex = arra.indexOf(question);\n   var ques: LocalQuestion = new LocalQuestion();\n   Object.assign(ques, question);\n   //console.log((ques.uniqueSubQId).substring(18, (ques.uniqueSubQId).length)+1);\n   if(this.keyIndex == index){\n     ques.uniqueSubQId = ques.id + (String(index+1));\n     this.keyIndex++;\n   }else{\n     this.keyIndex++;\n     ques.uniqueSubQId = ques.id + (String(this.keyIndex));\n   }\n   ques.input = '';\n   arra.splice(qIndex+1, 0, ques);\n\n   this.localSubQMap.set(this.questionItem.id,arra);\n   //console.log(this.localSubQMap);\n }\n\n removeAddress(quesUniqueId: string, qName: string) {\n   //console.log(quesUniqueId)\n   var val = this.localSubQMap.get(this.questionItem.id);\n   var keyindex = 0;\n\n   for(let i=0; i<val.length; i++){\n     if(val[i].Name == qName){\n       keyindex++;\n     }\n   }\n\n   if(this.localSubQMap.has(this.questionItem.id) && keyindex >1){\n     var reorder = val.filter((item) => item.uniqueSubQId !== quesUniqueId)\n     this.localSubQMap.set(this.questionItem.id,reorder);\n     keyindex--;\n   }\n }\n\n getLocalSubQuestions(id: String){\n   return this.localSubQMap.get(id);\n }\n\n //Single Add button functionality for List type\nAdd(question: LocalQuestion){\n   this.addFlag =  false;\n   var arra = this.localSubQMap.get(this.questionItem.id);\n   var index  = arra.length;\n   var a = arra.slice(-1).pop();\n   this.indexCount  = a.questionNumber;\n\n   for (var i = 0; i < this.indexCount ; i++) {\n     var ques: LocalQuestion = new LocalQuestion();\n     Object.assign(ques, question[i]);\n     this.keyIndex++;\n     ques.uniqueSubQId = ques.id + (String(this.keyIndex));\n     ques.input = '';\n     arra.splice(index+(this.indexCount-1), 0, ques);\n   this.localSubQMap.set(this.questionItem.id,arra);\n   }\n   this.addFlag = true;\n }\n\n handleLocationSelected(location: any,ques:any) {\n   ques.input = location;\n }\n\n selectedInput(input:any ,ques:any){\n   ques.input = input;\n }\n\n handleTextareaValueChange(value :string){\n   console.log('Selected text-area text:', value);\n }\n getData(data:any){\n  console.log('table data',data);\n }\n\n dependentChange(value:any){\n this.nextValue = value;\n }\n\n displayDate(dateSelected: any,ques:any){\n   // Parse the date string using moment and assign it to this.selectedDate\n   ques.input = moment(dateSelected.value , 'YYYY-MM-DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss').toString();\n }\n\n getKey(item: any): any {\n   return Object.keys(item)[0];\n }\n\n getValue(item: any): any {\n   return Object.values(item)[0];\n }\n}","<!-- Spinner -->\n<ngx-spinner size=\"medium\" [name]=\"spinnerName\" [type]=\"spinnerType\"></ngx-spinner>\n<!-- custom loader -->\n<!-- <app-loader></app-loader> -->\n<!-- Back Processing -->\n<!-- <div *ngIf=\"backicon == false\" >\n  <div class=\"backicon\" >\n    <button (click)=\"handleBackClick()\" [class]=\" abItem?.status == 'Completed' ? 'summary-volver':'app-back1'\">\n    <img class=\"icon-arrow-back\" src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-arrow-back.png\" alt=\"Scroll down\"> {{ qbItem?.back }}\n    </button>\n  </div>\n</div> -->\n\n<!-- Question Hanlding -->\n<!-- VD removed unwanted condition -->\n<!-- RS 09DEC24 Changed keys-->\n<div *ngIf=\"questionItem\" class=\"questiondiv1 padd-bottom\">\n  <!-- Progress Bar & Title -->\n  <div *ngIf=\"questionItem.title\">\n    <h1>{{ questionItem?.title }}</h1>\n    <div>{{ questionItem?.subTitle }}</div>\n  </div>\n\n  <!-- Progress & Grouping -->\n  <div>\n    <!-- Pie Chart Progress -->\n    <div [ngClass]=\"{ bgColor: qbItem?.progressBar }\">\n      <div id=\"nxt-progress\" *ngIf=\"qbItem?.progressBar\">\n        <circle-progress class=\"titlebar\" [percent]=\"this.percent\" [radius]=\"40\" [space]=\"-4\" [outerStrokeWidth]=\"4\"\n        [innerStrokeWidth]=\"4\" [outerStrokeColor]=\"'#e0b1b0'\" [innerStrokeColor]=\"'#e7e8ea'\" [animation]=\"true\" [backgroundPadding]= \"0\"\n        [backgroundColor]= \"'#dd2e13'\" [backgroundGradientStopColor]=\"'#f9bfbd'\" [titleColor]=\"'#f3eded'\" \n        class=\"ng-star-inserted\" [title]=\"this.percent+'%'\" [showSubtitle]=\"false\" [showBackground]=\"true\" [animationDuration]=\"300\"\n        [startFromZero]=\"false\" [responsive]=\"false\" >\n        </circle-progress>\n      </div>\n    </div>\n    <!-- RS 09DEC24 Changed keys-->\n    <!-- Show the Group/Module related to the Progress -->\n    <div *ngIf=\"questionItem.groupName && qbItem.progressBar\"\n        [ngClass]=\"{ questionalign: !qbItem?.progressBar }\">\n      <div class=\"nxt-largeTitle\">\n        <h3 class=\"myt-font6 myt-text3\">\n          {{ questionItem?.groupName }}\n        </h3>\n        <div *ngIf=\"questionItem.subText != '¿En qué país ocurrió?'\" class=\"myt-font5 myt-text1\">{{questionItem?.subText}}</div>\n        <div *ngIf=\"questionItem.subText === '¿En qué país ocurrió?'\" class=\"myt-font10 myt-text2\">{{questionItem?.subText}}</div>\n      </div>\n    </div>\n  </div>\n  <!-- RS 09DEC24 Changed keys-->\n  <!-- Question Handling -->\n    <!-- VD 10Aug24- question no -->\n  <div>\n    <div *ngIf=\"questionItem.questionText && questionItem.style?.showLabel !== false\" style=\"display: flex;\">\n      <span>{{questionItem?.questionNumber}}.</span>\n      <p class=\"nxt-label\" [innerHTML]=\"getText(questionItem?.questionText)\">\n       {{questionItem?.questionText}}\n      </p>\n    </div>\n    <!-- Title -->\n    <!-- <div *ngIf=\"questionItem.isTitle\">\n      <div *ngIf=\"questionItem.type != 'Book' && questionItem.questionNumber!='6' && questionItem.questionNumber!='9'\"> \n        <h3 class=\"questionalign  myt-font3 myt-align myt-text4\" [innerHTML]=\"getText(questionItem?.questionText)\">\n          {{questionItem?.questionText}}\n        </h3>\n      </div>\n    </div> -->\n    <!-- HA 31-JAN-24 Removed the unwanted styling class -->\n    <!-- <div *ngIf=\"!questionItem.isTitle\" [class]=\"qbItem.isShengel ? 'header-style' : 'question-f-size'\">\n      <div [innerHTML]=\"getText(questionItem?.questionText)\" >\n        {{ questionItem?.questionText }}\n      </div>\n    </div> -->\n\n    <!-- This should be removed with Custom Styling - MR - 11AUG23 -->\n    <!-- <div *ngIf=\"questionItem.type == 'Book'\">\n      <div *ngIf=\"questionItem.questionNumber=='6'\">\n        <h3 class=\"myt-321\" [innerHTML]=\"getText(questionItem?.questionText)\">\n          {{ questionItem?.questionText }}\n        </h3>\n      </div>\n    </div> -->\n    \n    <!-- This should be removed with Custom Styling - MR - 11AUG23 -->\n    <!-- <div *ngIf=\"questionItem.type == 'File' \">\n      <div *ngIf=\"questionItem.questionNumber=='9'\">\n        <h3 class=\"myt-345\" [innerHTML]=\"getText(questionItem?.questionText)\">\n          {{questionItem?.questionText}}\n        </h3>\n      </div>\n    </div> -->\n  </div>\n\n  <!-- Additional Info -->\n  <!-- The below code can be written effectively nested ngIf for Rich Text & Other onw for Progress Bar -->\n  <div *ngIf=\"questionItem.additionalRichContent && qbItem.progressBar\" >\n    <div\n      class=\"nxt-additional \" [innerHTML]=\"innerhtml\">\n    </div>\n  </div>\n  <div *ngIf=\"questionItem.additionalRichContent && !qbItem.progressBar\">\n    <div class=\"info-alert ques-alert1\">\n      <i class=\"fa fa-info fa-3x iposition icolor\" aria-hidden=\"true\"></i>\n      <div class=\"infodiv\" [innerHTML]=\"innerhtml\"></div>\n    </div>\n  </div>\n\n  <!-- Dropdown-->\n  <div *ngIf=\"dropdownFlag\" >\n    <div class=\"nxt-dis-flex\">\n      <select class=\"nxtdropdown\"\n        [ngClass]=\"{\n          'dt-line nxt-myt-align3 nxt-myt-align2 dpDown nxt-dropbox down1 myt-dropbox myt-border-r myt-font1': qbItem?.progressBar,\n          'custom-select': !qbItem?.progressBar\n        }\" class=\"mr-sm-2 dd-height nxt-dropbox \"  id=\"dropdown\" [(ngModel)]=\"inpValue\" (change)=\"clearError()\" style.border-color=\"{{\n          this.questionItem?.error ? 'red' : inpValue?.length > 0 ? '#fff' : ''\n        }}\" style.color=\"{{ questionItem?.error ? 'red' : '' }}\">\n        <option *ngFor=\"let opt of questionItem.options\" class=\"option\" value=\"{{ opt.value }}\">\n          {{ opt.value }}\n        </option>\n        <!-- HA 20DEC23 For Translation -->\n        <option value=\".\" disabled hidden>{{'pleaseMakeChoice' | i18n:i18nService.currentLanguage}}</option>\n      </select>\n    </div>\n  </div>\n\n  <!--VD Radio update -->\n  <div *ngIf=\"radioFlag || dataFlag\" class=\"\">\n    <span *ngIf=\"this.questionItem.error\" class=\"nxt-error-msg\"> {{ questionItem?.errorMessage }}</span>\n    <div class=\"nxt-custom-radio-container\">\n      <div *ngFor=\"let opt of questionItem.options\" \n      [class]=\" this.questionItem.error ? 'nxt-custom-radio-option invalid' : 'nxt-custom-radio-option'\">\n        <input\n          type=\"radio\"\n          [id]=\"opt.value\"\n          [(ngModel)]=\"inpValue\"\n          name=\"inpValue\"\n          [value]=\"opt.value\"\n          (change)=\"optionChange(opt.value)\"\n        />\n        <label class=\"nxt-radio-label\" [for]=\"opt.value\"> {{ opt.value }}</label>\n      </div>\n    </div>\n\n    <!-- <div class=\"nxt-dis-flex\">\n      <div *ngFor=\"let opt of questionItem.options.records\" class=\"radio nxt-radioOption\">\n        <label class=\"nxt-radiocontainer container myt-font4\">\n          <input type=\"radio\" [id]=\"opt.id\" [(ngModel)]=\"inpValue\" name=\"inpValue\" [value]=\"opt.value\"\n            (change)=\"optionChange(opt.value)\" />\n          {{ opt.value }}\n        </label>\n      </div>\n    </div> -->\n  </div>  \n  <!-- Checkbox -->\n  <div *ngIf=\"checkboxFlag\" class=\"\">\n    <div *ngIf=\"questionItem?.error\" class=\"cond-div2\">\n      {{ questionItem?.errorMessage }}\n    </div>\n    <div class=\"nxt-checkbox-container\">\n      <div *ngFor=\"let item of optionValues\" class=\"nxt-checkbox-wrapper\">\n        <label class=\"nxt-container1\">\n          <input type=\"nxt-checkbox\" [id]=\"item.id\" [(ngModel)]=\"item.checked\" (click)=\"clearError()\" />\n          <span class=\"nxt-checkbox-label\">{{ item.value }}</span>\n        </label>\n      </div>\n    </div>\n  </div>\n\n  <!-- Text -->\n  <div *ngIf=\"textFlag\">\n    <!-- HA 31-JAN-24 To reduce the margin -->\n    <div [class]=\"'col-md-' + questionItem?.size + ' paddingnone'\">\n      <input class=\"nxt-input\" type=\"text\" [(ngModel)]=\"inpValue\" \n       id=\"text-input-id\" required=\"\" (focus)=\"clearError()\" style.border-color=\"{{\n          this.questionItem?.error\n            ? 'red'\n            : ''\n        }}\" oninput=\"this.value=this.value.replace(/[^a-zA-Z0-9\\s.:;,?]/g,'');\" />\n      <!-- <i class=\"fa fa-check nxt-check-icon\" aria-hidden=\"true\" *ngIf=\"inpValue?.length > 0\"></i> -->\n    </div>\n  </div>\n\n  <!-- Text Area -->\n  <div *ngIf=\"taFlag\" >\n    <div>\n      <textarea class=\"nxt-input nxt-text-area\" id=\"ta-input-id\" [(ngModel)]=\"inpValue\" (click)=\"clearError()\" style.border-color=\"{{\n          this.questionItem?.error\n            ? 'red'\n            : inpValue?.length > 0 && taFocusOut\n            ? '#87be1c'\n            : ''\n        }}\" (focusout)=\"taFocusOut = true\"\n        oninput=\"this.value=this.value.replace(/[^a-zA-Z0-9\\s.:;,?]/g,'');\"></textarea>\n      <!-- <i class=\"fa fa-check nxt-check-icon\" aria-hidden=\"true\" *ngIf=\"inpValue?.length > 0 && taFocusOut\" style=\"display: flex; justify-content: flex-end;\"></i> -->\n    </div>\n  </div>\n\n\n  <!-- RS 06JAN25 -->\n   <!-- for rich text -->\n  <div *ngIf=\"rtaFlag\">\n    <div [class]=\"'col-md-' + questionItem?.size + ' paddingnone'\">\n      <app-custom-rich-text\n        [value]=\"inpValue\"\n        [question]=\"questionItem\"\n        [error]=\"questionItem?.error\"\n        (textValueChange)=\"handleRichTextChange($event)\">\n      </app-custom-rich-text>\n    </div>\n  </div>\n  \n        \n  <!-- <div *ngIf=\"ques.type === 'RichTextArea'\">\n\n    <app-custom-rich-text\n      [value]=\"ques.input\"\n      [rows]=\"3\"\n      [error]=\"ques.error\"                [placeholder]=\"ques.question \" \n      (textValueChange)=\"handleRichTextChange($event)\">\n    </app-custom-rich-text>\n</div> -->\n  <!-- CC Number Format -->\n  <!-- RS 09DEC24 Changed keys-->\n  <div *ngIf=\"numberFlag\" class=\"col-md-12\">\n    <div class=\"nxt-dis-flex\">\n      <input type=\"Text\" placeholder=\"0000 0000 0000 0000 0000 0000\" [ngClass]=\"{ boxoutline: qbItem?.progressBar }\"\n        [(ngModel)]=\"inpValue\" id=\"number-input-id\" (ngModelChange)=\"CCOnChange($event)\" required=\"\" maxlength=\"29\"\n        (focus)=\"clearError()\" oninput=\"this.value=this.value.replace(/[^0-9 ]/g,'');\"\n        style=\"width:-webkit-fill-available;\" style.border-color=\"{{\n          this.questionItem.error\n            ? 'red'\n            : inpValue?.length > 0\n            ? '#87be1c'\n            : ''\n        }}\" />\n      <i class=\"fa fa-check\" aria-hidden=\"true\" style=\"color: #87be1c; margin-left: -2rem; z-index: 1; padding: 5px;\"\n        *ngIf=\"inpValue?.length > 0\"></i>\n    </div>\n  </div>\n  <!-- END-->\n\n  <!-- AlphaNumeric -->\n  <div *ngIf=\"alphanumericFlag\" class=\"col-md-12\"> <!--UI not completed-->\n    <div style=\"position:relative;\">\n      <!-- HA 20DEC23 For Translation -->\n      <input type=text placeholder=\"{{'zeroOfZero' | i18n:i18nService.currentLanguage}}\" style=\"padding:5px 5px 5px 150px;\" id=\"youridhere\"/>\n    </div>\n  </div>\n\n  <!-- Email -->\n  <!-- RS 09DEC24 Changed keys-->\n  <div *ngIf=\"emailFlag\" class=\"col-md-12\">\n    <div class=\"nxt-dis-flex\">\n      <input type=\"email\" [ngClass]=\"{ boxoutline: qbItem?.progressBar }\" [(ngModel)]=\"inpValue\" id=\"email-input-id\"\n        required=\"\" (focus)=\"clearError()\" style.border-color=\"{{\n          this.questionItem.error\n            ? 'red'\n            : inpValue?.length > 0\n            ? '#87be1c'\n            : ''\n        }}\" />\n      <i class=\"fa fa-check\" aria-hidden=\"true\" style=\"color: #87be1c; margin-left: -2rem; z-index: 1; padding: 5px\"\n        *ngIf=\"inpValue?.length > 0\"></i>\n    </div>\n  </div>\n\n  <!-- DateTime -->\n  <div *ngIf=\"dtFlag\" class=\"col-md-12 paddingZero nxtmyt-time1\" >\n    <!-- Error Handling -->\n    <div class=\"col-md-12\" *ngIf=\"questionItem.error\" style=\"font-size: 18px;\n    color: red;\">{{questionItem?.error?.errorMsg}}</div>\n\n    <!-- Date -->\n    <div *ngIf=\"dateFlag\">\n      <div class=\"col-md-12 paddingBottom\">\n        <!-- HA 31-JAN-24 These labels were occuping the empty space when date question comes-->\n        <!-- <label class=\"date-time colorf\">{{ questionItem?.dateText }}</label> -->\n        <div class=\"nxt-dis-flex\">\n          <!-- HA 20DEC23 For Translation -->\n          <!-- HA 02FEB24 Additional param to update the question -->\n          <my-date-picker name=\"mydate\" [options]=\"myDatePickerOptions\" id=\"date\" style=\"font-size: 18px !important;\" (dateChanged)=\"onDateChanged($event, questionItem)\"\n            [(ngModel)]=\"selDate\" class=\"date-picker\" placeholder=\"{{'selectDate' | i18n:i18nService.currentLanguage}}\" (focus)=\"clearError()\">\n          </my-date-picker>\n        </div>\n      </div>\n    </div>\n\n    <!-- Time -->\n    <div *ngIf=\"timeFlag\">\n      <div class=\"col-md-12 paddingBottom\">\n        <!-- <label class=\"date-time colorf\">{{ questionItem?.timeText }}</label> -->\n        <div class=\"nxt-dis-flex\">\n         <div [ngClass]=\"{'dt-line date-line nxt-dt-time': qbItem?.progressBar,\n                           dateandTime: !qbItem?.progressBar}\" \n              id=\"dateandTime\" [style.border-color]=\"questionItem?.error ? 'red': questionItem?.input?.length > 0 ? '' : ''\"\n              (focus)=\"(clearSQError) \">\n          <select name=\"hours\" class=\"datetime showHour nxtmyt-time myt-hour\" [(ngModel)]=\"selectedHour\" id=\"hour\"\n            (focus)=\"clearError()\">\n            <option value=\"\">HH</option>\n            <option [value]=\"hour\" *ngFor=\"let hour of hours\">\n              {{ hour }}\n            </option>\n          </select>\n          <span class=\"colon\"> : </span>\n          <select name=\"minutes\" class=\"datetime nxtshowminute nxtmyt-time\" [(ngModel)]=\"selectedMinute\" id=\"minute\"\n            (focus)=\"clearError()\">\n            <option value=\"\">MM</option>\n            <option [value]=\"minute\" *ngFor=\"let minute of minutes\">\n              {{ minute }}\n            </option>\n          </select>\n          <div [ngClass]=\"{ colon1: qbItem?.progressBar }\" *ngIf=\"questionItem?.x24Hours == false\">\n            <span class=\"colon\"> : </span>\n            <select name=\"AM/PM\" class=\"nxtmyt-time\" [(ngModel)]=\"selectedMeridiem\" id=\"meridiem\">\n              <option value=\"AM\">AM</option>\n              <option value=\"PM\">PM</option>\n            </select>\n            <!-- <div [ngClass]=\"{'': qbItem.progressBar, 'dateandTime': !qbItem.progressBar}\"></div> -->\n          </div>\n        </div>\n      </div>\n      </div>\n      <i class=\"fa check-icon3\" aria-hidden=\"true\" *ngIf=\"questionItem?.input?.length > 0\"></i>\n    </div>\n  </div>\n\n  <!-- Attachment / File -->\n  <div *ngIf=\"fileFlag\">\n    <div *ngIf=\"!qbItem.progressBar\">\n      <div class=\"info-alert\" style.border-color=\"{{ this.questionItem?.error ? 'red' : '' }}\">\n        <label class=\"picture-upload\" for=\"file-upload\">\n          <span class=\"picture-upload-child\">\n            <i class=\"fa fa-file-image-o fa-5x icolor\" aria-hidden=\"true\"></i>\n          </span>\n          <span class=\"fa fa-plus fa-2x picture-upload-child pic-upload icolor\">\n            <i class=\"\" aria-hidden=\"true\"></i>\n          </span>\n        </label>\n      </div>\n      <input id=\"file-upload\" type=\"file\" accept=\"{{ allowedFileExtension }}\" (change)=\"uploadFile($event,this.questionItem)\" />\n    </div>\n    <ul *ngIf=\"\n        attachments?.length > 0 &&\n        questionItem?.type === 'File' &&\n        !qbItem?.progressBar\n      \" class=\"attach-ulist col-md-12\">\n      <li *ngFor=\"let attachment of attachments\" class=\"align-l\">\n        {{ attachment.attachmentName}}<span class=\"attach-list\" (click)=\"deleteAttachment(attachment.attachmentId)\">X</span>\n      </li>\n    </ul>\n\n    <!-- Attachment Progress -->\n    <div *ngIf=\"qbItem.progressBar\">\n      <div *ngFor=\"let attachment of attachments\" class=\"nxtfile-uploading-box\">\n        <!--<img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-doc-img%402x.png\" class=\"icon-edit1\" />-->\n        <span class=\"uploading-file-name \">{{ attachment.attachmentName }}</span>\n        <img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-delete%402x.png\" class=\"deleteIcon\"\n          (click)=\"deleteAttachment(attachment.attachmentId)\" />\n      </div>\n      <div class=\"nxtfile-upload-box\" style.border-color=\"{{ this.questionItem.error ? 'red' : '' }}\">\n      \n        <!--<img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-doc-img%402x.png\" class=\"icon-edit1\" />-->\n        <span class=\"f-Name\" *ngIf=\" questionItem?.style?.showLabel !== false\" [innerHTML]=\"getText(questionItem?.questionText)\"> {{ questionItem?.questionText}}</span>\n        <label class=\"file-label \">\n          <img src=\"https://rnxt.s3.amazonaws.com/MytIcon/file-upload.png\" class=\"file-icon\"/>\n          <!-- HA 20DEC23 For Translation -->\n          <input name=\"attachment\" type=\"file\" placeholder=\"{{'toBuyTicket' | i18n:i18nService.currentLanguage}}\" multiple\n            accept=\".pdf, .png, .jpg, .jpeg, .heic, .application/pdf\" (change)=\"uploadFile($event)\"\n            class=\"file-upload-btn\">\n        </label>\n      </div>\n    </div>\n  </div>\n  <!-- RS 09DEC24 Changed keys-->\n  <!-- Book -->\n  <div *ngIf=\"bookFlag\">\n    <div [class]=\"qbItem.isShengel ? 'form-group content-box' : 'form-group'\">\n      <div class=\"form-row\">\n        <div class=\"col-md-12\" *ngIf=\"questionItem.error\" style=\"font-size: 18px;\n            color: red;\">{{questionItem?.error?.errorMsg}}</div>\n        <div [class]=\"qbItem.isShengel ? '' : 'nxt-myt-align3'\" [class]=\"qbItem.isShengel ? 'col-lg-' + ques.size + ' paddingnone' : 'col-md-' + ques.size + ' paddingnone'\"\n          *ngFor=\"let ques of subQuestions;let i = index\" [id]=\"ques.id\">\n          <div [ngClass]=\"{ down2: qbItem?.progressBar }\">\n            <span *ngIf=\"ques?.style?.showLabel !== false\">{{ ques?.questionText }}</span>\n          </div>\n          <div class=\"col-md-12 paddingZero nxtmyt-dateTimeNew\" *ngIf=\"ques.type === 'Time' || ques.type === 'Date'\">\n            <div *ngIf=\"ques.type === 'Date'\">\n              <div class=\"col-md-12 paddingBottom\">\n                <!-- <label class=\"date-time colorf\">{{ questionItem?.dateText }}</label> -->\n                <div class=\"dateandtime\">\n                  <!-- HA 20DEC23 For Translation -->\n                  <!-- HA 02FEB24 Additional param to update the question -->\n                  <my-date-picker name=\"mydate\" [options]=\"myDatePickerOptions\" id=\"date\" style=\"font-size: 18px !important;\" (dateChanged)=\"onDateChanged($event, ques)\"\n                    [(ngModel)]=\"selDate\" class=\"date-picker\" placeholder=\"{{'selectDate' | i18n:i18nService.currentLanguage}}\"  (focus)=\"clearError()\" >\n                  </my-date-picker>\n                </div>\n              </div>\n            </div>\n            <div *ngIf=\"ques.type === 'Time'\">\n              <div class=\"col-md-12 paddingBottom\">\n                <!-- <label class=\"date-time colorf\">{{ questionItem?.timeText }}</label> -->\n                <div class=\"dateandtime\">\n                <div [ngClass]=\"{'dt-line date-line nxt-dt-time': qbItem?.progressBar,\n                                  dateandTime: !qbItem?.progressBar}\" \n                      id=\"dateandTime\" [style.border-color]=\"questionItem?.error ? 'red': questionItem?.input?.length > 0 ? '' : ''\"\n                      (focus)=\"(clearSQError) \">\n                  <select name=\"hours\" class=\"datetime showHour nxtmyt-time myt-hour\" [(ngModel)]=\"selectedHour\" id=\"hour\"\n                    (focus)=\"clearError()\">\n                    <option value=\"\">HH</option>\n                    <option [value]=\"hour\" *ngFor=\"let hour of hours\">\n                      {{ hour }}\n                    </option>\n                  </select>\n                  <span class=\"colon\"> : </span>\n                  <select name=\"minutes\" class=\"datetime nxtshowminute nxtmyt-time\" [(ngModel)]=\"selectedMinute\" id=\"minute\"\n                    (focus)=\"clearError()\">\n                    <option value=\"\">MM</option>\n                    <option [value]=\"minute\" *ngFor=\"let minute of minutes\">\n                      {{ minute }}\n                    </option>\n                  </select>\n                  <div [ngClass]=\"{ colon1: qbItem?.progressBar }\" *ngIf=\"questionItem.x24Hours == false\">\n                    <span class=\"colon\"> : </span>\n                    <select name=\"AM/PM\" class=\"nxtmyt-time\" [(ngModel)]=\"selectedMeridiem\" id=\"meridiem\">\n                      <option value=\"AM\">AM</option>\n                      <option value=\"PM\">PM</option>\n                    </select>\n                  </div>\n                </div>\n              </div>\n              </div>\n            </div>\n          </div>\n          <div *ngIf=\"ques.type === 'DateTime'\">\n            <app-custom-date-picker [minDate]=\"ques.minDate\" [date]=\"ques.input\" (dateChange)=\"displayDate($event,ques)\"></app-custom-date-picker>\n          </div>\n          <!-- VD to show lable-->\n          <div *ngIf=\"ques.type === 'Label'\">\n            <app-custom-label [labelStyle]=\"ques.title\" [labelValue]=\"ques.question\">\n            </app-custom-label>\n          </div>\n          <div *ngIf=\"ques.type === 'Text'\">\n            <label ngIf=\"ques.style?.showLabel !== false\">{{ ques.questionText }}</label>\n            <app-custom-input\n                  [value]=\"ques?.input\"\n                  [question]=\"ques\" \n                  [idValue]=\"ques?.trackingId\"\n                  [focusEvent]=\"clearSQError(ques?.id)\"\n                  [error]=\"ques?.error\"\n                  [placeholder]=\"ques?.question\"\n                  (inputValue)=\"selectedInput($event,ques)\">\n            </app-custom-input>\n          </div>\n          <div *ngIf=\"ques.type === 'Location'\">\n            <!-- for pick location -->\n            <!-- HA10012024 Added Api key as input -->\n            <app-pick-location [apiKey]=\"qbItem['apiKey']\" [address]=\"ques.input\" (locationSelected)=\"handleLocationSelected($event,ques)\"></app-pick-location>\n          </div>\n          <!-- for  text area   -->\n          <div *ngIf=\"ques.type === 'TextArea'\">\n            <app-custom-text-area [value]=\"ques.input\" [rows]=\"3\" [error]=\"ques.error\" [placeholder]=\"ques.question \" (textareaValueChange)=\"handleTextareaValueChange($event)\"></app-custom-text-area>\n          </div>\n\n          <!-- Email -->\n          <div *ngIf=\"ques.type === 'Email'\">\n            <input type=\"email\" [(ngModel)]=\"ques.input\" [id]=\"ques.id\" required=\"\" (focus)=\"clearSQError(ques.id)\"\n              style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.question }}\" />\n          </div>\n\n          <div *ngIf=\"ques.type === 'File'\">\n            <div *ngIf=\"!qbItem.progressBar\">\n              <label class=\"picture-upload custom-file-upload bgcolor-w\" for=\"file-upload\">\n                <span class=\"picture-upload-child\">\n                  <i class=\"fa fa-file-image-o fa-5x icolor\" aria-hidden=\"true\"></i>\n                </span>\n                <span class=\"\n                    fa fa-plus fa-2x\n                    picture-upload-child\n                    pic-upload\n                    icolor\n                  \">\n                  <i class=\"\" aria-hidden=\"true\"></i>\n                </span>\n              </label>\n              <input id=\"file-upload\" type=\"file\" accept=\"{{ bookFlagAccept }}\" (change)=\"uploadFile($event,ques)\" />\n            </div>\n\n            <ul *ngIf=\"\n                attachments?.length > 0 &&\n                ques.type === 'File' &&\n                !qbItem.progressBar\n              \" class=\"attach-ulist col-md-12\">\n              <li *ngFor=\"let attachment of attachments\" class=\"align-l\">\n                {{ attachment.attachmentName\n                }}<span class=\"attach-list\" (click)=\"deleteAttachment(attachment.attachmentId)\">X</span>\n              </li>\n            </ul>\n            <div class=\"myt-box\" *ngIf=\"qbItem.progressBar\">\n\n              <div *ngFor=\"let attachment of attachments\" class=\"nxtfile-uploading-box\">\n                <img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-doc-img%402x.png\" class=\"nxt-icon-edit1\" />\n                <span class=\"uploading-file-name myt-font1 font-weight: normal;\"> {{ attachment.attachmentName }}</span>\n                <img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-delete%402x.png\" class=\"deleteIcon\"\n                  (click)=\"deleteAttachment(attachment.attachmentId)\" />\n              </div>\n              <div class=\"nxtfile-upload-box\" style.border-color=\"{{ this.questionItem.error ? 'red' : '' }}\">\n                <img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-doc-img%402x.png\" class=\"nxt-icon-edit1\" />\n                <span class=\"f-Name\">{{ ques?.question }}</span>\n                <label class=\"file-label \">\n                  <span style=\"color: #c5281c;text-decoration:underline\">\n                    {{'attach' | i18n:i18nService.currentLanguage}}\n                  </span>\n                  <!-- HA 20DEC23 For Translation -->\n                  <input name=\"attachment\" type=\"file\" placeholder=\"{{'toBuyTicket' | i18n:i18nService.currentLanguage}}\" multiple\n                    accept=\".pdf, .png, .jpg, .jpeg, .heic, .application/pdf\" (change)=\"uploadFile($event,ques)\"\n                    class=\"file-upload-btn\">\n                </label>\n              </div>\n            </div>\n          </div>\n\n          <!-- Table -->\n          <div *ngIf=\"ques.type === 'Table'\" class=\"\">\n            <!-- <app-custom-table \n              [question]=\"ques\"\n              (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.id)\">\n            </app-custom-table> -->\n            <!-- SKS13MAR25 nxt table change -->\n            <nxt-datatable isEditRow isDeleteRow actionButton isButtons\n                [question]=\"ques\"\n                from = \"formBuilder\"\n                (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.id)\"\n                [tableConfig]=\"ques.tableConfig\"\n                tableId = \"\"\n                direction = \"ltr\"\n                tableWidth = \"auto\"\n                >\n                <!-- (NxtTableEmit) = \"NxtTableEmit($event)\"\n                (buttonEmit) = \"buttonEmit($event)\"\n                (hyperLinkEmit) = \"hyperLinkEmit($event)\"\n                (onEditData) = \"onEditData($event)\"\n                (onDeleteData) = \"onDeleteData($event)\"\n                (saveButtonData) = \"saveButtonData($event)\"\n                (actionButtonEmit) = \"actionButtonEmit($event)\" -->\n            </nxt-datatable>\n          </div>\n\n          <!-- SKS25MAR25 Image -->\n          <div *ngIf=\"ques.type === 'Image'\" class=\"\">\n            <img [src]=\"ques.imageData\" [style.border]=\"ques.imageData ? '1px solid black' : 'none'\" />\n          </div>\n\n          <!-- Dropdown -->\n          <div *ngIf=\"ques.type === 'Dropdown'\" class=\"nxtdropdown\">\n            <!-- for common dropdown -->\n            <!-- HA 20DEC23 For Translation -->\n            <app-custom-dropdown [fromShengel]=\"qbItem.isShengel\"\n                    [options]=\"ques.options\"\n                    [apiMeta]=\"ques.subText\"\n                    [id]=\"ques.Name\"\n                    [selectedValue]=\"ques.input\"\n                    placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n                    [errorMessage]=\"ques?.errorMessage\"\n                    [error]=\"ques?.error\"\n                    (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.id)\">\n            </app-custom-dropdown>\n            <app-dropdown-with-flag *ngIf=\"ques.isDependentPicklist && !ques.dropDownOnly\"  [certified]=\"ques.certifiedFlag\"  [JobPerformerCertificates]=\"ques.certificateList\" (flagDropDownChange)=\"dependentChange($event)\"></app-dropdown-with-flag>\n            <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"questionItem?.input?.length > 0\"></i>\n          </div>          \n        </div>\n      </div>\n    </div>\n  </div>\n\n  <!--List start-->\n  <div *ngIf=\"listFlag\">\n    <div class=\"form-group\">\n      <div class=\"form-row\">\n        <div class=\"col-md-12\" *ngIf=\"questionItem.error\" style=\"font-size: 18px;\n            color: red;\">{{questionItem?.error?.errorMsg}}</div>\n        <div class=\"nxt-myt-align3\" [class]=\"'col-md-' + ques.size + ' paddingnone'\"\n          *ngFor=\"let ques of getLocalSubQuestions(questionItem.id);let i = index\">\n          <div>\n            <span class=\"nxt-dis-flex myt-font3 myt-font7\">{{ ques?.question }}</span>\n          </div>\n          <div *ngIf=\"ques.type === 'Text'\">\n            <input type=\"text\" [(ngModel)]=\"ques.input\" [ngClass]=\"{\n             'nxt-dis-flex dt-line date-line nxtbookText boxoutline myt-font1': qbItem.progressBar,\n             textBox: !qbItem.progressBar\n            }\" id=\"text\" [id]=\"ques.uniqueSubQId\" required=\"\" (focus)=\"clearLocalSubQuesError(ques)\"\n            style.border-color=\"{{ ques.error ? 'red' : '' }}\" placeholder=\"{{ ques.question }}\"\n            oninput=\"this.value=this.value.replace(/[^a-zA-Z0-9\\s.:;,?]/g,'');\" />\n          </div>\n        </div>\n        <div class=\"\" *ngIf=\"addFlag\">\n          <!-- HA 20DEC23 For Translation -->\n          <button (click)=\"Add(getLocalSubQuestions(questionItem.id))\" class=\"btn\"><i class=\"fa fa-plus\" ></i>{{'add' | i18n:i18nService.currentLanguage}}</button>\n         </div>\n      </div>\n    </div>\n  </div>\n  <!--List End-->\n\n  <!-- Actions -->\n  <!-- VD button condition removed-->\n  <div class=\"flexer\">\n    <!-- Backward / Back -->\n    <!-- HA 02FEB24 Hiding the button when there is no value from the backend -->\n     <!--VD disabled -->\n    <div class=\"backbutton\" \n      [style.visibility]=\"questionStack.length > 0 ? 'visible' : 'hidden'\" *ngIf=\"qbItem.back\">\n        <button [disabled]=\"isButtonDisabled\" [ngClass]=\"{\n            'nxt-left-bt': qbItem.progressBar,\n            'nxt-btn btn-primary':\n              !qbItem.progressBar\n          }\" (click)=\"handleBackClick()\">\n          {{ qbItem?.back }}\n        </button>\n    </div>\n\n    <!-- Forward / Next -->\n    <!-- HA 02FEB24 Hiding the button when there is no value from the backend -->\n    <div  *ngIf=\"qbItem.next\" >\n      <div class=\"nxtbutton\">\n         <!--VD disabled -->\n        <button [disabled]=\"isButtonDisabled\" [ngClass]=\"{\n            'nxt-rusty': qbItem.progressBar,\n            'nxt-btn btn-primary':\n              !qbItem.progressBar\n          }\" (click)=\"handleNextClick()\">\n          {{ qbItem.next }}\n        </button>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!-- Summary -->\n<div *ngIf=\"this.abItem?.status === 'Completed'\" class=\"col-lg-12\" style=\"text-align: center;\">\n  <h2>{{this.qbItem.summaryText}}</h2>\n  <p>{{this.qbItem.summarySubText}}</p>\n</div>\n\n<div *ngIf=\"summary && summary.length > 0\" height=\"100% !important\" class=\"col-md-12\" [ngClass]=\"{\n              'col-md-12':!qbItem.progressBar\n               }\">\n    <h1 class=\"nxt-header1 nxt-summarypadd\" >{{ qbItem.subTitle }}</h1>         \n  <div id=\"nxt-progress2\" *ngIf=\"!qbItem.progressBar && this.abItem.status != 'Completed' \">\n  <div [ngClass]=\"{ 'full-summary': qbItem.progressBar }\">\n    <div *ngFor=\"let qa of summary\">\n        <div [ngClass]=\"{ non:  qbItem.progressBar }\">\n          <div [ngClass]=\"{ summary:  !qbItem.progressBar }\">\n           <div *ngIf=\"!qbItem.edit\"\n              [ngClass]=\"{ 'question': this.abItem.status != 'Completed' }\">\n              <p [ngClass]=\"{ asum: this.abItem.status === 'Completed' }\" (click)=\"handleEditClick(qa.quesId)\"\n                [innerHTML]=\"getText(qa.quesValue)\">{{ qa.quesValue }}</p>\n            </div>\n            <!-- VD Question No added -->\n            <div *ngIf=\"qbItem.edit\"\n              [ngClass]=\"{ 'question': this.abItem.status != 'Completed' }\">\n              <div [ngClass]=\"{ 'question': this.abItem.status === 'Completed' }\"\n                [innerHTML]=\"getText(qa.quesValue)\"><span>{{ qa.questionNumber }}</span>\n                {{ qa.quesValue }}\n              </div>\n            </div>\n            <div class=\"nxt-answer\" >\n                <div *ngIf=\"qa.qTyp === 'File'\">\n                  <img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-doc-img%401.png\" class=\"nxt-icon-edit-summary\" />\n                  {{ qa.ansValue }}\n                </div>\n                <!-- HA 02FEB24 Displaying the in summary for book type -->\n                <div *ngIf=\"qa.qTyp == 'Book'\">\n                  <div *ngFor=\"let val of qa.myVal\">\n                    <p *ngIf=\"val.style?.showLabel !== false\">{{ val.questionText }}:<span>{{ val.input }}</span></p>\n                  </div>\n                </div>\n                <!-- HA 02FEB24 Displaying the value for direct question -->\n                <div *ngIf=\"qa.qTyp != 'File' && qa.qTyp != 'Book'  && qa.style?.showLabel !== false\">{{ qa.questionText }} <span></span>{{ qa.ansValue }}</div>\n                <div *ngIf=\"qbItem.edit && this.abItem.status != 'Completed'\" style=\"background: #dedddd;\">\n                  <button class=\"nxt-edit\" (click)=\"handleEditClick(qa.quesId)\">\n                    <img *ngIf=\"deviceInfo.os === 'iOS'\" src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-edit%402x.png\" style=\"width:50%!important;\" class=\"nxt-icon-editios\"/>\n                    <img *ngIf=\"deviceInfo.os !== 'iOS'\" src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-edit%402x.png\" class=\"nxt-icon-edit\" />\n                  </button>\n                </div>\n          </div>\n        </div>\n        </div>\n    </div>\n    </div>\n  </div>\n\n\n\n  <div id=\"nxt-progress2\" *ngIf=\"qbItem.progressBar \">\n    <div [ngClass]=\"{'bgColor nxtsummary-top' : qbItem.progressBar }\" >\n      <div id=\"nxt-progress-summary\" *ngIf=\"qbItem.progressBar\">\n        <circle-progress class=\"titlebar\" [percent]=\"this.percent\" [radius]=\"40\" [space]=\"-4\" [outerStrokeWidth]=\"4\"\n        [innerStrokeWidth]=\"4\" [outerStrokeColor]=\"'#e0b1b0'\" [innerStrokeColor]=\"'#e7e8ea'\" [animation]=\"true\" [backgroundPadding]= \"0\"\n        [backgroundColor]= \"'#dd2e13'\" [backgroundGradientStopColor]=\"'#f9bfbd'\" [titleColor]=\"'#f3eded'\" \n        class=\"ng-star-inserted\" [title]=\"this.percent+'%'\" [showSubtitle]=\"false\" [showBackground]=\"true\" [animationDuration]=\"300\"\n        [startFromZero]=\"false\" [responsive]=\"false\" >\n      </circle-progress>\n      \n      <div *ngIf=\"qbItem.summaryText && qbItem.progressBar\" \n      [ngClass]=\"{ summaryTitle: qbItem.progressBar }\">\n        <h3 class=\"nxt-subTitle\" >{{ qbItem.summaryText }}</h3>\n        <div *ngIf=\"abItem.status != 'Completed'\" class=\"nxt-subTitle1\" >{{ qbItem.summarySubText}}</div>\n      </div>\n    </div>\n    <div *ngIf=\"!qbItem.progressBar\">\n      <h3 class=\"summary-h\">\n        {{ qbItem.summaryText }}\n      </h3>\n    </div>\n  </div>\n  <div [ngClass]=\"{ 'full-summary': qbItem.progressBar }\">\n    <div class=\"summary-groupText myt-font2\">\n      <!-- <p>Informe de daño</p> -->\n    </div>\n    <div *ngFor=\"let qa of summary\" >\n        <div [ngClass]=\"{ non:  qbItem.progressBar }\">\n          <div class=\"summary\">\n            <!-- <div *ngIf=\"!qbItem.edit\"\n              [ngClass]=\"{ 'question sum-ques myt-font3 myt-font8': this.abItem.status != 'Completed' }\">\n              <a [ngClass]=\"{ asum: this.abItem.status === 'Completed' }\" (click)=\"handleEditClick(qa.quesId)\"\n                [innerHTML]=\"getText(qa.quesValue)\">{{ qa.quesValue }}</a>\n            </div>\n            <div *ngIf=\"qbItem.edit\"\n              [ngClass]=\"{ 'sum-ques question myt-font3 myt-font8': this.abItem.status != 'Completed' }\">\n              <div [ngClass]=\"{ 'sum-ques1 question1 summary-completed myt-font3 myt-font8': this.abItem.status === 'Completed' }\"\n                [innerHTML]=\"getText(qa.quesValue)\">\n                {{ qa.quesValue }}\n              </div>\n            </div> -->\n            <div *ngIf=\"qbItem.edit && this.abItem.status != 'Completed'\" style=\"background: #dedddd;\">\n              <button class=\"nxt-edit\" (click)=\"handleEditClick(qa.quesId)\">\n                <img *ngIf=\"deviceInfo.os === 'iOS'\" src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-edit%402x.png\" style=\"width:50%!important;\" class=\"nxt-icon-editios\"/>\n                <img *ngIf=\"deviceInfo.os !== 'iOS'\" src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-edit%402x.png\" class=\"nxt-icon-edit\" />\n              </button>\n            </div>\n           \n            <div class=\"nxt-answer\">\n              <div *ngIf=\"qa.qTyp === 'File'\">\n                <img src=\"https://rnxt.s3.amazonaws.com/MytIcon/icon-doc-img%401.png\" class=\"nxt-icon-edit-summary\" />\n                {{ qa.ansValue }}\n              </div>\n              <div *ngIf=\"qa.qTyp != 'File'\">\n                {{ qa.ansValue }}\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <!-- <div class=\"flexer1\" *ngIf=\"abItem\">\n    <div class=\"\" *ngIf=\"abItem.status == 'Completed' && qbItem.cancel\">\n      <div class=\"col-md-12\">\n        <button [ngClass]=\"{'btn-text': qbItem.progressBar,\n                            'nxt-btn btn-primary btn-lg btn-block btn-back-color': !qbItem.progressBar}\"\n          (click)=\"handleCancelClick()\">\n          {{ qbItem.cancel }}\n        </button>\n      </div>\n    </div>\n  </div> -->\n\n  <!-- Group Actions -->\n  <div class=\"align-edit-submit\" *ngIf=\"abItem.status != 'Completed'\">\n    <!-- HA 02FEB24 Hiding the button when there is no value from the backend -->\n    <div class=\"col-md-6\" *ngIf=\"qbItem.submit\">\n      <button [ngClass]=\"{ 'btn-text2': qbItem.progressBar,\n                            'nxt-btn btn-primary btn-lg btn-block btn-back-color': !qbItem.progressBar }\" \n        (click)=\"handleSubmitClick()\">\n        {{ qbItem.submit }}\n      </button>\n    </div>\n    <!-- HA 02FEB24 Hiding the button when there is no value from the backend -->\n    <!-- <div class=\"col-md-6\" *ngIf=\"qbItem.edit\">\n      <button [ngClass]=\"{'grey': qbItem.progressBar,\n                            'nxt-btn btn-primary btn-lg btn-block btn-back-color': !qbItem.progressBar}\" \n              (click)=\"handleBackClickNew()\">\n        {{ qbItem.edit }}\n      </button>\n    </div> -->\n  </div>\n\n</div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\nimport { Question } from '../../wrapper';\nimport { DataService } from '../../services/data.service';\nimport { APIMeta } from '../../interfaces/apimeta';\nimport { Subscription } from 'rxjs';\nimport { ChangeService } from '../../services/change.service';\n\ndeclare var $: any;\n\n@Component({\n  selector: 'app-custom-table',\n  templateUrl: './custom-table.component.html',\n  styleUrls: ['./custom-table.component.css']\n})\n\nexport class CustomTableComponent implements OnInit {\n  @Input() question: Question\n  @Input() apiMeta: string;\n  @Output() valueChange: EventEmitter<any> = new EventEmitter<any>();\n  tableHeader = [];\n  tableData = [];\n  filteredData = []; // New property for filtered data\n  //RS 03FEB2025\n  // Default UI configurations to control row addition, pagination, actions column visibility, search functionality, and the number of items per page.\n  showAddRow: boolean = true;\n  showPagination: boolean = true;\n  showActions: boolean = true;\n  showSearch: boolean = true;\n  itemsPerPage: number = 5;\n  addRowColSpan: number;\n  tableSize: number; // HA 28DEC23 table size declaration\n  objName: any;\n  filterLogic: any;\n  fieldMeta: string;\n  firStr: string;\n  searchBox: boolean = false;\n  public options: string[];\n  isDisabled: boolean = true;\n  subscription: Subscription;\n\n\n  //RS 03FEB2025\n  // New properties for search and pagination\n  searchTerm: string = '';\n  currentPage: number = 1;\n  totalItems: number = 0;\n  pages: number[] = [];\n  Math = Math;\n  constructor(private changeService: ChangeService, public i18nService: I18nService, private dataService: DataService) { }\n  ngOnInit(): void {\n    // SKS20MAR25 check if question fieldsmeta is string\n      const parsedMeta =  typeof this.question['fieldsMeta'] === 'object'  ?  this.question['fieldsMeta'] || [] : JSON.parse( this.question['fieldsMeta']) ;\n      if (!parsedMeta || !Array.isArray(parsedMeta) || parsedMeta.length === 0) {\n        console.warn('No valid metadata provided');\n        return;\n      }\n\n      //RS 03FEB2025\n      // Extracts table configuration settings dynamically from metadata and applies them, ensuring flexibility in UI customization\n      if (parsedMeta[0]?.tableConfig) {\n        const config = parsedMeta[0].tableConfig;\n        this.showAddRow = config.showAddRow !== false;\n        this.showPagination = config.showPagination !== false;\n        this.showActions = config.showActions !== false;\n        this.showSearch = config.showSearch !== false;\n        this.itemsPerPage = config.itemsPerPage || 5;\n\n        // Remove the config object from headers\n        this.tableHeader = parsedMeta.slice(1);\n      } else {\n        // If no config object found, use all objects as headers\n        this.tableHeader = parsedMeta;\n      }\n\n      this.tableSize = 10 / this.tableHeader.length;\n      // 12JUN24 - default table value\n      if (this.question?.input) {\n        this.tableData = this.question?.input;\n        this.filteredData = [...this.tableData];\n        this.updatePagination();\n      }\n      if (this.apiMeta !== undefined) {\n        this.options = [];\n        // let apiObj: APIMeta = JSON.parse(this.apiMeta);\n            // MSM-27MAR25 Ensure ques.subText is always an object by parsing it if it's a string\n        let apiObj: APIMeta = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);\n\n        if (apiObj && apiObj.endpoint) {\n          this.dataService.apiResponse(apiObj.endpoint)?.subscribe((apiResponse) => {\n            let responses;\n            if (apiObj.variable) {\n              // VD 22May24 - handling multiple child objects\n              responses = this.dataService.getValue(apiResponse, apiObj.variable);\n              let results = [];\n              // HA 19JAN24 To avoid undefined error in console\n              for (let i = 0; i < responses?.length; i++) {\n                var resp = responses[i];\n                results.push(resp);\n              }\n              this.options = results;\n            } else {  // VD 19JAN24 - if response has value(which is array) only\n              responses = apiResponse;\n              this.options = responses;\n            }\n            this.options = this.options.map((obj: any) => ({ ...obj, edit: false }));\n            // Reference https://www.npmjs.com/package/@ng-select/ng-select\n            this.tableData = this.options;\n            console.log('tableData', this.tableData);\n\n          });\n        }\n\n        // VD NOV23 - handle the dependent update for dropdown\n        let sourceId = apiObj?.sourceQuestionId;\n        let field = apiObj?.field;        // VD 13MAY24 - dynamic field changes\n        if (sourceId) {\n          // // VD 10May24 Subscribe for the changes\n          this.subscription = this.changeService.changeAnnounced$.subscribe(\n            (changeValue) => {\n              if (changeValue != undefined) {\n                if (changeValue.valueObj != undefined && changeValue.fromQuestionId == apiObj.sourceQuestionId) {\n                  console.log('changes happen');\n                  this.options = this.options.map((obj: any) => ({ ...obj, edit: false }));\n                  let item = changeValue.valueObj;\n                  let validItem = true;\n                  // VD 13MAY24 - bind dynamic field\n                  if (this.tableData.length > 0) {\n                    this.tableData.forEach(element => {\n                      // VD 26Jun24 - to handle multiple objects\n                      const objElementValue = this.dataService.getValue(element, field);\n                      const objItemValue = this.dataService.getValue(item, field)\n                      if (objElementValue == objItemValue) {\n                        validItem = false;\n                      }\n                    });\n                  }\n                  //RS 14FEB2025\n                  //Update Pagination before emit\n                  if (validItem) {\n                    if (this.tableData.length > 0) {\n                      this.tableData = [...this.tableData, item];\n                    } else {\n                      this.tableData.push(item);\n                    }\n                    // Update filteredData and pagination\n                    this.filteredData = [...this.tableData];\n                    this.updatePagination();\n                    this.emitTableDataValue(this.tableData);\n                  }\n                }\n                this.changeService.confirmChange(apiObj?.sourceQuestionId);\n              }\n            }\n          );\n        }\n      }\n      this.updatePagination();\n  }\n  //RS 03FEB2025\n  // → Filters table data based on user input and updates pagination accordingly.\n  search(): void {\n    if (!this.searchTerm.trim()) {\n      this.filteredData = [...this.tableData];\n    } else {\n      const searchTermLower = this.searchTerm.toLowerCase();\n      this.filteredData = this.tableData.filter(item => {\n        return this.tableHeader.some(header => {\n          const value = this.dataService.getValue(item, header.apiName);\n          return value && value.toString().toLowerCase().includes(searchTermLower);\n        });\n      });\n    }\n    this.currentPage = 1;\n    this.updatePagination();\n  }\n  //RS 03FEB2025\n  // Calculates total pages, updates the page list, and ensures the current page is within valid bounds.\n  updatePagination(): void {\n    this.totalItems = this.filteredData.length;\n    const totalPages = Math.ceil(this.totalItems / this.itemsPerPage);\n    this.pages = Array.from({ length: totalPages }, (_, i) => i + 1);\n    if (this.currentPage > totalPages) {\n      this.currentPage = totalPages || 1;\n    }\n  }\n  //RS 03FEB2025\n  //Returns a paginated subset of filteredData based on the current page and items per page\n  get paginatedData(): any[] {\n    const startIndex = (this.currentPage - 1) * this.itemsPerPage;\n    return this.filteredData.slice(startIndex, startIndex + this.itemsPerPage);\n  }\n  //RS 03FEB2025\n  //Updates currentPage when the user selects a different page\n  setPage(page: number): void {\n    if (page >= 1 && page <= this.pages.length) {\n      this.currentPage = page;\n    }\n  }\n\n  addRow(): void {\n    let newItem = {};\n    this.tableHeader.forEach(item => {\n      if (item.apiName) {\n        newItem[item.apiName] = \"\";\n      }\n    });\n    this.tableData.push(newItem);\n    this.filteredData = [...this.tableData];\n    this.updatePagination();\n\n    this.emitTableDataValue(this.tableData);\n  }\n\n  updateRadio(item: any, value: string): void {\n    item.value = value;\n    this.emitTableDataValue(this.tableData);\n  }\n  // Modified update methods to track changes\n  updateLabel(rowIndex: number, label: string, value: any): void {\n    this.tableData[rowIndex][label] = value;\n    this.emitTableDataValue(this.tableData);\n  }\n  //RS 03FEB2025\n  deleteRow(rowIndex: number) {\n    // this.tableData.splice(rowIndex, 1);\n    const actualIndex = (this.currentPage - 1) * this.itemsPerPage + rowIndex;\n    this.tableData.splice(actualIndex, 1);\n    this.filteredData = [...this.tableData];\n    this.updatePagination();\n\n    this.emitTableDataValue(this.tableData);\n  }\n\n  editRow(rowIndex: number) {\n    var a = 0;\n    this.tableData.forEach(element => {\n      if (a === rowIndex) {\n        element.edit = true;\n      }\n      a++;\n    });\n  }\n\n  updateNumber(item: any, label: string, value: string) {\n    item.value[label] = value;\n    this.emitTableDataValue(this.tableData);\n  }\n\n\n  emitTableDataValue(updatedTableData: any[]): void {\n    this.valueChange.emit(updatedTableData);\n  }\n}","<!-- RS 03FEB2025 -->\n<!-- Search Bar -->\n<!-- Search, Revert & Save in Same Line -->\n<div class=\"d-flex align-items-center justify-content-between mb-3\">\n  <!-- Search Bar -->\n  <div class=\"search-container me-auto\">\n    <div class=\"input-group\">\n      <input \n        type=\"text\" \n        class=\"form-control search-input\"\n        [(ngModel)]=\"searchTerm\"\n        (input)=\"search()\"\n        placeholder=\"Search...\"\n      >\n      <div class=\"search-icon\">\n    <!-- RS 03FEB2025 -->\n    <!-- Search icon for user input -->\n        <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n          <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n          <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n        </svg>\n      </div>\n    </div>\n  </div>\n</div>\n<!-- Table Container -->\n<div class=\"table-container\">\n  <table class=\"table table-striped table-bordered\">\n    <thead>\n        <!-- HA 28DEC23 changed table header values and changed table size logic to evenly visible -->\n    <!-- <th><input type=\"checkbox\" (change)=\"selectAll($event.target.checked)\"></th> -->\n      <tr>\n        <th *ngFor=\"let header of tableHeader\" [style.width]=\"header.width || 'auto'\">\n          {{ header.label }}\n        </th>\n        <!-- Actions column (only if showActions is true) --><!-- RS 03FEB2025 -->\n        <th *ngIf=\"showActions\" style=\"width: 140px\" class=\"actions-columns\">Actions</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr *ngFor=\"let item of paginatedData; let i = index\">\n        <td *ngFor=\"let header of tableHeader\">\n          <!-- Image with text input -->\n          <ng-container *ngIf=\"header.fldType === 'imagetext'\">\n            <div class=\"d-flex align-items-center\">\n              <img [src]=\"item.imageSrc\" [alt]=\"item.altText\" style=\"width: 35px; height: 32px; margin-right: 5px;\">\n              <input type=\"text\" \n                [(ngModel)]=\"item[header.fieldName]\" \n                (ngModelChange)=\"updateLabel(i, header.fieldName, item[header.fieldName])\" \n                class=\"she-line-input table-input\">\n            </div>\n          </ng-container>\n\n          <!-- Image only -->\n          <ng-container *ngIf=\"header.fldType === 'image'\">\n            <img [src]=\"item[header.fieldName]\" [alt]=\"item.altText\" style=\"width: 35px; height: 32px;\">\n          </ng-container>\n        <!--VD 23Aug24 handle readOnly  -->\n          <!-- Text input -->\n          <ng-container *ngIf=\"header.fldType === 'Text'\">\n            <input type=\"text\" \n              [readonly]=\"header.readOnly\" \n              [disabled]=\"!item.edit\" \n              [ngClass]=\"{'editInput': item.edit && !header.readOnly}\"\n              [ngModel]=\"'' | getValue: item : header.apiName\" \n              (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" \n              class=\"she-line-input table-input\">\n          </ng-container>\n        <!--VD 23Aug24 handle Number Type -->\n        <!-- Number input -->\n        <!-- VD 26Jun24 - pipe change to handle multiple objects-->\n          <ng-container *ngIf=\"header.fldType === 'Number'\">\n            <input type=\"number\" \n              [readonly]=\"header.readOnly\" \n              [disabled]=\"!item.edit\" \n              [ngClass]=\"{'editInput': item.edit && !header.readOnly}\"\n              [ngModel]=\"'' | getValue: item : header.apiName\" \n              (ngModelChange)=\"updateLabel(i, header.apiName,$event)\" \n              class=\"she-line-input table-input\">\n          </ng-container>\n\n          <!-- Radio input -->\n          <ng-container *ngIf=\"header.fldType === 'radio'\">\n            <input type=\"radio\" \n              [name]=\"item.name\" \n              [checked]=\"item.value == header.fieldName\"  \n              (click)=\"updateRadio(item, header.fieldName)\">\n          </ng-container>\n        </td>\n        <!-- Actions column --><!-- RS 03FEB2025 -->\n        <td *ngIf=\"showActions\" class=\"actions-column\">\n          <div class=\"d-flex justify-content-around\">\n            <button class=\"btn btn-link p-0\" (click)=\"editRow(i)\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#03A9F4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M12 20h9\" />\n                <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4Z\" />\n                <path d=\"m15 5 3 3\" />\n              </svg>\n                                         Edit\n            </button>\n            <button class=\"btn btn-link p-0\" (click)=\"deleteRow(i)\">\n              <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#F44336\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M3 6h18\" />\n                <path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\" />\n                <path d=\"m10 11 1 6\" />\n                <path d=\"m14 11-1 6\" />\n                <path d=\"M4 6l1 14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2l1-14\" />\n              </svg>\n              \n                            Delete\n            </button>\n          </div>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n\n<!-- Pagination --><!-- RS 03FEB2025 -->\n<div *ngIf=\"showPagination\" class=\"pagination-container\">\n  <div class=\"d-flex justify-content-end align-items-center\">\n    <div class=\"items-per-page\">\n      <span>Items per page:</span>\n      <select [(ngModel)]=\"itemsPerPage\" (change)=\"updatePagination()\" class=\"form-select form-select-sm\">\n        <option value=\"5\">5</option>\n        <option value=\"10\">10</option>\n        <option value=\"20\">20</option>\n        <option value=\"50\">50</option>\n      </select>\n    </div>\n    <div class=\"page-info ms-3 me-3\">\n      {{((currentPage - 1) * itemsPerPage + 1)}} - {{Math.min(currentPage * itemsPerPage, totalItems)}} of {{totalItems}}\n    </div>\n    <nav aria-label=\"Table pagination\">\n      <!-- First page --><!-- RS 03FEB2025 -->\n      <ul class=\"pagination mb-0\">\n        <li class=\"page-item\" [class.disabled]=\"currentPage === 1\">\n          <a class=\"page-link\" (click)=\"setPage(1)\">«</a>\n        </li>\n        <li class=\"page-item\" [class.disabled]=\"currentPage === 1\">\n          <a class=\"page-link\" (click)=\"setPage(currentPage - 1)\">‹</a>\n        </li>\n        <!-- Dynamic pagination --><!-- RS 03FEB2025 -->\n        <li class=\"page-item\" *ngFor=\"let page of pages\" [class.active]=\"page === currentPage\">\n          <a class=\"page-link\" (click)=\"setPage(page)\">{{page}}</a>\n        </li>\n        <li class=\"page-item\" [class.disabled]=\"currentPage === pages.length\">\n          <a class=\"page-link\" (click)=\"setPage(currentPage + 1)\">›</a>\n        </li>\n        <!-- Last page -->\n        <li class=\"page-item\" [class.disabled]=\"currentPage === pages.length\">\n          <a class=\"page-link\" (click)=\"setPage(pages.length)\">»</a>\n        </li>\n      </ul>\n    </nav>\n  </div>\n</div>\n<!-- RS 03FEB2025 -->\n<!-- Add Row Button -->\n<div *ngIf=\"showAddRow\"  (click)=\"addRow()\" class=\"addRowClass\">\n  <div class=\"circle-button\">+</div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Question } from '../wrapper';\nimport { BookletWrapper } from '../model/bookletWrapper';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class StorageService {\n  nxtBookletAnswer: BookletWrapper;\n  selectedData:any;\n\n  constructor() { }\n\n  save(qbJson: BookletWrapper) {\n    this.nxtBookletAnswer = qbJson;\n  }\n\n  update(questionWithInput: Question) {\n    // Store the Updated Questions (with Answer/Error) in a Map\n\n    // for (var eQuestion in this.nxtBookletAnswer.bookQuestionsMap) {\n    //   if(eQuestion == questionWithInput.Id) {\n    //     this.nxtBookletAnswer.bookQuestionsMap[eQuestion] = questionWithInput;\n    //   }\n    // }\n    // RS 09DEC24 Changed keys\n    for (var eQuestion in this.nxtBookletAnswer.bookQuestionsMap) {\n      if (this.nxtBookletAnswer.bookQuestionsMap.hasOwnProperty(eQuestion)) {\n        const questionsR = this.nxtBookletAnswer.bookQuestionsMap[eQuestion].subQuestions;\n        // VD 31NOV24 wrapper changes\n        for(let i=0;i<questionsR.length;i++){\n          if(questionsR[i].id == questionWithInput.id){\n            questionsR[i] = questionWithInput;\n            // console.log('assigned success');\n          }\n        }\n      }\n    }\n  }\n\n  get() {\n    // return the stored questions\n    return this.nxtBookletAnswer;\n\n  }\n}\n","import { CropperPosition, MoveStart } from '../interfaces';\nimport { CropperState } from '../component/cropper.state';\nimport { BasicEvent } from '../interfaces/basic-event.interface';\n\nexport function checkCropperPosition(cropperPosition: CropperPosition, cropperState: CropperState, maintainSize: boolean): CropperPosition {\n  cropperPosition = checkCropperSizeRestriction(cropperPosition, cropperState);\n  return checkCropperWithinMaxSizeBounds(cropperPosition, cropperState, maintainSize);\n}\n\nexport function checkCropperSizeRestriction(cropperPosition: CropperPosition, cropperState: CropperState): CropperPosition {\n  let cropperWidth = cropperPosition.x2 - cropperPosition.x1;\n  let cropperHeight = cropperPosition.y2 - cropperPosition.y1;\n  const centerX = cropperPosition.x1 + cropperWidth / 2;\n  const centerY = cropperPosition.y1 + cropperHeight / 2;\n\n  if (cropperState.options.cropperStaticHeight && cropperState.options.cropperStaticWidth) {\n    cropperWidth = cropperState.maxSize!.width > cropperState.options.cropperStaticWidth\n      ? cropperState.options.cropperStaticWidth\n      : cropperState.maxSize!.width;\n    cropperHeight = cropperState.maxSize!.height > cropperState.options.cropperStaticHeight\n      ? cropperState.options.cropperStaticHeight\n      : cropperState.maxSize!.height;\n  } else {\n    cropperWidth = Math.max(cropperState.cropperScaledMinWidth, Math.min(cropperWidth, cropperState.cropperScaledMaxWidth, cropperState.maxSize!.width));\n    cropperHeight = Math.max(cropperState.cropperScaledMinHeight, Math.min(cropperHeight, cropperState.cropperScaledMaxHeight, cropperState.maxSize!.height));\n    if (cropperState.options.maintainAspectRatio) {\n      if (cropperState.maxSize!.width / cropperState.options.aspectRatio < cropperState.maxSize!.height) {\n        cropperHeight = cropperWidth / cropperState.options.aspectRatio;\n      } else {\n        cropperWidth = cropperHeight * cropperState.options.aspectRatio;\n      }\n    }\n  }\n\n  const x1 = centerX - cropperWidth / 2;\n  const x2 = x1 + cropperWidth;\n  const y1 = centerY - cropperHeight / 2;\n  const y2 = y1 + cropperHeight;\n  return {x1, x2, y1, y2};\n}\n\nexport function checkCropperWithinMaxSizeBounds(position: CropperPosition, cropperState: CropperState, maintainSize = false): CropperPosition {\n  if (position.x1 < 0) {\n    position = {\n      ...position,\n      x1: 0,\n      x2: position.x2 - (maintainSize ? position.x1 : 0)\n    };\n  }\n  if (position.y1 < 0) {\n    position = {\n      ...position,\n      y2: position.y2 - (maintainSize ? position.y1 : 0),\n      y1: 0\n    };\n  }\n  if (position.x2 > cropperState.maxSize!.width) {\n    position = {\n      ...position,\n      x1: position.x1 - (maintainSize ? (position.x2 - cropperState.maxSize!.width) : 0),\n      x2: cropperState.maxSize!.width\n    };\n  }\n  if (position.y2 > cropperState.maxSize!.height) {\n    position = {\n      ...position,\n      y1: position.y1 - (maintainSize ? (position.y2 - cropperState.maxSize!.height) : 0),\n      y2: cropperState.maxSize!.height\n    };\n  }\n  return position;\n}\n\nexport function moveCropper(event: Event | BasicEvent, moveStart: MoveStart): CropperPosition {\n  const diffX = getClientX(event) - moveStart.clientX;\n  const diffY = getClientY(event) - moveStart.clientY;\n\n  return {\n    x1: moveStart.cropper.x1 + diffX,\n    y1: moveStart.cropper.y1 + diffY,\n    x2: moveStart.cropper.x2 + diffX,\n    y2: moveStart.cropper.y2 + diffY\n  };\n}\n\nexport function resizeCropper(event: Event | BasicEvent, moveStart: MoveStart, cropperState: CropperState): CropperPosition {\n  const cropperPosition = {...cropperState.cropper};\n  const moveX = getClientX(event) - moveStart.clientX;\n  const moveY = getClientY(event) - moveStart.clientY;\n  switch (moveStart.position) {\n    case 'left':\n      cropperPosition.x1 = Math.min(Math.max(moveStart.cropper.x1 + moveX, cropperPosition.x2 - cropperState.cropperScaledMaxWidth),\n        cropperPosition.x2 - cropperState.cropperScaledMinWidth);\n      break;\n    case 'topleft':\n      cropperPosition.x1 = Math.min(Math.max(moveStart.cropper.x1 + moveX, cropperPosition.x2 - cropperState.cropperScaledMaxWidth),\n        cropperPosition.x2 - cropperState.cropperScaledMinWidth);\n      cropperPosition.y1 = Math.min(Math.max(moveStart.cropper.y1 + moveY, cropperPosition.y2 - cropperState.cropperScaledMaxHeight),\n        cropperPosition.y2 - cropperState.cropperScaledMinHeight);\n      break;\n    case 'top':\n      cropperPosition.y1 = Math.min(Math.max(moveStart.cropper.y1 + moveY, cropperPosition.y2 - cropperState.cropperScaledMaxHeight),\n        cropperPosition.y2 - cropperState.cropperScaledMinHeight);\n      break;\n    case 'topright':\n      cropperPosition.x2 = Math.max(Math.min(moveStart.cropper.x2 + moveX, cropperPosition.x1 + cropperState.cropperScaledMaxWidth),\n        cropperPosition.x1 + cropperState.cropperScaledMinWidth);\n      cropperPosition.y1 = Math.min(Math.max(moveStart.cropper.y1 + moveY, cropperPosition.y2 - cropperState.cropperScaledMaxHeight),\n        cropperPosition.y2 - cropperState.cropperScaledMinHeight);\n      break;\n    case 'right':\n      cropperPosition.x2 = Math.max(Math.min(moveStart.cropper.x2 + moveX, cropperPosition.x1 + cropperState.cropperScaledMaxWidth),\n        cropperPosition.x1 + cropperState.cropperScaledMinWidth);\n      break;\n    case 'bottomright':\n      cropperPosition.x2 = Math.max(Math.min(moveStart.cropper.x2 + moveX, cropperPosition.x1 + cropperState.cropperScaledMaxWidth),\n        cropperPosition.x1 + cropperState.cropperScaledMinWidth);\n      cropperPosition.y2 = Math.max(Math.min(moveStart.cropper.y2 + moveY, cropperPosition.y1 + cropperState.cropperScaledMaxHeight),\n        cropperPosition.y1 + cropperState.cropperScaledMinHeight);\n      break;\n    case 'bottom':\n      cropperPosition.y2 = Math.max(Math.min(moveStart.cropper.y2 + moveY, cropperPosition.y1 + cropperState.cropperScaledMaxHeight),\n        cropperPosition.y1 + cropperState.cropperScaledMinHeight);\n      break;\n    case 'bottomleft':\n      cropperPosition.x1 = Math.min(Math.max(moveStart.cropper.x1 + moveX, cropperPosition.x2 - cropperState.cropperScaledMaxWidth),\n        cropperPosition.x2 - cropperState.cropperScaledMinWidth);\n      cropperPosition.y2 = Math.max(Math.min(moveStart.cropper.y2 + moveY, cropperPosition.y1 + cropperState.cropperScaledMaxHeight),\n        cropperPosition.y1 + cropperState.cropperScaledMinHeight);\n      break;\n    case 'center':\n      const scale = 'scale' in event ? event.scale as number : 1;\n      const newWidth = Math.min(\n        Math.max(cropperState.cropperScaledMinWidth, (Math.abs(moveStart.cropper.x2 - moveStart.cropper.x1)) * scale),\n        cropperState.cropperScaledMaxWidth);\n      const newHeight = Math.min(\n        Math.max(cropperState.cropperScaledMinHeight, (Math.abs(moveStart.cropper.y2 - moveStart.cropper.y1)) * scale),\n        cropperState.cropperScaledMaxHeight);\n      cropperPosition.x1 = moveStart.clientX - newWidth / 2;\n      cropperPosition.x2 = moveStart.clientX + newWidth / 2;\n      cropperPosition.y1 = moveStart.clientY - newHeight / 2;\n      cropperPosition.y2 = moveStart.clientY + newHeight / 2;\n      if (cropperPosition.x1 < 0) {\n        cropperPosition.x2 -= cropperPosition.x1;\n        cropperPosition.x1 = 0;\n      } else if (cropperPosition.x2 > cropperState.maxSize!.width) {\n        cropperPosition.x1 -= (cropperPosition.x2 - cropperState.maxSize!.width);\n        cropperPosition.x2 = cropperState.maxSize!.width;\n      }\n      if (cropperPosition.y1 < 0) {\n        cropperPosition.y2 -= cropperPosition.y1;\n        cropperPosition.y1 = 0;\n      } else if (cropperPosition.y2 > cropperState.maxSize!.height) {\n        cropperPosition.y1 -= (cropperPosition.y2 - cropperState.maxSize!.height);\n        cropperPosition.y2 = cropperState.maxSize!.height;\n      }\n      break;\n  }\n\n  if (cropperState.options.maintainAspectRatio) {\n    return checkAspectRatio(moveStart.position!, cropperPosition, cropperState);\n  } else {\n    return cropperPosition;\n  }\n}\n\nexport function checkAspectRatio(position: string, cropperPosition: CropperPosition, cropperState: CropperState): CropperPosition {\n  cropperPosition = {...cropperPosition};\n  let overflowX = 0;\n  let overflowY = 0;\n  switch (position) {\n    case 'top':\n      cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * cropperState.options.aspectRatio;\n      overflowX = Math.max(cropperPosition.x2 - cropperState.maxSize!.width, 0);\n      overflowY = Math.max(0 - cropperPosition.y1, 0);\n      if (overflowX > 0 || overflowY > 0) {\n        cropperPosition.x2 -= (overflowY * cropperState.options.aspectRatio) > overflowX ? (overflowY * cropperState.options.aspectRatio) : overflowX;\n        cropperPosition.y1 += (overflowY * cropperState.options.aspectRatio) > overflowX ? overflowY : overflowX / cropperState.options.aspectRatio;\n      }\n      break;\n    case 'bottom':\n      cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * cropperState.options.aspectRatio;\n      overflowX = Math.max(cropperPosition.x2 - cropperState.maxSize!.width, 0);\n      overflowY = Math.max(cropperPosition.y2 - cropperState.maxSize!.height, 0);\n      if (overflowX > 0 || overflowY > 0) {\n        cropperPosition.x2 -= (overflowY * cropperState.options.aspectRatio) > overflowX ? (overflowY * cropperState.options.aspectRatio) : overflowX;\n        cropperPosition.y2 -= (overflowY * cropperState.options.aspectRatio) > overflowX ? overflowY : (overflowX / cropperState.options.aspectRatio);\n      }\n      break;\n    case 'topleft':\n      cropperPosition.y1 = cropperPosition.y2 - (cropperPosition.x2 - cropperPosition.x1) / cropperState.options.aspectRatio;\n      overflowX = Math.max(0 - cropperPosition.x1, 0);\n      overflowY = Math.max(0 - cropperPosition.y1, 0);\n      if (overflowX > 0 || overflowY > 0) {\n        cropperPosition.x1 += (overflowY * cropperState.options.aspectRatio) > overflowX ? (overflowY * cropperState.options.aspectRatio) : overflowX;\n        cropperPosition.y1 += (overflowY * cropperState.options.aspectRatio) > overflowX ? overflowY : overflowX / cropperState.options.aspectRatio;\n      }\n      break;\n    case 'topright':\n      cropperPosition.y1 = cropperPosition.y2 - (cropperPosition.x2 - cropperPosition.x1) / cropperState.options.aspectRatio;\n      overflowX = Math.max(cropperPosition.x2 - cropperState.maxSize!.width, 0);\n      overflowY = Math.max(0 - cropperPosition.y1, 0);\n      if (overflowX > 0 || overflowY > 0) {\n        cropperPosition.x2 -= (overflowY * cropperState.options.aspectRatio) > overflowX ? (overflowY * cropperState.options.aspectRatio) : overflowX;\n        cropperPosition.y1 += (overflowY * cropperState.options.aspectRatio) > overflowX ? overflowY : overflowX / cropperState.options.aspectRatio;\n      }\n      break;\n    case 'right':\n    case 'bottomright':\n      cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / cropperState.options.aspectRatio;\n      overflowX = Math.max(cropperPosition.x2 - cropperState.maxSize!.width, 0);\n      overflowY = Math.max(cropperPosition.y2 - cropperState.maxSize!.height, 0);\n      if (overflowX > 0 || overflowY > 0) {\n        cropperPosition.x2 -= (overflowY * cropperState.options.aspectRatio) > overflowX ? (overflowY * cropperState.options.aspectRatio) : overflowX;\n        cropperPosition.y2 -= (overflowY * cropperState.options.aspectRatio) > overflowX ? overflowY : overflowX / cropperState.options.aspectRatio;\n      }\n      break;\n    case 'left':\n    case 'bottomleft':\n      cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / cropperState.options.aspectRatio;\n      overflowX = Math.max(0 - cropperPosition.x1, 0);\n      overflowY = Math.max(cropperPosition.y2 - cropperState.maxSize!.height, 0);\n      if (overflowX > 0 || overflowY > 0) {\n        cropperPosition.x1 += (overflowY * cropperState.options.aspectRatio) > overflowX ? (overflowY * cropperState.options.aspectRatio) : overflowX;\n        cropperPosition.y2 -= (overflowY * cropperState.options.aspectRatio) > overflowX ? overflowY : overflowX / cropperState.options.aspectRatio;\n      }\n      break;\n    case 'center':\n      cropperPosition.x2 = cropperPosition.x1 + (cropperPosition.y2 - cropperPosition.y1) * cropperState.options.aspectRatio;\n      cropperPosition.y2 = cropperPosition.y1 + (cropperPosition.x2 - cropperPosition.x1) / cropperState.options.aspectRatio;\n      const overflowX1 = Math.max(0 - cropperPosition.x1, 0);\n      const overflowX2 = Math.max(cropperPosition.x2 - cropperState.maxSize!.width, 0);\n      const overflowY1 = Math.max(cropperPosition.y2 - cropperState.maxSize!.height, 0);\n      const overflowY2 = Math.max(0 - cropperPosition.y1, 0);\n      if (overflowX1 > 0 || overflowX2 > 0 || overflowY1 > 0 || overflowY2 > 0) {\n        cropperPosition.x1 += (overflowY1 * cropperState.options.aspectRatio) > overflowX1 ? (overflowY1 * cropperState.options.aspectRatio) : overflowX1;\n        cropperPosition.x2 -= (overflowY2 * cropperState.options.aspectRatio) > overflowX2 ? (overflowY2 * cropperState.options.aspectRatio) : overflowX2;\n        cropperPosition.y1 += (overflowY2 * cropperState.options.aspectRatio) > overflowX2 ? overflowY2 : overflowX2 / cropperState.options.aspectRatio;\n        cropperPosition.y2 -= (overflowY1 * cropperState.options.aspectRatio) > overflowX1 ? overflowY1 : overflowX1 / cropperState.options.aspectRatio;\n      }\n      break;\n  }\n  return cropperPosition;\n}\n\nexport function getClientX(event: Event | BasicEvent | TouchEvent): number {\n  if ('touches' in event && event.touches[0]) {\n    return event.touches[0].clientX;\n  } else if ('clientX' in event) {\n    return event.clientX;\n  }\n\n  return 0;\n}\n\nexport function getClientY(event: Event | BasicEvent | TouchEvent): number {\n  if ('touches' in event && event.touches[0]) {\n    return event.touches[0].clientY;\n  } else if ('clientX' in event) {\n    return event.clientY;\n  }\n\n  return 0;\n}\n","import { CropperOptions } from '../interfaces/cropper-options.interface';\nimport {\n  CropperPosition,\n  Dimensions,\n  ImageTransform,\n  LoadedImage,\n} from '../interfaces';\nimport { SimpleChanges } from '@angular/core';\nimport { checkCropperPosition } from '../utils/cropper-position.utils';\n\nexport class CropperState {\n  options: CropperOptions = {\n    format: 'png',\n    output: 'blob',\n    autoCrop: true,\n    maintainAspectRatio: true,\n    aspectRatio: 1,\n    resetCropOnAspectRatioChange: true,\n    resizeToWidth: 0,\n    resizeToHeight: 0,\n    cropperMinWidth: 0,\n    cropperMinHeight: 0,\n    cropperMaxHeight: 0,\n    cropperMaxWidth: 0,\n    cropperStaticWidth: 0,\n    cropperStaticHeight: 0,\n    canvasRotation: 0,\n    roundCropper: false,\n    onlyScaleDown: false,\n    imageQuality: 92,\n    backgroundColor: null,\n    containWithinAspectRatio: false,\n    hideResizeSquares: false,\n    alignImage: 'center',\n    cropperFrameAriaLabel: undefined,\n    checkImageType: true,\n  };\n\n  loadedImage?: LoadedImage;\n  maxSize?: Dimensions;\n  cropper: CropperPosition = { x1: 0, x2: 0, y1: 0, y2: 0 };\n  transform: ImageTransform = {};\n\n  // Internal\n  cropperScaledMinWidth = 20;\n  cropperScaledMinHeight = 20;\n  cropperScaledMaxWidth = 20;\n  cropperScaledMaxHeight = 20;\n  stepSize = 3;\n\n  setOptionsFromChanges(changes: SimpleChanges): void {\n    if (changes['options']?.currentValue) {\n      this.setOptions(changes['options'].currentValue);\n    }\n    const options = Object.entries(changes)\n      .filter(([key]) => key in this.options)\n      .reduce(\n        (acc, [key, change]) => ({\n          ...acc,\n          [key]: change.currentValue,\n        }),\n        {} as Partial<CropperOptions>\n      );\n    if (Object.keys(options).length > 0) {\n      this.setOptions(options);\n    }\n  }\n\n  setOptions(options: Partial<CropperOptions>): void {\n    this.options = {\n      ...this.options,\n      ...(options || {}),\n    };\n    this.validateOptions();\n\n    if (!this.loadedImage?.transformed.image.complete || !this.maxSize) {\n      return;\n    }\n\n    let positionPossiblyChanged = false;\n    if (\n      (this.options.maintainAspectRatio && options['aspectRatio']) ||\n      options['maintainAspectRatio']\n    ) {\n      this.setCropperScaledMinSize();\n      this.setCropperScaledMaxSize();\n      if (\n        this.options.maintainAspectRatio &&\n        (this.options.resetCropOnAspectRatioChange ||\n          !this.aspectRatioIsCorrect())\n      ) {\n        this.cropper = this.maxSizeCropperPosition();\n        positionPossiblyChanged = true;\n      }\n    } else {\n      if (options['cropperMinWidth'] || options['cropperMinHeight']) {\n        this.setCropperScaledMinSize();\n        positionPossiblyChanged = true;\n      }\n      if (options['cropperMaxWidth'] || options['cropperMaxHeight']) {\n        this.setCropperScaledMaxSize();\n        positionPossiblyChanged = true;\n      }\n      if (options['cropperStaticWidth'] || options['cropperStaticHeight']) {\n        positionPossiblyChanged = true;\n      }\n    }\n\n    if (positionPossiblyChanged) {\n      this.cropper = checkCropperPosition(this.cropper, this, false);\n    }\n  }\n\n  private validateOptions(): void {\n    if (this.options.maintainAspectRatio && !this.options.aspectRatio) {\n      throw new Error(\n        '`aspectRatio` should > 0 when `maintainAspectRatio` is enabled'\n      );\n    }\n  }\n\n  setMaxSize(width: number, height: number): void {\n    this.maxSize = { width, height };\n    this.setCropperScaledMinSize();\n    this.setCropperScaledMaxSize();\n  }\n\n  setCropperScaledMinSize(): void {\n    if (this.loadedImage?.transformed.size) {\n      this.setCropperScaledMinWidth();\n      this.setCropperScaledMinHeight();\n    } else {\n      this.cropperScaledMinWidth = 20;\n      this.cropperScaledMinHeight = 20;\n    }\n  }\n\n  setCropperScaledMinWidth(): void {\n    this.cropperScaledMinWidth =\n      this.options.cropperMinWidth > 0\n        ? Math.max(\n            20,\n            (this.options.cropperMinWidth /\n              this.loadedImage!.transformed.size.width) *\n              this.maxSize!.width\n          )\n        : 20;\n  }\n\n  setCropperScaledMinHeight(): void {\n    if (this.options.maintainAspectRatio) {\n      this.cropperScaledMinHeight = Math.max(\n        20,\n        this.cropperScaledMinWidth / this.options.aspectRatio\n      );\n    } else if (this.options.cropperMinHeight > 0) {\n      this.cropperScaledMinHeight = Math.max(\n        20,\n        (this.options.cropperMinHeight /\n          this.loadedImage!.transformed.size.height) *\n          this.maxSize!.height\n      );\n    } else {\n      this.cropperScaledMinHeight = 20;\n    }\n  }\n\n  setCropperScaledMaxSize(): void {\n    if (this.loadedImage?.transformed.size) {\n      const ratio =\n        this.loadedImage.transformed.size.width / this.maxSize!.width;\n      this.cropperScaledMaxWidth =\n        this.options.cropperMaxWidth > 20\n          ? this.options.cropperMaxWidth / ratio\n          : this.maxSize!.width;\n      this.cropperScaledMaxHeight =\n        this.options.cropperMaxHeight > 20\n          ? this.options.cropperMaxHeight / ratio\n          : this.maxSize!.height;\n      if (this.options.maintainAspectRatio) {\n        if (\n          this.cropperScaledMaxWidth >\n          this.cropperScaledMaxHeight * this.options.aspectRatio\n        ) {\n          this.cropperScaledMaxWidth =\n            this.cropperScaledMaxHeight * this.options.aspectRatio;\n        } else if (\n          this.cropperScaledMaxWidth <\n          this.cropperScaledMaxHeight * this.options.aspectRatio\n        ) {\n          this.cropperScaledMaxHeight =\n            this.cropperScaledMaxWidth / this.options.aspectRatio;\n        }\n      }\n    } else {\n      this.cropperScaledMaxWidth = this.maxSize!.width;\n      this.cropperScaledMaxHeight = this.maxSize!.height;\n    }\n  }\n\n  equalsCropperPosition(cropper?: CropperPosition): boolean {\n    return (\n      (this.cropper == null && cropper == null) ||\n      (this.cropper != null &&\n        cropper != null &&\n        this.cropper.x1.toFixed(3) === cropper.x1.toFixed(3) &&\n        this.cropper.y1.toFixed(3) === cropper.y1.toFixed(3) &&\n        this.cropper.x2.toFixed(3) === cropper.x2.toFixed(3) &&\n        this.cropper.y2.toFixed(3) === cropper.y2.toFixed(3))\n    );\n  }\n\n  equalsTransformTranslate(transform: ImageTransform): boolean {\n    return (\n      (this.transform.translateH ?? 0) === (transform.translateH ?? 0) &&\n      (this.transform.translateV ?? 0) === (transform.translateV ?? 0)\n    );\n  }\n\n  equalsTransform(transform: ImageTransform): boolean {\n    return (\n      this.equalsTransformTranslate(transform) &&\n      (this.transform.scale ?? 1) === (transform.scale ?? 1) &&\n      (this.transform.rotate ?? 0) === (transform.rotate ?? 0) &&\n      (this.transform.flipH ?? false) === (transform.flipH ?? false) &&\n      (this.transform.flipV ?? false) === (transform.flipV ?? false)\n    );\n  }\n\n  aspectRatioIsCorrect(): boolean {\n    const currentCropAspectRatio =\n      (this.cropper.x2 - this.cropper.x1) / (this.cropper.y2 - this.cropper.y1);\n    return currentCropAspectRatio === this.options.aspectRatio;\n  }\n\n  resizeCropperPosition(oldMaxSize: Dimensions): void {\n    if (!this.cropper) {\n      return;\n    }\n    if (\n      oldMaxSize.width !== this.maxSize!.width ||\n      oldMaxSize.height !== this.maxSize!.height\n    ) {\n      this.cropper = {\n        x1: (this.cropper.x1 * this.maxSize!.width) / oldMaxSize.width,\n        x2: (this.cropper.x2 * this.maxSize!.width) / oldMaxSize.width,\n        y1: (this.cropper.y1 * this.maxSize!.height) / oldMaxSize.height,\n        y2: (this.cropper.y2 * this.maxSize!.height) / oldMaxSize.height,\n      };\n    }\n  }\n\n  maxSizeCropperPosition(): CropperPosition {\n    return {\n      x1: 0,\n      y1: 0,\n      x2: this.maxSize!.width,\n      y2: this.maxSize!.height,\n    };\n  }\n}\n","import { CropperPosition, ImageTransform } from './';\n\nexport type Position = 'left' | 'topleft' | 'top' | 'topright' | 'right' | 'bottomright' | 'bottom' | 'bottomleft' | 'center';\n\nexport interface MoveStart {\n  active: boolean;\n  type: MoveTypes | null;\n  position: Position | null;\n  transform?: ImageTransform;\n  cropper: CropperPosition;\n  clientX: number;\n  clientY: number;\n}\n\nexport enum MoveTypes {\n  Drag = 'drag',\n  Move = 'move',\n  Resize = 'resize',\n  Pinch = 'pinch'\n}\n","/*\n * Hermite resize - fast image resize/resample using Hermite filter.\n * https://github.com/viliusle/Hermite-resize\n */\n\nexport function resizeCanvas(canvas: HTMLCanvasElement, width: number, height: number) {\n  const width_source = canvas.width;\n  const height_source = canvas.height;\n  width = Math.round(width);\n  height = Math.round(height);\n\n  const ratio_w = width_source / width;\n  const ratio_h = height_source / height;\n  const ratio_w_half = Math.ceil(ratio_w / 2);\n  const ratio_h_half = Math.ceil(ratio_h / 2);\n\n  const ctx = canvas.getContext('2d');\n  if (ctx) {\n    const img = ctx.getImageData(0, 0, width_source, height_source);\n    const img2 = ctx.createImageData(width, height);\n    const data = img.data;\n    const data2 = img2.data;\n\n    for (let j = 0; j < height; j++) {\n      for (let i = 0; i < width; i++) {\n        const x2 = (i + j * width) * 4;\n        const center_y = j * ratio_h;\n        let weight = 0;\n        let weights = 0;\n        let weights_alpha = 0;\n        let gx_r = 0;\n        let gx_g = 0;\n        let gx_b = 0;\n        let gx_a = 0;\n\n        const xx_start = Math.floor(i * ratio_w);\n        const yy_start = Math.floor(j * ratio_h);\n        let xx_stop = Math.ceil((i + 1) * ratio_w);\n        let yy_stop = Math.ceil((j + 1) * ratio_h);\n        xx_stop = Math.min(xx_stop, width_source);\n        yy_stop = Math.min(yy_stop, height_source);\n\n        for (let yy = yy_start; yy < yy_stop; yy++) {\n          const dy = Math.abs(center_y - yy) / ratio_h_half;\n          const center_x = i * ratio_w;\n          const w0 = dy * dy; //pre-calc part of w\n          for (let xx = xx_start; xx < xx_stop; xx++) {\n            const dx = Math.abs(center_x - xx) / ratio_w_half;\n            const w = Math.sqrt(w0 + dx * dx);\n            if (w >= 1) {\n              //pixel too far\n              continue;\n            }\n            //hermite filter\n            weight = 2 * w * w * w - 3 * w * w + 1;\n            const pos_x = 4 * (xx + yy * width_source);\n            //alpha\n            gx_a += weight * data[pos_x + 3];\n            weights_alpha += weight;\n            //colors\n            if (data[pos_x + 3] < 255)\n              weight = weight * data[pos_x + 3] / 250;\n            gx_r += weight * data[pos_x];\n            gx_g += weight * data[pos_x + 1];\n            gx_b += weight * data[pos_x + 2];\n            weights += weight;\n          }\n        }\n        data2[x2] = gx_r / weights;\n        data2[x2 + 1] = gx_g / weights;\n        data2[x2 + 2] = gx_b / weights;\n        data2[x2 + 3] = gx_a / weights_alpha;\n      }\n    }\n\n\n    canvas.width = width;\n    canvas.height = height;\n\n    //draw\n    ctx.putImageData(img2, 0, 0);\n  }\n}\n","export function percentage(percent: number, totalValue: number) {\n  return (percent / 100) * totalValue;\n} ","import { CropperOptions, CropperPosition, ImageCroppedEvent } from '../interfaces';\nimport { CropperState } from '../component/cropper.state';\nimport { resizeCanvas } from '../utils/resize.utils';\nimport { percentage } from '../utils/percentage.utils';\nimport { OutputType } from '../interfaces/cropper-options.interface';\n\nexport class CropService {\n\n  crop(cropperState: CropperState, output: 'blob'): Promise<ImageCroppedEvent> | null;\n  crop(cropperState: CropperState, output: 'base64'): ImageCroppedEvent | null;\n  crop(cropperState: CropperState, output: OutputType): Promise<ImageCroppedEvent> | ImageCroppedEvent | null {\n    const imagePosition = this.getImagePosition(cropperState);\n    const width = imagePosition.x2 - imagePosition.x1;\n    const height = imagePosition.y2 - imagePosition.y1;\n    const cropCanvas = document.createElement('canvas') as HTMLCanvasElement;\n    cropCanvas.width = width;\n    cropCanvas.height = height;\n\n    const ctx = cropCanvas.getContext('2d');\n    if (!ctx) {\n      return null;\n    }\n    if (cropperState.options.backgroundColor != null) {\n      ctx.fillStyle = cropperState.options.backgroundColor;\n      ctx.fillRect(0, 0, width, height);\n    }\n\n    const scaleX = (cropperState.transform.scale || 1) * (cropperState.transform.flipH ? -1 : 1);\n    const scaleY = (cropperState.transform.scale || 1) * (cropperState.transform.flipV ? -1 : 1);\n    const {translateH, translateV} = this.getCanvasTranslate(cropperState);\n\n    const transformedImage = cropperState.loadedImage!.transformed;\n    ctx.setTransform(scaleX, 0, 0, scaleY, transformedImage.size.width / 2 + translateH, transformedImage.size.height / 2 + translateV);\n    ctx.translate(-imagePosition.x1 / scaleX, -imagePosition.y1 / scaleY);\n    ctx.rotate((cropperState.transform.rotate || 0) * Math.PI / 180);\n\n    ctx.drawImage(\n      transformedImage.image,\n      -transformedImage.size.width / 2,\n      -transformedImage.size.height / 2\n    );\n\n    const result: ImageCroppedEvent = {\n      width, height,\n      imagePosition,\n      cropperPosition: {...cropperState.cropper}\n    };\n    if (cropperState.options.containWithinAspectRatio) {\n      result.offsetImagePosition = this.getOffsetImagePosition(cropperState);\n    }\n    const resizeRatio = this.getResizeRatio(width, height, cropperState.options);\n    if (resizeRatio !== 1) {\n      result.width = Math.round(width * resizeRatio);\n      result.height = cropperState.options.maintainAspectRatio\n        ? Math.round(result.width / cropperState.options.aspectRatio)\n        : Math.round(height * resizeRatio);\n      resizeCanvas(cropCanvas, result.width, result.height);\n    }\n    if (output === 'blob') {\n      return this.cropToBlob(result, cropCanvas, cropperState);\n    } else {\n      result.base64 = cropCanvas.toDataURL('image/' + cropperState.options.format, this.getQuality(cropperState.options));\n      return result;\n    }\n  }\n\n  private async cropToBlob(output: ImageCroppedEvent, cropCanvas: HTMLCanvasElement, cropperState: CropperState): Promise<ImageCroppedEvent> {\n    output.blob = await new Promise<Blob | null>(resolve => cropCanvas.toBlob(resolve, 'image/' + cropperState.options.format, this.getQuality(cropperState.options)));\n    if (output.blob) {\n      output.objectUrl = URL.createObjectURL(output.blob);\n    }\n    return output;\n  }\n\n  private getCanvasTranslate(cropperState: CropperState): { translateH: number, translateV: number } {\n    if (cropperState.transform.translateUnit === 'px') {\n      const ratio = this.getRatio(cropperState);\n      return {\n        translateH: (cropperState.transform.translateH || 0) * ratio,\n        translateV: (cropperState.transform.translateV || 0) * ratio\n      };\n    } else {\n      return {\n        translateH: cropperState.transform.translateH ? percentage(cropperState.transform.translateH, cropperState.loadedImage!.transformed.size.width) : 0,\n        translateV: cropperState.transform.translateV ? percentage(cropperState.transform.translateV, cropperState.loadedImage!.transformed.size.height) : 0\n      };\n    }\n  }\n\n  private getRatio(cropperState: CropperState): number {\n    return cropperState.loadedImage!.transformed.size.width / cropperState.maxSize!.width;\n  }\n\n  private getImagePosition(cropperState: CropperState): CropperPosition {\n    const ratio = this.getRatio(cropperState);\n    const out: CropperPosition = {\n      x1: Math.round(cropperState.cropper.x1 * ratio),\n      y1: Math.round(cropperState.cropper.y1 * ratio),\n      x2: Math.round(cropperState.cropper.x2 * ratio),\n      y2: Math.round(cropperState.cropper.y2 * ratio)\n    };\n\n    if (!cropperState.options.containWithinAspectRatio) {\n      out.x1 = Math.max(out.x1, 0);\n      out.y1 = Math.max(out.y1, 0);\n      out.x2 = Math.min(out.x2, cropperState.loadedImage!.transformed.size.width);\n      out.y2 = Math.min(out.y2, cropperState.loadedImage!.transformed.size.height);\n    }\n\n    return out;\n  }\n\n  private getOffsetImagePosition(cropperState: CropperState): CropperPosition {\n    const canvasRotation = cropperState.options.canvasRotation + cropperState.loadedImage!.exifTransform.rotate;\n    const ratio = this.getRatio(cropperState);\n    let offsetX: number;\n    let offsetY: number;\n\n    if (canvasRotation % 2) {\n      offsetX = (cropperState.loadedImage!.transformed.size.width - cropperState.loadedImage!.original.size.height) / 2;\n      offsetY = (cropperState.loadedImage!.transformed.size.height - cropperState.loadedImage!.original.size.width) / 2;\n    } else {\n      offsetX = (cropperState.loadedImage!.transformed.size.width - cropperState.loadedImage!.original.size.width) / 2;\n      offsetY = (cropperState.loadedImage!.transformed.size.height - cropperState.loadedImage!.original.size.height) / 2;\n    }\n\n    const out: CropperPosition = {\n      x1: Math.round(cropperState.cropper.x1 * ratio) - offsetX,\n      y1: Math.round(cropperState.cropper.y1 * ratio) - offsetY,\n      x2: Math.round(cropperState.cropper.x2 * ratio) - offsetX,\n      y2: Math.round(cropperState.cropper.y2 * ratio) - offsetY\n    };\n\n    if (!cropperState.options.containWithinAspectRatio) {\n      out.x1 = Math.max(out.x1, 0);\n      out.y1 = Math.max(out.y1, 0);\n      out.x2 = Math.min(out.x2, cropperState.loadedImage!.transformed.size.width);\n      out.y2 = Math.min(out.y2, cropperState.loadedImage!.transformed.size.height);\n    }\n\n    return out;\n  }\n\n  getResizeRatio(width: number, height: number, options: CropperOptions): number {\n    const ratioWidth = options.resizeToWidth / width;\n    const ratioHeight = options.resizeToHeight / height;\n    const ratios = new Array<number>();\n\n    if (options.resizeToWidth > 0) {\n      ratios.push(ratioWidth);\n    }\n    if (options.resizeToHeight > 0) {\n      ratios.push(ratioHeight);\n    }\n\n    const result = ratios.length === 0 ? 1 : Math.min(...ratios);\n\n    if (result > 1 && !options.onlyScaleDown) {\n      return result;\n    }\n    return Math.min(result, 1);\n  }\n\n  getQuality(options: CropperOptions): number {\n    return Math.min(1, Math.max(0, options.imageQuality / 100));\n  }\n}\n","import { ExifTransform } from '../interfaces/exif-transform.interface';\n\n// Black 2x1 JPEG, with the following meta information set:\n// - EXIF Orientation: 6 (Rotated 90° CCW)\n// Source: https://github.com/blueimp/JavaScript-Load-Image\nconst testAutoOrientationImageURL =\n  'data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' +\n  'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' +\n  'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' +\n  'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' +\n  'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' +\n  'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==';\n\nexport function supportsAutomaticRotation(): Promise<boolean> {\n  return new Promise((resolve) => {\n    const img = new Image();\n    img.onload = () => {\n      // Check if browser supports automatic image orientation:\n      const supported = img.width === 1 && img.height === 2;\n      resolve(supported);\n    };\n    img.src = testAutoOrientationImageURL;\n  });\n}\n\nexport function getTransformationsFromExifData(exifRotationOrArrayBuffer: number | ArrayBufferLike): ExifTransform {\n  if (typeof exifRotationOrArrayBuffer === 'object') {\n    exifRotationOrArrayBuffer = getExifRotation(exifRotationOrArrayBuffer);\n  }\n  switch (exifRotationOrArrayBuffer) {\n    case 2:\n      return { rotate: 0, flip: true };\n    case 3:\n      return { rotate: 2, flip: false };\n    case 4:\n      return { rotate: 2, flip: true };\n    case 5:\n      return { rotate: 1, flip: true };\n    case 6:\n      return { rotate: 1, flip: false };\n    case 7:\n      return { rotate: 3, flip: true };\n    case 8:\n      return { rotate: 3, flip: false };\n    default:\n      return { rotate: 0, flip: false };\n  }\n}\n\nfunction getExifRotation(arrayBuffer: ArrayBufferLike): number {\n  const view = new DataView(arrayBuffer);\n  if (view.getUint16(0, false) !== 0xFFD8) {\n    return -2;\n  }\n  const length = view.byteLength;\n  let offset = 2;\n  while (offset < length) {\n    if (view.getUint16(offset + 2, false) <= 8) return -1;\n    const marker = view.getUint16(offset, false);\n    offset += 2;\n    if (marker == 0xFFE1) {\n      if (view.getUint32(offset += 2, false) !== 0x45786966) {\n        return -1;\n      }\n\n      const little = view.getUint16(offset += 6, false) == 0x4949;\n      offset += view.getUint32(offset + 4, little);\n      const tags = view.getUint16(offset, little);\n      offset += 2;\n      for (let i = 0; i < tags; i++) {\n        if (view.getUint16(offset + (i * 12), little) == 0x0112) {\n          return view.getUint16(offset + (i * 12) + 8, little);\n        }\n      }\n    } else if ((marker & 0xFF00) !== 0xFF00) {\n      break;\n    } else {\n      offset += view.getUint16(offset, false);\n    }\n  }\n  return -1;\n}\n","import { Dimensions, LoadedImage } from '../interfaces';\nimport { CropperState } from '../component/cropper.state';\nimport { ExifTransform } from '../interfaces/exif-transform.interface';\nimport { getTransformationsFromExifData, supportsAutomaticRotation } from '../utils/exif.utils';\n\ninterface LoadImageArrayBuffer {\n  originalImage: HTMLImageElement;\n  originalArrayBuffer: ArrayBufferLike;\n  originalObjectUrl: string;\n  originalImageSize?: { width: number; height: number; } | null;\n}\n\nexport class LoadImageService {\n\n  private autoRotateSupported: Promise<boolean> = supportsAutomaticRotation();\n\n  async loadImageFile(file: File, cropperSettings: CropperState): Promise<LoadedImage> {\n    const arrayBuffer = await file.arrayBuffer();\n    if (cropperSettings.options.checkImageType) {\n      return await this.checkImageTypeAndLoadImageFromArrayBuffer(arrayBuffer, file.type, cropperSettings);\n    }\n    return await this.loadImageFromArrayBuffer(arrayBuffer, cropperSettings);\n  }\n\n  private checkImageTypeAndLoadImageFromArrayBuffer(arrayBuffer: ArrayBufferLike, imageType: string, cropperSettings: CropperState): Promise<LoadedImage> {\n    if (!this.isValidImageType(imageType)) {\n      return Promise.reject(new Error('Invalid image type'));\n    }\n    return this.loadImageFromArrayBuffer(arrayBuffer, cropperSettings, imageType);\n  }\n\n  private isValidImageType(type: string): boolean {\n    return /image\\/(png|jpg|jpeg|heic|bmp|gif|tiff|svg|webp|x-icon|vnd.microsoft.icon)/.test(type);\n  }\n\n  async loadImageFromURL(url: string, cropperSettings: CropperState): Promise<LoadedImage> {\n    const res = await fetch(url);\n    const blob = await res.blob();\n    const buffer = await blob.arrayBuffer();\n    return await this.loadImageFromArrayBuffer(buffer, cropperSettings, blob.type);\n  }\n\n  loadBase64Image(imageBase64: string, cropperSettings: CropperState): Promise<LoadedImage> {\n    const arrayBuffer = this.base64ToArrayBuffer(imageBase64);\n    return this.loadImageFromArrayBuffer(arrayBuffer, cropperSettings);\n  }\n\n  private base64ToArrayBuffer(imageBase64: string): ArrayBufferLike {\n    imageBase64 = imageBase64.replace(/^data:([^;]+);base64,/gmi, '');\n    const binaryString = atob(imageBase64);\n    const len = binaryString.length;\n    const bytes = new Uint8Array(len);\n    for (let i = 0; i < len; i++) {\n      bytes[i] = binaryString.charCodeAt(i);\n    }\n    return bytes.buffer;\n  }\n\n  private async loadImageFromArrayBuffer(arrayBuffer: ArrayBufferLike, cropperState: CropperState, imageType?: string): Promise<LoadedImage> {\n    const res = await new Promise<LoadImageArrayBuffer>(async (resolve, reject) => {\n      try {\n        const blob = new Blob([arrayBuffer], imageType ? {type: imageType} : undefined);\n        const objectUrl = URL.createObjectURL(blob);\n        const originalImage = new Image();\n        const isSvg = imageType === 'image/svg+xml';\n        const originalImageSize = isSvg ? await this.getSvgImageSize(blob) : undefined;\n        originalImage.onload = () => resolve({\n          originalImage,\n          originalImageSize,\n          originalObjectUrl: objectUrl,\n          originalArrayBuffer: arrayBuffer\n        });\n        originalImage.onerror = reject;\n        originalImage.src = objectUrl;\n      } catch (e) {\n        reject(e);\n      }\n    });\n    return await this.transformImageFromArrayBuffer(res, cropperState, res.originalImageSize != null);\n  }\n\n  private async getSvgImageSize(blob: Blob): Promise<{ width: number; height: number; } | null> {\n    const parser = new DOMParser();\n    const doc = parser.parseFromString(await blob.text(), 'image/svg+xml');\n    const svgElement = doc.querySelector('svg');\n    if (!svgElement) {\n      throw Error('Failed to parse SVG image');\n    }\n    const widthAttr = svgElement.getAttribute('width');\n    const heightAttr = svgElement.getAttribute('height');\n    if (widthAttr && heightAttr) {\n      return null;\n    }\n    const viewBoxAttr = svgElement.getAttribute('viewBox')\n      || svgElement.getAttribute('viewbox');\n    if (viewBoxAttr) {\n      const viewBox = viewBoxAttr.split(' ');\n      return {\n        width: +viewBox[2],\n        height: +viewBox[3]\n      };\n    }\n    throw Error('Failed to load SVG image. SVG must have width + height or viewBox definition.');\n  }\n\n  private async transformImageFromArrayBuffer(res: LoadImageArrayBuffer, cropperSettings: CropperState, forceTransform = false): Promise<LoadedImage> {\n    const autoRotate = await this.autoRotateSupported;\n    const exifTransform = getTransformationsFromExifData(autoRotate ? -1 : res.originalArrayBuffer);\n    if (!res.originalImage || !res.originalImage.complete) {\n      return Promise.reject(new Error('No image loaded'));\n    }\n    const loadedImage = {\n      original: {\n        objectUrl: res.originalObjectUrl,\n        image: res.originalImage,\n        size: res.originalImageSize ?? {\n          width: res.originalImage.naturalWidth,\n          height: res.originalImage.naturalHeight\n        }\n      },\n      exifTransform\n    };\n    return this.transformLoadedImage(loadedImage, cropperSettings, forceTransform);\n  }\n\n  async transformLoadedImage(loadedImage: Partial<LoadedImage>, cropperState: CropperState, forceTransform = false): Promise<LoadedImage> {\n    const canvasRotation = cropperState.options.canvasRotation + loadedImage.exifTransform!.rotate;\n    const originalSize = loadedImage.original!.size;\n    if (!forceTransform && canvasRotation === 0 && !loadedImage.exifTransform!.flip && !cropperState.options.containWithinAspectRatio) {\n      return {\n        original: {\n          objectUrl: loadedImage.original!.objectUrl,\n          image: loadedImage.original!.image,\n          size: {...originalSize}\n        },\n        transformed: {\n          objectUrl: loadedImage.original!.objectUrl,\n          image: loadedImage.original!.image,\n          size: {...originalSize}\n        },\n        exifTransform: loadedImage.exifTransform!\n      };\n    }\n\n    const transformedSize = this.getTransformedSize(originalSize, loadedImage.exifTransform!, cropperState);\n    const canvas = document.createElement('canvas');\n    canvas.width = transformedSize.width;\n    canvas.height = transformedSize.height;\n    const ctx = canvas.getContext('2d');\n    ctx?.setTransform(\n      loadedImage.exifTransform!.flip ? -1 : 1,\n      0,\n      0,\n      1,\n      canvas.width / 2,\n      canvas.height / 2\n    );\n    ctx?.rotate(Math.PI * (canvasRotation / 2));\n    ctx?.drawImage(\n      loadedImage.original!.image,\n      -originalSize.width / 2,\n      -originalSize.height / 2\n    );\n    const blob = await new Promise<Blob | null>(resolve => canvas.toBlob(resolve, cropperState.options.format));\n    if (!blob) {\n      throw new Error('Failed to get Blob for transformed image.');\n    }\n    const objectUrl = URL.createObjectURL(blob);\n    const transformedImage = await this.loadImageFromObjectUrl(objectUrl);\n    return {\n      original: {\n        objectUrl: loadedImage.original!.objectUrl,\n        image: loadedImage.original!.image,\n        size: {...originalSize}\n      },\n      transformed: {\n        objectUrl: objectUrl,\n        image: transformedImage,\n        size: {\n          width: transformedImage.width,\n          height: transformedImage.height\n        }\n      },\n      exifTransform: loadedImage.exifTransform!\n    };\n  }\n\n  private loadImageFromObjectUrl(objectUrl: string): Promise<HTMLImageElement> {\n    return new Promise<HTMLImageElement>(((resolve, reject) => {\n      const image = new Image();\n      image.onload = () => resolve(image);\n      image.onerror = reject;\n      image.src = objectUrl;\n    }));\n  }\n\n  private getTransformedSize(\n    originalSize: { width: number, height: number },\n    exifTransform: ExifTransform,\n    cropperState: CropperState\n  ): Dimensions {\n    const canvasRotation = cropperState.options.canvasRotation + exifTransform.rotate;\n    if (cropperState.options.containWithinAspectRatio) {\n      if (canvasRotation % 2) {\n        const minWidthToContain = originalSize.width * cropperState.options.aspectRatio;\n        const minHeightToContain = originalSize.height / cropperState.options.aspectRatio;\n        return {\n          width: Math.max(originalSize.height, minWidthToContain),\n          height: Math.max(originalSize.width, minHeightToContain)\n        };\n      } else {\n        const minWidthToContain = originalSize.height * cropperState.options.aspectRatio;\n        const minHeightToContain = originalSize.width / cropperState.options.aspectRatio;\n        return {\n          width: Math.max(originalSize.width, minWidthToContain),\n          height: Math.max(originalSize.height, minHeightToContain)\n        };\n      }\n    }\n\n    if (canvasRotation % 2) {\n      return {\n        height: originalSize.width,\n        width: originalSize.height\n      };\n    }\n    return {\n      width: originalSize.width,\n      height: originalSize.height\n    };\n  }\n}\n","import {BasicEvent} from \"../interfaces/basic-event.interface\";\nimport {Position} from \"../interfaces/move-start.interface\";\n\nexport function getPositionForKey(key: string): Position {\n  switch (key) {\n    case 'ArrowUp':\n      return 'top';\n    case 'ArrowRight':\n      return 'right';\n    case 'ArrowDown':\n      return 'bottom';\n    case 'ArrowLeft':\n    default:\n      return 'left';\n  }\n}\n\nexport function getInvertedPositionForKey(key: string): Position {\n  switch (key) {\n    case 'ArrowUp':\n      return 'bottom';\n    case 'ArrowRight':\n      return 'left';\n    case 'ArrowDown':\n      return 'top';\n    case 'ArrowLeft':\n    default:\n      return 'right';\n  }\n}\n\nexport function getEventForKey(key: string, stepSize: number): BasicEvent {\n  switch (key) {\n    case 'ArrowUp':\n      return {clientX: 0, clientY: stepSize * -1};\n    case 'ArrowRight':\n      return {clientX: stepSize, clientY: 0};\n    case 'ArrowDown':\n      return {clientX: 0, clientY: stepSize};\n    case 'ArrowLeft':\n    default:\n      return {clientX: stepSize * -1, clientY: 0};\n  }\n}\n","import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output, signal,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { DomSanitizer, SafeStyle, SafeUrl } from '@angular/platform-browser';\nimport {\n  CropperOptions,\n  CropperPosition,\n  Dimensions,\n  ImageCroppedEvent,\n  ImageTransform,\n  LoadedImage,\n  MoveStart\n} from '../interfaces';\nimport { OutputFormat, OutputType } from '../interfaces/cropper-options.interface';\nimport { CropperState } from './cropper.state';\nimport { MoveTypes, Position } from '../interfaces/move-start.interface';\nimport { CropService } from '../services/crop.service';\nimport { LoadImageService } from '../services/load-image.service';\nimport { getEventForKey, getInvertedPositionForKey, getPositionForKey } from '../utils/keyboard.utils';\nimport { first, takeUntil } from 'rxjs/operators';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { NgIf } from '@angular/common';\nimport { BasicEvent } from '../interfaces/basic-event.interface';\nimport {\n  checkCropperPosition,\n  checkCropperWithinMaxSizeBounds,\n  getClientX,\n  getClientY,\n  moveCropper,\n  resizeCropper\n} from '../utils/cropper-position.utils';\n\n@Component({\n  selector: 'image-cropper',\n  templateUrl: './image-cropper.component.html',\n  styleUrls: ['./image-cropper.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [NgIf],\n})\nexport class ImageCropperComponent implements OnChanges, OnInit, OnDestroy {\n\n  private readonly pinchStart$ = new Subject<void>();\n  private readonly cropService = new CropService();\n  private readonly loadImageService = new LoadImageService();\n\n  private setImageMaxSizeRetries = 0;\n  private moveStart?: MoveStart;\n  private resizedWhileHidden = false;\n\n  protected readonly moveTypes = MoveTypes;\n  protected readonly state = new CropperState();\n\n  readonly safeImgDataUrl = signal<SafeUrl | string | undefined>(undefined);\n  safeTransformStyle?: SafeStyle | string;\n  marginLeft: SafeStyle | string = '0px';\n  imageVisible = false;\n\n  @ViewChild('wrapper', {static: true}) wrapper!: ElementRef<HTMLDivElement>;\n  @ViewChild('sourceImage', {static: false}) sourceImage!: ElementRef<HTMLDivElement>;\n\n  @Input() imageChangedEvent?: Event | null;\n  @Input() imageURL?: string;\n  @Input() imageBase64?: string;\n  @Input() imageFile?: File;\n  @Input() imageAltText?: string;\n\n  @Input() options?: Partial<CropperOptions>;\n  @Input() cropperFrameAriaLabel?: string;\n  @Input() output?: 'blob' | 'base64';\n  @Input() format?: OutputFormat;\n  @Input() autoCrop?: boolean;\n  @Input() cropper?: CropperPosition;\n  @Input() transform?: ImageTransform;\n  @Input() maintainAspectRatio?: boolean;\n  @Input() aspectRatio?: number;\n  @Input() resetCropOnAspectRatioChange?: boolean;\n  @Input() resizeToWidth?: number;\n  @Input() resizeToHeight?: number;\n  @Input() cropperMinWidth?: number;\n  @Input() cropperMinHeight?: number;\n  @Input() cropperMaxHeight?: number;\n  @Input() cropperMaxWidth?: number;\n  @Input() cropperStaticWidth?: number;\n  @Input() cropperStaticHeight?: number;\n  @Input() canvasRotation?: number;\n  @Input() initialStepSize?: number;\n  @Input() roundCropper?: boolean;\n  @Input() onlyScaleDown?: boolean;\n  @Input() imageQuality?: number;\n  @Input() backgroundColor?: string;\n  @Input() containWithinAspectRatio?: boolean;\n  @Input() hideResizeSquares?: boolean;\n  @Input() allowMoveImage = false;\n  @Input() checkImageType = true;\n  @Input() alignImage?: 'left' | 'center';\n\n  @HostBinding('class.disabled')\n  @Input() disabled = false;\n  @HostBinding('class.ngx-ic-hidden')\n  @Input() hidden = false;\n\n  @Output() imageCropped = new EventEmitter<ImageCroppedEvent>();\n  @Output() startCropImage = new EventEmitter<void>();\n  @Output() imageLoaded = new EventEmitter<LoadedImage>();\n  @Output() cropperReady = new EventEmitter<Dimensions>();\n  @Output() loadImageFailed = new EventEmitter<void>();\n  @Output() transformChange = new EventEmitter<ImageTransform>();\n  @Output() cropperChange = new EventEmitter<CropperPosition>();\n\n  @HostBinding('style.text-align')\n  get alignImageStyle() {\n    return this.state.options.alignImage;\n  }\n\n  constructor(\n    private sanitizer: DomSanitizer,\n    private cd: ChangeDetectorRef,\n    private zone: NgZone\n  ) {\n    this.reset();\n  }\n\n  ngOnInit(): void {\n    this.state.stepSize = this.initialStepSize || this.state.stepSize;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const previousCropperPosition = this.state.cropper;\n    const previousTransform = this.state.transform;\n    const previousBackgroundColor = this.state.options.backgroundColor;\n\n    this.state.setOptionsFromChanges(changes);\n    this.onChangesInputImage(changes);\n\n    if (changes['transform'] && this.transform) {\n      this.state.transform = this.transform;\n      this.setCssTransform();\n    }\n\n    if (!this.state.loadedImage?.transformed.image.complete || !this.state.maxSize) {\n      return;\n    }\n\n    if ((this.containWithinAspectRatio && changes['aspectRatio']) || changes['containWithinAspectRatio'] || changes['canvasRotation']) {\n      this.loadImageService\n        .transformLoadedImage(this.state.loadedImage, this.state)\n        .then((res) => this.setLoadedImage(res))\n        .catch((err) => this.loadImageError(err));\n      return;\n    }\n\n    if (changes['cropper'] && this.cropper) {\n      this.state.cropper = checkCropperPosition(this.cropper, this.state, true);\n    }\n    const cropperChanged = !this.state.equalsCropperPosition(previousCropperPosition);\n    if (cropperChanged && (!this.cropper || !this.state.equalsCropperPosition(this.cropper))) {\n      this.cropperChange.emit(this.state.cropper);\n    }\n    if (cropperChanged\n      || !this.state.equalsTransform(previousTransform)\n      || this.state.options.backgroundColor !== previousBackgroundColor) {\n      this.doAutoCrop();\n    }\n\n    if (changes['hidden'] && this.resizedWhileHidden && !this.hidden) {\n      setTimeout(() => {\n        this.onResize();\n        this.resizedWhileHidden = false;\n      });\n    }\n  }\n\n  private onChangesInputImage(changes: SimpleChanges): void {\n    if (changes['imageChangedEvent'] || changes['imageURL'] || changes['imageBase64'] || changes['imageFile']) {\n      this.reset();\n    }\n    if (changes['imageChangedEvent'] && this.isValidImageChangedEvent()) {\n      this.loadImageFile(this.imageChangedEvent.target.files[0]);\n    }\n    if (changes['imageURL'] && this.imageURL) {\n      this.loadImageFromURL(this.imageURL);\n    }\n    if (changes['imageBase64'] && this.imageBase64) {\n      this.loadBase64Image(this.imageBase64);\n    }\n    if (changes['imageFile'] && this.imageFile) {\n      this.loadImageFile(this.imageFile);\n    }\n  }\n\n  private isValidImageChangedEvent(): this is {\n    imageChangedEvent: Event & {\n      target: { files: FileList };\n    }\n  } {\n    const files = (this.imageChangedEvent as any)?.target?.files;\n    return files instanceof FileList && files.length > 0;\n  }\n\n  private reset(): void {\n    this.safeImgDataUrl.set('data:image/png;base64,iVBORw0KGg'\n      + 'oAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAU'\n      + 'AAarVyFEAAAAASUVORK5CYII=');\n    this.state.loadedImage = undefined;\n    this.state.maxSize = undefined;\n    this.imageVisible = false;\n  }\n\n  private loadImageFile(file: File): void {\n    this.loadImageService\n      .loadImageFile(file, this.state)\n      .then((res) => this.setLoadedImage(res))\n      .catch((err) => this.loadImageError(err));\n  }\n\n  private loadBase64Image(imageBase64: string): void {\n    this.loadImageService\n      .loadBase64Image(imageBase64, this.state)\n      .then((res) => this.setLoadedImage(res))\n      .catch((err) => this.loadImageError(err));\n  }\n\n  private loadImageFromURL(url: string): void {\n    this.loadImageService\n      .loadImageFromURL(url, this.state)\n      .then((res) => this.setLoadedImage(res))\n      .catch((err) => this.loadImageError(err));\n  }\n\n  private setLoadedImage(loadedImage: LoadedImage): void {\n    this.state.loadedImage = loadedImage;\n    this.safeImgDataUrl.set(this.sanitizer.bypassSecurityTrustResourceUrl(loadedImage.transformed.objectUrl));\n  }\n\n  loadImageError(error: unknown): void {\n    console.error(error);\n    this.loadImageFailed.emit();\n  }\n\n  private setCssTransform(): void {\n    const translateUnit = this.state.transform?.translateUnit || '%';\n    this.safeTransformStyle = this.sanitizer.bypassSecurityTrustStyle(\n      `translate(${this.state.transform.translateH || 0}${translateUnit}, ${this.state.transform.translateV || 0}${translateUnit})` +\n      ' scaleX(' + (this.state.transform.scale || 1) * (this.state.transform.flipH ? -1 : 1) + ')' +\n      ' scaleY(' + (this.state.transform.scale || 1) * (this.state.transform.flipV ? -1 : 1) + ')' +\n      ' rotate(' + (this.state.transform.rotate || 0) + 'deg)'\n    );\n  }\n\n  imageLoadedInView(): void {\n    if (this.state.loadedImage != null) {\n      this.imageLoaded.emit(this.state.loadedImage);\n      this.setImageMaxSizeRetries = 0;\n      setTimeout(() => this.checkImageMaxSizeRecursively());\n    }\n  }\n\n  private checkImageMaxSizeRecursively(): void {\n    if (this.setImageMaxSizeRetries > 40) {\n      this.loadImageFailed.emit();\n    } else if (this.sourceImageLoaded()) {\n      this.setMaxSize();\n      if (this.cropper && (!this.maintainAspectRatio || this.state.aspectRatioIsCorrect())) {\n        this.state.cropper = checkCropperPosition(this.cropper, this.state, true);\n        this.emitCropperPositionChange(this.cropper);\n      } else {\n        this.state.cropper = checkCropperPosition(this.state.maxSizeCropperPosition(), this.state, true);\n        this.cropperChange.emit(this.state.cropper);\n      }\n      this.imageVisible = true;\n      this.cropperReady.emit({...this.state.maxSize!});\n      this.doAutoCrop();\n      this.cd.markForCheck();\n    } else {\n      this.setImageMaxSizeRetries++;\n      setTimeout(() => this.checkImageMaxSizeRecursively(), 50);\n    }\n  }\n\n  private sourceImageLoaded(): boolean {\n    return this.sourceImage?.nativeElement?.offsetWidth > 1;\n  }\n\n  @HostListener('window:resize')\n  onResize(): void {\n    if (!this.state.loadedImage) {\n      return;\n    }\n    if (this.hidden) {\n      this.resizedWhileHidden = true;\n    } else {\n      const oldMaxSize = {...this.state.maxSize!};\n      this.setMaxSize();\n      this.state.resizeCropperPosition(oldMaxSize);\n      this.cd.markForCheck();\n    }\n  }\n\n  keyboardAccess(event: KeyboardEvent) {\n    this.changeKeyboardStepSize(event);\n    this.keyboardMoveCropper(event);\n  }\n\n  private changeKeyboardStepSize(event: KeyboardEvent): void {\n    const key = +event.key;\n    if (key >= 1 && key <= 9) {\n      this.state.stepSize = key;\n    }\n  }\n\n  private keyboardMoveCropper(event: KeyboardEvent) {\n    const keyboardWhiteList: string[] = ['ArrowUp', 'ArrowDown', 'ArrowRight', 'ArrowLeft'];\n    if (!(keyboardWhiteList.includes(event.key))) {\n      return;\n    }\n    const moveType = event.shiftKey ? MoveTypes.Resize : MoveTypes.Move;\n    const position = event.altKey ? getInvertedPositionForKey(event.key) : getPositionForKey(event.key);\n    const moveEvent = getEventForKey(event.key, this.state.stepSize);\n    event.preventDefault();\n    event.stopPropagation();\n    this.moveStart = {\n      active: true,\n      type: moveType,\n      position,\n      clientX: 0,\n      clientY: 0,\n      transform: this.state.transform,\n      cropper: this.state.cropper\n    };\n    this.handleMouseMove(moveEvent);\n    this.handleMouseUp();\n  }\n\n  startMove(event: Event | BasicEvent, moveType: MoveTypes, position: Position | null = null): void {\n    if (this.disabled\n      || this.moveStart?.active && this.moveStart?.type === MoveTypes.Pinch\n      || moveType === MoveTypes.Drag && !this.allowMoveImage) {\n      return;\n    }\n    if ('preventDefault' in event) {\n      event.preventDefault();\n    }\n    this.moveStart = {\n      active: true,\n      type: moveType,\n      position,\n      clientX: getClientX(event),\n      clientY: getClientY(event),\n      transform: this.state.transform,\n      cropper: this.state.cropper\n    };\n    this.initMouseMove();\n  }\n\n  private initMouseMove(): void {\n    merge(\n      fromEvent(document, 'mousemove'),\n      fromEvent(document, 'touchmove')\n    ).pipe(\n      takeUntil(merge(\n        fromEvent(document, 'mouseup'),\n        fromEvent(document, 'touchend'),\n        this.pinchStart$\n      ).pipe(first()))\n    ).subscribe({\n      next: (event) => this.zone.run(() => {\n        this.handleMouseMove(event);\n        this.cd.markForCheck();\n      }),\n      complete: () => this.zone.run(() => {\n        this.handleMouseUp();\n        this.cd.markForCheck();\n      })\n    });\n  }\n\n  private handleMouseMove(event: Event | BasicEvent): void {\n    if (!this.moveStart?.active) {\n      return;\n    }\n    if ('stopPropagation' in event) {\n      event.stopPropagation();\n    }\n    if ('preventDefault' in event) {\n      event.preventDefault();\n    }\n    if (this.moveStart.type === MoveTypes.Move) {\n      this.state.cropper = checkCropperWithinMaxSizeBounds(\n        moveCropper(event, this.moveStart),\n        this.state,\n        true\n      );\n    } else if (this.moveStart.type === MoveTypes.Resize) {\n      if (!this.cropperStaticWidth && !this.cropperStaticHeight) {\n        this.state.cropper = checkCropperWithinMaxSizeBounds(\n          resizeCropper(event, this.moveStart, this.state),\n          this.state,\n          false\n        );\n      }\n    } else if (this.moveStart.type === MoveTypes.Drag) {\n      const diffX = getClientX(event) - this.moveStart.clientX;\n      const diffY = getClientY(event) - this.moveStart.clientY;\n      this.state.transform = {\n        ...this.state.transform,\n        translateH: (this.moveStart.transform?.translateH || 0) + diffX,\n        translateV: (this.moveStart.transform?.translateV || 0) + diffY\n      };\n      this.setCssTransform();\n    }\n  }\n\n  private handleMouseUp(): void {\n    if (!this.moveStart?.active || this.moveStart?.type === MoveTypes.Pinch) {\n      return;\n    }\n    if (!this.state.equalsCropperPosition(this.moveStart.cropper) || this.moveStart.transform && !this.state.equalsTransform(this.moveStart.transform)) {\n      if (this.moveStart.type === MoveTypes.Drag) {\n        this.transformChange.emit(this.state.transform);\n      } else {\n        this.cropperChange.emit(this.state.cropper);\n      }\n      this.doAutoCrop();\n    }\n    this.moveStart = undefined;\n  }\n\n  startPinch(event: TouchEvent) {\n    if (this.disabled || !this.sourceImageLoaded() || event.touches.length < 2) {\n      return;\n    }\n    if ('preventDefault' in event) {\n      event.preventDefault();\n    }\n    this.moveStart = {\n      active: true,\n      type: MoveTypes.Pinch,\n      position: 'center',\n      clientX: this.state.cropper.x1 + (this.state.cropper.x2 - this.state.cropper.x1) / 2,\n      clientY: this.state.cropper.y1 + (this.state.cropper.y2 - this.state.cropper.y1) / 2,\n      cropper: this.state.cropper\n    };\n    this.initPinch();\n  }\n\n  private initPinch(): void {\n    this.pinchStart$.next();\n    fromEvent(document, 'touchmove')\n      .pipe(takeUntil(fromEvent(document, 'touchend')))\n      .subscribe({\n        next: (event) => this.zone.run(() => {\n          this.handlePinchMove(event as TouchEvent);\n          this.cd.markForCheck();\n        }),\n        complete: () => this.zone.run(() => {\n          this.handlePinchStop();\n          this.cd.markForCheck();\n        })\n      });\n  }\n\n  handlePinchMove(event: TouchEvent) {\n    if (!this.moveStart?.active) {\n      return;\n    }\n    if (event.preventDefault) {\n      event.preventDefault();\n    }\n    if (this.moveStart.type === MoveTypes.Pinch) {\n      if (!this.cropperStaticWidth && !this.cropperStaticHeight) {\n        this.state.cropper = checkCropperWithinMaxSizeBounds(\n          resizeCropper(event, this.moveStart, this.state),\n          this.state,\n          false\n        );\n      }\n    }\n    this.cd.markForCheck();\n  }\n\n  handlePinchStop(): void {\n    if (!this.moveStart?.active) {\n      return;\n    }\n    if (!this.state.equalsCropperPosition(this.moveStart.cropper)) {\n      this.emitCropperPositionChange(this.moveStart.cropper);\n      this.doAutoCrop();\n    }\n    this.moveStart = undefined;\n  }\n\n  private setMaxSize(): void {\n    if (this.sourceImage) {\n      const sourceImageStyle = getComputedStyle(this.sourceImage.nativeElement);\n      this.state.setMaxSize(parseFloat(sourceImageStyle.width), parseFloat(sourceImageStyle.height));\n      this.marginLeft = this.sanitizer.bypassSecurityTrustStyle('calc(50% - ' + this.state.maxSize!.width / 2 + 'px)');\n    }\n  }\n\n  private emitCropperPositionChange(previousPosition: CropperPosition): void {\n    if (!this.state.equalsCropperPosition(previousPosition)) {\n      this.cropperChange.emit(this.state.cropper);\n    }\n  }\n\n  private doAutoCrop(): void {\n    if (this.state.options.autoCrop) {\n      void this.crop();\n    }\n  }\n\n  crop(): ImageCroppedEvent | null;\n  crop(output: 'base64'): ImageCroppedEvent | null;\n  crop(output: 'blob'): Promise<ImageCroppedEvent> | null;\n  crop(output: OutputType = this.state.options.output): Promise<ImageCroppedEvent> | ImageCroppedEvent | null {\n    if (this.state.loadedImage?.transformed?.image != null) {\n      this.startCropImage.emit();\n      if (output === 'blob') {\n        return this.cropToBlob();\n      } else if (output === 'base64') {\n        return this.cropToBase64();\n      }\n    }\n    return null;\n  }\n\n  private cropToBlob(): Promise<ImageCroppedEvent> | null {\n    return new Promise((resolve, reject) => this.zone.run(async () => {\n      const result = await this.cropService.crop(this.state, 'blob');\n      if (result) {\n        this.imageCropped.emit(result);\n        resolve(result);\n      } else {\n        reject('Crop image failed');\n      }\n    }));\n  }\n\n  private cropToBase64(): ImageCroppedEvent | null {\n    const result = this.cropService.crop(this.state, 'base64');\n    if (result) {\n      this.imageCropped.emit(result);\n      return result;\n    }\n    return null;\n  }\n\n  ngOnDestroy(): void {\n    this.pinchStart$.complete();\n  }\n}\n","<div\n  [style.background]=\"imageVisible && state.options.backgroundColor\"\n  (touchstart)=\"startPinch($event)\"\n>\n  <img\n    #sourceImage\n    class=\"ngx-ic-source-image\"\n    role=\"presentation\"\n    *ngIf=\"safeImgDataUrl() as src\"\n    [src]=\"src\"\n    [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n    [style.transform]=\"safeTransformStyle\"\n    [class.ngx-ic-draggable]=\"!disabled && allowMoveImage\"\n    [attr.alt]=\"imageAltText\"\n    (load)=\"imageLoadedInView()\"\n    (mousedown)=\"startMove($event, moveTypes.Drag)\"\n    (touchstart)=\"startMove($event, moveTypes.Drag)\"\n    (error)=\"loadImageError($event)\"\n  >\n  <div\n    class=\"ngx-ic-overlay\"\n    [style.width.px]=\"state.maxSize?.width || 0\"\n    [style.height.px]=\"state.maxSize?.height || 0\"\n    [style.margin-left]=\"alignImage === 'center' ? marginLeft : null\"\n  ></div>\n  <div\n    class=\"ngx-ic-cropper\"\n    *ngIf=\"imageVisible\"\n    [class.ngx-ic-round]=\"state.options.roundCropper\"\n    [attr.aria-label]=\"state.options.cropperFrameAriaLabel\"\n    [style.top.px]=\"state.cropper.y1\"\n    [style.left.px]=\"state.cropper.x1\"\n    [style.width.px]=\"state.cropper.x2 - state.cropper.x1\"\n    [style.height.px]=\"state.cropper.y2 - state.cropper.y1\"\n    [style.margin-left]=\"state.options.alignImage === 'center' ? marginLeft : null\"\n    [style.visibility]=\"imageVisible ? 'visible' : 'hidden'\"\n    (keydown)=\"keyboardAccess($event)\"\n    tabindex=\"0\"\n  >\n    <div\n      (mousedown)=\"startMove($event, moveTypes.Move)\"\n      (touchstart)=\"startMove($event, moveTypes.Move)\"\n      class=\"ngx-ic-move\"\n      role=\"presentation\">\n    </div>\n    <ng-container\n      *ngIf=\"!state.options.hideResizeSquares && !(state.options.cropperStaticWidth && state.options.cropperStaticHeight)\">\n      <span\n        class=\"ngx-ic-resize ngx-ic-topleft\"\n        role=\"presentation\"\n        (mousedown)=\"startMove($event, moveTypes.Resize, 'topleft')\"\n        (touchstart)=\"startMove($event, moveTypes.Resize, 'topleft')\"\n      >\n        <span class=\"ngx-ic-square\"></span>\n      </span>\n      <span class=\"ngx-ic-resize ngx-ic-top\">\n        <span class=\"ngx-ic-square\"></span>\n      </span>\n      <span\n        class=\"ngx-ic-resize ngx-ic-topright\"\n        role=\"presentation\"\n        (mousedown)=\"startMove($event, moveTypes.Resize, 'topright')\"\n        (touchstart)=\"startMove($event, moveTypes.Resize, 'topright')\"\n      >\n        <span class=\"ngx-ic-square\"></span>\n      </span>\n      <span class=\"ngx-ic-resize ngx-ic-right\">\n        <span class=\"ngx-ic-square\"></span>\n      </span>\n      <span\n        class=\"ngx-ic-resize ngx-ic-bottomright\"\n        role=\"presentation\"\n        (mousedown)=\"startMove($event, moveTypes.Resize, 'bottomright')\"\n        (touchstart)=\"startMove($event, moveTypes.Resize, 'bottomright')\"\n      >\n        <span class=\"ngx-ic-square\"></span>\n      </span>\n      <span class=\"ngx-ic-resize ngx-ic-bottom\">\n        <span class=\"ngx-ic-square\"></span>\n      </span>\n      <span\n        class=\"ngx-ic-resize ngx-ic-bottomleft\"\n        role=\"presentation\"\n        (mousedown)=\"startMove($event, moveTypes.Resize, 'bottomleft')\"\n        (touchstart)=\"startMove($event, moveTypes.Resize, 'bottomleft')\"\n      >\n        <span class=\"ngx-ic-square\"></span>\n      </span>\n      <span class=\"ngx-ic-resize ngx-ic-left\">\n        <span class=\"ngx-ic-square\"></span>\n      </span>\n      <span\n        class=\"ngx-ic-resize-bar ngx-ic-top\"\n        role=\"presentation\"\n        (mousedown)=\"startMove($event, moveTypes.Resize, 'top')\"\n        (touchstart)=\"startMove($event, moveTypes.Resize, 'top')\"\n      ></span>\n      <span\n        class=\"ngx-ic-resize-bar ngx-ic-right\"\n        role=\"presentation\"\n        (mousedown)=\"startMove($event, moveTypes.Resize, 'right')\"\n        (touchstart)=\"startMove($event, moveTypes.Resize, 'right')\"\n      ></span>\n      <span\n        class=\"ngx-ic-resize-bar ngx-ic-bottom\"\n        role=\"presentation\"\n        (mousedown)=\"startMove($event, moveTypes.Resize, 'bottom')\"\n        (touchstart)=\"startMove($event, moveTypes.Resize, 'bottom')\"\n      ></span>\n      <span\n        class=\"ngx-ic-resize-bar ngx-ic-left\"\n        role=\"presentation\"\n        (mousedown)=\"startMove($event, moveTypes.Resize, 'left')\"\n        (touchstart)=\"startMove($event, moveTypes.Resize, 'left')\"\n      ></span>\n    </ng-container>\n  </div>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { Question } from '../../wrapper';\n//import { QuestionbookComponent } from '../../pages/questionbook/questionbook.component';\n//import { ComponenthostDirective } from '../../directives/componenthost/componenthost.directive';\nimport { ChangeService } from '../../services/change.service';\ninterface CalendarDay {\n  date: Date;\n  events: any[];\n  isCurrentMonth: boolean;\n  isPast: boolean;\n  isToday: boolean;\n  isFuture: boolean;\n  isSelected?: boolean;\n}\n@Component({\n  selector: 'app-custom-calendar',\n  templateUrl: './custom-calendar.component.html',\n  styleUrls: ['./custom-calendar.component.css'],\n})\nexport class CustomCalendarComponent implements OnInit {\n  @Output() eventSelected = new EventEmitter<any>();\n  // VD 06Sep24 calendar changes\n  @Output() dateSelected = new EventEmitter<any>();\n  @Output() openModal = new EventEmitter<any>();\n  @Output() closeModal = new EventEmitter<any>();\n  @Input() allEvents: any[] = []; \n  @Input() question: Question\n  @Input() nxtId: string;\n  //@ViewChild(ComponenthostDirective, { static: true }) dynamicHost: ComponenthostDirective;\n  entries = [];\n  referenceQuestions = [];\n  qbRefrenceBook:any;\n  calendarQuestion = [];\n  calendar = {};\n  currentDate: Date = new Date();\n  calendarDays: CalendarDay[] = [];\n  daysOfWeek: string[] = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n  newEventTitle: string = '';\n  newEventTime: string = '';\n  newDescription: string = '';\n  newLink: string = '';\n  selectedDay: CalendarDay | null = null;\n  isModalOpen = false;\n  modalTitle = 'Custom Modal';\n  modalSize = 'large';\n  saveButtonValue = 'Save';\n  modalFooter = true;\n  editingEventId: number;\n  editingEntryGroup: any;\n  showAppoinmentSection: boolean = true;\n  subscription: any;\n  constructor( private changeService: ChangeService) { }\n  ngOnInit() {\n     if(this.question?.input){\n      this.allEvents = this.question.input;\n     }\n    this.processQuestion();\n    this.generateCalendar();\n    this.subscription = this.changeService.customChange$.subscribe(\n      (changeValue) => {\n          if(changeValue == 'calendar-modal-save') {\n            this.onSave();\n          }\n          if(changeValue == 'dataBind') {\n            if(this.question?.input){\n              this.allEvents = this.question.input;\n             }\n            this.processQuestion();\n            this.generateCalendar();\n          }\n      }\n    );\n   // this.dateSelected.emit(this.calendar);\n    //this.eventSelected.emit(this.allEvents);\n  }\n  // RS 09DEC24 Changed keys\n  processQuestion(){\n    // SKS20MAR25 check if question fieldsmeta is string\n    this.entries =  typeof this.question['fieldsMeta'] === 'object'  ?  this.question['fieldsMeta'] || [] : JSON.parse( this.question['fieldsMeta']) ;\n    this.qbRefrenceBook = typeof this.question['qbReferenceQuestions'] === 'object'  ?  this.question['qbReferenceQuestions'] : JSON.parse( this.question['qbReferenceQuestions']) ;\n    let title = this.qbRefrenceBook?.questionbook?.title;\n    this.modalTitle = title;\n    this.referenceQuestions = [];\n    if(this.entries.length > 0){\n       this.entries.forEach(element => {\n           if(element.questionReference){\n             let qReference = JSON.parse(element.questionReference);\n             this.referenceQuestions.push(qReference?.question);\n           }\n       });\n    }\n    console.log('entries-->');\n    console.log('question-->');\n    console.log(this.entries);\n    console.log(this.referenceQuestions);\n  }\n   // sunday comment\n  // openQuestionBookModal() {\n  //   const viewContainerRef = this.dynamicHost.viewContainerRef;\n  //   viewContainerRef.clear();\n  //   const componentRef = viewContainerRef.createComponent(QuestionbookComponent);\n  //   componentRef.instance.qbItem = this.qbRefrenceBook;\n  //   componentRef.instance.questions = this.referenceQuestions;\n  //   componentRef.instance.handleQuestion.subscribe((event: any) => this.handleQuestionEvent(event));\n  // }\n\n  generateCalendar() {\n    const year = this.currentDate.getFullYear();\n    const month = this.currentDate.getMonth();\n\n    const startOfMonth = new Date(year, month, 1);\n    const endOfMonth = new Date(year, month + 1, 0);\n\n    const startDayOfWeek = startOfMonth.getDay();\n    const endDayOfWeek = endOfMonth.getDay();\n\n    const startDate = new Date(startOfMonth);\n    startDate.setDate(startDate.getDate() - startDayOfWeek);\n\n    const endDate = new Date(endOfMonth);\n    endDate.setDate(endDate.getDate() + (6 - endDayOfWeek));\n\n    const today = new Date(new Date().setHours(0, 0, 0, 0));\n    \n     this.calendarDays = [];\n      for (let d = new Date(startDate); d <= endDate; d.setDate(d.getDate() + 1)) {\n        const date = new Date(d);\n        this.calendarDays.push({\n          date: date,\n          events: [],\n          isCurrentMonth: d.getMonth() === month,\n          isPast: date < today,\n          isToday: date.getTime() === today.getTime(),\n          isFuture: date > today,\n        });\n      }\n\n    // Populate calendar with events from allEvents array\n    this.calendarDays.forEach(day => {\n      day.events = this.allEvents?.filter(event => event?.date?.toDateString() === day.date.toDateString());\n    });\n     // VD 06Sep24 calendar changes\n    let cal = {}\n    cal['year'] = year;\n    cal['month'] = month + 1;\n    this.calendar = cal;\n  }\n\n  selectDay(day: CalendarDay) {\n    console.log(day);\n     // VD 06Sep24 calendar changes\n    this.showAppoinmentSection = true;\n    this.selectedDay = day;\n   // this.eventSelected.emit(day?.events);\n    const previouslySelectedDay = this.calendarDays.find(d => d.isSelected);\n    if (previouslySelectedDay) {\n      previouslySelectedDay.isSelected = false;\n    }\n    // Select the clicked day\n    day.isSelected = true;\n   // VD 09Sep24- setup the query param data for api call\n    let referenceData = [];\n    this.referenceQuestions.forEach(ques => {\n      // VD 09-09-24 get the selected date\n      // need to add in the document\n      // RS 09DEC24 Changed keys\n       if(ques.referenceField == 'selectedDate'){\n          ques.input = day.date.toISOString();\n          console.log(ques.input);\n       }\n       // VD 09-09-24 get the query refrence  field data to pass the queryParam  for api\n      ques['subText'] = typeof ques?.subText === 'object' ? ques?.subText : JSON.parse(ques['subText'] || {});\n       if(ques.subText){\n        let subText = ques.subText;\n        if (subText.queryField && subText.queryValueReference) {\n            let currentQues = ques;\n            let queryReferences = subText.queryValueReference.split(',');   \n            queryReferences.forEach(refField => {\n                let refQues = this.referenceQuestions.find(q => q.referenceField === refField);\n                if (refQues) {\n                    referenceData.push(refQues);\n                }\n            });\n            // Add the referenceData array to the current question\n            currentQues.referenceQueryData = referenceData;\n        }\n       }\n    })\n  }\n\n  previousMonth() {\n    this.showAppoinmentSection = false;\n    this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n    this.currentDate = new Date(this.currentDate); // Ensure the date object is updated\n    this.generateCalendar();\n    this.dateSelected.emit(this.calendar);\n    this.eventSelected.emit(this.allEvents);\n  }\n\n  nextMonth() {\n     // VD 06Sep24 calendar changes\n    this.showAppoinmentSection = false;\n    this.currentDate.setMonth(this.currentDate.getMonth() + 1);\n    this.currentDate = new Date(this.currentDate); // Ensure the date object is updated\n    this.generateCalendar();\n    this.dateSelected.emit(this.calendar);\n    this.eventSelected.emit(this.allEvents);\n  }\n\n  addAppointment() {\n    this.isModalOpen = true;\n     this.calendarQuestion = this.referenceQuestions.map(q => ({ ...q, input: '' }));\n    this.referenceQuestions.forEach(ques => {\n      // clear the input\n      if(ques.referenceField != 'selectedDate'){\n        if(ques.type == 'Dropdown'){\n          delete ques.input;\n          delete ques.selectedValue;\n           // VD 06Sep24 calendar changes\n        }else {\n          delete ques.input;\n        }\n      }\n    });\n    console.log(this.referenceQuestions);\n    this.editingEventId = null;\n    this.calendarQuestion = this.referenceQuestions;\n    this.openBookModel();\n    // sunday comment\n    //this.openQuestionBookModal();\n  }\n\n  openBookModel(){\n    this.openModal.emit({\n      qbRefrenceBook: this.qbRefrenceBook,\n      referenceQuestions: this.referenceQuestions,\n      modalTitle : this.modalTitle,\n      modalSize : this.modalSize,\n      saveButtonValue : this.saveButtonValue,\n      modalFooter : this.modalFooter,\n\n    });\n  }\n\n  closeCalendarModal() {\n    this.isModalOpen = false;\n    this.closeModal.emit(true);\n  }\n // VD 06Sep24 calendar changes\n\neditEvent(event: any, entryGroup: any) {\n  this.isModalOpen = true;\n  this.referenceQuestions = Object.values(entryGroup);\n  this.calendarQuestion = [...this.referenceQuestions]; // Make a copy of the current entries to edit\n  this.editingEventId = event.id;\n  this.editingEntryGroup = entryGroup; // Store the entry group being edited\n  this.generateCalendar(); // Regenerate the calendar to reflect changes\n  this.openBookModel();\n  // suday comment\n // this.openQuestionBookModal();\n\n}\n\ndeleteEvent( eventId: number, entryGroup: any) {\n  let event = this.allEvents?.find(e => e?.id === eventId);\n  if (event) {\n      // Find the index of the entryGroup to delete\n      const entryIndex = event.entries.indexOf(entryGroup);\n      if (entryIndex > -1) {\n          event.entries.splice(entryIndex, 1); // Remove the specific entry\n      }\n\n      // If the event has no more entries, remove the event entirely\n      if (event.entries.length === 0) {\n          const eventIndex = this.allEvents?.indexOf(event);\n          if (eventIndex > -1) {\n              this.allEvents?.splice(eventIndex, 1); // Remove the entire event\n          }\n      }\n  }\n  let eventData = {};\n   eventData['action'] = \"delete\";\n   eventData['data'] = event;\n  this.eventSelected.emit(eventData);\n  this.generateCalendar(); // Regenerate the calendar to reflect the changes\n}\n\n // VD 06Sep24 calendar changes\n  addEvent(day: CalendarDay, entryQues) {\n    // Transform new entries into the desired format\n    const newEntries = entryQues.reduce((acc, q) => {\n        acc[q.id] = { ...q };\n        return acc;\n    }, {});\n\n    // Find an existing event for the given date\n    const existingEvent = day.events?.find(event => event.date === day.date);\n\n    if (existingEvent) {\n        // Merge new entries into the existing event's entries array\n        // Check if the entries array already contains an object with the same id\n        const existingEntries = existingEvent.entries.map(entry => ({ ...entry }));\n        // Append new entries to the existing entries\n        existingEntries.push(newEntries);\n        existingEvent.entries = existingEntries;\n    } else {\n        // Create a new event if it doesn't exist for the given date\n        const newEvent = {\n            id: this.generateId(),\n            date: day.date,\n            entries: [newEntries] // Wrap the new entries in an array\n        };\n        day.events = day?.events || []\n        day.events.push(newEvent);\n        this.allEvents?.push(newEvent);\n        //this.eventSelected.emit(this.allEvents);\n        let eventData = {};\n        eventData['action'] = \"add\";\n        eventData['data'] = newEvent;\n        this.eventSelected.emit(eventData);\n    }\n    this.generateCalendar();\n    console.log('allEvents', this.allEvents);\n}\n // VD 06Sep24 calendar changes\n onSave() {\n    if (this.editingEventId !== null) {\n        const event = this.allEvents?.find(e => e?.id === this.editingEventId);\n        if (event && this.editingEntryGroup) {\n            // Update the specific entry group within the event\n            const entryIndex = event.entries.findIndex(entryGroup => entryGroup === this.editingEntryGroup);\n            if (entryIndex > -1) {\n                event.entries[entryIndex] = this.calendarQuestion.reduce((acc, q) => {\n                    acc[q.id] = { ...q };\n                    return acc;\n                }, {});\n            }\n        }\n     // this.eventSelected.emit(this.allEvents);\n      let eventData = {};\n      eventData['action'] = \"edit\";\n      eventData['data'] = event;\n      this.eventSelected.emit(eventData);\n    } else {\n        if (this.selectedDay) {\n            this.addEvent(this.selectedDay, this.calendarQuestion);\n        }\n    }\n    this.closeCalendarModal();\n    this.generateCalendar();\n}\n\n  // onCancel() {\n  //   console.log('Cancel button clicked');\n  //   this.closeCalendarModal();\n  // }\n  //this funtion need to be used\n  // handleQuestionEvent(ques){\n  //     // Update the questions array with the new question\n  //     const index = this.calendarQuestion.findIndex(q => q.id === ques.id);\n  //     if (index > -1) {\n  //       // If question already exists, update it\n  //       this.calendarQuestion[index] = ques;\n  //     } else {\n  //       // If question doesn't exist, add it to the array\n  //       this.calendarQuestion.push(ques);\n  //     }\n  //     console.log(this.calendarQuestion);\n  //   }\n\n // VD 06Sep24 calendar changes\n  generateId() {\n    return '_' + Math.random().toString(36).substr(2, 9);\n  }\n\n  getEntryKeys(entryGroup: any): string[] {\n    return Object.keys(entryGroup);\n}\n\nremoveCharacters(questionText:string){\n  let updatedText = questionText?.replace(/<[^>]*>/g, '');\n  return updatedText;\n}\n\n}\n","<div class=\"align-calendar\">\n    <div class=\"calendar-container\">\n      <div class=\"calendar-header\">\n          <button (click)=\"previousMonth()\"><< Previous >></button>\n          <h3>{{ currentDate | date: 'MMMM yyyy' }}</h3>\n          <button (click)=\"nextMonth()\"><< Next >></button>\n      </div>\n      <div class=\"calendar-grid\">\n          <div class=\"day-of-week\" *ngFor=\"let day of daysOfWeek\">{{ day }}</div>\n          <div\n              class=\"calendar-day\"\n              *ngFor=\"let day of calendarDays\"\n              [class.not-current-month]=\"!day.isCurrentMonth\"\n              [class.past]=\"day.isPast\"\n              [class.today]=\"day.isToday\"\n              [class.future]=\"day.isFuture\"\n              [class.selected]=\"day.isSelected\"\n              (click)=\"selectDay(day)\"\n        >\n              <div class=\"day-number\">{{ day.date.getDate() }}\n                <span *ngIf=\"day?.events?.length > 0\" class=\"entry-indicator\" [class.select]=\"day?.isSelected\"></span>\n              </div>\n              <!-- <div *ngFor=\"let event of day.events\" >\n                  <div *ngFor=\"let entryGroup of event.entries\" class=\"event\">\n                      <div *ngFor=\"let key of getEntryKeys(entryGroup)\">\n                          <div *ngIf=\"entryGroup[key].type == 'Time'\">\n                              {{ entryGroup[key].input?.value | date: 'shortTime' }}\n                          </div>\n                          <div *ngIf=\"entryGroup[key].type != 'Time'\">\n                              {{ entryGroup[key].input }}\n                          </div>\n                      </div>\n                  </div>\n              </div> -->\n          </div>\n      </div>\n  </div>\n    <div class=\"appoinappointment\">\n      <div class=\"appointments-container\">\n          <h4>Add Appointment</h4>\n          <button *ngIf=\"selectedDay\" (click)=\"addAppointment()\">Add</button>\n      </div>\n      <!--VD 06Sep24 calendar updates--> \n      <!-- RS 09DEC24 Changed keys--> \n      <div *ngIf=\"showAppoinmentSection && selectedDay?.events?.length > 0\" class=\"appointments-container\">\n          <h4>Appointments</h4>\n          <div  *ngFor=\"let event of selectedDay?.events\">\n              <div class=\"event\" *ngFor=\"let entryGroup of event.entries\">\n                    <div class=\"event-info\">\n                      <div *ngFor=\"let key of getEntryKeys(entryGroup)\" class=\"entry-row\">\n                        <div *ngIf=\"entryGroup[key].questionText\" class=\"entry-text\">\n                            {{removeCharacters(entryGroup[key].questionText)}}:\n                        </div>\n                        <div class=\"entry-value\">\n                            <!-- VD 09Sep24- date type and link type updates    -->\n                            <span *ngIf=\"entryGroup[key].type != 'Time' && entryGroup[key].type != 'Link'&& entryGroup[key].type != 'Date'\">{{ entryGroup[key].input }}</span>\n                            <span *ngIf=\"entryGroup[key].type == 'Time'\">{{ entryGroup[key].input | date: 'shortTime' }}</span>\n                            <span *ngIf=\"entryGroup[key].type == 'Date'\">{{ entryGroup[key].input | date: 'mediumDate' }}</span>\n                            <span *ngIf=\"entryGroup[key].type == 'Link'\">\n                                <a [href]=\"'//'+ entryGroup[key].input\" target=\"_blank\">{{removeCharacters(entryGroup[key].questionText)}}</a>\n                            </span>\n                        </div>\n                    </div>\n                      <div class=\"event-actions\">\n                        <button (click)=\"editEvent(event,entryGroup)\">Edit</button>\n                        <button (click)=\"deleteEvent(event.id,entryGroup)\">Delete</button>\n                     </div>\n                  </div>\n              </div>\n          </div>\n      </div>\n  </div>\n</div>\n\n<!-- <app-custom-model\n  [modalTitle]=\"modalTitle\"\n  [isModalOpen]=\"isModalOpen\"\n  [modalSize]=\"modalSize\"\n  [saveButtonValue]=\"saveButtonValue\"\n  [modalFooter]=\"modalFooter\"\n  (saveButtonEmit)=\"onSave()\"\n  (cancelButtonEmit)=\"onCancel()\"\n>\n<lib-questionbook [qbItem]=\"qbRefrenceBook\" [questions]=\"referenceQuestions\" (handleQuestion)=\"handleQuestionEvent($event)\"></lib-questionbook>\n<ng-template dynamicComponentHost ></ng-template>\n</app-custom-model> -->","import {\n  Component,\n  OnInit,\n  Input,\n  Output,\n  EventEmitter,\n  ViewChild,\n  SimpleChanges,\n} from \"@angular/core\";\nimport { DataService } from '../../services/data.service';\n// VD 23JAN24 removed httpClient import used service file for callout\nimport { APIMeta } from \"../../interfaces/apimeta\";\nimport { ChangeWrapper } from \"../../model/changeWrapper\";\n// HA 19DEC23 imported translation service\nimport { I18nService } from \"../../i18n.service\";\n\n@Component({\n  selector: 'lib-search-box',\n  templateUrl: './search-box.component.html',\n  styleUrls: ['./search-box.component.css']\n})\nexport class SearchBoxComponent implements OnInit {\n  @Input() placeHolderText: string;\n  @ViewChild('auto') auto;\n\n  @Input() question;\n  @Input() apiMeta: string;\n  @Input() id: string;\n  @Input() readOnly = false; // VD 12Jun24 - readonly change\n  @Output() searchValueChange: EventEmitter<ChangeWrapper> = new EventEmitter<ChangeWrapper>();\n   apiObj:any;\n   SearchItem: any;\n\n  @Input() filterName: string; // VD 20Aug default filter value as input\n  public finalResults: any[] = [];\n  public searchKeyWord: string = '';\n  public newResult: any;\n  public showResult = false;\n  public noResult = false;\n  public showSuggestion = true;\n  private el: HTMLElement;\n  private serv: string = 'api';\n  private tkn: string = '';\n  \n  constructor( private dataService: DataService, public i18nService: I18nService) { }\n  ngOnInit(): void {\n    //  VD 03May- search changes\n     // AP-26MAR25 Ensure ques.subText is always an object by parsing it if it's a string\n    if(this.apiMeta){\n      this.apiMeta = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);\n      let apiObj: any = this.apiMeta;\n      this.SearchItem = apiObj.field;\n    }\n  }\n////RS 03FEB2025\n// Resets state when filterName or apiMeta changes to reflect updated data\n // AP-26MAR25 Ensure ques.subText is always an object by parsing it if it's a string\nngOnChanges(changes: SimpleChanges): void {\n  if (changes['apiMeta'] && this.apiMeta) {\n    this.apiMeta = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);\n    this.apiObj = this.apiMeta;\n    this.SearchItem = this.apiObj?.field;\n  }\n}\n//RS 03FEB2025\n// Clears search-related data, including results, search term, and suggestions.\nprivate resetComponentState(): void {\n  this.finalResults = [];\n  this.filterName = ''; \n  this.searchKeyWord = '';  \n  this.showSuggestion = false;\n  this.noResult = false;\n}\nclearList(){\n  setTimeout(()=> {\n    this.finalResults = [];\n  }, 1000);\n}\n\ngetSourceDataLocal(event: any) { //to get results list from backend API whenever key is up after the entering atleast one key\n  event.preventDefault();\n  if(event.target.value.length > 2){\n    this.showSuggestion=true;\n    this.finalResults=[];\n    this.searchKeyWord = event.target.value;\n    this.showResult = false;\n    this.getSourceData(event.target.value);\n  } else {\n    this.showSuggestion=false;\n    this.finalResults = [];\n    this.noResult = false;\n  }\n}\n// VD 03May- search changes\n// VD 31NOV24 null check\n// RS 29JAN25\n//Multi-word search across all object values\npublic getSourceData = (keyword: string) => {\n   // MSM-27MAR25 Ensure ques.subText is always an object by parsing it if it's a string\n  if (this.apiMeta) {\n      this.apiMeta = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);\n      let apiObj: any = this.apiMeta;\n    \n    this.dataService.apiResponse(apiObj.endpoint).subscribe((apiResponse) => {\n      let response;\n      if (apiObj.variable) {\n        response = this.dataService.getValue(apiResponse, apiObj.variable);\n      } else {\n        response = apiResponse;\n      }      \n      let results = [];\n      let searchTerms = keyword.toLowerCase()?.split(\" \");\n      for (let i = 0; i < response.length; i++) {\n        let obj = response[i];\n        let combinedValues = this.getCombinedValuesFromColumns(obj, apiObj.field);\n        let match = searchTerms.every(term => combinedValues.includes(term));\n        if (match) {\n          results.push(obj);\n        }\n      }\n      this.noResult = results.length === 0;\n      this.finalResults = results;\n    });\n  }\n};\n// SKS27FEB Helper functions\nprivate getNestedValue(obj: any, path: string): string {\n  //SKS27FEB Convert array indexes to dot notation (e.g., [0] -> .0)\n  const processedPath = path.replace(/\\[(\\d+)\\]/g, '.$1');\n  const parts = processedPath.split('.');\n  let current = obj;\n  \n  for (const part of parts) {\n    if (!current || typeof current !== 'object') return '';\n    current = current[part];\n  }\n  \n  return current !== null && current !== undefined \n    ? String(current).toLowerCase().trim() \n    : '';\n}\n\nprivate getCombinedValuesFromColumns(obj: any, columns: string[]): string {\n  const values: string[] = [];\n  // SKS28FEB check if columns is an array\n  if(typeof columns === 'string' && !Array.isArray(columns)  ) {\n    columns = [columns];\n  }\n  \n  for (const column of columns) {\n    const value = this.getNestedValue(obj, column);\n    if (value) {\n      values.push(value);\n    }\n  }\n  \n  return values.join(' ');\n}\n// SKS27FEB get value from data specific column\npublic getValues(element: any, columns: any): any {\n  const result: any = {};\n  // SKS28FEB check if columns is an array\n  if(typeof columns === 'string' && !Array.isArray(columns)  ) {\n    columns = [columns];\n  }\n  columns.forEach((column) => {\n    let tempElement = element;\n    let flds = column?.split('.');\n    for (let i = 0; i < flds.length; i++) {\n      let splitFlds = flds[i]?.split('[');\n      if (splitFlds.length === 1) {\n        tempElement = tempElement[flds[i]] || '';\n      } else {\n        let index = Number(splitFlds[1]?.split(']')[0]);\n        tempElement = tempElement[splitFlds[0]]?.[index] || '';\n      }\n    }\n    result[column] = tempElement;\n  });\n\n  return result;\n}\n// SKS27FEB column value get funtion\ngetKeys(obj: any): string[] {\n  return Object.keys(obj);\n}\n  public clickItem(event) {\n    // console.log('inside clickItem of ' + JSON.stringify(event, null, 2));\n    // MSM-27MAR25 Ensure ques.subText is always an object by parsing it if it's a string\n    if(this.apiMeta){\n      this.apiMeta = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);\n      let apiObj: any = this.apiMeta;\n    \n    // let apiObj: APIMeta = JSON.parse(this.apiMeta);\n    this.filterName = event[apiObj.defaultField || apiObj.field[0] || apiObj.field]; //SKS27FEB defaultField is used for showing a search field input if field have array of data\n    let change = new ChangeWrapper(); // ChangeWrapper = JSON.parse('{}');\n    change.fromQuestionId = this.id;\n    change.valueObj = event;\n    change.field = apiObj.field;\n    this.searchValueChange.emit(change);\n  }\n  }\n  //RS 03FEB2025\n  // Resets component state when the component is destroyed\n  ngOnDestroy(): void { this.resetComponentState();  }\n}\n    ","<!-- // VD 12Jun24 - readonly change-->\n<div id=\"autocomplete-input\"> <!-- SKS5NOV25 search icon -->\n  <input #auto id=\"searchbox-style\"\n          (blur)=\"clearList()\"\n          [(ngModel)]=\"filterName\"\n          type=\"text\"\n          name=\"name\"\n          [readOnly]=\"readOnly\"\n          [placeholder]=\"placeHolderText\"\n          style=\"margin: 0 !important; padding-right: 30px;\"\n          class=\"searchInput she-line-input form-control\"\n          (focusin)=\"getSourceDataLocal($event)\"\n          (input)=\"getSourceDataLocal($event)\">\n  <div id=\"selectList\" style=\"position: absolute;position: absolute;background: white;z-index: 2;\">\n  <div *ngIf=\"finalResults.length > 0 && showSuggestion\"\n    style=\"max-height: 20vh;border: 1px solid #d2d4d6;overflow: scroll; min-width:100px\"\n       class=\"suggestions-container\">\n      <!-- HA 20DEC23 Uncommented the logic -->\n       <!-- VD 03May- search changes -->\n      <div *ngFor=\"let item of finalResults\" (click)='clickItem(item)' class=\"hoover\">\n        <!-- VD 26Jun24 - id condition removed -->\n          <div class=\"grid-x align-middle\" style=\"\">\n              <div *ngIf=\"item.thumbnail\" class=\"cell shrink\" style=\"width: 60px; margin-right: 1.6rem;\">\n                  <img [src]=\"item.thumbnail\" style=\"width: 60px;\" alt=\"\">\n              </div>\n              <div class=\"cell auto\" style=\"text-align: left; padding:5px 8px 0 8px; display: flex; gap: 5px; \">\n                <!--// VD 26JUN24 - pipe changes -->\n                <!-- RS 29JAN25 -->\n                <div style=\"display: flex;\" *ngFor=\"let key of getKeys(getValues(item, SearchItem))\">\n                  <div>\n                    {{ getValues(item, SearchItem)[key] }}\n                  </div>\n                </div>                \n              </div>\n          </div>\n      </div>\n      <!-- HA 20DEC23 For Commented this for future purpose -->\n      <!-- <table class=\"table table-striped table-bordered\">\n          <thead>\n            <tr>\n              <th>{{ 'firstName' | i18n:i18nService.currentLanguage }}</th>\n              <th>{{ 'lastName' | i18n:i18nService.currentLanguage }}</th>\n              <th>{{ 'division' | i18n:i18nService.currentLanguage }}</th>\n              <th>{{ 'numberPlate' | i18n:i18nService.currentLanguage }}</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr *ngFor=\"let item of finalResults\" (click)='clickItem(item)'>\n              <td>{{ item.firstName }}</td>\n              <td>{{ item.lastName }}</td>\n              <td>{{ item.division }}</td>\n              <td>{{ item.numberPlate }}</td>\n            </tr>\n          </tbody>\n        </table> -->\n  </div>\n</div>\n\n","import { Component, OnInit,Output,EventEmitter, Input ,ElementRef, OnChanges,SimpleChanges} from '@angular/core';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\nimport { SharedService } from '../../services/shared.service';\nimport { DataService } from '../../services/data.service';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n@Component({\n  selector: 'app-file-upload',\n  templateUrl: './file-upload.component.html',\n  styleUrls: ['./file-upload.component.css']\n})\nexport class FileUploadComponent implements OnInit,OnChanges {\n  @Output() selectedFileData = new EventEmitter<any[]>();\n  @Output() deletedFileData = new EventEmitter<any>();\n  @Input() allFiles;\n  @Input() limitFileUploading;\n  @Input() isDeleteFileButtonVisible;\n  @Input() isShowNoFileIcon;\n  @Input() tableFile;  // file Upload from table\n  @Input() question;\n  @Input() error:any;\n//RS 09JAN2025\n  public allowedFileTypes: string[] = [];\n  public maxFileSize: number = 0;  // in bytes(Binary)\n  public maxFiles: number = 4;     // default limit\n  public validationErrors: string[] = [];\n \n\n  public selectedFileNameArray: string[] = [];\n  public copyOfInputAllFiles;\n  public copyOfFileUploadingLimit;\n  public fileUrl;\n  public showFile = false;\n  public isImage = false;\n  public fileName = '';\n  currentFile: any;\n  constructor(private SharedService: SharedService,  private dataService: DataService,private sanitizer: DomSanitizer,\n    public i18nService: I18nService\n  ) { }\n  //RS 09JAN2025\n  ngOnInit() {\n    this.initializeFileConfigs();\n   }\n  // VD 03May24 file upload fix\n  // onFileUpload(event: any) {\n  //   const fileUploaderElement: HTMLElement = document.getElementById(\n  //     'fileUpload'\n  //   ) as HTMLElement;\n  //   fileUploaderElement.click();\n  // }\n\n  ngOnChanges(simpleChanges: SimpleChanges) {\n    console.log('simple changes', simpleChanges);\n    if (simpleChanges.allFiles) {  //SKS5NOV25\n      this.copyOfInputAllFiles = simpleChanges.allFiles.currentValue || [];\n    }\n\n    if (simpleChanges.limitFileUploading) {\n      this.copyOfFileUploadingLimit = simpleChanges.limitFileUploading?.currentValue;\n    }\n\n  }\n\n  //RS 09JAN2025 Initializes file upload settings (allowed types, max size, and max files) by parsing metadata from fieldsMeta\n   initializeFileConfigs() {\n    if (this.question?.fieldsMeta) {\n      try {\n        // SKS20MAR25 check if question fieldsmeta is string\n        const metaData =  typeof this.question['fieldsMeta'] === 'object'  ?  this.question['fieldsMeta'] || [] : JSON.parse( this.question['fieldsMeta']) ;\n        const fileConfig = metaData[0];  // Get first config object\n        if (fileConfig) {\n          this.allowedFileTypes = fileConfig.allowedTypes || [];\n          this.maxFileSize = fileConfig.maxFileSize || 0;\n          this.maxFiles = fileConfig.maxFiles || 5;\n        }\n      } catch (error) {\n        console.error('Error parsing fieldsMeta:', error);\n      }\n    }\n  }\n\n  uploadMultipleFiles(event: any) {\n    console.log('File uploader initiated');\n    this.validationErrors = []; // RS 17JAN2025 Clear previous errors\n    let inputFiles: any[] = this.copyOfInputAllFiles ? this.copyOfInputAllFiles : [];\n    const selectedFileData = [];\n    const uploadedFiles = event.target.files;\n\n    // RS 09JAN2025 Check file count limit\n    if (uploadedFiles.length + inputFiles.length > this.maxFiles) {\n      this.validationErrors.push(`Maximum ${this.maxFiles} files allowed`);\n      event.target.value = '';\n      return;\n    }\n\n    const readFilesPromises = [];\n\n    for (const eachUploadedFile of uploadedFiles) {\n      const file: File = eachUploadedFile;\n      \n      //RS 09JAN2025 Check file type\n      const fileExt = '.' + file.name.split('.').pop().toLowerCase();\n      if (this.allowedFileTypes.length > 0 && !this.allowedFileTypes.includes(fileExt)) {\n        this.validationErrors.push(`File type ${fileExt} not allowed. Allowed types: ${this.allowedFileTypes.join(', ')}`);\n        continue;\n      }\n\n      //RS 09JAN2025 Check file size\n      if (this.maxFileSize > 0 && file.size > this.maxFileSize) {\n        this.validationErrors.push(`File \"${file.name}\" exceeds size limit of ${this.maxFileSize / 1048576}MB`);\n        continue;\n      }\n\n      if (!this.validationErrors.length) {\n        const format = fileExt.substring(1);\n        const fileReadPromise = new Promise<void>((resolve, reject) => {\n          const reader = new FileReader();\n          reader.readAsDataURL(file);\n  \n          reader.onload = () => {\n            const fileData = {\n              doc: reader.result,\n              name: file.name,\n              type: file.type,\n              format,\n              size: file.size, // RS 17JAN2025 \n              id: null,\n            };\n  \n            selectedFileData.push(fileData);\n            inputFiles.push(fileData);\n            resolve();\n          };\n  \n          reader.onerror = () => {\n            reject();\n            this.validationErrors.push(`Error reading file \"${file.name}\"`);// RS 17JAN2025 \n          };\n        });\n        readFilesPromises.push(fileReadPromise);     \n    }\n  }\n    if (readFilesPromises.length > 0) {\n      // Wait for all promises to resolve\n      Promise.all(readFilesPromises).then(() => {\n        this.copyOfInputAllFiles = inputFiles;\n        console.log('uploadedFiles', inputFiles);\n        this.selectedFileData.emit(inputFiles);\n      }).catch(() => {\n        console.error('Error reading files');\n      });\n    } else {\n      console.warn('You can upload max 5 files');\n      // this.toastr.warning(TOASTER_MESSAGES.MAX_FIVE_FILES, TOASTER_MESSAGES.WARNING_TITLE);\n    }\n  \n    event.target.value = '';\n  }\n  \n\n  // uploadMultipleFiles(event: any) {\n  //   console.log('File uploader initiated');\n  //   let inputFiles: any[] = this.copyOfInputAllFiles ? this.copyOfInputAllFiles : [];\n  //   const selectedFileData = [];\n  //   const uploadedFiles = event.target.files;\n  //   if (uploadedFiles.length + inputFiles.length <= this.copyOfFileUploadingLimit) {\n  //     for (const eachUploadedFile of uploadedFiles) {\n  //       const reader = new FileReader();\n  //       const file: File = eachUploadedFile;\n  //       const format = file.name.split('.')[1];\n  //       reader.readAsDataURL(file);\n  //       reader.onload = () => {\n  //         selectedFileData.push({\n  //           doc: reader.result,\n  //           name: file.name,\n  //           type: file.type,\n  //           format,\n  //           id: null,\n  //         });\n  //         inputFiles.push({\n  //           doc: reader.result,\n  //           name: file.name,\n  //           type: file.type,\n  //           format,\n  //           id: null,\n  //         });\n  //       };\n  //     }\n  //   } else {\n  //     console.warn('You can upload max 5 files');\n  //     //this.toastr.warning(TOASTER_MESSAGES.MAX_FIVE_FILES, TOASTER_MESSAGES.WARNING_TITLE);\n  //   }\n  //   event.target.value = '';\n  //   this.copyOfInputAllFiles = inputFiles;\n  //   console.log('uploadedFiles',inputFiles);\n  //   this.selectedFileData.emit(inputFiles);\n  // }\n\n\n  deleteFile(currentFileIndex) {\n        const deletedFileName = this.selectedFileNameArray.splice(currentFileIndex, 1);\n        const deletedFile = this.copyOfInputAllFiles.splice(currentFileIndex, 1);\n        console.log('emit', deletedFile[0]);\n        this.deletedFileData.emit(deletedFile[0]);\n        this.selectedFileData.emit(this.copyOfInputAllFiles);\n  }\n\n\n// VD 20May24 - preview changes\n// RS 09DEC24 Changed keys\n  viewFile(currentFile) {\n    this.currentFile = currentFile;\n    this.showFile = true;\n    console.log(currentFile);\n    // AP-25MAR25 Ensure subText is parsed into an object if it's not already\n    this.question['subText'] = typeof this.question?.subText === 'object' ? this.question?.subText : JSON.parse(this.question['subText'] || {});\n    if(this.question.subText != undefined) {\n      let fileMeta = this.question.subText;\n      let endpoint = fileMeta.endpoint;\n      let queryParameter = fileMeta.queryParameter;\n        let file = currentFile;\n          if(endpoint){\n            const fullEndPoint = endpoint + '?'+ queryParameter + '=' + file[queryParameter];\n            if(fullEndPoint){\n              this.dataService.apiResponse(fullEndPoint).subscribe((apiResponse) => {\n                if(apiResponse){\n                  this.handleFileContent(apiResponse);\n                }\n              })\n         }\n       }\n    }else {\n        this.viewLocalFile()\n    }\n  }\n\n// // VD 03Aug24 process local preview \n  viewLocalFile(){\n    if(this.currentFile){\n      this.setFileUrl(this.currentFile?.doc);\n      this.fileName = this.currentFile.name;\n      this.isImage = this.currentFile.type.startsWith('image/');\n    }\n\n  }\n\n \n  handleFileContent(fileResponse: any) {\n    const byteArray = new Uint8Array(fileResponse.content.data);\n    const blob = new Blob([byteArray], { type: fileResponse.type });\n    const url = window.URL.createObjectURL(blob);\n    this.setFileUrl(url);\n    this.isImage = false;\n    if(fileResponse.name){\n      this.fileName = fileResponse.name;\n      const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];\n      const fileExtension = fileResponse.name.split('.').pop()?.toLowerCase();\n      this.isImage = imageExtensions.includes(fileExtension || '');\n    }\n  }\n\n  setFileUrl(url: string) {\n    this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);\n  }\n\n  getDocIcon(docName) {\n    const ext = docName.split('.').pop(-1);\n    return this.SharedService.docIcon(ext);\n  }\n\n  close(){\n    this.showFile = false;\n    this.fileName = '';\n    this.fileUrl = '';\n    this.isImage = false;\n    if (this.fileUrl) {\n      URL.revokeObjectURL(this.fileUrl);\n    }\n  }\n\n}\n","<div class=\"row\" style=\"margin: 0;\">\n  <div class=\"col-md-12\" *ngIf=\"!isDeleteFileButtonVisible\" style=\"text-align: left;\">\n    <!-- HA 19DEC23 For translation -->\n    <label class=\"she-label\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n  </div>\n\n  <div class=\"col-lg-5 document-cnt m-t-10 m-b-10\"\n    *ngFor=\"let eachFile of copyOfInputAllFiles; let currentFileIndex = index\">\n     <div *ngIf=\"!tableFile\"> <!-- (click)=\"viewFile(eachFile)\"  -->\n      <div class=\"col-lg-3 document_image\">\n        <img [src]=\"getDocIcon(eachFile?.name)\">\n    </div>\n      <div class=\"col-lg-9 document_name\">\n        {{eachFile?.name}}\n      </div>\n      <div class=\"document_delete\" (click)=\"deleteFile(currentFileIndex);$event.stopPropagation()\" *ngIf=\"isDeleteFileButtonVisible\">\n        <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/bin.svg\">\n      </div>\n      <!-- VD 20May24 - preview changes-->\n      <div class=\"preview-icon\" (click)=\"viewFile(eachFile)\" *ngIf=\"isDeleteFileButtonVisible\">\n        <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/icons8-eye-24.png\">\n      </div>\n    </div>\n    <div *ngIf=\"tableFile\" class=\"row\" style=\"cursor: pointer;\">\n      <div class=\"col-lg-3 document_image\">\n          <img [src]=\"getDocIcon(eachFile?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n      </div>\n      <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n          {{eachFile?.name}}\n      </div>\n  </div>\n  </div>\n  <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"copyOfInputAllFiles?.length === 0 && isShowNoFileIcon\">\n    <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n  </div>\n</div>\n\n<div class=\"col-lg-6\" style=\"padding:0;margin-top: 10px;\">\n  <label class=\"custom-file\" *ngIf=\"isDeleteFileButtonVisible && !tableFile\">\n    <!-- HA 19DEC23 For translation -->\n    <!-- VD 03May24 file upload fix-->\n    <!-- RS 09JAN2025 -->\n    <button [class]=\"error ? 'she-btn-primary-bordered Invalid' : 'she-btn-primary-bordered'\" style=\"width:275px;\" (click)=\"fileInput.click()\"[ngClass]=\"{ 'btn-disabled': copyOfInputAllFiles?.length >= maxFiles }\" [disabled]=\"copyOfInputAllFiles?.length >= maxFiles\">Choose Files</button>\n    <input #fileInput type=\"file\"  name=\"fileUpload\" multiple=\"multiple\"  [accept]=\"allowedFileTypes.join(',')\"\n    style=\"display:none;\"\n    (change) = uploadMultipleFiles($event)\n    />\n  </label>\n\n  <!-- RS 09JAN2025 -->\n  <!-- Error messages section -->\n  <div class=\"file-constraints\" *ngIf=\"validationErrors.length > 0\">\n    <small class=\"text-danger\">\n      <div *ngFor=\"let error of validationErrors\">{{ error }}</div>\n    </small>\n  </div>\n\n<!-- HA 19DEC23 For translation -->\n  <label *ngIf=\"tableFile\" class=\"btn btn-primary\">\n    {{ 'uploadFile' | i18n:i18nService.currentLanguage }}\n    <input id=\"file\" style=\"display: none;\" type=\"file\" class=\"form-control\" (change)= uploadMultipleFiles($event) />\n  </label>\n  <!-- <span class=\"error-msg\" *ngIf=\"(formControl?.documents?.touched ||        formControl?.documents?.dirty) &&\n  formControl?.documents?.errors?.required\">\n    {{LM_POLICY_VALIDATION_MESSAGE.REQUIRED}}\n  </span> -->\n  <!-- RS 09DEC24 Changed keys--> \n</div>\n<div *ngIf=\"error\" class=\"error-msg\" style=\"margin-top: 10px;\">{{question?.errorMessage}}</div>\n<div class=\"nxt-file-overlay\" *ngIf=\"showFile\">\n  <div class=\"nxt-file-map-modal\">\n    <div class=\"nxt-file-model-content\">\n      <div class=\"nxt-file-model-header\">\n        <h4>{{fileName}}</h4>\n        <button class=\"close-button\" (click)=\"close()\">X</button>\n      </div>\n      <ng-container *ngIf=\"isImage; else otherFile\">\n        <img [src]=\"fileUrl\" class=\"img-fluid\" alt=\"File Preview\" />\n      </ng-container>\n      <ng-template #otherFile>\n        <iframe [src]=\"fileUrl\" width=\"100%\" height=\"500px\"></iframe>\n      </ng-template>\n    </div>\n  </div>\n</div>\n\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ChangeService } from '../../services/change.service';\ndeclare var $: any;\n\n@Component({\n  selector: 'app-dependent-table',\n  templateUrl: './dependent-table.component.html',\n  styleUrls: ['./dependent-table.component.css']\n})\nexport class DependentTableComponent implements OnInit {\n\n  @Input() alertMessage:any;\n\n  ValueLength:boolean;\n  Value:any;\n  errorObj:any;\n\n  constructor(private changeService: ChangeService) { \n    this.changeService.changeField$.subscribe((data)=>{\n      this.dependentData(data);\n    })\n  }\n\n  ngOnInit(): void {\n    this.errorObj = JSON.parse(this.alertMessage);\n  }\n\n  dependentData(data:any){\n    let existingData = data.Permits;\n    if(existingData.length !== 0) {\n      this.ValueLength = true;\n      this.Value = existingData;\n      $(\"#zoneIcon\").css(\"border\", \"3px solid rgb(252, 35, 27)\");\n     } else {\n      this.ValueLength = false;\n      this.Value = [];\n      $(\"#zoneIcon\").css(\"border\", \"3px solid rgb(12, 190, 12)\");\n     }\n  }\n\n}\n","<div  class=\"dropdown\" style=\"cursor: pointer;\">\n    <span id=\"zoneIcon\">  \n      <img src=\"./../../../../../assets/images/permit_icons/zone.png\" style=\"height: 35px; margin-left: 0px;\" alt=\"adv-search\">\n    </span>\n    <div class=\"dropdown-content\" style=\"margin-left: -300px; min-width: 415px;\">\n      <div class=\"col-lg-12\">\n        <table class=\"table table-striped table-bordered\">\n          <tbody *ngIf=\"!ValueLength\">\n            <tr>\n              <td colspan=\"3\" class=\"permission_yes\" style=\"color: rgb(12, 190, 12); text-align: center\">\n                <span><b>{{ errorObj.noPermits }}</b></span>\n                <span>{{ errorObj.noActive }}</span>\n              </td>\n            </tr>\n          </tbody>\n          <tbody id=\"zoneDetails\" *ngIf=\"ValueLength\">\n            <tr>\n              <td colspan=\"3\" class=\"permission_yes\" style=\"color: rgb(252, 35, 27); text-align: center\">\n                <span><b>{{ errorObj.permits }} ({{Value.length}})</b></span>\n                <span>{{ errorObj.active }}</span>\n              </td>\n            </tr>\n            <tr *ngFor=\"let item of Value\" >\n              <td>\n                <span>{{item?.permit_type}}-{{item?.ref_no}} - {{item?.status}} - {{item?.end_date}}</span>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n    </div>\n    </div>\n  </div>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\nimport { TableWrapper } from '../../model/tableWrapper';\nimport { Question } from '../../wrapper';\n\n@Component({\n  selector: 'app-table-appendix',\n  templateUrl: './table-appendix.component.html',\n  styleUrls: ['./table-appendix.component.css']\n})\nexport class TableAppendixComponent implements OnInit {\n  @Input() question: Question\n  @Output() valueChange: EventEmitter<any> = new EventEmitter<any>();\n\n  tableInfo: TableWrapper;\n  tableHeader: any;\n  tableData: any;\n  addRowColSpan: number;\n  tableAppendix:any;\n  dropDownApi :any;\n  dropDownData:any;\n\n  constructor(public i18nService: I18nService) { }\n  // RS 09DEC24 Changed keys\n  ngOnInit(): void {\n    if(this.question.subText != undefined) {\n      // SKS20MAR25 check if question fieldsmeta is string\n      this.tableInfo =  typeof this.question['fieldsMeta'] === 'object'  ?  this.question['fieldsMeta'] || [] : JSON.parse( this.question['fieldsMeta']) ;\n\n      this.tableHeader = this.tableInfo.header;\n      this.tableData = this.tableInfo.data;\n      this.tableAppendix = this.tableInfo.tableAppendix;\n      this.dropDownApi = JSON.stringify(this.tableInfo['dropdownApi']);\n      this.dropDownData = this.tableInfo['dropdownData'];\n      const combinedData = {\n        tableData: this.tableData,\n        tableAppendix: null\n      };\n      if (this.tableAppendix) {\n        combinedData.tableAppendix = this.tableAppendix;\n      }\n      this.valueChange.emit(combinedData);\n\n      if(this.tableData?.addRow) {\n        this.addRowColSpan = this.tableHeader.length - 2;\n      }\n    }\n  }\n\n  addRow(): void {\n    let newItem = JSON.parse(JSON.stringify(this.tableInfo.newRowDefault));\n    const updatedTableData = [...this.tableData, newItem];\n    this.tableData = updatedTableData;\n    this.emitTableDataValue(updatedTableData,this.tableAppendix);\n  }\n\n  updateLabel(rowIndex: number, label: string, value: string): void {\n    this.tableData[rowIndex][label] = value;\n    this.tableData[rowIndex].name = value?.replace(/\\s+/g, '').toLowerCase();\n    this.emitTableDataValue(this.tableData,this.tableAppendix);\n  }\n  \n  updateNumber(item: any, label: string, value: string){\n    item.value[label] = value;\n    this.emitTableDataValue(this.tableData,this.tableAppendix);\n  }\n\n  updateToggle(item: any, header: string, value: any){\n    let label = header['fieldName'];\n    let toggleValue = header['toggleValue'];\n    if(label == 'test1'){\n      item.value[label][1] = value ? toggleValue[0] : toggleValue[1];\n    }else{\n      item.value[label] = value ? toggleValue[0] : toggleValue[1];\n    }\n    this.emitTableDataValue(this.tableData,this.tableAppendix);\n  }\n  updateDropDown(item: any, label: string, value: any){\n    item.value[label] = value.valueObj['value'];\n    this.emitTableDataValue(this.tableData,this.tableAppendix);\n  }\n\n  updateCheckText(item: any, label: string, value: any){\n    item.value[label][0] = value;\n    this.emitTableDataValue(this.tableData,this.tableAppendix);\n  }\n\n  updateTableAppendix(item: any, label: string, value: any){\n    let toggleValue = item.value[0].toggleValue;\n    if(item.key == 'dropDownData'){\n      item.value[0].value[label] = value.valueObj['empIdName'];\n    }else if(item.key == 'toggleData'){\n      item.value[0].value[label] = value ? toggleValue[0] : toggleValue[1];\n    }else{\n      item.value[0].value[label] = value;\n    }\n    this.emitTableDataValue(this.tableData,this.tableAppendix);\n  }\n\n  emitTableDataValue(updatedTableData: any[],tableAppendix:any): void {\n    const combinedData = {\n      tableData: updatedTableData,\n      tableAppendix: null\n    };\n    if(tableAppendix){\n      combinedData.tableAppendix = this.tableAppendix;\n    }\n    this.valueChange.emit(combinedData);\n  }\n\n  //This function finds the index of the current test in the list of test keys and returns the key of the previous test. \n  // If the current test is the first one, it returns null, as there is no previous test\n  getPreviousTestKey(item: any, currentTest: string): string {\n    const testKeys = Object.keys(item.value);\n    const currentIndex = testKeys.indexOf(currentTest);\n  \n    if (currentIndex > 0) {\n      return testKeys[currentIndex - 1];\n    }\n\n    return null;\n  }\n\n}\n","<table class=\"table table-striped table-bordered\">\n    <thead class=\"none-border\" *ngIf=\"tableInfo.tableType === 'lockout' && tableInfo.tableHeader\">\n      <th></th>\n      <th>{{ tableInfo.tableHeader }}</th>\n      <th></th>\n    </thead>\n    <thead>\n      <th *ngFor=\"let header of tableHeader; let hi = index\" [class]=\"'col-md-' + header.size\">\n        {{ header.label }}\n      </th>\n    </thead>\n    <tbody id=\"safetyMeasuresTableBody\">\n      <tr *ngFor=\"let item of tableData; let i = index\">\n        <td *ngFor=\"let header of tableHeader; let j = index\">\n          <div *ngIf=\"header.type === 'text'\">\n            <input type=\"text\" [(ngModel)]=\"item[header.fieldName]\" [placeholder]=\"header.placeholder\" (ngModelChange)=\"tableInfo.tableType != 'lockout' ? updateLabel(i, header.fieldName, item[header.fieldName]) : updateNumber(item, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\n          </div>\n          <div *ngIf=\"header.type.includes('number')\">\n            <!-- HA 19DEC23 For translation -->\n            <input type=\"number\" [(ngModel)]=\"item.value[header.fieldName]\" [disabled]=\"item.value[getPreviousTestKey(item, header.fieldName)] === null && tableInfo.tableType != 'lockout'\" (ngModelChange)=\"updateNumber(item, header.fieldName, item.value[header.fieldName])\" placeholder=\"{{ 'enterValue' | i18n:i18nService.currentLanguage }}\" class=\"she-line-input table-input\">\n          </div>\n          <div *ngIf=\"header.type === 'dropdown'\">\n            <app-custom-dropdown [fromShengel]=\"true\" [options]=\"dropDownData\" \n            [selectedValue]=\"item.value[header.fieldName]\" [placeholder]=\"header.placeholder\"\n            (valueChange)=\"updateDropDown(item,header.fieldName,$event)\">\n            </app-custom-dropdown>\n          </div>\n          <div *ngIf=\"header.type === 'textcheckbox'\">\n            <div style=\"display: flex; justify-content: center;align-items: center;\">\n              <input type=\"text\" [(ngModel)]=\"item.value[header.fieldName][0]\" (ngModelChange)=\"updateCheckText(item, header.fieldName, item.value[header.fieldName][0])\"  style=\"width: 85px; height: 27px; text-align: center; padding: 5px; border-bottom: none; border-top: 1px solid transparent; border-right: 1px solid transparent; border-left: 1px solid transparent; background: transparent;outline: none;\">\n              <label class=\"switch2\">\n                <input  class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \n                type=\"checkbox\"\n                [checked]=\"item.value[header.fieldName][1] == header.toggleValue[0]\"/>\n                <span class=\"switch-label2\" data-on=\"Psi\" data-off=\"Bar\"></span> \n                <span class=\"switch-handle2\"></span> \n              </label> \n            </div>\n          </div>\n          <div *ngIf=\"header.type === 'labelcheckbox'\">\n            <div style=\"display: flex; justify-content: center;align-items: center;\">\n              <!-- HA 19DEC23 For translation -->\n              <span style=\"text-align:left;\">{{ 'calibrated' | i18n:i18nService.currentLanguage }}</span>\n              <label class=\"switch2\">\n                <input  class=\"switch-input2\" (change)=\"updateToggle(item,header,$event.target.checked)\" \n                type=\"checkbox\"\n                [checked]=\"item.value[header.fieldName] == header.toggleValue[0]\"/>\n                <span class=\"switch-label3\" data-on=\"Yes\" data-off=\"No\"></span> \n                <span class=\"switch-handle2\"></span> \n              </label> \n            </div>\n          </div>\n        </td>\n      </tr>\n      <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType === 'lockout'\">\n        <td colspan=\"1\">\n          <!-- HA 19DEC23 For translation -->\n          <b style=\"text-align: center; cursor: pointer;\" id=\"addSafety\"  (click)=\"addRow()\">{{ 'addMore' | i18n:i18nService.currentLanguage }} +</b>\n        </td>\n      </tr>\n      <tr *ngIf=\"tableInfo.addRow && tableInfo.tableType != 'lockout'\">\n        <td colspan=\"3\">\n          <!-- HA 19DEC23 For translation -->\n          <b>{{ 'addMore' | i18n:i18nService.currentLanguage }}</b>\n        </td>\n        <td colspan=\"2\" style=\"text-align: center; cursor: pointer;\" id=\"addSafety\"  (click)=\"addRow()\">\n          +\n        </td>\n      </tr>\n      <tr  *ngFor=\"let item of tableAppendix | keyvalue; let k = index\">\n        <td *ngFor=\"let header of tableHeader; let l = index\">\n          <div *ngIf=\"header.type === 'text'\" >\n            <input type=\"text\" [(ngModel)]=\"item.value[0][header.fieldName]\" (ngModelChange)=\"updateLabel(k, header.fieldName, item[header.fieldName])\" class=\"she-line-input table-input\">\n          </div>\n          <div *ngIf=\"header.type.includes('dropdown') && item.key == 'dropDownData'\" >\n            <!-- HA 19DEC23 For translation -->\n            <app-custom-dropdown [fromShengel]=\"true\" [apiMeta]=\"dropDownApi\" \n            [selectedValue]=\"item.value[0].value[header.fieldName]\" placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n            (valueChange)=\"updateTableAppendix(item,header.fieldName,$event)\">\n            </app-custom-dropdown>\n          </div>\n          <div *ngIf=\"header.type.includes('datetime') && item.key == 'dateData'\">\n            <input [(ngModel)]=\"item.value[0].value[header.fieldName]\" type=\"datetime-local\"\n            (ngModelChange)=\"updateTableAppendix(item,header.fieldName,$event)\"\n            placeholder=\"DD/MM/YYYY HH:MM\">\n          </div>\n          <div *ngIf=\"header.type.includes('checkbox') && item.key == 'toggleData'\">\n            <label class=\"switch2\">\n              <input  class=\"switch-input2\" (change)=\"updateTableAppendix(item,header.fieldName,$event.target.checked)\" \n              type=\"checkbox\"\n              [checked]=\"item.value[0].value[header.fieldName] == item.value[0].toggleValue[0]\"/>\n              <span class=\"switch-label3\" data-on=\"Safe\" data-off=\"Unsafe\"></span> \n              <span class=\"switch-handle2\"></span> \n            </label> \n          </div>\n          <div *ngIf=\"header.type.includes('file') && item.key == 'fileData'\">\n            <app-file-upload [limitFileUploading]=\"2\" [allFiles]=\"item.value[0].value[header.fieldName]\" [tableFile]=\"true\"\n            (selectedFileData)=\"updateTableAppendix(item ,header.fieldName, $event)\"\n            [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n          </div>\n        </td>\n      </tr>\n    </tbody>\n  </table>","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { I18nService } from '../../i18n.service';\n\n@Component({\n  selector: 'app-custom-date',\n  templateUrl: './custom-date.component.html',\n  styleUrls: ['./custom-date.component.css']\n})\nexport class CustomDateComponent implements OnInit {\n  @Input() date: string;\n  @Input() readOnly = false; // VD 12Jun24 - readonly change\n  @Input() error:any;\n  @Input() errorMessage: string;\n  @Output() dateChange: EventEmitter<any> = new EventEmitter<any>();\n  dateSelected: any;\n\n  constructor( public i18nService: I18nService) { }\n\n  ngOnInit(): void {\n    this.dateSelected = new Date(this.date);\n  }\n// VD 02Aug24 - clear input changes\n  ngOnChanges(simplechanges: SimpleChanges){\n    if(simplechanges['date']){\n      this.dateSelected = new Date(this.date);\n    }\n     \n  }\n\n  onDateChange(event: any) {\n    this.dateChange.emit(event)\n  }\n}\n","<!-- date component -->\n<!-- VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n<p>\n    <input\n      [class]=\"error ? 'invalid' : ''\"\n      [(ngModel)]=\"dateSelected\"\n      [owlDateTimeTrigger]=\"dt1\"\n      [owlDateTime]=\"dt1\"\n      [disabled]=\"readOnly\"\n      placeholder=\"DD/MM/YYYY\"\n      (input)=\"onDateChange($event)\"\n      style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n      (dateTimeChange)=\"onDateChange($event)\"\n    >\n    <owl-date-time [pickerType]=\"'calendar'\" #dt1></owl-date-time>\n  </p>\n  <span *ngIf=\"error\" class=\"error-msg\">{{errorMessage}}</span>","import { Component, EventEmitter, Input, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { I18nService } from '../../i18n.service';\n\n@Component({\n  selector: 'app-custom-time',\n  templateUrl: './custom-time.component.html',\n  styleUrls: ['./custom-time.component.css']\n})\nexport class CustomTimeComponent implements OnInit {\n  @Input() time: string;\n  @Input() readOnly = false; // VD 12Jun24 - readonly change\n  @Input() error:any;\n  @Input() errorMessage: string;\n  @Output() timeChange: EventEmitter<any> = new EventEmitter<any>();\n  timeSelected: any;\n\n  constructor(public i18nService: I18nService) { }\n\n  ngOnInit(): void {\n    if(this.time){\n      this.time = this.time['value'] ? this.time['value'] : this.time;\n      this.timeSelected = new Date(this.time);\n    }else {\n      // if no time set null value\n      this.timeSelected = null;\n    }\n  }\n\n  ngOnChanges(changes:SimpleChanges){\n    // update on changes\n    if(changes['time']){\n      if(this.time){\n        this.time = this.time['value'] ? this.time['value'] : this.time;\n        this.timeSelected = new Date(this.time);\n      }else {\n        this.timeSelected = null;\n      }\n    }\n  }\n  // VD 06Sep24 emit exact time object\n  onTimeChange(event: any) {\n    this.timeChange.emit(event?.value);\n  }\n}\n","<!-- time component -->\n<!-- // VD 12Jun24 - readonly change-->\n<!-- VD 01Aug24 - validation change-->\n  <p>\n    <input\n      [class]=\"error ? 'invalid' : ''\"\n      [(ngModel)]=\"timeSelected\"\n      [owlDateTimeTrigger]=\"dt2\"\n      [owlDateTime]=\"dt2\"\n      placeholder=\"HH:MM\"\n      [readOnly]=\"readOnly\" \n      style=\"width: 100%; height: 35px; border: none; box-shadow: none; border-bottom: 1px solid #ccc;\"\n      (dateTimeChange)=\"onTimeChange($event)\"\n    >\n    <owl-date-time [pickerType]=\"'timer'\" #dt2></owl-date-time>\n  </p>\n  <span *ngIf=\"error\" class=\"error-msg\">{{errorMessage}}</span>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\n@Component({\n  selector: 'app-custom-button',\n  templateUrl: './custom-button.component.html',\n  styleUrls: ['./custom-button.component.css']\n})\nexport class CustomButtonComponent implements OnInit {\n  //  08NOV23 - button input and outpts\n  @Input() height: string;\n  @Input() width: string;\n  @Input() textColor: string ='#fff'\n  @Input() buttonText: string;\n  @Input() value:string;\n  @Input() backgroundColor: string = '#007bff'; // Default background color\n  @Output() buttonValue = new EventEmitter<any>(); \n  constructor() { }\n\n  ngOnInit(): void {\n  }\n\n  handleClick(event){\n    this.buttonValue.emit(event);\n  }\n}\n","\n<!-- 08NOV23 - button html added-->\n<button \n[style.height]=\"height\" \n[style.color]=\"textColor\"\n[style.background-color]=\"backgroundColor\"\n[style.width]=\"width\" class=\"custom-button\"\n[value] =\"value\"\n(click)=\"handleClick(value)\"\n >{{ buttonText }}</button>\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'app-custom-model',\n  templateUrl: './custom-model.component.html',\n  styleUrls: ['./custom-model.component.css']\n})\nexport class CustomModelComponent implements OnInit {\n\n  constructor() { }\n  @Input() modalTitle: any;\n  @Input() isModalOpen = false;\n  @Input() modalSize = '';\n  @Input() saveButtonValue = 'Save';\n  @Input() modalFooter = true;\n  @Output() saveButtonEmit = new EventEmitter<any>();\n  @Output() cancelButtonEmit = new EventEmitter<any>();\n\n  onSave() {\n    this.saveButtonEmit.emit();\n  }\n\n  onCancel() {\n    this.cancelButtonEmit.emit();\n  }\n\n\n  ngOnInit(): void {\n  }\n\n  closeModal() {\n    this.cancelButtonEmit.emit(false);\n  }\n\n  saveModal() {\n    this.saveButtonEmit.emit();\n  }\n\n}\n","<div *ngIf=\"isModalOpen\" class=\"modal\" [ngClass]=\"modalSize\">\n    <div class=\"modal-content\">\n      <div class=\"modal-header\">\n        <span class=\"close\" (click)=\"onCancel()\">&times;</span>\n        <h2>{{ modalTitle }}</h2>\n      </div>\n      <div class=\"modal-body\">\n        <ng-content></ng-content>\n      </div>\n      <!-- /* VD 06Sep24 styling changes */-->\n      <div class=\"modal-footer\" *ngIf=\"modalFooter\">\n        <button (click)=\"onCancel()\">Cancel</button>\n        <button (click)=\"onSave()\">{{ saveButtonValue }}</button>\n      </div>\n    </div>\n</div>\n  ","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ChangeWrapper } from '../../model/changeWrapper';\nimport { ChangeService } from '../../services/change.service';\nimport { I18nService } from '../../i18n.service';\nimport { DataService } from '../../services/data.service';\nimport { Subscription } from 'rxjs';\nimport { APIMeta } from '../../interfaces/apimeta';\n\n@Component({\n  selector: 'app-custom-radio',\n  templateUrl: './custom-radio.component.html',\n  styleUrls: ['./custom-radio.component.css']\n})\nexport class CustomRadioComponent implements OnInit {\n\n  @Input() options: any[] = [];\n  @Input() apiMeta: string;\n  @Input() selectedValue: string;\n  @Input() progressBar: boolean;\n  @Input() id: string;\n  @Input() readOnly = false;\n  @Input() errorMessage: string;\n  @Input() error: any;\n  @Input() fromShengel: boolean = false;\n  @Input() referenceField: string;\n  @Input() token: string;\n  @Output() valueChange: EventEmitter<ChangeWrapper> = new EventEmitter<ChangeWrapper>();\n  invalidFieldIds: string[] = [];\n\n  public labelField: string;\n  public valueField: string;\n  subscription: Subscription;\n\n  constructor(\n    private changeService: ChangeService,\n    private dataService: DataService,\n    public i18nService: I18nService\n  ) {\n    this.changeService.submitValidate$.subscribe((data) => {\n      this.invalidFieldIds.push(data);\n    });\n  }\n\n  ngOnInit(): void {\n    // VD 31NOV24 null check\n    if (this.apiMeta) {\n      this.apiMeta = typeof this.apiMeta === 'object' ? this.apiMeta : JSON.parse(this.apiMeta);\n      let apiObj: any = this.apiMeta;\n      this.labelField = apiObj.field;\n\n      this.dataService.apiResponse(apiObj.endpoint)?.subscribe((apiResponse) => {\n        let responses;\n        if (apiObj.variable) {\n          responses = this.dataService.getValue(apiResponse, apiObj.variable);\n          let results = [];\n          for (let i = 0; i < responses?.length; i++) {\n            var resp = responses[i];\n            results.push(resp);\n          }\n          this.options = results;\n        } else {\n          responses = apiResponse;\n          this.options = responses;\n        }\n      });\n\n      let sourceId = apiObj.sourceQuestionId;\n      if (sourceId) {\n        this.subscription = this.changeService.changeAnnounced$.subscribe(\n          (changeValue) => {\n            if (changeValue != undefined) {\n              if (changeValue.valueObj != undefined && changeValue.fromQuestionId == apiObj.sourceQuestionId) {\n                this.selectedValue = changeValue.valueObj[apiObj.valueField];\n                let value = {};\n                value['name'] = this.selectedValue;\n                this.radioChange(value);\n              }\n              this.changeService.confirmChange(apiObj.sourceQuestionId);\n            }\n          }\n        );\n      }\n    }\n  }\n\n  radioChange(event: any) {\n    let change = new ChangeWrapper();\n    change.fromQuestionId = this.id;\n    change.valueObj = event.target?.id ? event.target?.id : '';\n    change.referenceField = this.referenceField;\n    change.selectedObj = event ? event[this.labelField] : '';\n    this.valueChange.emit(change);\n    if (event) {\n      this.invalidFieldIds = [];\n    }\n  }\n\n}\n","<!-- RS 09DEC24 Changed keys-->\n <!-- RS 019JAN25 -->\n <!-- validate for NULL  -->\n  <!-- AP-26MAR25 Set the ID dynamically -->\n   <!-- AP26MAR25  Mark as checked if it matches the selected value -->\n <div class=\"custom-radio-container\">\n  <div\n    *ngFor=\"let option of options\"\n    [class]=\"invalidFieldIds.includes(id) || error ? 'custom-radio-option invalid' : 'custom-radio-option'\"\n  >\n    <input\n      type=\"radio\"\n      [id]=\"apiMeta ? option[labelField] ?? option.value : option.value\"\n      [checked]=\"(selectedValue ?? '') == option.value\"\n      [name]=\"id\"\n      [value]=\"selectedValue\"\n      (change)=\"radioChange($event)\"\n      [disabled]=\"readOnly\"\n    />\n    <label class=\"nxt-radio-label\" [for]=\"apiMeta ? option[labelField] ?? option.value : option.value\">\n      {{ apiMeta ? option[labelField] ?? option.value : option.value }}\n    </label>\n  </div>\n  <span *ngIf=\"error || invalidFieldIds.includes(id)\" class=\"error-msg\">\n    {{ errorMessage ?? 'Invalid selection' }}\n  </span>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter, Inject, ViewChild, ChangeDetectorRef, SimpleChanges, ComponentRef, AfterViewInit } from '@angular/core';\nimport { Question, QuestionBook } from '../../wrapper';\nimport { SalesforceService } from \"../../services/salesforce.service\";\nimport { DataService } from '../../services/data.service';\nimport { ChangeService } from '../../services/change.service';\nimport { StorageService } from '../../services/storage.service';\nimport * as moment from 'moment';\nimport { ErrorWrapper } from '../../model/errorWrapper';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\nimport { DOCUMENT } from '@angular/common';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { DependencyMeta } from '../../interfaces/dependencyMeta';\nimport { APIMeta } from '../../interfaces/apimeta';\nimport { CropperPosition, Dimensions, ImageTransform } from '../../components/image-cropper/interfaces';\n\n@Component({\n  selector: 'lib-questionbook',\n  providers: [ChangeService],\n  templateUrl: './questionbook.component.html',\n  styleUrls: ['./questionbook.component.css']\n})\nexport class QuestionbookComponent implements OnInit, AfterViewInit {\n  @Input() qbItem: QuestionBook;\n  @Input() questionItem: Question;\n  @Input() translatedQuestions: any[] = []  // VD 11Jun24 - translation changes\n  @Input() questions: any[];\n  @Input() errorFieldId: any;\n  @Input() labelValue: string;\n  @Input() token: string; // VD 19JAN24 - getting token as input\n  @Output() handleDropDown: EventEmitter<any> = new EventEmitter<any>();\n  @Output() handleQuestion: EventEmitter<any> = new EventEmitter<any>(); // VD 19Jul01 - get updated question\n  @Input() dropDownData: any;\n  //@ViewChild(ComponenthostDirective, { static: true }) dynamicHost: ComponenthostDirective;\n  subQuestions: Question[];\n  selectedFileData: any[] = [];\n  loadComponent$ = new BehaviorSubject<boolean>(false);\n  // HA 28DEC23 Added styling and logics to load the book type questions \n  qbRef: QuestionBook;\n  //  HA 19DEC23 Declaration for Salesforce Styling\n  style: any;\n  langDirection = 'ltr';\n  bookStyle: any;\n  subscription: Subscription;\n  isImageEdit: boolean = false;\n  selectedImageElement: any;\n  transform: ImageTransform = {\n    translateUnit: 'px',\n    scale: 1,\n    rotate: 0,\n    flipH: false,\n    flipV: false,\n    translateH: 0,\n    translateV: 0\n  };\n  canvasRotation = 0;\n  cropper?: CropperPosition;\n  loading = false;\n  cropperMaxHeight = 0;\n  cropperMaxWidth = 0;\n  cropperMinHeight = 0;\n  cropperMinWidth = 0;\n  cropperStaticWidth = 0;\n  cropperStaticHeight = 0;\n  aspectRatio = 4 / 3;\n  roundCropper = false;\n  imageChangedEvent: Event | null = null;\n  alignImage = 'center' as const;\n  isImageHover = false;\n\n  // RS 17JAN2025\n  //Formats and returns file upload requirements from a JSON string\n  getFileRequirements(fieldsMeta: any): string {\n    try {\n      const metaData = typeof fieldsMeta === 'object'  ?  fieldsMeta : JSON.parse(fieldsMeta) ;\n      const fileConfig = metaData[0];\n\n      if (!fileConfig) return '';\n\n      const requirements = [];\n\n      if (fileConfig.allowedTypes?.length) {\n        requirements.push(`Accepted formats: ${fileConfig.allowedTypes.join(', ')}`);\n      }\n\n      if (fileConfig.maxFileSize) {\n        requirements.push(`Maximum size per file: ${fileConfig.maxFileSize / 1048576}MB`);\n      }\n\n      if (fileConfig.maxFiles) {\n        requirements.push(`Maximum number of files: ${fileConfig.maxFiles}`);\n      }\n\n      return requirements.map(req => req.trim()).join('\\n');\n    } catch (error) {\n      console.error('Error parsing fieldsMeta:', error);\n      return '';\n    }\n  }\n  @Output() hadleDropDownDependent: EventEmitter<any> = new EventEmitter();\n  // VD 06Sep24 calendar changes\n  @Output() handleCalendarDate: EventEmitter<any> = new EventEmitter();\n  @Output() handleCalendarEvent: EventEmitter<any> = new EventEmitter();\n  public bookQuestionsMap: any = new Map();\n  constructor(private sfService: SalesforceService,\n    private dataService: DataService,\n    private changeService: ChangeService,\n    private storageService: StorageService,\n    public i18nService: I18nService,\n    private cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private document: Document\n  ) {\n  }\n\n  ngOnInit(): void {\n    // VD 13Sep24 changes\n    this.processData();\n    // VD sep1324 changes - process data when databind value change\n    this.subscription = this.changeService.customChange$.subscribe(\n      (changeValue) => {\n        if (changeValue == 'dataBind') {\n          this.processData();\n        }\n      }\n    );\n  }\n\n  ngAfterViewInit() {\n    // SKS20MAR25 Ensure the child component is available before calling the method\n     // AP-26MAR25 Ensure ques.subText is always an object by parsing it if it's a string\n    //  AP-28MAR25 Add Boolean\n    setTimeout(() => {\n      this.questions.forEach(ques => {\n        let input: any;\n        if (ques.type == 'Dropdown' || ques.type == 'Radio' || ques.type == 'Location') {\n          input = {}\n          input['valueObj'] = ques.input  || ques.defaultValue || null\n          input['referenceField'] = ques.referenceField || null\n          input['fromQuestionId'] = ques.id || null\n        } else if (ques.type == 'Date' || ques.type == 'DateTime') {\n          input = {}\n          input['value'] = ques.input || ques.defaultValue || null\n        } \n        // else if (ques.type == 'List') {\n        //   input = {}\n        //   let apiObj: APIMeta = ques.subText;\n        //   ques.input = this.dataService.getValue(ques.input || ques.defaultValue || null, apiObj.defaultField || Array.isArray(apiObj.field) ? apiObj.field[0] : apiObj.field || null);\n        //  //ques['subText'] = typeof ques?.subText === 'object' ? ques?.subText : JSON.parse(ques['subText'] || {}); \n        // } \n        else if (ques.type == 'Image') {\n          input = ques.orgImageData\n        }\n        else if(ques.type === 'Boolean'){\n          ques.input = ques.input || ques.defaultValue || false;\n        }\n        else {\n          input = ques.input || ques.defaultValue || null\n        }\n        this.childEventCapture(input, ques);\n      });\n    });\n  }\n\n  // VD 13Sep24 changes\n  // RS 09DEC24 Changed keys\n  processData() {\n    //  HA 19DEC23 Logic for Question Book Styling(Slaesforce)\n    // HA 09FEB24 Added ternary\n    if (this.qbItem?.style) {\n      // HA 28DEC23 Added styling and logics to load the book type questions \n      this.qbItem.style = typeof this.qbItem.style === 'string' ? JSON.parse('' + this.qbItem?.style) : this.qbItem.style;\n      this.qbItem.style.labelClass = this.qbItem.style?.labelClass ? this.qbItem.style?.labelClass : \"\";\n      this.qbItem.style.labelStyle = this.qbItem.style?.labelStyle ? this.qbItem.style?.labelStyle : \"\";\n      this.qbItem.style.labelValueStyle = this.qbItem.style?.labelValueStyle ? this.qbItem.style?.labelValueStyle : \"\";\n      this.qbItem.style.inputClass = this.qbItem.style?.inputClass ? this.qbItem.style?.inputClass : \"\";\n      this.qbItem.style.inputStyle = this.qbItem.style.inputStyle ? this.qbItem.style?.inputStyle : \"\";\n      this.qbItem.style.bookStyle = this.qbItem.style?.bookStyle ? this.qbItem.style?.bookStyle : \"\";\n      this.qbItem.style.showLabel = this.qbItem.style?.showLabel ? this.qbItem.style?.showLabel : true;\n    }\n    else {\n      if (this.qbItem) {\n        this.qbItem.style = {\n          \"labelClass\": \"\",\n          \"labelStyle\": \"\",\n          \"labelValueStyle\": \"\",\n          \"inputClass\": \"\",\n          \"inputStyle\": \"\",\n          \"bookStyle\": \"\",\n          \"showLabel\": true,\n          \"direction\": \"ltr\",\n          \"questionStyle\": \"\"\n        };\n      }\n    }\n    this.qbItem.style.questionStyle = this.qbItem?.style?.questionStyle ? this.qbItem?.style.questionStyle : \"\";\n    this.langDirection = this.qbItem.style.direction = this.qbItem?.style?.direction ? this.qbItem?.style?.direction : 'ltr';\n    this.bookStyle = this.qbItem?.style?.bookStyle;\n    this.questions.forEach(element => {\n      var htmlElement = element?.questionText;\n      var textOnly = htmlElement?.replace(/<[^>]*>/g, '')\n      element.questionText = textOnly;\n      //  HA 19DEC23 Logic for Question Styling(Slaesforce)\n      // HA 28DEC23 Added styling and logics to load the book type questions \n      if (element.type === 'Book') {\n        if (element['qbReferenceQuestions']) {\n          var qb = typeof element['qbReferenceQuestions'] === 'object'  ?  element['qbReferenceQuestions'] : JSON.parse( element['qbReferenceQuestions']) ;\n          if (qb['questionbook'].style) {\n            qb['questionbook'].style = typeof qb['questionbook'].style === 'string' ? JSON.parse('' + qb['questionbook'].style) : qb['questionbook'].style;\n          }\n          else {\n            qb['questionbook'].style = this.qbItem.style;\n          }\n\n          // Book type question styling\n          qb['questionbook'].style.labelClass = qb['questionbook'].style?.labelClass ? qb['questionbook'].style?.labelClass : \"\";\n          qb['questionbook'].style.labelStyle = qb['questionbook'].style?.labelStyle ? qb['questionbook'].style?.labelStyle : \"\";\n          qb['questionbook'].style.labelValueStyle = qb['questionbook'].style?.labelValueStyle ? qb['questionbook'].style.labelValueStyle : \"\";\n          qb['questionbook'].style.inputClass = qb['questionbook'].style?.inputClass ? qb['questionbook'].style?.inputClass : \"\";\n          qb['questionbook'].style.inputStyle = qb['questionbook'].style?.inputStyle ? qb['questionbook'].style?.inputStyle : \"\";\n          qb['questionbook'].style.bookStyle = qb['questionbook'].style?.bookStyle ? qb['questionbook'].style?.bookStyle : \"\";\n          qb['questionbook'].style.showLabel = qb['questionbook'].style?.showLabel ? qb['questionbook'].style?.showLabel : true;\n          qb['questionbook'].style.questionStyle = qb['questionbook'].style?.questionStyle ? qb['questionbook'].style?.questionStyle : \"\";\n          qb['langDirection'] = qb['questionbook'].style.direction ? qb['questionbook'].style?.direction : this.langDirection;\n\n          // Loop for each question in the book\n          qb['questionbook']?.subQuestions?.forEach(questionFromBook => {\n            questionFromBook.style = questionFromBook.style ? questionFromBook.style : qb['questionbook'].style;\n            questionFromBook.style.labelClass = questionFromBook.style?.labelClass ? questionFromBook.style?.labelClass : \"\";\n            questionFromBook.style.labelStyle = questionFromBook.style?.labelStyle ? questionFromBook.style?.labelStyle : \"\";\n            questionFromBook.style.labelValueStyle = questionFromBook.style?.labelValueStyle ? questionFromBook.style?.labelValueStyle : \"\";\n            questionFromBook.style.inputClass = questionFromBook.style?.inputClass ? questionFromBook.style?.inputClass : \"\";\n            questionFromBook.style.inputStyle = questionFromBook.style?.inputStyle ? questionFromBook.style?.inputStyle : \"\";\n            questionFromBook.style.bookStyle = questionFromBook.style?.bookStyle ? questionFromBook.style?.bookStyle : \"\";\n            questionFromBook.style.showLabel = questionFromBook.style?.showLabel ? questionFromBook.style?.showLabel : true;\n            questionFromBook.style.questionStyle = questionFromBook.style?.questionStyle ? questionFromBook.style?.questionStyle : \"\";\n            questionFromBook['langDirection'] = questionFromBook.style?.direction ? questionFromBook.style?.direction : this.langDirection;\n          });\n          element['qbItem'] = qb['questionbook'];\n        }\n      }\n      element.style = element.style ? typeof element.style === 'string' ? JSON.parse('' + element?.style) : element?.style : this.qbItem?.style;\n\n      element.style.labelClass = element.style?.labelClass ? element.style?.labelClass : \"\";\n      element.style.labelStyle = element.style?.labelStyle ? element.style?.labelStyle : \"\";\n      element.style.labelValueStyle = element.style?.labelValueStyle ? element.style.labelValueStyle : \"\";\n      element.style.inputClass = element.style?.inputClass ? element.style?.inputClass : \"\";\n      element.style.inputStyle = element.style.inputStyle ? element.style?.inputStyle : \"\";\n      element.style.bookStyle = element.style?.bookStyle ? element.style?.bookStyle : \"\";\n      element.style.showLabel = element.style?.showLabel ? element.style?.showLabel : true;\n      element.style.questionStyle = element.style?.questionStyle ? element.style?.questionStyle : \"\";\n\n      element['langDirection'] = element.style?.direction ? element.style?.direction : this.langDirection;\n\n\n      //VD 02Aug24 dependent field show/hide changes\n      // RS 09DEC24 Changed keys\n       // AP-26MAR25 Ensure ques.subText is always an object by parsing it if it's a string\n      if (element.referenceField) {\n        element.dependentRef = element.referenceField;\n      }\n      if (element.subText) {\n        element['subText'] = typeof element?.subText === 'object' ? element?.subText : JSON.parse(element['subText'] || {});\n        let dependencyObj: DependencyMeta = element.subText;\n        if (dependencyObj.isDependentField) {\n          element.isHidden = true;\n        }\n        // VD 07Aug24 - isDependentField change\n        this.subscription = this.changeService.changeAnnounced$.subscribe(\n          (changeValue) => {\n            // VD 20Aug24 - isDependentField change\n            if (changeValue != undefined && dependencyObj.isDependentField) {\n              if (changeValue.valueObj != undefined && changeValue.fromQuestionId == dependencyObj.sourceQuestionId) {\n                // element.isHiddenField = true;\n                if (dependencyObj.dependentValue == changeValue.valueObj) {\n                  element.isHidden = false;\n                  element.input = '';\n                  element.selectedValue = undefined;\n                  if (element.dependentRef == changeValue.referenceField) {\n                    element.referenceField = changeValue.referenceField;\n                  }\n                } else {\n                  element.isHidden = true;\n                  element.input = '';\n                  element.selectedValue = undefined;\n                  this.hideDependentElements(element.id);\n                  // if there is no dependent selection remove the reference\n                  if (element.dependentRef == changeValue.referenceField) {\n                    element.referenceField = '';\n                  }\n                }\n              }\n            }\n          }\n        );\n        this.storageService.update(element);\n      }\n      // sunday comment\n      // if (element.type === 'Calendar') {\n      //   this.openCalendarComponent(element);\n      // }\n    });\n    this.subQuestions = [];\n    this.setSubQuestions(this.questions);\n    this.processTranslatedQuestions();\n  }\n  // VD 07Aug24 - isDependentField change\n   // AP-26MAR25 Ensure ques.subText is always an object by parsing it if it's a string\n  hideDependentElements(elementId) {\n    let elementsToHide = this.questions.filter(el => {\n      if (el.subText) {\n        el['subText'] = typeof el?.subText === 'object' ? el?.subText : JSON.parse(el['subText'] || {});\n        let depObj = el.subText;\n        return depObj.sourceQuestionId == elementId;\n      }\n      return false;\n    });\n\n    elementsToHide.forEach(el => {\n      el.isHidden = true;\n      el.input = '';\n      el.selectedValue = undefined;\n      this.storageService.update(el);\n      // Recursively hide elements dependent on this one\n      this.hideDependentElements(el.id);\n    });\n  }\n\n  clearSQError(quesId) {\n    var sqList = this.subQuestions?.filter((item) => item.id == quesId);\n    for (var sq of sqList) {\n      sq.error = null;\n    }\n  }\n  // VD 11Jun24 - translation changes\n  processTranslatedQuestions() {\n    if (this.translatedQuestions && this.translatedQuestions.length > 0) {\n      this.questions.forEach((orgQuestion: any) => {\n        this.translatedQuestions.forEach((transQuestion: any) => {\n          if (orgQuestion.uniqueIdentifier == transQuestion.identifier) {\n            orgQuestion.questionText = transQuestion.label;\n            orgQuestion.question = transQuestion.placeHolder;\n          }\n        });\n      });\n      //  console.log('originalQuestion' + this.questions);\n      //  console.log(this.questions);\n    }\n  }\n\n  setSubQuestions(records) {\n    this.subQuestions.push(records);\n  }\n\n  // Capture and Process Child Event\n  childEventCapture(event, ques?: any) {\n    let dropdownData = {};\n    this.changeService.announceChange(event);\n    if (ques) {\n      if (ques.type == 'Dropdown' || ques.type == 'Radio') {\n        // HA 19JAN24 Correction of dropdown values\n        ques.selectedObj = event.valueObj ? event.valueObj : null;\n        ques.input = event.selectedObj ? event.selectedObj : event.valueObj;\n        ques.selectedValue = event.valueObj ? event.valueObj : null;\n        // emit the dropdown data to parent\n        dropdownData['event'] = event.valueObj;\n        dropdownData['ques'] = ques;\n        if (dropdownData['event']) {\n          this.handleDropDown.emit(dropdownData);\n        }  // VD 21DEC23 - dependent field change\n      } else if (ques.type == 'Location') {\n        ques.input = event.valueObj;\n        ques.selectedValue = event.valueObj? event.valueObj.address : null;\n      } else if (ques.type == 'File') {\n        ques.input = this.selectedFileData = event;\n\n        // Handle file validation errors\n        if (Array.isArray(event) && event.length === 0) {\n          // No files uploaded when required\n          ques.error = ques.Error_Message__c ? new ErrorWrapper() : null;\n        } else if (Array.isArray(event) && event.length > 0) {\n          // Files were successfully uploaded\n          ques.error = null;\n        }\n\n        // If there were validation errors from the file upload component\n        if (event?.validationErrors && event.validationErrors.length > 0) {\n          ques.error = new ErrorWrapper();\n          ques.error.message = event.validationErrors[0]; // Use the first validation error\n        }\n\n      } else if (ques.type == 'Date' || ques.type == 'DateTime') { // HA 24JAN24 Converting Date and DateTime to UTC\n        if (event.value) {\n          let d = new Date(event.value);\n          if (!isNaN(d?.getTime())) { //SKS23APR25 Check for valid date\n              let utcString = d?.toISOString();\n              ques.input = utcString;\n          } else {\n              ques.input = '';\n          }\n        } else {\n          ques.input = '';\n        }\n      } else if (ques.type == 'List') {\n        // VD 20Aug24 handling the list type  handle multiple object values\n        ques.input = this.dataService.getValue(event?.valueObj, event?.field);\n      }//RS 06JAN25\n      else if (ques.type === 'RichTextArea') {\n        ques.input = event || null;\n      }//  AP-28MAR25 Add Boolean\n       else if(ques.type === 'Boolean'){\n        ques.input = event;\n        ques.boolean = event;\n      }\n      // AP-10APR25 Number\n      // AP19PAR25 -if change else is\n      else if (ques.type === 'Number') {\n        ques.input = Number(event); \n      }\n      else {\n        ques.input = event;\n      }\n      //RS 06JAN25\n      // Validate error message - modified to handle rich text\n      const hasError = ques.Error_Message__c && (\n        (ques.type === 'File' && ques.input.length === 0) ||\n        (ques.type === 'RichTextArea' && (!ques.input || ques.input.trim() === '')) ||\n        (ques.type !== 'File' && ques.Type__c !== 'RichTextArea' && !ques.input)\n      );\n      ques.error = hasError ? new ErrorWrapper() : null;\n      ques.error = hasError ? new ErrorWrapper() : null;\n      // Once the right value is stored in ques.input store the ques (with input) in storageService\n      this.storageService.update(ques);\n      // VD 19Jul01 - get updated question\n      this.handleQuestion.emit(ques);\n    }\n  }\n  deleteFile(fileData: any) {\n    console.log('fileDATA', fileData)\n  }\n  getDropDown(event: any) {\n    this.hadleDropDownDependent.emit(event);\n  }\n  // VD 06Sep24 calendar changes\n  getCurrentCalendar(event: any) {\n    this.handleCalendarDate.emit(event);\n  }\n\n  getCalendarEvent(event: any) {\n    if (event) {\n      this.handleCalendarEvent.emit(event);\n    }\n  }\n\n  // VD 06Sep24 remove the special charecters and tags \n  // from the questionText\n  removeCharacters(questionText: string) {\n    let updatedText = questionText?.replace(/<[^>]*>/g, '');\n    return updatedText;\n  }\n\n  // sunday comment\n  // openCalendarComponent(ques) {\n  //   const viewContainerRef = this.dynamicHost.viewContainerRef;\n  //   if(viewContainerRef){\n  //     viewContainerRef.clear();\n  //     const componentRef = viewContainerRef.createComponent(CustomCalendarComponent);\n  //     componentRef.instance.question = ques;\n  //     componentRef.instance.dateSelected.subscribe((event: any) => this.getCurrentCalendar(event));\n  //     componentRef.instance.eventSelected.subscribe((event:any) => this.getCalendarEvent(event))\n  //   }\n  // }\n\n  isCalendarModalOpen = false;\n  calendarModalTitle: any;\n  calendarModalSize: any;\n  calendarSaveButtonValue: any;\n  referenceQuestions = [];\n  qbRefrenceBook: any;\n  modalCalendarModalFooter: any;\n\n  openCalendarModal(event) {\n    this.isCalendarModalOpen = true;\n    this.qbRefrenceBook = event.qbRefrenceBook;\n    this.referenceQuestions = event.referenceQuestions;\n    this.calendarModalTitle = event.modalTitle;\n    this.calendarModalSize = event.modalSize;\n    this.calendarSaveButtonValue = event.saveButtonValue;\n    this.modalCalendarModalFooter = event.modalFooter;\n  }\n\n\n  onCalendarModalSave() {\n    this.changeService.dataChanges('calendar-modal-save');\n  }\n\n\n  handleQuestionEvent(event) {\n    console.log('handle question here');\n  }\n\n  closeCalendarModal(event) {\n    this.isCalendarModalOpen = false;\n  }\n\n  // SKS25MAR25 image add\n  async fileChangeEvent(ques: any, event: any): Promise<void> {\n    const file = event.target.files[0];\n    if (file) {\n      try {\n        const imageData = await this.readFileAsDataURL(file);\n        ques.imageData = imageData;\n        ques.orgImageData = imageData;\n        // Initialize logo size if not already set\n        if (!ques.imageSize) {\n          ques.imageSize = { width: 150, height: 150 };\n        }\n\n        await this.childEventCapture(imageData, ques);\n      } catch (error) {\n        console.error(\"Error reading file:\", error);\n      }\n    }\n  }\n\n  private readFileAsDataURL(file: File): Promise<string> {\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.onload = () => resolve(reader.result as string);\n      reader.onerror = (error) => reject(error);\n      reader.readAsDataURL(file);\n    });\n  }\n  async onImageEdit(ques: any) {\n    this.isImageEdit = true;\n    this.selectedImageElement = ques;\n    console.log(\"onImageEdit\")\n  }\n  async onImageDelete(ques: any) {\n    try {\n      ques.imageData = '';\n      ques.orgImageData = '';\n      // Initialize logo size if not already set\n      if (!ques.imageSize) {\n        ques.imageSize = { width: 150, height: 150 };\n      }\n      await this.childEventCapture(ques.imageData, ques);\n    } catch (error) {\n      console.error(\"Error reading file:\", error);\n    }\n  }\n\n  // SKS25MAR25 image edit functions\n  flipHorizontal() {\n    this.transform = {\n      ...this.transform,\n      flipH: !this.transform.flipH\n    };\n  }\n\n  flipVertical() {\n    this.transform = {\n      ...this.transform,\n      flipV: !this.transform.flipV\n    };\n  }\n\n  resetImage() {\n    this.canvasRotation = 0;\n    this.cropper = undefined;\n    this.transform = {\n      translateUnit: 'px',\n      scale: 1,\n      rotate: 0,\n      flipH: false,\n      flipV: false,\n      translateH: 0,\n      translateV: 0\n    };\n  }\n\n  zoomOut() {\n    this.transform = {\n      ...this.transform,\n      scale: this.transform.scale! - .1\n    };\n  }\n\n  zoomIn() {\n    this.transform = {\n      ...this.transform,\n      scale: this.transform.scale! + .1\n    };\n  }\n  rotateLeft() {\n    this.loading = true;\n    setTimeout(() => { // Use timeout because rotating image is a heavy operation and will block the ui thread\n      this.canvasRotation--;\n      this.flipAfterRotate();\n    });\n  }\n\n  rotateRight() {\n    this.loading = true;\n    setTimeout(() => {\n      this.canvasRotation++;\n      this.flipAfterRotate();\n    });\n  }\n\n  moveLeft() {\n    this.transform = {\n      ...this.transform,\n      translateH: this.transform.translateH! - 1\n    };\n  }\n\n  moveRight() {\n    this.transform = {\n      ...this.transform,\n      translateH: this.transform.translateH! + 1\n    };\n  }\n\n  moveDown() {\n    this.transform = {\n      ...this.transform,\n      translateV: this.transform.translateV! + 1\n    };\n  }\n\n  moveUp() {\n    this.transform = {\n      ...this.transform,\n      translateV: this.transform.translateV! - 1\n    };\n  }\n  private flipAfterRotate() {\n    const flippedH = this.transform.flipH;\n    const flippedV = this.transform.flipV;\n    this.transform = {\n      ...this.transform,\n      flipH: flippedV,\n      flipV: flippedH,\n      translateH: 0,\n      translateV: 0\n    };\n  }\n  async imageCropped(event: any) {\n    try {\n      const base64 = await this.convertBlobToBase64(event.objectUrl);\n      this.selectedImageElement.imageData = base64;\n      await this.childEventCapture(base64, this.selectedImageElement);\n      // console.log('CROPPED', event);\n    } catch (error) {\n      console.error(\"Error in imageCropped:\", error);\n    }\n  }\n\n\n  cropperReady(sourceImageDimensions: Dimensions) {\n    // console.log('Cropper ready', sourceImageDimensions);\n    this.loading = false;\n  }\n  // SKS25MAR25 blob to base 64 converter\n  convertBlobToBase64(objectUrl: string): Promise<string> {\n    return fetch(objectUrl)\n      .then(response => response.blob())\n      .then(blob => {\n        return new Promise((resolve, reject) => {\n          const reader = new FileReader();\n          reader.readAsDataURL(blob);\n          reader.onloadend = () => resolve(reader.result as string);\n          reader.onerror = error => reject(error);\n        });\n      });\n  }\n  closeModal() {\n    this.isImageEdit = false;\n  }\n\n  // SKS28MAR25 for nested book read\n  readQuestions(qbId: any, ques:any) {\n    let questions = [];\n    // Added ternary to avoid undefined\n    for (var sq in ques.bookQuestionsMap[qbId].subQuestions) {\n      let q: Question = ques.bookQuestionsMap[qbId].subQuestions[sq];\n      // if question is there process\n      if (q) {\n          questions.push(q);\n      }\n    }\n    return questions;\n  }\n}\n","<!-- HA 20DEC23 Book Style from salesforce -->\n<!-- HA 28DEC23  Removed IsShengel(removal of shengel values applies for this reason) and direct styling of books to avoid styling issues-->\n<!-- HA 18JAN24  Added class for styling -->\n<div [style]=\"bookStyle\" class=\"content-box form-group\">\n    <div class=\"form-row\">\n        <!-- HA 20DEC23 Directive and Question Style from salesforce -->\n        <!-- RA09DEC24 Changed keys-->\n        <div [class]=\"'col-lg-' + ques.size + ' paddingnone'\" *ngFor=\"let ques of questions;let i = index\"\n            [id]=\"ques.id\" [dir]=\"ques.langDirection\" [style]=\"ques?.style?.questionStyle\">\n            <!-- Sub Question Label -->\n            <!-- HA 20DEC23 Label Style from salesforce -->\n            <!-- VD 09May24 is hide field change-->\n            <div *ngIf=\"!ques.isHidden\" class=\"nxtInputContainer\">\n                <div *ngIf=\"ques.type === 'DateTime'\">\n\n                </div>\n                <!-- VD 20JUN24 - help text changes-->\n                <!-- VD 01Aug24 - validation change-->\n                <!-- // VD 02Aug24 - label value style-->\n                 <!-- AP-28MAR25 Show label if enabled and not a Boolean type -->\n                <div [ngClass]=\"{ down2: qbItem?.progressBar }\"\n                    *ngIf=\"ques.style?.showLabel ? (ques.style?.showLabel && ques.type !== 'Boolean'): (ques.style?.showLabel !== false && ques.type !== 'Boolean')\"\n                    [style]=\"ques.style?.labelStyle\">\n                    <span [class]=\"'dis-flex shengel-myt-font3 myt-font7 '\" [style]=\"ques.style?.labelValueStyle\">{{\n                        removeCharacters(ques?.questionText) }}\n                        <div *ngIf=\"ques.isOptional\" style=\"color: red;\">*</div>\n                        <!-- SKS13MAR25 only show on file type -->\n                        <!-- RS 17JAN2025 -->\n                        <!-- Displays icons with tooltips help text -->\n                        <div *ngIf=\"ques.questionText && ques?.helpText && ques.type === 'File'\" class=\"icon\"\n                            [matTooltip]=\"ques?.helpText\" matTooltipClass=\"white-tooltip\">i</div>\n                        <!-- RS 17JAN2025 -->\n                        <!--  Displays icons with tooltips for file requirements -->\n                        <div class=\"icon\" *ngIf=\"ques.fieldsMeta && ques.type === 'File'\"\n                            [matTooltip]=\"getFileRequirements(ques.fieldsMeta)\" matTooltipClass=\"white-tooltip\"\n                            style=\"margin-left: 4px;\">i</div>\n                    </span>\n                </div>\n                <!-- // VD 12Jun24 - readonly change-->\n                <!-- DateTime -->\n                <div *ngIf=\"ques.type === 'DateTime'\">\n                    <app-custom-date-picker [minDate]=\"ques.minDate\" [error]=\"ques.error\"\n                        [errorMessage]=\"ques.errorMessage\" [readOnly]=\"ques.isReadOnly\" [date]=\"ques.input\"\n                        (dateChange)=\"childEventCapture($event, ques)\">\n                    </app-custom-date-picker>\n                </div>\n\n                <!-- Date-->\n                <div *ngIf=\"ques.type === 'Date'\">\n                    <app-custom-date [date]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.errorMessage\"\n                        [readOnly]=\"ques.isReadOnly\" (dateChange)=\"childEventCapture($event, ques)\">\n                    </app-custom-date>\n                </div>\n\n                <!-- Time-->\n                <div *ngIf=\"ques.type === 'Time'\">\n                    <app-custom-time [time]=\"ques.input\" [error]=\"ques.error\" [errorMessage]=\"ques.errorMessage\"\n                        [readOnly]=\"ques.isReadOnly\" (timeChange)=\"childEventCapture($event, ques)\">\n                    </app-custom-time>\n                </div>\n                <!-- calendar  -->\n                <div *ngIf=\"ques.type === 'Calendar'\">\n                    <app-custom-calendar [question]=\"ques\" (eventSelected)=\"getCalendarEvent($event)\"\n                        (dateSelected)=\"getCurrentCalendar($event)\" (openModal)=\"openCalendarModal($event)\"\n                        (closeModal)=\"closeCalendarModal($event)\"></app-custom-calendar>\n                    <!-- model used in calendar component -->\n                    <app-custom-model *ngIf=\"isCalendarModalOpen\" [modalTitle]=\"calendarModalTitle\"\n                        [isModalOpen]=\"isCalendarModalOpen\" [modalSize]=\"calendarModalSize\"\n                        [saveButtonValue]=\"calendarSaveButtonValue\" [modalFooter]=\"modalCalendarModalFooter\"\n                        (saveButtonEmit)=\"onCalendarModalSave()\" (cancelButtonEmit)=\"closeCalendarModal($event)\">\n                        <lib-questionbook [qbItem]=\"qbRefrenceBook\" [questions]=\"referenceQuestions\"\n                            (handleQuestion)=\"handleQuestionEvent($event)\"></lib-questionbook>\n                    </app-custom-model>\n                </div>\n                <!-- Text -->\n                <div *ngIf=\"ques.type === 'Text' || ques.type === 'Link'\">\n                    <app-custom-input [value]=\"ques.input\" [ngClassValue]=\"{\n                        'dis-flex dt-line date-line bookText boxoutline myt-font1': qbItem.progressBar,\n                        textBox: !qbItem.progressBar\n                    }\" [question]=\"ques\" [readOnly]=\"ques.isReadOnly\" [idValue]=\"ques.trackingId\"\n                        [focusEvent]=\"clearSQError(ques.id)\" [error]=\"ques.error\" [placeholder]=\"ques.question\"\n                        (inputValue)=\"childEventCapture($event, ques)\">\n                    </app-custom-input>\n                </div>\n\n                <!-- for pick location -->\n                <!--   VD 21DEC23 - dependent field change -->\n                <div *ngIf=\"ques.type === 'Location'\">\n                    <!-- HA10012024 Added Api key as input -->\n                    <app-pick-location [apiKey]=\"qbItem['apiKey']\" [address]=\"ques.selectedValue\" [question]=\"ques\"\n                        (locationSelected)=\"childEventCapture($event, ques)\">\n                    </app-pick-location>\n                </div>\n\n                <!-- for  text area   -->\n                 <!-- AP-02APR25 - default placeholder empty string -->\n                <div *ngIf=\"ques.type === 'TextArea'\">\n                    <app-custom-text-area [question]=\"ques\" [readOnly]=\"ques.isReadOnly\" [value]=\"ques.input\" [rows]=\"3\"\n                        [error]=\"ques.error\" [placeholder]=\"ques.question || ''\"\n                        (textareaValueChange)=\"childEventCapture($event, ques)\"></app-custom-text-area>\n                </div>\n                <!-- RS 06JAN25 -->\n                <!-- for rich text editor -->\n                <div *ngIf=\"ques.type === 'RichTextArea'\">\n                    <app-custom-rich-text [question]=\"ques\" [readOnly]=\"ques.isReadOnly\" [value]=\"ques.input || ''\"\n                        [error]=\"ques.error\" [placeholder]=\"ques.question\"\n                        (textValueChange)=\"childEventCapture($event, ques)\">\n                    </app-custom-rich-text>\n                </div>\n\n                <!-- SKS25MAR25 Image -->\n                <div *ngIf=\"ques.type === 'Image'\" (mouseenter)=\"isImageHover = true;\"\n                    (mouseleave)=\"isImageHover = false;\">\n                    <div *ngIf=\"isImageHover\" style=\"display: flex; justify-content: end;\">\n                        <svg *ngIf=\"!ques.isReadOnly\" (click)=\"onImageEdit(ques)\" width=\"16\" height=\"16\"\n                            viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <path\n                                d=\"M11.1067 6.07174L9.92833 4.8934L2.16667 12.6551V13.8334H3.345L11.1067 6.07174ZM12.285 4.8934L13.4633 3.71507L12.285 2.53674L11.1067 3.71507L12.285 4.8934ZM4.035 15.5001H0.5V11.9642L11.6958 0.768403C11.8521 0.612177 12.064 0.524414 12.285 0.524414C12.506 0.524414 12.7179 0.612177 12.8742 0.768403L15.2317 3.1259C15.3879 3.28218 15.4757 3.4941 15.4757 3.71507C15.4757 3.93604 15.3879 4.14796 15.2317 4.30424L4.03583 15.5001H4.035Z\"\n                                fill=\"#6C757D\" />\n                        </svg>\n                        <svg *ngIf=\"!ques.isReadOnly\" (click)=\"onImageDelete(ques)\" width=\"16\" height=\"16\"\n                            viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                            <path\n                                d=\"M14 3.98726C11.78 3.76726 9.54667 3.65393 7.32 3.65393C6 3.65393 4.68 3.7206 3.36 3.85393L2 3.98726\"\n                                stroke=\"#FF2C10\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                            <path\n                                d=\"M5.6665 3.31362L5.81317 2.44028C5.91984 1.80695 5.99984 1.33362 7.1265 1.33362H8.87317C9.99984 1.33362 10.0865 1.83362 10.1865 2.44695L10.3332 3.31362\"\n                                stroke=\"#FF2C10\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                            <path\n                                d=\"M12.5667 6.09375L12.1334 12.8071C12.06 13.8537 12 14.6671 10.14 14.6671H5.86002C4.00002 14.6671 3.94002 13.8537 3.86668 12.8071L3.43335 6.09375\"\n                                stroke=\"#FF2C10\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                            <path d=\"M6.88647 11.0004H9.10647\" stroke=\"#FF2C10\" stroke-width=\"1.5\"\n                                stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n                            <path d=\"M6.3335 8.33325H9.66683\" stroke=\"#FF2C10\" stroke-width=\"1.5\" stroke-linecap=\"round\"\n                                stroke-linejoin=\"round\" />\n                        </svg>\n                    </div>\n                    <img *ngIf=\"ques.isReadOnly\" [src]=\"ques.imageData\" />\n                    <div *ngIf=\"!ques.isReadOnly\" class=\"logo-container\">\n                        <!-- Logo preview area -->\n                        <div class=\"logo-preview\" *ngIf=\"ques.input\">\n                            <img [src]=\"ques.imageData\" />\n                        </div>\n\n                        <!-- Upload button -->\n                        <div *ngIf=\"!ques.imageData\" class=\"logo-upload-placeholder\">\n                            <label for=\"logo-upload-{{i}}\" class=\"logo-upload-label\">\n                                <img src=\"../assets/icons/Image.svg\" alt=\"Upload\" />\n                                <span>Upload Image</span>\n                            </label>\n                            <input type=\"file\" id=\"logo-upload-{{i}}\" accept=\"image/*\"\n                                (change)=\"fileChangeEvent(ques, $event)\" style=\"display: none;\" />\n                        </div>\n                    </div>\n                </div>\n\n                <!-- Email -->\n                <div *ngIf=\"ques.type === 'Email'\">\n                    <input type=\"email\" readOnly=\"ques.isReadOnly\" [(ngModel)]=\"ques.input\" class=\"she-line-input form-control\"\n                    [id]=\"ques.id\" required=\"\" (focus)=\"clearSQError(ques.id)\" style.border-color=\"{{ ques.error ? 'red' : '' }}\"\n                    placeholder=\"{{ ques.question }}\" />\n                </div>\n\n                <!--AP-24MAR25 Number -->\n                 <!-- AP-02APR25 - default placeholder empty string -->\n                 <div *ngIf=\"ques.type === 'Number'\">\n                    <input type=\"number\" [attr.readonly]=\"ques.isReadOnly ? true : null\"[value]=\"ques.input\" class=\"she-line-input form-control\"\n                      [id]=\"ques.id\" required (focus)=\"clearSQError(ques.id)\" [style.borderColor]=\"ques.error ? 'red' : ''\"\n                      [placeholder]=\"ques.question || ''\" (input)=\"childEventCapture($event.target.value, ques)\" />\n                  </div>                  \n                \n                <!-- AP-28MAR25 Boolean -->\n                <div *ngIf=\"ques.type === 'Boolean'\" class=\"boolean-question\">\n                    <div>{{ ques.questionText }}</div>\n                    <input type=\"checkbox\" [attr.disabled]=\"ques.isReadOnly ? true : null\" [checked]=\"ques.input\"\n                        [id]=\"ques.id\" required (focus)=\"clearSQError(ques.id)\"\n                        [style.borderColor]=\"ques.error ? 'red' : ''\"\n                        (change)=\"childEventCapture($event.target.checked, ques)\" />                  \n                </div>                \n\n                <!-- SKS21MAR25 line -->\n                <div *ngIf=\"ques.type === 'Line'\">\n                    <hr class=\"custom-line\" style=\"display: inline-flex\" />\n                </div>\n                <!-- Table -->\n                <!-- RS 03FEB2025 -->\n                <!-- Added handleTableSave to handle table data persistence, enabling saving table contents to local storage when save button is clicked -->\n                <div *ngIf=\"ques.type === 'Table'\" class=\"\">\n                    <!-- <app-custom-table [question]=\"ques\" [apiMeta]=\"ques.subText\"\n                        (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.id)\">\n                    </app-custom-table> -->\n                    <!-- SKS13MAR25 data table change -->\n                    <nxt-datatable isEditRow isDeleteRow actionButton isButtons [question]=\"ques\" from=\"formBuilder\"\n                        (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.id)\" [apiMeta]=\"ques.subText\" [tableConfig]=\"ques.tableConfig\"\n                        tableId=\"\" direction=\"ltr\" tableWidth=\"auto\">\n                    </nxt-datatable>\n                </div>\n\n                <!-- Table Appendix -->\n                <div *ngIf=\"ques.type === 'TableAppendix'\" class=\"\">\n                    <app-table-appendix [question]=\"ques\"\n                        (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.id)\">\n                    </app-table-appendix>\n                </div>\n                <!-- list -->\n                <!-- VD 20Aug24 used correct attribute -->\n                  <!-- AP-02APR25 - default placeholder empty string -->\n                   <!-- AP-16APR25 Format the input value before binding it to filterName -->\n                <div *ngIf=\"ques.type === 'List'\" class=\"\">\n                    <lib-search-box [question]=\"ques\" [readOnly]=\"ques.isReadOnly\" [apiMeta]=\"ques.subText\"\n                        [id]=\"ques.id\" [placeHolderText]=\"ques.question || ''\" [filterName]=\"ques.input\" \n                        (searchValueChange)=\"childEventCapture($event, ques)\">\n                    </lib-search-box>\n                </div>\n\n                <!-- Dropdown -->\n                <!-- HA 09FEB24 Added condition of sqOption to the dropdown -->\n                <div *ngIf=\"ques?.type === 'Dropdown' && ques?.options\" class=\"\">\n                    <!-- HA 20DEC23 For Translation --> <!-- VD 19JAN24 - getting token as input -->\n                    <!-- AP 10FEB25 - Dynamically binding selectedValue based on isShengel condition -->\n                    <app-custom-dropdown [options]=\"ques.options\" [token]=\"token\" [apiMeta]=\"ques.subText\"\n                        [id]=\"ques.id\" [selectedValue]=\"qbItem.isShengel ? ques.input : ques.selectedValue\"\n                        placeholder=\"---{{'select' | i18n:i18nService.currentLanguage}}---\"\n                        [errorMessage]=\"ques.errorMessage\" [error]=\"ques.error\" [referenceField]=\"ques.referenceField\"\n                        [readOnly]=\"ques.isReadOnly\" [question]=\"ques\"\n                        (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.id)\">\n                    </app-custom-dropdown>\n                    <i class=\"fa fa-check \" aria-hidden=\"true\" *ngIf=\"ques?.input?.length > 0\"></i>\n                </div>\n                <!-- // VD 02Aug24 custom-radio component -->\n                <div *ngIf=\"ques.type === 'Radio' && ques?.options\" class=\"\">\n                    <app-custom-radio [options]=\"ques.options\" [token]=\"token\" [apiMeta]=\"ques.subText\" [id]=\"ques.id\"\n                        [selectedValue]=\"ques.selectedValue\" [errorMessage]=\"ques.errorMessage\" [error]=\"ques.error\"\n                        [referenceField]=\"ques.referenceField\" [readOnly]=\"ques.isReadOnly\"\n                        (valueChange)=\"childEventCapture($event, ques); clearSQError(ques.id)\">\n                    </app-custom-radio>\n                </div>\n\n                <!-- Attachment / Files -->\n                <div *ngIf=\"ques.type === 'File'\" class=\"\">\n                    <app-file-upload [limitFileUploading]=\"5\" [error]=\"ques.error\" [question]=\"ques\"\n                        [allFiles]=\"ques.input\" [tableFile]=\"false\" (selectedFileData)=\"childEventCapture($event, ques)\"\n                        (deletedFileData)=\"deleteFile($event)\" [isDeleteFileButtonVisible]=\"true\"></app-file-upload>\n                </div>\n                <div *ngIf=\"ques.type === 'PopUpMessage'\" class=\"\">\n                    <app-dependent-table [alertMessage]=\"ques.errorMessage\">\n                    </app-dependent-table>\n                </div>\n                <div *ngIf=\"ques.type === 'Label'\" class=\"\">\n                    <app-custom-label [labelStyle]=\"ques.title\" [labelValue]=\"ques.question\">\n                    </app-custom-label>\n                </div>\n                <!-- // VD 02Aug24 image component -->\n                <!-- <div *ngIf=\"ques.type === 'Image'\" class=\"\">\n                    <app-custom-image [question]=\"ques\">\n                    </app-custom-image>\n                </div> -->\n                <!-- 08NOV23 - button type question added -->\n                <!-- Button -->\n                <div *ngIf=\"ques.type === 'Button'\" class=\"\">\n                    <app-custom-button [height]=\"'50px'\" [width]=\"'150px'\" [buttonText]=\"ques?.question\"\n                        [value]=\"ques?.question\" (buttonValue)=\"childEventCapture($event, ques)\">\n                    </app-custom-button>\n                </div>\n                <!-- HA 20DEC23  This is to load book type questions-->\n                <div *ngIf=\"ques.type === 'Book'\">\n                    <!-- HA 09FEB24 Added ternary operator -->\n                    <lib-questionbook [qbItem]=\"ques.qbItem\" [labelValue]=\"labelValue\"\n                        [questions]=\"readQuestions(ques.qbReference, ques.qbReferenceQuestions)\"\n                        (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<!--SKS25MAR25 Modal Overlay -->\n<div class=\"modal-overlay\" *ngIf=\"isImageEdit\">\n    <div class=\"modal-content\">\n        <span class=\"close-button\" (click)=\"closeModal()\">×</span>\n\n        <!-- Image Editor -->\n        <div *ngIf=\"selectedImageElement?.type === 'Image'\">\n            <image-cropper *ngIf=\"selectedImageElement.imageData\" [imageBase64]=\"selectedImageElement.orgImageData\"\n                [disabled]=\"false\" [alignImage]=\"alignImage\" [roundCropper]=\"roundCropper\" [backgroundColor]=\"'white'\"\n                imageAltText=\"Alternative image text\" [allowMoveImage]=\"false\" [hideResizeSquares]=\"false\"\n                [canvasRotation]=\"canvasRotation\" [aspectRatio]=\"aspectRatio\" [containWithinAspectRatio]=\"false\"\n                [maintainAspectRatio]=\"false\" [cropperStaticWidth]=\"cropperStaticWidth\"\n                [cropperStaticHeight]=\"cropperStaticHeight\" [cropperMinWidth]=\"cropperMinWidth\"\n                [cropperMinHeight]=\"cropperMinHeight\" [cropperMaxWidth]=\"cropperMaxWidth\"\n                [cropperMaxHeight]=\"cropperMaxHeight\" [resetCropOnAspectRatioChange]='true' [(cropper)]=\"cropper\"\n                [(transform)]=\"transform\" [onlyScaleDown]=\"true\" output=\"blob\" format=\"png\"\n                (imageCropped)=\"imageCropped($event)\" (cropperReady)=\"cropperReady($event)\">\n            </image-cropper>\n\n            <!-- Controls -->\n            <div *ngIf=\"selectedImageElement.imageData\" class=\"controls\">\n                <div class=\"cursor-pointer logo-icon\" (click)=\"rotateLeft()\" title=\"Rotate Left\">⟲</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"rotateRight()\" title=\"Rotate Right\">⟳</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"zoomOut()\" title=\"Zoom Out\">-</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"zoomIn()\" title=\"Zoom In\">+</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"moveLeft()\" title=\"Move Left\">←</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"moveRight()\" title=\"Move Right\">→</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"moveUp()\" title=\"Move Up\">↑</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"moveDown()\" title=\"Move Down\">↓</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"flipHorizontal()\" [class.enabled]=\"transform.flipH\"\n                    title=\"Flip Horizontally\">↔</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"flipVertical()\" [class.enabled]=\"transform.flipV\"\n                    title=\"Flip Vertically\">↕</div>\n                <div class=\"cursor-pointer logo-icon\" (click)=\"resetImage()\" title=\"Reset\">×</div>\n            </div>\n        </div>\n    </div>\n</div>\n\n<!-- 06-09-24 for calendar type-->\n<!-- <ng-template dynamicComponentHost></ng-template> -->","import {\n  Component,\n  OnInit,\n  OnChanges,\n  Inject,\n  Input,\n  Output,\n  EventEmitter,\n  ViewEncapsulation,\n  ElementRef,\n  SimpleChanges,\n} from \"@angular/core\";\nimport { SalesforceService } from \"../../services/salesforce.service\";\nimport { DataService } from '../../services/data.service';\nimport { ActivatedRoute, Params } from \"@angular/router\";\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\nimport { ActionMeta } from '../../interfaces/actionMeta';\nimport { Question } from \"../../wrapper\";\nimport { BookletWrapper } from \"../../model/bookletWrapper\";\nimport { StorageService } from '../../services/storage.service';\nimport { ChangeService } from \"../../services/change.service\";\n// HA 19DEC23 imported translation service\nimport { I18nService } from \"../../i18n.service\";\nimport { Observable } from \"rxjs\";\nimport { HttpClient } from \"@angular/common/http\";\n\n@Component({\n  selector: 'lib-booklet',\n  templateUrl: './booklet.component.html',\n  styleUrls: ['./booklet.component.css']\n})\nexport class BookletComponent implements OnInit {\n  @Input() bookletId: string;\n  @Input() serv: string;\n  @Input() tkn: string;\n  @Input() bookletJSON: any;\n  @Input() dropdownDependentData: any;\n  @Input() labelValue: string;\n  @Input() token: string;\n  @Input() languageCode: string;  // VD 11Jun24 - translation changes\n  @Input() fieldRestrictions: any; // VD 12Jun24 - field permission change\n  @Input() from: any; // Form Builder dependent change\n  @Input() apiUrl: any; // AP-16APR25 Input property to receive the API URL from the parent component\n\n  @Output() handleBookletActionEvent: EventEmitter<any> = new EventEmitter();\n  @Output() handlePage: EventEmitter<any> = new EventEmitter();\n  @Output() hadleDropDownDependent: EventEmitter<any> = new EventEmitter();\n  // VD 06Sep24 calendar changes\n  @Output() handleCalendarDate: EventEmitter<any> = new EventEmitter();\n  @Output() handleCalendarEvent: EventEmitter<any> = new EventEmitter();\n\n  public nxtBooklet: BookletWrapper;\n\n  public booklet: any[] = [];\n  public abItem: any = {};\n  public actions: ActionMeta[] = [];\n  public bookQuestionsMap: any = new Map();\n  public translateMap: any = new Map();  // VD 11Jun24 - translation changes\n  private sqOptions: any = new Map();\n  public isAnswerFlag: boolean = false;\n  public spinnerName: string;\n  public spinnerType: string;\n  // HA 19DEC23 langDirection variable is created to assign the direction as class\n  langDirection = 'ltr'; // HA 28DEC23 making ltr as default direction\n  answerList = []; // HA 11-JAN-24 Answerlist to store the minimal value\n  @Input() dataBind: any;// HA 18-JAN-24 To insert the endpoint value to the question\n  allEvents: any[] = [];  // VD 06Sep24 calendar changes\n\n  constructor(\n    private sfService: SalesforceService,\n    private dataService: DataService,\n    private storageService: StorageService,\n    private route: ActivatedRoute,\n    private sanitizer: DomSanitizer,\n    private changeService: ChangeService,\n    el: ElementRef,\n    public i18nService: I18nService,\n    private http: HttpClient\n  ) {\n    this.spinnerName = \"sp1\";\n    this.spinnerType = \"ball-spin-clockwise\";\n  }\n\n  ngOnInit(): void {\n    //  VD 12Jan24 fieldRestrictions formate \n    //   {\n    //     \"fields\" : {\n    //         \"transQb-01\" : \"readOnly\",\n    //         \"TransFir02\" : \"\",\n    //         \"TransLast03\" : \"readOnly\",\n    //         \"bk2-q2\" : \"hide\"\n    //     }\n    //  }\n\n    // HA 18-JAN-24 Dummy Static data for testing\n    // this.dataBind = {\n    //   \"_id\": \"659ed002ed51bb8061544255\",\n    //   \"companyId\": \"5ullh1BWpYqnvzKh9L\",\n    //   \"name\": \"Al Yasmine\",\n    //   \"code\": \"check\",\n    //   \"status\": \"In-Progress\",\n    //   \"createdAt\": \"2024-01-10T17:12:34.686Z\",\n    //   \"updatedAt\": \"2024-01-10T19:53:08.135Z\",\n    //   \"__v\": 0,\n    //   \"owner\": \"check\",\n    //   \"customer\": \"check\",\n    //   \"dati\": \"2024-01-23T18:30:00.000Z\",\n    //   \"timi\": \"2024-01-23T18:30:00.000Z\",\n    // \"fName\": \"Haider\",\n    // \"lName\": \"Ali\",\n    // \"defaultApp\": \"NXT\",\n    // \"email\": \"haider@gmail.com\",\n    // \"location\": {address: \"107, Ashok Nagar, Kadugondanahalli, Bengaluru, Karnataka 560045, India\",\n    //   latitude: 13.0200575,\n    //   longitude: 77.6129816},\n    // \"location\": \"107, Ashok Nagar, Kadugondanahalli, Bengaluru, Karnataka 560045, India\",\n    // \"textArea\": \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum\",\n    // };\n    this.processBooklet();\n    //AP-16APR25 // Get the dynamic API URL and pass it to the service method\n    let apidata =  this.apiUrl;\n    this.dataService.apikey(apidata);\n  }\n  // VD NOV23 - update the json data when bookletId and bookletJSON changes\n  ngOnChanges(simplechanges: SimpleChanges) {\n    // HA 23JAN24 To avoid undefined error\n    if (simplechanges['bookletId'] || (simplechanges['bookletJSON'] && (simplechanges['bookletJSON'].currentValue != null || simplechanges['bookletJSON'].currentValue != undefined)) || (simplechanges['dataBind'] && (simplechanges['dataBind'].currentValue != null || simplechanges['dataBind'].currentValue != undefined))) {\n      this.allEvents = [];\n      this.processBooklet();\n    }\n    // if(this.booklet == undefined || this.booklet.length == 0) {\n    //   this.processBooklet();\n    // }\n  }\n\n  processBooklet() {\n    if (this.bookletId) {\n      if (this.bookletId.length == 18) {\n        this.readBooklet(this.bookletId);\n      }\n    } else if (this.bookletJSON) {\n      // Try to pass a value from Backend to differentiate the QuestionBook Read and AnswerBook Read\n      this.isAnswerFlag = true;\n\n      if (this.bookletJSON != null || this.bookletJSON != undefined) {\n        // SKS28MAR25 get the nested reference qb \n        let tempbook = this.bookletJSON?.bookQuestionsMap[Object.keys(this.bookletJSON.bookQuestionsMap)[0]].subQuestions;\n        tempbook.forEach((element) => {\n          if (element.type === \"book\" && element?.qbReference) {\n            this.getRefQbData(element?.qbReference).subscribe(\n              (response) => {\n                element['qbReferenceQuestions'] = response; // Assign response to qbReferenceQuestions\n              },\n              (error) => {\n                console.error(\"API Error:\", error);\n              }\n            );\n          }\n        });\n        this.bookletJSON.bookQuestionsMap[Object.keys(this.bookletJSON.bookQuestionsMap)[0]].subQuestions = tempbook\n        // Storing the API response for future use\n        this.storageService.save(this.bookletJSON);\n      }\n\n      this.booklet = this.bookletJSON.records;\n      this.abItem = this.bookletJSON.answerbook;\n\n      // Process the Sub Question Options - This should be merged with bookQuestionsMap in future\n      for (var sq in this.bookletJSON.sqOptions) {\n        this.sqOptions.set(sq, this.bookletJSON.sqOptions[sq]);\n      }\n\n      // Process the Questions\n      // HA 28DEC23 this applies for booklet\n      // HA 17JAN24 Added ternary operator to avoid undefined scenario\n      // HA 09FEB24 Adding condition to avoid undefined error\n      if (this.bookletJSON?.bookQuestionsMap && Object.keys(this.bookletJSON?.bookQuestionsMap).length > 0) {\n        for (var value in this.bookletJSON.bookQuestionsMap) {\n          this.bookQuestionsMap.set(value, this.bookletJSON.bookQuestionsMap[value]);\n        }\n      }\n      // HA 28DEC23 this applies for book or questions\n      else {\n        var value = '';\n        // HA 09FEB24 Added ternary\n        // RS 09DEC24 Changed keys\n        value = this.bookletJSON.records[0]?.id;\n        this.bookQuestionsMap.set(value, this.bookletJSON.questionbook);\n      }\n\n      // VD 20Jun24 - translation changes\n      for (var value in this.bookletJSON?.translationMap) {\n        this.translateMap.set(value, this.bookletJSON.translationMap[value]);\n      }\n      // VD 31NOV24 wrapper changes\n      if (this.bookletJSON.questionbook?.action != undefined && this.bookletJSON.questionbook?.action != '') {\n        this.actions = JSON.parse(this.bookletJSON.questionbook.action);\n      }\n    }\n    // HA 19DEC23 langDirection variable value assigning\n    // RS 09DEC24 Changed keys\n    if (this.bookletJSON?.questionbook?.style) {\n      var style = typeof this.bookletJSON?.questionbook?.style === 'object' ? this.bookletJSON?.questionbook?.style : JSON.parse(this.bookletJSON?.questionbook?.style);\n      this.langDirection = style?.direction;\n    }\n    else if (this.bookletJSON?.records && this.bookletJSON?.records[0]?.style) {\n      var style = typeof this.bookletJSON?.records[0]?.style === 'object' ? this.bookletJSON?.records[0]?.style : JSON.parse(this.bookletJSON?.records[0]?.style);\n      this.langDirection = style?.direction;\n    }\n\n    // HA 18-JAN-24 The condition is used for Bind-In Logic \n    this.handleCompleteBooklet(this.bookletJSON);\n  }\n  // VD 12Jun24 - translation changes\n  private readBooklet = (uuid: string) => {\n    if (this.serv == \"api\") {\n      this.dataService.getAPIData(\n        this.tkn,\n        [\"Booklet\", \"read\", uuid, this.languageCode],\n        this.successReadBooklet,\n        this.failureReadBooklet\n      );\n    } else {\n      // VD 31NOV24 param changes with new method\n      let paramMap = { createAnswerBookFlag: false };\n      paramMap['c__qb_id'] = '';\n      paramMap[\"c__record_id\"] = '';\n      let para = {\n        dataType: \"Booklet\",\n        operation: \"read\",\n        param1: uuid,\n        paramJSON: JSON.stringify(paramMap),\n        languageCode: this.languageCode\n      }\n      this.sfService.remoteAction(\n        \"NxtController.processData\",\n        [JSON.stringify(para)],\n        this.successReadBooklet,\n        this.failureReadBooklet\n      );\n    }\n  }\n\n  private successReadBooklet = (response) => {\n    console.log('Inside the successReadBooklet');\n    if (response != null || response != undefined) {\n      // Storing the API response for future use\n      this.storageService.save(response);\n\n      // Try to pass a value from Backend to differentiate the QuestionBook Read and AnswerBook Read\n      // this.isAnswerFlag = true;\n\n      this.booklet = response.records;\n      this.abItem = response.answerbook;\n\n      // Process the Sub Question Options - This should be merged with bookQuestionsMap in future\n      for (var sq in response.sqOptions) {\n        this.sqOptions.set(sq, response.sqOptions[sq]);\n      }\n\n      // Process the Questions\n      for (var value in response.bookQuestionsMap) {\n        this.bookQuestionsMap.set(value, response.bookQuestionsMap[value]);\n      }\n      // VD 11Jun24 - translation changes\n      for (var value in response.translationMap) {\n        this.translateMap.set(value, response.translationMap[value]);\n      }\n      // VD 31NOV24 wrapper changes\n      if (response.questionbook?.action != undefined) {\n        this.actions = JSON.parse(response.questionbook.action);\n      }\n    }\n    // HA 19DEC23 langDirection variable value assigning\n    if (response?.questionbook?.style) {\n      var style = typeof response?.questionbook?.style === 'object' ? response?.questionbook?.style : JSON.parse(response?.questionbook?.style);\n      this.langDirection = style?.direction;\n    }\n    else if (response?.records[0]?.style) {\n      var style = typeof response?.records[0]?.style === 'object' ? response?.records[0]?.style : JSON.parse(response?.records[0]?.style);\n      this.langDirection = style?.direction;\n    }\n  }\n\n  private failureReadBooklet = (response) => {\n\n  }\n  //SKS28MAR25 Function to fetch refqb data\n  getRefQbData(refqbid: string): Observable<any> {\n    return this.http.get<any>(`https://dev-api.valarhr.com/nxt?name=${refqbid}`);\n  }\n  handleBookletActionClick(action: ActionMeta) {\n    // HA 19JAN24 Action changes\n    // RS 09DEC24 Changed keys\n    this.answerList = [];\n    this.dataBind = []; // HA 12FEB24 Clearing dataBind upon button action so that dataBind value will not override the changed value\n    let dataToParent = {};\n    let validForm = true; // VD 01Aug24 - validation change\n    // HA 22JAN24 this change to make close event work\n    dataToParent['action'] = action.eventtoemit;\n    if (!(action.eventtoemit === 'close' || action.eventtoemit === 'print')) {\n      // HA 18-JAN-24 Sending the complete json data also \n      dataToParent['jsonBook'] = this.storageService.get();\n      // HA 17JAN24 nxtId to dataParent object\n      if (this.bookletJSON) {\n        dataToParent['nxtId'] = Object.keys(this.bookletJSON?.bookQuestionsMap)[0];\n      }\n      // HA 11-JAN-24 Minimizing the value which has to be passed to the server\n      this.handleCompleteBooklet(dataToParent['jsonBook']);\n      dataToParent['data'] = this.answerList ? this.answerList : dataToParent['data'];\n      // when clicking the submit button validating the required fields\n      for (let key in dataToParent['jsonBook'].bookQuestionsMap) {\n        const currentBook = dataToParent['jsonBook'].bookQuestionsMap[key];\n        currentBook.subQuestions.forEach(element => {\n          // VD 01Aug24 - validation change\n          if (element.isOptional && dataToParent['action'] == 'submit' && (!element.input || (Array.isArray(element.input) && element.input.length === 0)) && !element.isHidden && element.type != 'Label' && element.type != 'Image') { //SKS5NOV25 \n            element.error = true;\n            validForm = false;\n            this.changeService.submitChange(element.id);\n          }\n          // VD 02Aug24 - clear action changes\n          if (dataToParent['action'] == 'clear') {\n            if (element.type == 'Dropdown' || element.type == 'Location' || element.type == 'Radio') {\n              element.selectedValue = undefined;\n            } else if (element.type == 'File') {\n              element.input = [];\n            } else {\n              element.input = '';\n            }\n          }\n        });\n      }\n    }\n    // VD 13MAY24 - print QR button changes\n    if (action.eventtoemit === 'print') {\n      dataToParent['actionData'] = action['data'];\n    }\n    // HA 23JAN24 To call the action on any event\n    //  VD 01Aug24 - validation change\n    if (validForm) {\n      this.handleBookletActionEvent.emit(dataToParent);\n    } else {\n      dataToParent['action'] = 'error';\n      this.handleBookletActionEvent.emit(dataToParent);\n    }\n  }\n\n  // HA 18-JAN-24 handleCompleteBooklet is to simplify the logic\n  handleCompleteBooklet(completeBooklet) {\n    if (Object.keys(completeBooklet?.bookQuestionsMap ?? {}).length === 0) { // HA 11-JAN-24 If condition to load booklet\n      this.handleBook(completeBooklet?.questionbook?.subQuestions);\n    }\n    else { // HA 11-JAN-24 To load book questions\n      for (const key in completeBooklet.bookQuestionsMap) {\n        const val = completeBooklet.bookQuestionsMap[key];\n        if (val.type === 'Book') {\n          this.handleBook(val.subQuestions);\n        }\n        else {\n          this.handleQues(val);\n        }\n      }\n    }\n  }\n\n  // HA 11-JAN-24 handleBook loads the Book\n  // RS 09DEC24 Changed keys\n  handleBook(quesList: any) {\n    quesList?.forEach(element => {\n      if (element.type === 'Book' && element.qbReferenceQuestions) {\n        // HA 24JAN24 Fetching from QB reference\n        var book = typeof element.qbReferenceQuestions === 'object' ? element.qbReferenceQuestions : JSON.parse(element.qbReferenceQuestions)\n        const firstKey = Object.keys(book?.bookQuestionsMap || {})[0];\n        book?.bookQuestionsMap[firstKey]?.subQuestions?.forEach(ques => {\n          this.handleQues(ques);\n        });\n      }\n      else {\n        this.handleQues(element);\n      }\n    });\n    // VD 13Sep24 - databind changes\n    // VD 23 Oct24 - file type changes\n    if (this.dataBind && Object.keys(this.dataBind).length > 0) {\n      this.changeService.dataChanges('dataBind');\n    }\n  }\n  // SKS20MAR25 flattening nested objects, mapping values using  referenceField\n  flattenObject(obj: any, parentKey = '', includeObjects = true) {\n    let result: any[] = [];\n\n    for (let [key, val] of Object.entries(obj)) {\n      let newKey = parentKey ? `${parentKey}.${key}` : key;\n\n      if (Array.isArray(val)) {\n        result.push([newKey, val]); // Include full array\n\n        val.forEach((item, index) => {\n          if (typeof item === 'object' && item !== null) {\n            result.push(...this.flattenObject(item, `${newKey}[${index}]`, false)); // Flatten objects in arrays\n          } else {\n            result.push([`${newKey}[${index}]`, item]); // Store primitive values in arrays\n          }\n        });\n      } else if (typeof val === 'object' && val !== null) {\n        if (includeObjects) {\n          result.push([newKey, val]); // Include full object\n        }\n        result.push(...this.flattenObject(val, newKey, false)); // Flatten nested objects\n      } else {\n        result.push([newKey, val]); // Store key-value pairs\n      }\n    }\n\n    return result;\n  }\n\n  // SKS20MAR25 referenceField set like this\n  // name  --> normal\n  // items[0].name  --> value in a array set like this\n  // addresses.line2  ---> if value in a json set like this\n  // addresses.line4.dd ---> if value in a nested json set like this\n\n  // HA 11-JAN-24 handleQues to load question\n  // VD 06Sep24 calendar changes\n  handleQues(ques: any) {\n    // HA 19-JAN-24 If condition is for bind-in, correction\n    // HA 09FEB24 Adding condition to avoid undefined error\n    if (this.dataBind && Object.keys(this.dataBind).length > 0) {\n      let result = this.flattenObject(this.dataBind)\n      for (let [key, val] of result) {\n        let value: any = val;\n        if (ques.referenceField === key) {\n          if (ques.type === 'Dropdown' || ques.type === 'Radio') {\n            this.sqOptions.forEach(element => {\n              if (element['referenceField'] === key) {\n                element['input'] = ques.input = value || ques.defaultValue;\n                element['selectedValue'] = ques.selectedValue = value || ques.defaultValue;\n              }\n            });\n          }\n          // HA 24JAN24 To bind-in Date and DateTime\n          else if (ques.type === 'Date' || ques.type == 'DateTime') {\n            ques.input = new Date(value?.toString())  || ques.defaultValue;\n          }\n          // HA 12FEB24 To bind-in Location Type\n          else if (ques.type === 'Location') {\n            ques.input = value || ques.defaultValue;\n            ques.selectedValue = value['address'] ? value['address'] : value || ques.defaultValue;\n          }\n          // VD 06Sep24 calendar changes for data bindIn\n          else if (ques.type === 'Calendar') {\n            let entries = typeof ques['fieldsMeta'] === 'object' ? ques['fieldsMeta'] : JSON.parse(ques['fieldsMeta']);\n            if (entries) {\n              let referenceQuestions = [];\n              if (entries.length > 0) {\n                entries.forEach(element => {\n                  if (element.questionReference) {\n                    let qReference = JSON.parse(element.questionReference);\n                    referenceQuestions.push(qReference?.question);\n                  }\n                });\n              }\n              if (referenceQuestions.length > 0) {\n                value?.forEach(calendarArray => {\n                  let date = new Date(calendarArray.date);\n                  calendarArray.entries.forEach(inputEntry => {\n                    for (let [k, v] of Object.entries(inputEntry)) {\n                      referenceQuestions.forEach(field => {\n                        if (field.referenceField == k) {\n                          if (field.type === 'Date' || field.type == 'DateTime' || field.type == 'Time') {\n                            field.input = new Date(v?.toString()) || ques.defaultValue;\n                          } if (field.type === 'Dropdown' || field.type === 'Radio') {\n                            field.selectedValue = v;\n                            field.input = v  || ques.defaultValue;\n                          } else {\n                            field.input = v || ques.defaultValue;\n                          }\n                        }\n                      });\n                    }\n                    this.addEvent(date, referenceQuestions);//SKS 27SEP24 each event added to allEvents array\n                  })\n                  // this.addEvent(date,referenceQuestions); //this is only last event added to allEvents array\n                });\n              }\n            }\n            ques.input = this.allEvents.length > 0 ? this.allEvents : '';\n          }\n          // VD 23 Oct24 - file type changes\n          else if (ques.type === 'File') {\n            ques.input = [];\n            ques.input = value;\n          }\n          else {\n            ques.input = value || ques.defaultValue;\n          }\n          this.answerList.push(ques); // HA 12FEB24 To give the value for data\n        }\n        else {\n          //console.log(\"reference field not found\");\n        }\n      }\n    }\n    else {\n      const question = {};\n      question['id'] = ques.id;\n      question['input'] = ques.input || ques.defaultValue;\n      // HA 12FEB24 To bind-out Location Type\n      if (ques.type === 'Location') {\n        question['input'] = ques.input ? ques.input : ques.selectedValue;\n      } else if (ques.type == 'File') {\n        // VD 23 Oct24 - file type changes\n        question['input'] = ques.input ? ques.input : ques.defaultValue || [];\n      }\n      question['type'] = ques.type;\n      question['questionNumber'] = ques.questionNumber;\n      question['referenceField'] = ques?.referenceField;\n      question['selectedValue'] = ques?.selectedValue;  // MR 31JAN24 Need to pass the selected value too\n      this.answerList.push(question);\n    }\n  }\n\n  // VD 06Sep24 calendar changes for data bindIn\n  addEvent(day: any, entryQues) {\n    // Transform new entries into the desired format\n    const newEntries = entryQues.reduce((acc, q) => {\n      acc[q.id] = { ...q };\n      return acc;\n    }, {});\n\n    // Find if an event already exists for the given date\n    const existingEvent = this.allEvents.find(event => event.date.toDateString() === day.toDateString());\n\n    if (existingEvent) {\n      // If the event exists, push the new entries to the existing entries\n      const existingEntries = existingEvent.entries.map(entry => ({ ...entry }));\n      existingEntries.push(newEntries);\n      existingEvent.entries = existingEntries;\n    } else {\n      // Create a new event if it doesn't exist for the given date\n      const newEvent = {\n        id: '_' + Math.random().toString(36).substr(2, 9),\n        date: day,\n        entries: [newEntries] // Wrap the new entries in an array\n      };\n      this.allEvents.push(newEvent);\n    }\n  }\n\n\n  readQuestions(qbId: string) {\n    let questions = [];\n    // HA 31-JAN-24 Added ternary to avoid undefined\n    for (var sq in this.bookQuestionsMap?.get(qbId)?.subQuestions) {\n      let q: Question = this.bookQuestionsMap?.get(qbId).subQuestions[sq];\n      // HA 09FEB24 if question is there process\n      if (q) {\n        if ((q.type == 'Dropdown' || q.type == 'Radio') && this.sqOptions.get(q.id)) {\n          questions.push(this.sqOptions.get(q.id));\n        } else {\n          questions.push(q);\n        }\n      }\n    }\n\n    // VD 12Jun24 field permisision changes\n    if (this.fieldRestrictions) {\n      const fieldRestrictions = new Map(Object.entries(this.fieldRestrictions.fields));\n      questions.forEach(ques => {\n        const restriction = fieldRestrictions.get(ques.uniqueIdentifier);\n\n        if (restriction) {\n          ques.isReadOnly = restriction === 'readOnly';\n          ques.isHidden = restriction === 'hide';\n        }\n      });\n    }\n    return questions;\n  }\n  // VD 11Jun24 - translation changes\n  readTransQuestions(qbId: string) {\n    let record = [];\n    let translateRecord = this.translateMap.get(qbId);\n    if (translateRecord && translateRecord.length > 0) {\n      translateRecord.forEach(lanRec => {\n        if (lanRec.languageCode == this.languageCode) {\n          record = lanRec.fields\n        }\n      });\n    }\n    return record;\n  }\n\n  getText(value) {\n    var doc = new DOMParser().parseFromString(value, \"text/html\");\n    return this.sanitizer.bypassSecurityTrustHtml(\n      doc.documentElement.textContent\n    );\n  }\n  getDropDown(event: any) {\n    this.hadleDropDownDependent.emit(event);\n  }\n  // VD 06Sep24 calendar changes\n  getCalendarDate(event: any) {\n    this.handleCalendarDate.emit(event);\n  }\n  getCalendarEvent(event: any) {\n    event[\"nxtId\"] = Object.keys(this.bookletJSON?.bookQuestionsMap)[0];\n    this.handleCalendarEvent.emit(event);\n  }\n}\n","<ngx-spinner size=\"medium\" [name]=\"spinnerName\" [type]=\"spinnerType\"></ngx-spinner>\n<!-- Booklet Handling-->\n<!-- HA 19DEC23 For Direction -->\n<div *ngFor=\"let qb of booklet\" [ngClass]=\"langDirection\">\n    <!-- MR Commented below code to ensure single JSON for UNCONDITIONAL Booklets -->\n    <!-- RS 09DEC24 Changed keys-->\n    <!-- <lib-questionnaire [serv]=\"serv\" [qbId]=\"qb.id\" [tkn]=\"tkn\"></lib-questionnaire> -->\n    <!-- HA 28DEC23 Below If logic is to load from booklet  -->\n    <div *ngIf=\"qb.subQuestions; else elseBlock\">\n        <div *ngFor=\"let ques of qb.subQuestions\" class=\"questiondiv1\">\n            <div>\n                <!-- HA 17JAN24 - Is title is enabled so that based on the boolean div will be visible -->\n                <div *ngIf=\"ques.isTitle\" [class]=\"qb.isShengel ? 'header-style' : 'question-f-size additional'\">\n                    <!-- VD 08NOV23 - showing lable when its available-->\n                    <div [innerHTML]=\"getText(ques?.questionText)\" *ngIf=\"ques?.questionText && ques?.style?.showLabel !== false\" >\n                        {{ ques?.questionText }}\n                    </div>\n                </div> <!-- VD 19JAN24 - getting token as input --> <!--VD 11Jun24 - translation changes-->\n                <!--VD 06Sep24 calendar changes-->\n                <lib-questionbook [qbItem]=\"qb\" [token]=\"token\"\n                [labelValue]=\"labelValue\"\n                [questionItem]=\"ques\"\n                [translatedQuestions]=\"readTransQuestions(qb.id)\"\n                [questions]=\"readQuestions(qb.id)\"\n                (handleDropDown)=\"getDropDown($event)\"\n                (handleCalendarDate)=\"getCalendarDate($event)\"\n                (handleCalendarEvent)=\"getCalendarEvent($event)\"\n                ></lib-questionbook>\n            </div>\n        </div>\n    </div>\n    <!-- HA 28DEC23 Below else logic is to load from books or questions -->\n    <ng-template #elseBlock>\n        <div class=\"questiondiv1\">\n            <div>\n                <div *ngIf=\"!qb.isTitle\" [class]=\"qb.isShengel ? 'header-style' : 'question-f-size additional'\">\n                    <!-- VD 08NOV23 - showing lable when its available-->\n                    <div [innerHTML]=\"getText(qb?.questionText)\" *ngIf=\"qb?.questionText && qb?.style?.showLabel !== false\" >\n                        {{ qb?.questionText }}\n                        {{ qb?.title }}\n                    </div>\n                </div> <!-- VD 19JAN24 - getting token as input --> <!--  // VD 11Jun24 - translation changes-->\n                <lib-questionbook [qbItem]=\"qb\" [token]=\"token\" [labelValue]=\"labelValue\" [questionItem]=\"qb\" [translatedQuestions]=\"readTransQuestions(qb.id)\" [questions]=\"readQuestions(qb.id)\"  (handleDropDown)=\"getDropDown($event)\"></lib-questionbook>\n            </div>\n        </div>\n    </ng-template>\n</div>\n<!-- RS 09DEC24 Changed keys-->\n<!-- Group Actions -->\n<!-- HA 19DEC23 For Direction -->\n<div class=\"align-submit-row\" *ngIf=\"abItem?.status != 'Completed'\" [ngClass]=\"langDirection\">\n    <div *ngFor=\"let action of actions; let i = index\">\n    <!-- // HA 22JAN24 Commonise the button style in fusion -->\n        <button (click)=\"handleBookletActionClick(action)\" ngClass=\"btn btn-primary fc-button nxtButton\">\n            {{ action.name }}\n        </button>\n    </div>\n</div>\n","import { Component, OnInit , Input} from '@angular/core';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\nimport { SharedService } from '../../services/shared.service';\n\n@Component({\n  selector: 'app-file-view',\n  templateUrl: './file-view.component.html',\n  styleUrls: ['./file-view.component.css']\n})\nexport class FileViewComponent implements OnInit {\n  @Input() documentData;\n  @Input() api;\n\n  constructor(private SharedService: SharedService,\n      public i18nService: I18nService\n    ) { }\n\n  ngOnInit(): void {\n  }\n\n  viewDoc(link) {\n     /*\n    Author: Vinay Jadhav\n    @description: This function will view the file from azure blob.\n                  The link passed as a parameter will extract file name and pass it to the service\n    @param link: It will accept a doc link\n    @return: It will not return anything but it will either show or download the file.\n  */\n   if (link && link !== null) {\n    this.SharedService.processViewFile(link.split('/').pop(),this.api);\n  }\n    // window.open(environment.api.substring(0, environment.api.length - 1) + link, '_blank');\n  }\n\n  getDocIcon(docName) {\n    const ext = docName.split('.').pop(-1);\n    return this.SharedService.docIcon(ext);\n  }\n\n  \n\n}\n","<div class=\"col-lg-12\">\n    <div class=\"row\" style=\"text-align: left;\">\n      <div class=\"col-md-12\">\n          <!-- HA 19DEC23 For translation -->\n        <label class=\"she-label attachment\">{{ 'attachment' | i18n:i18nService.currentLanguage }}</label>\n      </div>\n    </div>\n    <div class=\"row\" style=\"margin: 0;\">\n        <div class=\"col-lg-3 document-cnt\" *ngFor=\"let file of documentData;let i = index;\" style=\"margin-bottom: 10px;\">\n            <div class=\"row\" (click)=\"viewDoc(file?.doc)\" style=\"cursor: pointer;\">\n                <div class=\"col-lg-3 document_image\">\n                    <img [src]=\"getDocIcon(file?.doc)\" style=\"margin-right: 10px;height: 40px;\">\n                </div>\n                <div class=\"col-lg-9 document_name\" style=\"overflow:hidden;height:35px;\">\n                    {{file?.name}}\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"col-md-12 m-b-30 text-center\" *ngIf=\"documentData?.length === 0\">\n      <img src=\"https://rnxt.s3.amazonaws.com/Icons/fileTypeIcons/ic_no_attachments.svg\" style=\"height: 140px;\">\n  </div>\n  </div>\n  ","import { Component, Input, OnInit } from '@angular/core';\n// HA 19DEC23 imported translation service\nimport { I18nService } from '../../i18n.service';\nimport { ActionMeta } from '../../interfaces/actionMeta';\nimport { Question } from '../../wrapper';\n\n@Component({\n  selector: 'lib-summary-page',\n  templateUrl: './summary-page.component.html',\n  styleUrls: ['./summary-page.component.css']\n})\nexport class SummaryPageComponent implements OnInit {\n  @Input() answerJson:any;\n  @Input() api:string;\n\n  public booklet: any[] = [];\n  public bookQuestionsMap: any = new Map();\n  public actions: ActionMeta[] = [];\n  private sqOptions: any = new Map();\n  public questions:any[] = [];\n  filteredQuestion: any[];\n\n  constructor(public i18nService: I18nService) { }\n\n  ngOnInit(): void {\n    if(this.answerJson) {\n      console.log('answer json',this.answerJson);\n      this.booklet = this.answerJson.records;\n\n      // Process the Sub Question Options - This should be merged with bookQuestionsMap in future\n      for (var sq in this.answerJson.sqOptions) {\n        this.sqOptions.set(sq, this.answerJson.sqOptions[sq]);\n      }\n      // Process the Questions\n      for (var value in this.answerJson.bookQuestionsMap) {\n        this.bookQuestionsMap.set(value, this.answerJson.bookQuestionsMap[value]);\n      }\n    }\n    this.processSummary(this.booklet);\n  }\n  // RS 09DEC24 Changed keys\n  processSummary(data:any){\n    let questions = [];\n    for( var i = 0; i < data.length ;i++){\n      let qbId = data[i].id;\n      for(var sq in this.bookQuestionsMap?.get(qbId).subQuestions) {\n        let q: Question = this.bookQuestionsMap?.get(qbId).subQuestions[sq];\n        if(q.type == 'Dropdown') {\n          questions.push(this.sqOptions.get(q.id));\n        } else {\n          if(!q.input?.includes('|')){  // to avoid the unwanted fields for summary page\n            questions.push(q);\n          }\n        }\n      }\n    }\n    this.questions = questions;\n    console.log('question', this.questions);\n    // map the questions using  the the bookId\n    var qbIds = new Set(this.questions.map((item:any) => item.questionBookId))\n    this.filteredQuestion = [];\n    qbIds.forEach((id) => {\n        this.filteredQuestion.push({\n          Id: id, \n          questions: this.questions.filter((i:any) => i.questionBookId === id)\n        });\n    })\n    console.log('filteredQuestion',this.filteredQuestion);\n  }\n\n}\n","<div class=\"col-lg-12\">\n  <div class=\"panel-group panel-group-joined\" id=\"details\">\n    <div class=\"panel panel-default\">\n        <div class=\"panel-heading\">\n          <h4 class=\"panel-title\">\n            <!-- HA 19DEC23 For Translation -->\n<!-- HA 20FEB24 PTW Details to Details -->\n<!-- RS 09DEC24 Changed keys-->\n            <a data-toggle=\"collapse\" data-parent=\"#details\" href=\"#collapse\" class=\"collapsed\">\n              {{'details' | i18n:i18nService.currentLanguage}}\n            </a>\n          </h4>\n        </div>\n      <div [id]=\"'collapse'\" class=\"collapse\">\n        <div class=\"panel-body\">\n            <div class=\"row\" *ngFor=\"let item of filteredQuestion;let i = index\">\n              <div class=\"col-lg-6\" *ngFor=\"let ques of item.questions\" >\n                  <label *ngIf=\"ques.type != 'File'\" >{{ques.question}}</label>\n                  <p *ngIf = \"ques.type != 'Dropdown' && ques.type != 'Table' && ques.type != 'File'\">{{ ques.input }}</p>\n                  <p *ngIf=\"ques.type == 'Dropdown'\">{{ ques.selectedValue }}</p>\n                  <p *ngIf=\"!ques.input\">N/A</p>\n                  <div *ngIf= \"ques.type == 'Table'\">\n                    <div *ngFor=\"let item of ques.input\" class=\"align-center\">\n                      <img *ngIf=\"item.value == 'yes' \" [src]=\"item.imageSrc\" [alt]=\"item.altText\">\n                      <p *ngIf=\"item.value == 'yes' \">{{ item.ppe }}</p>\n                    </div>\n                  </div>\n                  <div *ngIf = \"ques.type == 'File'\">\n                    <app-file-view [api]=\"api\" [documentData]=\"ques.input\"></app-file-view>\n                  </div>\n              </div>\n              <div *ngIf=\"i != filteredQuestion.length -1\" class=\"col-lg-12\">\n                <hr>\n              </div>\n            </div>\n      </div>\n    </div> \n  </div>\n</div>\n\n","// HA 19DEC23 File created for translation\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { I18nPipe } from './i18n.pipe';\n// import { I18nComponent } from './i18n.component';\nimport { I18nService } from './i18n.service';\nimport { i18nConfigService } from './i18n-config.service';\n\n\n\n@NgModule({\n  declarations: [\n    // I18nPipe,\n    // I18nComponent\n  ],\n  imports: [\n    CommonModule\n  ]\n})\nexport class I18nModule {\n\n  static forRoot(config): ModuleWithProviders<I18nModule> {\n    return {\n      ngModule: I18nModule,\n      providers: [\n        I18nService,\n        {\n          provide: i18nConfigService,\n          useValue: config\n        }\n      ]\n    }\n  }\n}\n","// HA 19DEC23 File created for translation\nimport { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { I18nService } from './i18n.service';\n@Component({\n  selector: 'app-i18n',\n  styles: [\n    `.selected-language {\n  color: green !important;\n  font-weight: bold;\n  font-size: 24px !important;\n}`,\n    `.not-selected-language {\n  color: #555555;\n  font-weight: bold;\n}`,\n  ],\n  template: `\n   <a  *ngFor=\"let lang of i18nService.langList\" href=\"javascript:void(0);\" class=\"not-selected-language\" [ngClass]=\"{'selected-language': i18nService.currentLanguage === lang.lang}\"\n\n            (click)=\"firstClick(lang.lang)\">\n            <span class=\"mr-3\">\n                {{lang.lang}}\n            </span>\n          </a>\n\n  `,\n})\nexport class I18nComponent implements OnInit {\n  // @Output() handleEve:EventEmitter<any> = new EventEmitter();\n  constructor(\n    public i18nService: I18nService\n  ) {}\n  ngOnInit() {\n    console.log('ngOnInit component.ts')\n    // this.handleEve.emit();\n  }\n\n  firstClick(event){\n    console.log('first ', event);\n    this.i18nService.languageChange(event);\n    // this.handleEve.emit();\n    window.location.reload();\n  }\n}\n","const enI18n = {\n    required: \"Required\",\n    addMore: \"Add More\",\n    select: \"Select\",\n    attachment: \"Attachment\",\n    chooseFiles: \"Choose files\",\n    uploadFile: \"Upload File\",\n    thisFieldIsRequired: \"This field is required.\",\n    pickYourLocation: \"Pick Your Location\",\n    // firstName: \"First Name\",\n    // lastName: \"Last Name\",\n    // division: \"Division\",\n    // numberPlate: \"Number Plate\",\n    calibrated: \"Calibrated\",\n    enterValue: \"Enter Value\",\n    details: \"Details\", // HA 20FEB24 PTW Details to Details\n    pleaseMakeChoice: \"Please make a choice\",\n    attach: \"Attach\",\n    add: \"Add\",\n    zeroOfZero: \"0 of 0\",\n    selectDate: \"Select date\",\n    toBuyTicket: \"to buy a ticket\",\n    pickLocation: \"Pick Location\",\n    enterLocation: \"Enter Location\",\n    searchNearestLocation: \"Search Nearest Location\",\n    currentTheme: \"ltr\",\n}\n\nexport default enI18n;","const arI18n = {\n    required: \"مطلوب\",\n    addMore: \"أضف المزيد\",\n    select: \"يختار\",\n    attachment: \"مرفق\",\n    chooseFiles: \"اختر الملفات\",\n    uploadFile: \"رفع ملف\",\n    thisFieldIsRequired: \"هذه الخانة مطلوبه.\",\n    pickYourLocation: \"اختر موقعك\",\n    // firstName: \"الاسم الأول\",\n    // lastName: \"اسم العائلة\",\n    // division: \"قسم\",\n    // numberPlate: \"لوحة الأرقام\",\n    calibrated: \"معايرة\",\n    enterValue: \"أدخل القيمة\",\n    details: \"تفاصيل\", // HA 20FEB24 PTW details to Details\n    pleaseMakeChoice: \"يرجى الاختيار\",\n    attach: \"يربط\",\n    add: \"يضيف\",\n    zeroOfZero: \"0 من 0\",\n    selectDate: \"حدد تاريخ\",\n    toBuyTicket: \"لشراء تذكرة\",\n    pickLocation: \"اختر الموقع\",\n    enterLocation: \"إدخال الدولة\",\n    searchNearestLocation: \"البحث عن أقرب موقع\",\n    currentTheme: \"rtl\",\n}\n\nexport default arI18n;","const tamI18n = {\n    required: \"தேவை\",\n    addMore: \"மேலும் சேர்க்கவும்\",\n    select: \"தேர்ந்தெடுக்கவும்\",\n    attachment: \"இணைப்பு\",\n    chooseFiles: \"கோப்புகளைத் தேர்ந்தெடுக்கவும்\",\n    uploadFile: \"கோப்பை பதிவேற்றவும்\",\n    thisFieldIsRequired: \"இந்த புலம் தேவை.\",\n    pickYourLocation: \"உங்கள் இருப்பிடத்தைத் தேர்ந்தெடுக்கவும்\",\n    // firstName: \"முதல் பெயர்\",\n    // lastName: \"கடைசி பெயர்\",\n    // division: \"பிரிவு\",\n    // numberPlate: \"இலக்கத்தகடு\",\n    calibrated: \"அளவீடு செய்யப்பட்டது\",\n    enterValue: \"மதிப்பை உள்ளிடவும்\",\n    details: \"விவரங்கள்\", // HA 20FEB24 PTW Details to Details\n    pleaseMakeChoice: \"தயவுசெய்து தேர்வு செய்யுங்கள்\",\n    attach: \"இணைக்கவும்\",\n    add: \"சேர்\",\n    zeroOfZero: \"0 இல் 0\",\n    selectDate: \"தேதியைத் தேர்ந்தெடுக்கவும்\",\n    toBuyTicket: \"டிக்கெட் வாங்க\",\n    pickLocation: \"இருப்பிடத்தைத் தேர்ந்தெடுக்கவும்\",\n    enterLocation: \"இருப்பிடத்தை உள்ளிடவும்\",\n    searchNearestLocation: \"அருகிலுள்ள இடத்தைத் தேடுங்கள்\",\n    currentTheme: \"ltr\",\n}\n\nexport default tamI18n;","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'app-custom-image',\n  templateUrl: './custom-image.component.html',\n  styleUrls: ['./custom-image.component.css']\n})\nexport class CustomImageComponent implements OnInit {\n  @Input() alt: string;\n  @Input() src: string;\n  @Input() imageStyle: any;\n  @Input() question:any;\n\n  public styles: string;\n\n  constructor() { }\n\n  ngOnInit(): void {\n    // VD 03Aug24 style changes \n    // RS 09DEC24 Changed keys\n     if(this.question){\n        this.imageStyle = this.question.subTitle ? this.question.subTitle : \"height: 150px;width: 200px;\";\n        this.src = this.question.title ? this.question.title : \"\" ;\n        this.alt = this.question.helpText ? this.question.helpText : \"my image\";\n     }\n  }\n}","<img src={{src}} alt={{alt}} style={{imageStyle}}>","import { Component, OnInit } from '@angular/core';\nimport { SharedService } from '../../services/shared.service';\n\n@Component({\n  selector: 'app-loader',\n  templateUrl: './loader.component.html',\n  styleUrls: ['./loader.component.css']\n})\nexport class LoaderComponent implements OnInit {\n\n  isLoading: boolean = false;\n\n  constructor(private loaderService: SharedService) {}\n\n  ngOnInit(): void {\n    this.loaderService.isLoading$.subscribe((loading) => {\n      this.isLoading = loading;\n    });\n  }\n\n}\n","<div class=\"loader\" *ngIf=\"isLoading\">\n    <div class=\"spinner\"></div>\n  </div>\n  ","// VD 06-09-24 directive file to call component dynamically \nimport { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[dynamicComponentHost]',\n  standalone: true\n})\nexport class ComponenthostDirective {\n  constructor(public viewContainerRef: ViewContainerRef) {}\n}\n","// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* tslint:disable */\nexport const VERSION = {\n    \"dirty\": true,\n    \"raw\": \"05a52cb-dirty\",\n    \"hash\": \"05a52cb\",\n    \"distance\": null,\n    \"tag\": null,\n    \"semver\": null,\n    \"suffix\": \"05a52cb-dirty\",\n    \"semverString\": null,\n    \"version\": \"2.1.134\"\n};\n/* tslint:enable */\n","// AP 22JAN25\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ElementComponent } from '../pages/builder/element/element.component';\nimport { v4 as uuidv4 } from 'uuid';\nimport { HttpClient } from '@angular/common/http';\ninterface FormElement {\n  order: number;\n  id: any;\n  name: any;\n  value?: any;\n  required?: boolean;\n  type: string;\n  questionText?: string;\n  question?: string;\n  helpText?: string;\n  errorMessage?: string;\n  isReadOnly?: boolean;\n  isHidden?: boolean;\n  isDateBackward?: boolean;\n  isDateForward?: boolean;\n  isOptional?: boolean;\n  isTitle?: boolean;\n  nextQuestion?: any;\n  allowedFileExtensions?: any;\n  questionNumber?: number;\n  questionBookId?: any;\n  size?: number;\n  parentQuestion?: any;\n  fieldsMeta?: any;\n  summaryRows?: any;\n  summaryColumns?: any;\n  recordTypeName?: any;\n  recordTypeId?: any;\n  trackingId?: any;\n  dateText?: any;\n  timeText?: any;\n  recordId?: any;\n  qbReference?: any;\n  qbReferenceQuestions?: any;\n  questionBookSubTitle?: any;\n  style: {\n    labelClass: any,\n    labelStyle: any,\n    labelValueStyle: any,\n    inputClass: any,\n    inputStyle: any,\n    showLabel: boolean,\n    bookStyle: any,\n    direction: any,\n    questionStyle: any,\n  },\n  subText: any,\n  title?: any;\n  subTitle?: any;\n  referenceField?: any;\n  additionalRichContent?: any;\n  groupName?: any;\n  x24Hours?: boolean;\n  columns?: any;\n  data?: any;\n  // AP 25FEB25 - options array\n  options?: Array<{\n    value: string;\n    uniqueIdentifier: any;\n    questionId: any;\n    nextQuestion: any;\n    name: any;\n    id: any;\n  }>;\n\n}\n@Injectable({\n  providedIn: 'root',\n})\nexport class FormBuilderService {\n  private formElements: FormElement[] = [];\n  private formElementsSubject = new BehaviorSubject<FormElement[]>([]);\n  private selectedElementSubject = new BehaviorSubject<number>(-1);\n  private selectHeaderSubject = new BehaviorSubject<any>(null);\n  private elementComponent: ElementComponent | null = null;\n  book: any;\n  unique_id: any;\n  tempElem: any[];\n\n  formElements$ = this.formElementsSubject.asObservable();\n  selectedElement$ = this.selectedElementSubject.asObservable();\n  selectHeaderSubject$ = this.selectHeaderSubject.asObservable();\n  currentElement: any;\n  selectTableColumn: any;\n  // book: { bookQuestionsMap: { unique_id: { subQuestions: any[]; }; }; };\n\n  constructor(private http: HttpClient) {\n    // Load saved elements from localStorage\n    this.formElements = [];\n    const savedFormElements = localStorage.getItem('formElements');\n    if (savedFormElements) {\n      this.formElements = JSON.parse(savedFormElements);\n      this.formElementsSubject.next([...this.formElements]);\n      // this.book = JSON.parse(localStorage.getItem('book') || '{}');\n    }\n  }\n  intializeBook(book: any) {\n    // AP 13MAR25 - Get the unique id in the bookQuestionsMap \n    this.unique_id = Object.keys(book.bookQuestionsMap)[0];\n    let tempbook = book.bookQuestionsMap[this.unique_id].subQuestions;\n// SKS28MAR25 update nested book QuestionsMap\n    tempbook.forEach((element) => {\n      if (element.type === \"book\" && element.qbReference) {\n        this.getRefQbData(element.qbReference).subscribe(\n          (response) => {\n            element['qbReferenceQuestions'] = response; // Assign response to qbReferenceQuestions\n          },\n          (error) => {\n            console.error(\"API Error:\", error);\n          }\n        );\n      }\n    });\n    book.bookQuestionsMap[this.unique_id].subQuestions = tempbook\n    this.book = book\n\n    this.book.bookQuestionsMap[this.unique_id]?.subQuestions?.forEach(element => {\n      if (this.book.sqOptions?.[element.id]) {\n        element.options = this.book.sqOptions[element.id].options;\n      }\n      this.addElement(element);\n    });\n  }\n\n  //SKS28MAR25 Function to fetch refqb data\n  getRefQbData(refqbid: string): Observable<any> {\n    return this.http.get<any>(`https://dev-api.valarhr.com/nxt?name=${refqbid}`);\n  }\n\n   //AP-17APR25 Function to generate unique id\n   addElementWithId(): string {\n    const prefix = 'ngnxt'; \n    const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n    let core = '';\n    for (let i = 0; i < 14; i++) {\n      core += chars.charAt(Math.floor(Math.random() * chars.length));\n    }\n    return prefix + core; \n  }\n\n  newBook() {\n    this.unique_id = this.addElementWithId();\n    this.book = {\n      'bookQuestionsMap': {\n        [this.unique_id]: {\n          'subQuestions': [],\n          'type': 'Book'\n        }\n      },\n      'questionbook': {\n        \"action\": \"[{\\\"name\\\": \\\"Cancel\\\", \\\"eventtoemit\\\": \\\"close\\\", \\\"alt\\\":\\\"\\\"},{\\\"name\\\": \\\"Save\\\", \\\"eventtoemit\\\": \\\"submit\\\", \\\"alt\\\":\\\"\\\",\\\"endpoint\\\":\\\"\\\",\\\"method\\\":\\\"POST\\\"}]\"\n      },\n      'records': [{\n        'id': this.unique_id,\n        'title': 'Untitled',\n        'subQuestions': [{}]\n      }]\n    }\n  }\n  // AP 26FEB25 - clear the form elements \n  clearElements() {\n    this.formElements = [];\n    this.formElementsSubject.next([...this.formElements]);\n  }\n  // Get the element component reference\n  getElementComponent(): ElementComponent | null {\n    return this.elementComponent;\n  }\n\n  setElementComponent(component: ElementComponent) {\n    this.elementComponent = component;\n  }\n\n  // Add a new element to the form\n  addElement(element: FormElement): void {\n    if (!element.options) {\n      element.options = []; // options is initialized\n    }\n    element['questionBookId'] = this.unique_id;\n    this.formElements.push(element);\n    this.formElementsSubject.next([...this.formElements]);\n  }\n  // SKS13MAR25 add table element\n  addTableElement(element: any, ind :any) {\n    //SKS13MAR25 Ensure currentElement exists\n    if (!this.currentElement) return;\n    // Clone elements array\n    const elements = [...this.getElements()];\n\n    // SKS13MAR25 Find the element and update its columns\n    const index = elements.findIndex(el => el.id === this.currentElement.id);\n\n    // Clone columns array to trigger change detection\n    const updatedColumns = [...(this.formElements[index].columns || []), element];\n    let tempFieldsMeta = {\n      'label': element.label,\n      'apiName': element.fieldName,\n      \"isdeleted\": false,\n      \"orderbyflag\": false,\n      \"filterflag\": false,\n      \"outputFlag\": true,\n      \"ischild\": false,\n      \"resultantflag\": false,\n      \"searchflag\": false,\n      \"fldType\": element.type,\n      \"readOnly\": false,\n      \"uniqueIdentifier\": element.id\n    }\n    let fieldsMeta = [...(Array.isArray(this.formElements[index].fieldsMeta) ? this.formElements[index].fieldsMeta : (typeof this.formElements[index].fieldsMeta === 'string' ? (JSON.parse(this.formElements[index].fieldsMeta)) : [this.formElements[index].fieldsMeta])), tempFieldsMeta];\n\n    if (index !== -1) {\n      elements[index] = { ...elements[index], columns: updatedColumns, fieldsMeta: fieldsMeta };\n    }\n\n    // Emit the updated form elements\n    // this.formElementsSubject.next(elements);\n    this.formElements = elements;\n    this.formElementsSubject.next([...elements]);\n    this.selectedElementSubject.next(ind);\n    // Log for debugging\n    // console.log(\"Updated form elements:\",  this.formElements);\n  }\n\n  updateElement(index: number, updates: Partial<FormElement>) {\n    const elements = [...this.getElements()];\n    if (elements[index]) {\n      elements[index] = {\n        ...elements[index],\n        ...updates,\n        options: updates.options || elements[index].options || [],\n      };\n      this.formElementsSubject.next(elements);\n    }\n\n    if (index >= 0 && index < this.formElements.length) {\n      const updatedElement = {\n        ...this.formElements[index],\n        ...updates\n      };\n      if (updates.required !== undefined) {\n        if (updatedElement.questionText) {\n          const questionText = updatedElement.questionText.replace(/\\s*\\*+$/, '');\n          updatedElement.questionText = updates.required ? `${questionText} *` : questionText;\n        }\n        if (elements[index]) {\n          elements[index] = { ...elements[index], ...updates };\n          this.formElements = elements;\n          this.formElementsSubject.next([...this.formElements]);\n        }\n      }\n\n      // Handle special cases\n      if (updates.required === true && updatedElement.questionText && !updatedElement.questionText.endsWith('*')) {\n        updatedElement.questionText = `${updatedElement.questionText} *`;\n      } else if (updates.required === false && updatedElement.questionText && updatedElement.questionText.endsWith('*')) {\n        updatedElement.questionText = updatedElement.questionText.slice(0, -2);\n      }\n\n      this.formElements[index] = updatedElement;\n      this.formElementsSubject.next([...this.formElements]);\n      // localStorage.setItem('formElements', JSON.stringify(this.formElements));\n    }\n  }\n  updateTitle(event: any) {\n    //AP-10MAR25 Updates the title of the first record in the book  \n    this.book.records[0].title = event;\n  }\n  setSelectedElement(index: number) {\n    this.selectedElementSubject.next(index);\n    this.currentElement = this.formElements[index]\n    this.selectTableColumn = null\n  }\n  // SKS19MAR25 set the selected table column\n  setSelectedTableElement(index: any, event: any) {\n    this.currentElement = this.formElements[index]\n    if (this.currentElement?.type === 'Table') {\n      this.currentElement['fieldsMeta'] = typeof this.currentElement?.fieldsMeta === 'object' ? this.currentElement?.fieldsMeta : JSON.parse(this.currentElement.fieldsMeta);\n    }\n    const foundItem = this.currentElement?.type === 'Table' ? this.currentElement['fieldsMeta'].find(item => item['apiName'] === event?.column) : undefined;\n    this.selectTableColumn = foundItem?.uniqueIdentifier\n    this.selectedElementSubject.next(index);\n  }\n  removeSelectedTableElement(index: number, event: any) {\n    // console.log(\"ddd\",index, event)\n    this.currentElement = this.formElements[index];\n\n    if (this.currentElement?.type === 'Table') {\n      this.currentElement['fieldsMeta'] = typeof this.currentElement?.fieldsMeta === 'object' ? this.currentElement?.fieldsMeta : JSON.parse(this.currentElement.fieldsMeta);\n      // Find the index of the item\n      const itemIndex = this.currentElement['fieldsMeta'].findIndex(item => item['apiName'] === event?.column);\n      // Remove the item if found\n      if (itemIndex !== -1) {\n        this.currentElement['fieldsMeta'].splice(itemIndex, 1);\n      }\n    }\n    this.selectTableColumn = null\n    this.elementUpdate(index, this.currentElement)\n  }\n  // SKS19MAR25 get the selected table column\n  getSelectTableColumn() {\n    return this.selectTableColumn;\n  }\n  selectHeading(event: any) {\n    //AP-10MAR25 Emits the selected heading event  \n    this.selectHeaderSubject.next(event);\n  }\n\n\n  getElements(): FormElement[] {\n    return this.formElements.map(element => ({\n      ...element,\n      options: element.options || [],\n    }));\n  }\n  sortElementsByOrder(): void {\n    //AP-10MAR25 Sort elements by current order\n    this.formElements.sort((a, b) => a.questionNumber - b.questionNumber);\n    this.formElements.forEach((element, index) => {\n      element.questionNumber = index + 1;\n    });\n    this.formElementsSubject.next([...this.formElements]);\n  }\n  //AP-10MAR25 Returns the current book data  \n  getBook() {\n    return this.book;\n  }\n  // In FormBuilderService\n  downloadElement() {\n    // SKS28MAR25 remove qbReferenceQuestions for download time and subtext to convert too string\n    this.formElements.forEach(element => {\n      if (element.type === 'book') {\n        delete element.qbReferenceQuestions;\n      }\n      if( element.subText){\n        element.subText = typeof element?.subText === 'object' ? element?.subText : JSON.parse(element['subText']);\n        if (typeof element.subText.field  === 'string') {\n          // Convert to an array if it's a comma-separated string\n          element.subText.field  = element.subText.field.split(',').map(item => item.trim());\n        }\n      }\n      if( element.subText){\n        element.subText = typeof element?.subText !== 'object' ? element?.subText : JSON.stringify(element['subText']);\n      }\n    });\n    \n    this.book.bookQuestionsMap[this.unique_id].subQuestions = this.formElements;\n    console.log('book', this.book);\n    let tempElement: any = {};\n\n    this.formElements.forEach((element) => {\n      if (element.type === 'Dropdown' || element.type === 'Radio' || element.type === 'Checkbox') {\n        //AP 25FEB25 - Store the entire question with its options under its ID\n        tempElement[element.id] = {\n          ...element,\n          options: element.options || []\n        };\n      }\n    });\n\n    this.book.sqOptions = tempElement;\n    return this.book;\n  }\n  // AP-06MAR25 - Element new order update\n  updateElementsOrder(updatedElements: FormElement[]): void {\n    this.formElements = [...updatedElements];\n    this.formElementsSubject.next(this.formElements);\n  }\n  // Remove an element by ID\n  // Save elements to localStorage and update the subject\n  removeElementComponent(id: any) {\n    this.tempElem = [];\n    this.selectedElementSubject.next(null);\n    this.currentElement = {}\n    this.formElements.forEach((element: any) => {\n      if (element.id !== id) {\n        this.tempElem.push(element);\n      }\n    });\n    this.formElements = this.tempElem;\n    // localStorage.setItem('formElements', JSON.stringify(this.formElements));\n    this.formElementsSubject.next([...this.formElements]);\n  }\n  // SKS19MAR25 update the element\n  elementUpdate(index: any, element: any) {\n    const elements = [...this.getElements()];\n    if (elements[index]) {\n      elements[index] = element\n      this.formElements = elements;\n      this.formElementsSubject.next([...elements]);\n      this.selectedElementSubject.next(index);\n    }\n  }\n}\n","// AP-11APR25\nimport { Injectable } from '@angular/core';\nimport { v4 as uuidv4 } from 'uuid';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TemplateService {\n  templates = [\n    {\n      templateId: 1,\n      templateName: 'Invoice',\n      content: 'Invoice template with customer details',\n      elements: [\n        { \n          type: 'Text', \n          questionText: 'Customer Name',\n          style: { showLabel: true },\n          size: 12\n        },\n        { \n          type: 'Date', \n          questionText: 'Invoice Date',\n          style: { showLabel: true }\n        },\n        {\n          type: 'Table',\n          questionText: 'Items',\n          fieldsMeta: JSON.stringify([\n            { \n              label: 'Item', \n              fieldName: 'item', \n              type: 'Text',\n              uniqueIdentifier: 'temp1' \n            },\n            {\n              label: 'Quantity',\n              fieldName: 'qty',\n              type: 'Number',\n              uniqueIdentifier: 'temp2'\n            }\n          ]),\n          tableConfig: {\n            isNosIndicator: true,\n            addInlineRecord: true,\n            isPagination: true\n          }\n        }\n      ]\n    },\n    {\n      templateId: 2,\n      templateName: 'Registration',\n      content: 'User registration form template',\n      elements: [\n        {\n          type: 'Text',\n          questionText: 'Full Name',\n          style: { showLabel: true },\n          size: 12\n        },\n        {\n          type: 'Text',\n          questionText: 'Email Address',\n          style: { showLabel: true },\n          size: 12\n        },\n        {\n          type: 'Date',\n          questionText: 'Date of Birth',\n          style: { showLabel: true }\n        }\n      ]\n    },\n    {\n      templateId: 3,\n      templateName: 'Employee Detail',\n      content: 'Template to capture employee details',\n      elements: [\n        {\n          type: 'Text',\n          questionText: 'Employee ID',\n          style: { showLabel: true },\n          size: 6\n        },\n        {\n          type: 'Text',\n          questionText: 'Employee Name',\n          style: { showLabel: true },\n          size: 6\n        },\n        {\n          type: 'Table',\n          questionText: 'Previous Work Experience',\n          fieldsMeta: JSON.stringify([\n            {\n              label: 'Company Name',\n              fieldName: 'company',\n              type: 'Text',\n              uniqueIdentifier: 'emp1'\n            },\n            {\n              label: 'Years Worked',\n              fieldName: 'years',\n              type: 'Number',\n              uniqueIdentifier: 'emp2'\n            }\n          ]),\n          tableConfig: {\n            isNosIndicator: false,\n            addInlineRecord: true,\n            isPagination: true\n          }\n        }\n      ]\n    },\n    {\n      templateId: 4,\n      templateName: 'Feedback',\n      content: 'Feedback form for services or products',\n      elements: [\n        {\n          type: 'Text',\n          questionText: 'Your Name',\n          style: { showLabel: true },\n          size: 12\n        },\n        {\n          type: 'Text',\n          questionText: 'Feedback',\n          style: { showLabel: true },\n          size: 12\n        },\n        {\n          type: 'Table',\n          questionText: 'Service Ratings',\n          fieldsMeta: JSON.stringify([\n            {\n              label: 'Service',\n              fieldName: 'service',\n              type: 'Text',\n              uniqueIdentifier: 'fb1'\n            },\n            {\n              label: 'Rating (1-5)',\n              fieldName: 'rating',\n              type: 'Number',\n              uniqueIdentifier: 'fb2'\n            }\n          ]),\n          tableConfig: {\n            isNosIndicator: false,\n            addInlineRecord: true,\n            isPagination: false\n          }\n        }\n      ]\n    }\n  ];\n  unique_id: any;\n  book: any;\n  formElements: any[] = [];\n  constructor() {\n    this.newBook(); \n  }\n  getTemplates() {\n    return this.templates;\n  }\n  initializeElementFromTemplate(templateElement: any, index: number): any {\n    const unique_id = uuidv4();\n    const baseElement = {\n      id: unique_id,\n      uid: unique_id,\n      type: templateElement.type,\n      name: null,\n      questionText: templateElement.questionText || null,\n      question: templateElement.question || null,\n      helpText: null,\n      errorMessage: null,\n      isReadOnly: false,\n      isHidden: false,\n      required: false,\n      referenceField: null,\n      additionalRichContent: null,\n      groupName: null,\n      isDateBackward: false,\n      title: null,\n      subTitle: null,\n      size: templateElement.size || 12,\n      isDateForward: false,\n      isOptional: false,\n      isTitle: false,\n      nextQuestion: null,\n      allowedFileExtensions: null,\n      questionNumber: index + 1,\n      order: index + 1,\n      style: {\n        labelClass: null,\n        labelStyle: null,\n        labelValueStyle: null,\n        inputClass: null,\n        inputStyle: null,\n        showLabel: templateElement?.style?.showLabel ?? true,\n        bookStyle: null,\n        direction: 'ltr',\n        questionStyle: null,\n      },\n      subText: {\n        endpoint: null,\n        variable: null,\n        field: null,\n        defaultField: null,\n        sourceQuestionId: null,\n        valueField: null,\n        labelField: null,\n        isDependentField: false,\n        dependentValue: null,\n        queryField: null,\n        queryValue: null,\n        queryValueReference: null,\n        uniqueKey: null,\n      },\n      imageData: null,\n      boolean: false,\n      options: templateElement.options\n        ? this.initializeOptions(templateElement.options)\n        : null,\n      imageSize:\n        templateElement.type === 'Image' ? { width: 150, height: 150 } : null,\n      tableConfig: templateElement.type === 'Table' ? {\n        isNosIndicator: true,\n        addInlineRecord: true,\n        isPagination: true,\n        actionButton: true,\n        isDeleteRow: true,\n        isEditRow: true,\n        searchBar: true,\n        isButtons: true,\n        itemsPerPage: 10,\n      } : null,\n      fieldsMeta: templateElement.fieldsMeta\n        ? this.initializeFieldsMeta(templateElement.fieldsMeta)\n        : null,\n    };\n\n    return { ...baseElement, ...templateElement };\n  }\n\n  private initializeOptions(options: any[]): any[] {\n    return options.map(option => ({\n      ...option,\n      id: uuidv4()\n    }));\n  }\n\n  private initializeFieldsMeta(fieldsMeta: string): any {\n    try {\n      const parsed = JSON.parse(fieldsMeta);\n      return parsed.map((field: any) => ({\n        ...field,\n        uniqueIdentifier: uuidv4()\n      }));\n    } catch (e) {\n      console.error('Error parsing fieldsMeta:', e);\n      return [];\n    }\n  }\n// In TemplateService\ndownload() {\n  if (!this.formElements || !Array.isArray(this.formElements)) {\n    console.error('Invalid formElements');\n    return null;\n  }\n\n  // Clean elements for export (same as FormBuilderService)\n  this.formElements.forEach(element => {\n    // Remove qbReferenceQuestions for 'book' type\n    if (element.type === 'book') {\n      delete element.qbReferenceQuestions;\n    }\n\n    // Process subText to match FormBuilderService's format\n    if (element.subText) {\n      try {\n        // Convert subText to object if string\n        element.subText = typeof element.subText === 'string' \n          ? JSON.parse(element.subText) \n          : {...element.subText};\n\n        // Convert field to array if string\n        if (typeof element.subText.field === 'string') {\n          element.subText.field = element.subText.field.split(',').map(i => i.trim());\n        }\n\n        // Stringify subText for storage\n        element.subText = JSON.stringify(element.subText);\n      } catch (e) {\n        console.error('Error processing subText:', e);\n        element.subText = '{}';\n      }\n    }\n  });\n\n  // Update book structure (same as FormBuilderService)\n  if (!this.book) this.newBook(); // Ensure book exists\n  \n  if (this.book.bookQuestionsMap && this.unique_id) {\n    this.book.bookQuestionsMap[this.unique_id].subQuestions = this.formElements;\n  }\n\n  // Prepare sqOptions (same format as FormBuilderService)\n  const sqOptions: Record<string, any> = {};\n  this.formElements.forEach(element => {\n    if (['Dropdown', 'Radio', 'Checkbox'].includes(element.type)) {\n      sqOptions[element.id] = {\n        ...element,\n        options: element.options?.map(opt => ({\n          ...opt,\n          // Ensure UUIDs are preserved\n          id: opt.id || uuidv4(),\n          uniqueIdentifier: opt.uniqueIdentifier || uuidv4()\n        })) || []\n      };\n    }\n  });\n\n  this.book.sqOptions = sqOptions;\n  \n  return JSON.parse(JSON.stringify(this.book)); // Return clean copy\n}\n\n// Add the newBook() method if missing\nprivate newBook() {\n  this.unique_id = uuidv4();\n  this.book = {\n    bookQuestionsMap: {\n      [this.unique_id]: {\n        subQuestions: [],\n        type: 'Book'\n      }\n    },\n    questionbook: {\n      action: JSON.stringify([\n        { name: \"Cancel\", eventtoemit: \"close\" },\n        { name: \"Save\", eventtoemit: \"submit\", method: \"POST\" }\n      ])\n    },\n    records: [{\n      id: this.unique_id,\n      title: 'Untitled Template',\n      subQuestions: []\n    }]\n  };\n}\n  \n  \n}\n","import { Component, Output, EventEmitter } from '@angular/core';\nimport { TemplateService } from '../../../services/template.service';\n\n@Component({\n  selector: 'app-templates',\n  templateUrl: './templates.component.html',\n  styleUrls: ['./templates.component.css']\n})\nexport class AppTemplatesComponent {\n  @Output() templateSelected = new EventEmitter<any>();\n  templates = [];\n  sections = { templates: false };\n\n  constructor(private templateService: TemplateService) {\n    this.templates = this.templateService.getTemplates(); // Load template list\n  }\n\n  toggleSection(section: 'templates') {\n    this.sections[section] = !this.sections[section];\n  }\n\n  selectTemplate(templateId: number) {\n    const selectedTemplate = this.templates.find(t => t.templateId === templateId);\n    if (!selectedTemplate) return;\n\n    // Convert template element data to form elements\n    const elements = selectedTemplate.elements.map((el, index) =>\n      this.templateService.initializeElementFromTemplate(el, index)\n    );\n\n    // Emit data to parent\n    this.templateSelected.emit({ selectedTemplate, elements });\n  }\n}","<!-- AP-08APR25 -->\n<!-- Templates Section Toggle -->\n<div class=\"field-container\" (click)=\"toggleSection('templates')\"\n     style=\"background-color: #EFF8FF; border: 1px solid #E6F3FF; margin-bottom: 10px; display: flex; justify-content: space-between; padding: 10px; cursor: pointer;\">\n  <div class=\"label-container\">\n    <div class=\"head-elements\" style=\"font-weight: bold;\">Templates</div>\n  </div>\n  <img [src]=\"sections.templates ? '../assets/icons/arrow-down.svg' : '../assets/icons/arrow-right.svg'\"\n       alt=\"Toggle Arrow\" class=\"arrow-icon\" />\n</div>\n\n<!-- Template List Section -->\n<div *ngIf=\"sections.templates\" class=\"template-container\">\n  <div *ngFor=\"let template of templates\" class=\"field-container template-card\"\n       (click)=\"selectTemplate(template.templateId)\"\n       style=\"border: 1px solid #dbeafe; padding: 12px; margin-bottom: 10px; cursor: pointer; border-radius: 10px; background-color: #f8fafc;\">\n    \n    <div class=\"label-container\" style=\"display: flex; justify-content: space-between;\">\n      <div>\n        <label class=\"template-header\" style=\"font-weight: 600;\">{{ template.templateName }}</label>\n      </div>\n    </div>\n    <div class=\"template-content\" style=\"margin-top: 5px; color: #555;\">{{ template.content }}</div>\n  </div>\n</div>\n","// AP 22JAN25 - form preview and All form elements\nimport { Component, EventEmitter, Input, Output, SimpleChanges } from '@angular/core';\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { FormBuilderService } from '../../../services/form-builder.service';\nimport { v4 as uuidv4 } from 'uuid';\nimport { VERSION } from '../../../../environments/version';\n\n@Component({\n  selector: 'app-element',\n  templateUrl: './element.component.html',\n  styleUrls: ['./element.component.css'],\n})\n\nexport class ElementComponent {\n\n  //@Output() elementButtonClicked = new EventEmitter<string>();\n  @Input() bookletJSON: any;\n  @Input() bookletId: any;\n  @Output() templateMode = new EventEmitter<boolean>();\n  field: any;\n  formElements: any[] = [];\n  elements: any[] = [];\n  bookId: string;\n  sections = {\n    basic: true,    // Basic Elements open by default\n    advanced: true // Advanced Elements closed by default\n  };\n  basicElements: any[] = [];\n  advancedElements: any[] = [];\n  elementDisabledArray: any;\n  version = VERSION.version; //SKS10MAR25 get version from environment/version.ts \n  book: any;\n  selectedElement: any = null;\n  isSelectTablePopup: boolean = false;\n  currentType: string;\n  addTable: boolean = true;\n  dots = Array(6);\n  draggedIndex: number | null = null;\n  templateSelected = false;\n\n  //subscription: any;\n  constructor(private formBuilderService: FormBuilderService) {\n  }\n//  AP-06MAR25 New Design Change Elements Basic , Advanced\n// AP-06MAR25 Add RichText Area\n// AP-12MAR25 Add Date\nngOnInit() {\n  this.basicElements = [\n  \n  { \"type\": \"Text\", \"img\": \"Text\", \"label\": \"Text\" },\n  { \"type\": \"Number\", \"img\": \"Number\", \"label\": \"Number\" },\n  { \"type\": \"Label\", \"img\": \"Label\", \"label\": \"Label\" },\n  { \"type\": \"Email\", \"img\": \"Email\", \"label\": \"Email\" },\n  { \"type\": \"Date\", \"img\": \"Date\", \"label\": \"Date\" },\n  { \"type\": \"Time\", \"img\": \"Time\", \"label\": \"Time\" },\n  { \"type\": \"DateTime\", \"img\": \"DateTime\", \"label\": \"DateTime\" },\n  { \"type\": \"Calendar\", \"img\": \"Calendar\", \"label\": \"Calendar\" },\n  { \"type\": \"File\", \"img\": \"File\", \"label\": \"Files\" },\n  { \"type\": \"Image\", \"img\": \"Image\", \"label\": \"Image\" },\n  { \"type\": \"Checkbox\", \"img\": \"CheckBox\", \"label\": \"Checkbox\" },\n  { \"type\": \"Radio\", \"img\": \"Radio\", \"label\": \"Radio\" },\n  { \"type\": \"Dropdown\", \"img\": \"Drop\", \"label\": \"Dropdown\" },\n  { \"type\": \"TextArea\", \"img\": \"TextArea\", \"label\": \"Text Area\" },\n  { \"type\": \"RichTextArea\", \"img\": \"RichText\", \"label\": \"Rich Text\" }, \n  \n    ];\n\n    this.advancedElements = [\n  { \"type\": \"Line\", \"img\": \"line\", \"label\": \"Line\" },\n  { \"type\": \"Space\", \"img\": \"space\", \"label\": \"Space\" },  \n  { \"type\": \"Boolean\", \"img\": \"Boolean\", \"label\": \"Boolean\" },\n  { \"type\": \"Book\", \"img\": \"Search\", \"label\": \"Book\" },\n  { \"type\": \"List\", \"img\": \"Search\", \"label\": \"List\" },\n  { \"type\": \"Table\", \"img\": \"Table\", \"label\": \"Table\" },\n  { \"type\": \"Button\", \"img\": \"Button\", \"label\": \"Button\" }\n    ];\n    this.elementDisabledArray = {\n      Table: [\n        'Book', 'Calendar',\"Boolean\", 'List', 'Table', 'Checkbox', 'Radio', \n        'Dropdown', 'TextArea', 'RichTextArea', 'Number', 'Label', 'Image', \n        'Email', 'Date', 'Time', 'DateTime', 'Line', 'Space'\n      ]\n    };\n    \n    this.formBuilderService.formElements$.subscribe(elements => {\n      setTimeout(() => {\n        this.formElements = elements.map(field => ({ ...field }));\n      }, 0);\n    });\n    if (this.bookletJSON && (this.bookletJSON !== '')) {\n      this.initializeForm();\n    } else {\n      this.formBuilderService.newBook()\n    }\n    // AP-12MAR25 - Added to handle bookletId\n    if (this.bookletId) {\n      localStorage.setItem('unique_id', this.bookletId);\n      \n    }\n    this.book = this.formBuilderService.getBook();\n    this.formBuilderService.selectedElement$.subscribe(index => {\n      const elements = this.formBuilderService.getElements();\n      if (index >= 0) {\n        this.selectedElement = elements[index];\n      }\n      // SKS19MAR25 for fieldMeta checking\n      if (this.selectedElement?.type === 'Table') {\n        this.selectedElement['fieldsMeta'] = typeof this.selectedElement.fieldsMeta === 'string' ? this.selectedElement.fieldsMeta : JSON.stringify(this.selectedElement['fieldsMeta'] || []);\n      }\n      // this.formElements = [...elements]\n    });\n    this.formBuilderService.addElementWithId();\n  }\n\n  // Add these methods\n  toggleSection(section: 'basic' | 'advanced') {\n    this.sections[section] = !this.sections[section];\n  }\n\n  isSectionOpen(section: string): boolean {\n    return this.sections[section];\n  }\n\n  // AP - 26FEB25 - Added ngOnChanges to handle changes in bookletJSON\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['bookletJSON'] && changes['bookletJSON'].currentValue) {\n      if (this.bookletJSON && (this.bookletJSON !== '')) {\n        this.initializeForm();\n      } else {\n        this.formBuilderService.newBook()\n      }\n    }\n  }\n  // AP-08APR25 Template is selected, update form elements and emit template mode\n  onTemplateSelected(event: { selectedTemplate: any; elements: any[] }) {\n    this.formBuilderService.clearElements();\n    event.elements.forEach(el => this.formBuilderService.addElement(el));\n\n    // Emit template mode to parent\n   this.templateMode.emit(true);\n  }\n\n  private initializeForm() {\n    if (!this.bookletJSON || !this.bookletJSON.bookQuestionsMap) {\n      console.warn(\"Invalid bookletJSON structure\");\n      return;\n    }\n    this.formElements = []\n    this.formBuilderService.clearElements();\n    this.formBuilderService.intializeBook(this.bookletJSON);\n  \n    const bookQuestionsMap = this.bookletJSON.bookQuestionsMap;\n    const bookQuestionsMapKeys = Object.keys(bookQuestionsMap);\n  \n    if (bookQuestionsMapKeys.length === 0) return; // Check for empty object early\n  \n    for (const key of bookQuestionsMapKeys) {\n      const subQuestions = bookQuestionsMap[key]?.subQuestions;\n  \n      if (Array.isArray(subQuestions)) {\n        subQuestions.forEach((subQuestion) => {\n           // AP-04APR24 If subQuestion.style exists as a string and is empty, replace it with a default style object\n          if (typeof subQuestion.style === \"string\" && subQuestion.style.trim() === \"\") {\n            subQuestion.style = {\n              \"labelClass\": null,\n              \"labelStyle\": null,\n              \"labelValueStyle\": null,\n              \"inputClass\": null,\n              \"inputStyle\": null,\n              \"showLabel\": true,\n              \"bookStyle\": null,\n              \"direction\": \"ltr\",\n              \"questionStyle\": null\n            };\n          }\n        });\n      }\n    }\n    this.formElements = this.formBuilderService.getElements();\n  }\n\n  // Add this method to handle element selection\n  selectElement(index: number) {\n    this.selectedFieldIndex = index; // element is selected\n    this.formBuilderService.setSelectedElement(index);\n    this.book = this.formBuilderService.getBook();\n    //const element = this.formElements[index];\n    // this.elementButtonClicked.emit(element.type);  \n  }\n  //selectedIndex: number | null = null;\n  selectedFieldIndex: number | null = null; // element is cleared\n\n  selectHeading(event: any) {\n    this.formBuilderService.selectHeading(event); //AP-10MAR25 Updates the selected heading in the service  \n    this.book = this.formBuilderService.getBook(); //AP-10MAR25 Retrieves the updated book/form data \n  }\n// AP-17APR25 generateUiId \n  generateUiId() {\n    return this.formBuilderService.addElementWithId();  \n  }  \n\n  addElement(type: string): void {\n    const unique_id = this.generateUiId();\n    this.currentType = type\n    if (this.selectedElement?.type === 'Table' && this.addTable) {\n      this.isSelectTablePopup = true\n    } else {\n      const newElement = {\n        id: unique_id,\n        uid: unique_id,\n        type,\n        name: null,\n        questionText: null,\n        question: null,\n        helpText: null,\n        errorMessage: null,\n        isReadOnly: false,\n        isHidden: false,\n        required: false,\n        referenceField: null,\n        additionalRichContent: null,\n        groupName: null,\n        isDateBackward: false,\n        title: null,\n        subTitle: null,\n        size: 12,\n        isDateForward: false,\n        isOptional: false,\n        isTitle: false,\n        nextQuestion: null,\n        allowedFileExtensions: null,\n        questionNumber: this.formBuilderService.getElements().length + 1,\n        order: this.formElements.length + 1,\n        questionBookId: this.bookletId,\n        parentQuestion: null,\n        fieldsMeta: [],\n        recordTypeName: null,\n        recordTypeId: null,\n        trackingId: null,\n        dateText: null,\n        timeText: null,\n        recordId: null,\n        qbReference: null,\n        qbReferenceQuestions: null,\n        questionBookSubTitle: null,\n        style: {\n          labelClass: null,\n          labelStyle: null,\n          labelValueStyle: null,\n          inputClass: null,\n          inputStyle: null,\n          showLabel: true,\n          bookStyle: null,\n          direction: 'ltr',\n          questionStyle: null,\n        },\n        subText: {\n          endpoint: null,\n          variable: null,\n          field: null,\n          defaultField: null,         \n          sourceQuestionId:null,\n          valueField:null,\n          labelField:null,           \n          isDependentField:false,\n          dependentValue:null,        \n          queryField: null,\n          queryValue: null,\n          queryValueReference: null,         \n          uniqueKey: null,\n        },\n        imageData: null,\n        boolean: false,\n        options: type === 'Dropdown' || type === 'Radio' || type === 'Checkbox' ? [] : null,\n        imageSize:  type === 'Image' ? { width: 150, height: 150 } : null,\n        tableConfig: type === 'Table' ? {\n          isNosIndicator: true,\n          addInlineRecord: true,\n          isPagination: true,\n          actionButton: true,\n          isDeleteRow: true,\n          isEditRow: true,\n          searchBar: true,\n          isButtons: true,\n          itemsPerPage: 10,\n        } : null,\n      };\n      this.formBuilderService.addElement(newElement);\n      this.formElements = this.formBuilderService.getElements();\n      // SKS19MAR25 fieldsmeta check\n      this.formElements = this.formElements.map(ele => {\n        if (ele.type === 'Table') {\n          ele.fieldsMeta = typeof ele.fieldsMeta === 'string'\n            ? ele.fieldsMeta\n            : JSON.stringify(ele.fieldsMeta || []);\n        }\n        return ele;\n      });\n      this.addTable = true\n    }\n  }\n\n  // Remove an element by index\n  removeElement(field: any, index: number): void {\n    this.formBuilderService.removeElementComponent(field.id);\n    this.formElements = this.formBuilderService.getElements();\n    // SKS19MAR25 fieldsmeta check\n    this.formElements = this.formElements.map(ele => {\n      if (ele.type === 'Table') {\n        ele.fieldsMeta = typeof ele.fieldsMeta === 'string'\n          ? ele.fieldsMeta\n          : JSON.stringify(ele.fieldsMeta || []);\n      }\n      return ele;\n    });\n  }\n\n  onDragStart(event: DragEvent, index: number) {\n    this.draggedIndex = index;\n    event.dataTransfer?.setData('text/plain', index.toString());\n  }\n\n  // Allow dropping by preventing default\n  onDragOver(event: DragEvent, index: number) {\n    event.preventDefault();\n  }\n\n  // Handle drop event\n  onDrop(event: DragEvent, dropIndex: number) {\n    event.preventDefault();\n\n    if (this.draggedIndex === null || this.draggedIndex === dropIndex) return;\n\n    const draggedItem = this.formElements[this.draggedIndex];\n\n    // Remove dragged item from old position and insert it in new position\n    this.formElements.splice(this.draggedIndex, 1);\n    this.formElements.splice(dropIndex, 0, draggedItem);\n\n  //AP-28MAR25 Update questionNumber dynamically based on new order\n  this.formElements.forEach((element, index) => {\n    element.questionNumber = index + 1;\n  });\n\n    // Reset dragged index\n    this.draggedIndex = null;\n\n    // Notify service about the update\n    this.formBuilderService.updateElementsOrder(this.formElements);\n  }\n  \n\n  toggleBoolean(field: any): void {\n    field.boolean = !field.boolean;\n  }\n  getFontStyles(field: any): any {\n    const styles: any = {\n      'font-family': field.font || 'Helvetica Neue',\n      'font-weight': field.fontWeight || '400',\n      'font-size': field.fontSize || '14px',\n      'width': field.size ? `${(field.size / 12) * 100}%` : '100%',\n      'text-align': field.textAlign || 'left',\n      'border-radius': '5px',\n      'border-width': field.lineWidth ? `${field.lineWidth}px` : '1px',\n      // 'border-style': field.lineStyle?.toLowerCase() || 'solid',\n      'color': field.fontColor || '#000000',\n      // 'border-color': field.color || '#EFF8FF', \n      'margin-top': field.paddingTop ? `${field.paddingTop}px` : '0px',\n      'margin-bottom': field.paddingBottom ? `${field.paddingBottom}px` : '10px'\n    };\n    return styles;\n  }\n  getLineStyles(field: any): any {\n    const styles: any = {\n      'font-family': field.font || 'Helvetica Neue',\n      'font-weight': field.fontWeight || '400',\n      'font-size': field.fontSize || '14px',\n      'width': field.size ? `${(field.size / 12) * 100}%` : '100%',\n      'text-align': field.textAlign || 'left',\n      'border-radius': '5px',\n      'border-width': field.lineWidth ? `${field.lineWidth}px` : '1px',\n      'border-style': field.lineStyle?.toLowerCase() || 'solid',\n      'color': field.fontColor || '#000000',\n      //'border-color': field.color || '#EFF8FF', \n      'margin-top': field.paddingTop ? `${field.paddingTop}px` : '0px',\n      'margin-bottom': field.paddingBottom ? `${field.paddingBottom}px` : '10px'\n    };\n    return styles;\n  }\n  // SKS13MAR25 table popup conformation based element add\n  onClose() {\n    this.isSelectTablePopup = false\n    this.addTable = false\n    this.addElement(this.currentType)\n  }\n  // SKS13MAR25 column element add inside a table\n  addOnTable() {\n    this.addTable = true\n    this.isSelectTablePopup = false\n    const elements = [...this.formBuilderService.getElements()];\n\n    // Find the element and update its columns\n    const index = elements.findIndex(el => el.id === this.selectedElement.id);\n    const rowNum = this.formElements[index].columns ? this.formElements[index].columns?.length : 0\n    const unique_id = this.generateUiId();\n    const tableElement = {\n      label: `Header Lable ${rowNum}`,\n      fieldName: `fieldName${rowNum}`,\n      type: this.currentType,\n      id: unique_id\n    }\n    this.formBuilderService.addTableElement(tableElement, this.selectedFieldIndex);\n    this.formElements = this.formBuilderService.getElements();\n    // SKS19MAR25 fieldsmeta checking\n    this.formElements = this.formElements.map(ele => {\n      if (ele.type === 'Table') {\n        ele.fieldsMeta = typeof ele.fieldsMeta === 'string'\n          ? ele.fieldsMeta\n          : JSON.stringify(ele.fieldsMeta || []);\n      }\n      return ele;\n    });\n    // this.addTableData(unique_id, fieldName)\n  }\n  addTableData(fieldId, fieldName) {\n    // this.formBuilderService.addTablefieldData(tableElement);\n  }\n  columnSelected(event: any) {\n    // console.log(event)\n    // SKS19MAR25 table column update\n    this.formBuilderService.setSelectedTableElement(this.selectedFieldIndex, event);\n  }\n  removeColumn(event: any) {\n    // console.log(event)\n    this.formBuilderService.removeSelectedTableElement(this.selectedFieldIndex, event);\n  }\n\n  // SKS25MAR25 image add\n  async fileChangeEvent(index: any, event: any): Promise<void> {\n    const file = event.target.files[0];\n    if (file) {\n      try {\n        const imageData = await this.readFileAsDataURL(file);\n        this.formElements[index].imageData = imageData;\n        this.formElements[index].orgImageData = imageData;\n        // Initialize logo size if not already set\n        if (!this.formElements[index].imageSize) {\n          this.formElements[index].imageSize = { width: 150, height: 150 };\n        }\n  \n        await this.formBuilderService.elementUpdate(index, this.formElements[index]);\n      } catch (error) {\n        console.error(\"Error reading file:\", error);\n      }\n    }\n  }\n  \n  private readFileAsDataURL(file: File): Promise<string> {\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.onload = () => resolve(reader.result as string);\n      reader.onerror = (error) => reject(error);\n      reader.readAsDataURL(file);\n    });\n  }\n  // SKS2APR25 disabled element\n  isElementDisabled(elementType: string): boolean {\n    if(this.selectedElement){\n      const elements = this.elementDisabledArray[this.selectedElement.type]\n      if(elements){\n        return elements.includes(elementType);\n      }\n    }\n    return false;\n  }\n}\n\n\n","<!-- AP 22JAN25 - form preview and All form elements -->\n<!-- AP 25FEB25 - All elements update -->\n<div class=\"center-frame\">\n  <!-- Form Builder Section All Elements -->\n  <div class=\"form-builder\">\n    <!-- Basic Elements Toggle -->\n    <div class=\"toggle-header\" (click)=\"toggleSection('basic')\">\n      <div class=\"head-elements\">Basic Elements</div>\n      <img [src]=\"sections.basic ? '../assets/icons/arrow-down.svg' : '../assets/icons/arrow-right.svg'\"\n        alt=\"Toggle Arrow\" class=\"arrow-icon\">\n    </div>\n\n    <div *ngIf=\"sections.basic\">\n      <ng-container *ngFor=\"let element of basicElements\">\n        <div class=\"element\" [class.disabled]=\"isElementDisabled(element.type)\"\n          (click)=\"!isElementDisabled(element.type) && addElement(element.type)\"\n          [draggable]=\"!isElementDisabled(element.type)\" [matTooltip]=\"isElementDisabled(element.type) ? 'This element is not supported when a ' + (selectedElement?.type || 'certain element') + ' is present' : null\">\n          <img src=\"../assets/icons/{{ element.img }}.svg\" class=\"element-icon\">\n          <div class=\"hover-label\">{{ element.label }}</div>\n          <div class=\"drag-dots\">\n            <div class=\"dot\" *ngFor=\"let dot of dots\"></div>\n          </div>\n        </div>\n      </ng-container>\n    </div>\n\n    <!-- Advanced Elements Toggle -->\n    <div class=\"toggle-header\" (click)=\"toggleSection('advanced')\">\n      <div class=\"head-elements\">Advanced Elements</div>\n      <img [src]=\"sections.advanced ? '../assets/icons/arrow-down.svg' : '../assets/icons/arrow-right.svg'\"\n        alt=\"Toggle Arrow\" class=\"arrow-icon\">\n    </div>\n\n    <div *ngIf=\"sections.advanced\">\n      <ng-container *ngFor=\"let element of advancedElements\">\n        <div class=\"element\" [class.disabled]=\"isElementDisabled(element.type)\"\n          (click)=\"!isElementDisabled(element.type) && addElement(element.type)\"\n          [draggable]=\"!isElementDisabled(element.type)\" [matTooltip]=\"isElementDisabled(element.type) ? 'This element is not supported when a ' + (selectedElement?.type || 'certain element') + ' is present' : null\">\n          <img src=\"../assets/icons/{{ element.img }}.svg\">\n          <div class=\"hover-label\">{{ element.label }}</div>\n          <div class=\"drag-dots\">\n            <div class=\"dot\" *ngFor=\"let dot of dots\"></div>\n          </div>\n        </div>\n      </ng-container>\n    </div>\n   <!-- AP-08APR25 Add Templates Component -->\n    <app-templates (templateSelected)=\"onTemplateSelected($event)\"></app-templates>\n\n    <!-- SKS10MAR25 footer version show -->\n    <div class=\"sticky-footer-version\">\n      {{version}}\n    </div>\n  </div>\n  <!-- AP-27MAR25 Remove CDK drag and drop replace draggable function  -->\n  <div class=\"form-preview\">\n    <!-- AP-10MAR25 Heading -->\n    <div class=\"field-container\"\n      style=\"width: 100%;background-color: #EFF8FF; border: 1px solid #E6F3FF;display: flex;justify-content: center;margin-bottom:10px\"\n      (click)=\"selectHeading('Header')\">\n      <div class=\"label-container\" style=\"padding: 10px;\">\n        <div *ngIf=\"book?.records\">\n          <div *ngIf=\"book.records[0].title == ''\" style=\"color:#3f4a525c\">Heading</div>\n          <div *ngIf=\"book.records[0].title !== ''\">{{book.records[0].title}}</div>\n        </div>\n      </div>\n    </div>\n\n    <ng-container *ngFor=\"let field of formElements; let i = index\" getProperties().elementProps>\n\n      <!-- TextBox -->\n      <div *ngIf=\"field.type === 'Text'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isOptional\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Label' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <input type=\"text\" class=\"custom-input\" [placeholder]=\"field.question || 'Enter text'\"\n              [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\"\n              [value]=\"field.defaultValue ? field.defaultValue : '' \" />\n          </div>\n        </div>\n      </div>\n\n      <!-- AP-19MAR25 Line Element -->\n      <div *ngIf=\"field.type === 'Line'\" class=\"line-field\" (click)=\"selectElement(i)\"\n        [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\" (dragstart)=\"onDragStart($event, i)\"\n        (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"line-element\">\n          <div></div>\n          <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n        </div>\n        <hr class=\"custom-line\" style=\"display: inline-flex\" [ngStyle]=\"getLineStyles(field)\" />\n      </div>\n\n      <!--SKS25MAR25 Image Upload Element -->\n      <div *ngIf=\"field.type === 'Image'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\" (dragstart)=\"onDragStart($event, i)\"\n        (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\" [ngStyle]=\"getFontStyles(field)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Upload Image' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <div>\n              <div class=\"logo-container\">\n                <!-- Logo preview area -->\n                <div class=\"logo-preview\" *ngIf=\"field.imageData\">\n                  <img [src]=\"field.imageData\" />\n                </div>\n\n                <!-- Upload button -->\n                <div *ngIf=\"!field.imageData\" class=\"logo-upload-placeholder\">\n                  <label for=\"logo-upload-{{i}}\" class=\"logo-upload-label\">\n                    <img src=\"../assets/icons/Image.svg\" alt=\"Upload\" />\n                    <span>Upload Image</span>\n                  </label>\n                  <input type=\"file\" id=\"logo-upload-{{i}}\" accept=\"image/*\" (change)=\"fileChangeEvent(i, $event)\"\n                    style=\"display: none;\" />\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Space Element -->\n      <div *ngIf=\"field.type === 'Space'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\" style=\"height:93px\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <label [class.required]=\"field.isRequired\"></label>\n              <div class=\"top-right\" style=\"margin: -11px -11px 0 0;\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Boolean Element -->\n      <div *ngIf=\"field.type === 'Boolean'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"label-container\">\n            <div>\n              <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{ field.questionText\n                ? field.questionText : 'Boolean'}}</label>\n            </div>\n            <div class=\"top-right\">\n              <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n\n              <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n            </div>\n          </div>\n          <input type=\"checkbox\" [checked]=\"field.boolean\" (change)=\"toggleBoolean(field)\"\n            [value]=\"field.defaultValue ? field.defaultValue : ''\" />\n        </div>\n      </div>\n\n      <!-- Calendar -->\n      <div *ngIf=\"field.type === 'Calendar'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Select Date'\n                  }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n\n            </div>\n            <input type=\"date\" class=\"custom-input\" [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\"\n              [value]=\"field.defaultValue ? field.defaultValue : ''\" />\n          </div>\n        </div>\n      </div>\n\n      <!-- AP -12MAR25 Date -->\n      <div *ngIf=\"field.type === 'Date'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Select Date'\n                  }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n\n            </div>\n            <input type=\"date\" class=\"custom-input\" [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\"\n              [value]=\"field.defaultValue ? field.defaultValue : ''\" />\n          </div>\n        </div>\n      </div>\n\n      <!-- AP-21MAR25 Add Time element -->\n      <!-- Time Field -->\n      <div *ngIf=\"field.type === 'Time'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <label [class.required]=\"field.isRequired\">{{ field.questionText ? field.questionText : 'Time' }}</label>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <input type=\"time\" class=\"custom-input\" [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\"\n              [value]=\"field.defaultValue ? field.defaultValue : ''\" />\n          </div>\n        </div>\n      </div>\n\n      <!-- AP-28MAR25 DateTime -->\n      <div *ngIf=\"field.type === 'DateTime'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Select Date & Time'\n                  }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <input type=\"datetime-local\" class=\"custom-input\" [readonly]=\"field.isReadOnly\"\n              [class.hidden]=\"field.isHidden\" />\n          </div>\n        </div>\n      </div>\n\n      <!-- Email -->\n      <div *ngIf=\"field.type === 'Email'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\"> {{ field.questionText ? field.questionText : 'Label' }}\n                </label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <input type=\"email\" class=\"custom-input\" [placeholder]=\"field.question || 'Enter email'\"\n              [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\"\n              [value]=\"field.defaultValue ? field.defaultValue : ''\" />\n          </div>\n        </div>\n      </div>\n\n      <!-- Numbers -->\n      <div *ngIf=\"field.type === 'Number'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Label' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <input type=\"number\" class=\"custom-input\" [placeholder]=\"field.question || 'Enter number'\"\n              [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\"\n              [value]=\"field.defaultValue ? field.defaultValue : ''\" />\n          </div>\n        </div>\n      </div>\n\n      <!-- TextArea -->\n      <div *ngIf=\"field.type === 'TextArea'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Enter your text'}}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <textarea class=\"custom-textarea\" [placeholder]=\"field.question || 'Enter detailed text here...'\"\n              [style.height.px]=\"field.size || 100\" [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\"\n              [value]=\"field.defaultValue ? field.defaultValue : ''\"></textarea>\n          </div>\n        </div>\n      </div>\n\n      <!-- RichText -->\n      <div *ngIf=\"field.type === 'RichTextArea'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Enter your text'}}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <textarea class=\"custom-textarea\" [placeholder]=\"field.question || 'Enter detailed text here...'\"\n              [style.height.px]=\"field.size || 100\" [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\"\n              [value]=\"field.defaultValue ? field.defaultValue : ''\"></textarea>\n          </div>\n        </div>\n      </div>\n\n      <!-- Label -->\n      <div *ngIf=\"field.type === 'Label'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Label' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Book -->\n      <div *ngIf=\"field.type === 'Book'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Label' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <lib-booklet [bookletJSON]=\"field.qbReferenceQuestions\"></lib-booklet>\n          </div>\n        </div>\n      </div>\n\n      <!-- File -->\n      <div *ngIf=\"field.type === 'File'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Upload File'\n                  }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <input type=\"file\" class=\"custom-input\" [readonly]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\" />\n          </div>\n        </div>\n      </div>\n\n      <!-- CheckBox -->\n      <div *ngIf=\"field.type === 'Checkbox'\" class=\"checkbox-field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">\n                  {{ field.questionText ? field.questionText : 'Label' }}\n                </label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n\n            <div class=\"checkbox-options-container\">\n              <div *ngFor=\"let option of field.options\" class=\"checkbox-option\">\n                <input type=\"checkbox\" [id]=\"option.value + i\" [name]=\"field.id\"\n                  [value]=\"option.value || field.defaultValue\" class=\"checkbox-input\" [disabled]=\"field.isReadOnly\"\n                  [class.hidden]=\"field.isHidden\">\n                <label [for]=\"option.value + i\" class=\"checkbox-label\">{{ option.value }}</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Radio -->\n      <div *ngIf=\"field.type === 'Radio'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Label' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <div class=\"radio-options-container\">\n              <div *ngFor=\"let option of field.options; let j = index\" class=\"radio-option\">\n                <input type=\"radio\" [id]=\"'radio-' + field.id + '-' + j\" [name]=\"'radio-group-' + field.id\"\n                  [value]=\"option.value || field.defaultValue\" [(ngModel)]=\"field.selectedValue\" class=\"radio-input\"\n                  [disabled]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\">\n                <label [for]=\"'radio-' + field.id + '-' + j\" class=\"radio-label\"> {{ option.value }}</label>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      <!-- Dropdown -->\n      <div *ngIf=\"field.type === 'Dropdown'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Label' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <select id=\"options\" class=\"dropdown\" [disabled]=\"field.isReadOnly\" [class.hidden]=\"field.isHidden\">\n              <option *ngFor=\"let option of field.options\" [value]=\"option.value || field.defaultValue\"> {{ option.value\n                }} </option>\n            </select>\n          </div>\n        </div>\n      </div>\n\n      <!--  Table  -->\n      <!-- AP-06MAR25 -->\n      <div *ngIf=\"field.type === 'Table'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\" style=\"overflow: hidden;\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Label' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <div class=\"nxt-table-container\">\n              <nxt-datatable  isButtons [question]=\"field\" from=\"formBuilder\" [apiMeta]=\"field.subText\"\n                [tableConfig]=\"field.tableConfig\" tableId=\"\" direction=\"ltr\" tableWidth=\"auto\" isEditable=true\n                (columnSelected)=columnSelected($event) (removeColumn)=removeColumn($event)>\n              </nxt-datatable>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- List -->\n      <!-- AP-06MAR25 - List data show-->\n      <div *ngIf=\"field.type === 'List'\" class=\"field-container\" (click)=\"selectElement(i)\"\n        [ngStyle]=\"getFontStyles(field)\" [class.highlight]=\"selectedFieldIndex === i\" draggable=\"true\"\n        (dragstart)=\"onDragStart($event, i)\" (dragover)=\"onDragOver($event, i)\" (drop)=\"onDrop($event, i)\">\n        <div class=\"field-wrapper\">\n          <div class=\"field-content\">\n            <div class=\"label-container\">\n              <div>\n                <label [class.required]=\"field.isRequired\" *ngIf=\"field.style?.showLabel !== false\">{{\n                  field.questionText ? field.questionText : 'Label' }}</label>\n              </div>\n              <div class=\"top-right\">\n                <img src=\"../assets/icons/drag-dots.svg\" alt=\"Drag\" class=\"drag-dot\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeElement(field, i)\" class=\"delete-icon\" />\n              </div>\n            </div>\n            <input type=\"text\" class=\"custom-input\" placeholder=\"Search...\" [readonly]=\"field.isReadOnly\"\n              [class.hidden]=\"field.isHidden\" [value]=\"field.defaultValue ? field.defaultValue : ''\" />\n          </div>\n        </div>\n      </div>\n\n    </ng-container>\n  </div>\n</div>\n<!-- SKS13MAR25 popup conformation box -->\n<div class=\"dialog-overlay\" *ngIf=\"isSelectTablePopup\">\n  <div class=\"dialog-box\">\n    <button class=\"close-btn-fb\" (click)=\"onClose()\">✕</button>\n    <p>These element want to add a table</p>\n    <div class=\"button-container-fb\">\n      <button class=\"yes-btn-fb\" (click)=\"addOnTable()\">Yes</button>\n      <button class=\"no-btn-fb\" (click)=\"onClose()\">No</button>\n    </div>\n  </div>\n</div>","// AP 22JAN25\nimport { HttpClient } from '@angular/common/http';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';\nimport { FormBuilderService } from '../../../services/form-builder.service';\nimport { CropperPosition, Dimensions, ImageTransform } from '../../../components/image-cropper/interfaces';\nimport { v4 as uuidv4 } from 'uuid';//AP-28MAR25 import uuid\n// AP-11APR25 import template service\nimport { TemplateService } from '../../../services/template.service';\n\n@Component({\n  selector: 'app-properties',\n  templateUrl: './properties.component.html',\n  styleUrls: ['./properties.component.css']\n})\nexport class PropertiesComponent implements OnInit {\n\n  @Output() formButtonHandler = new EventEmitter<any>();\n  @Output() templateSaveHandler = new EventEmitter<any>();\n  selectedOption: string = '';\n  selectedElementIndex: number = -1;\n  @Input() selectedElementType: string = '';\n  selectedAlign: string = 'align-left';  // Add this property\n  selectedStyles: string[] = [];  // Using array since multiple styles can be selected\n  errorMessage: string = '';\n  selectedElement: any = null;  // Receive the selected element\n  headerSelect: boolean = false;\n  bookId: any;\n  book: any;\n  activeTab: string = 'attributes';\n  selectColumn: any\n  transform: ImageTransform = {\n    translateUnit: 'px',\n    scale: 1,\n    rotate: 0,\n    flipH: false,\n    flipV: false,\n    translateH: 0,\n    translateV: 0\n  };\n  canvasRotation = 0;\n  cropper?: CropperPosition;\n  loading = false;\n  cropperMaxHeight = 0;\n  cropperMaxWidth = 0;\n  cropperMinHeight = 0;\n  cropperMinWidth = 0;\n  cropperStaticWidth = 0;\n  cropperStaticHeight = 0;\n  aspectRatio = 4 / 3;\n  roundCropper = false;\n  imageChangedEvent: Event | null = null;\n  alignImage = 'center' as const;\n  //  \"endpoint\": \"https://dev-api.valarhr.com/nxt\",\n  // SKS28MAR25 default book search endpoint\n  bookSubtext = {\n    \"endpoint\": \"https://dev-api.valarhr.com/nxt\",\n    \"variable\": null,\n    \"field\": ['label', 'name'],\n    \"defaultField\": \"label\"\n  }\n  isLinkDropdownOpen = false;\n  @Input() templateSelected: boolean = false;\n\n  @ViewChild('dropdown', { static: false }) dropdown!: ElementRef;\n\n\n  draggedId: string | null = null;\n  formElements: any[] = [];\n \n  unique_id: string = 'book-1234'; // should be consistent\n  selectedTemplate: any;\n\n  elementProperties = {\n    // AP-10MAR25 - Defines the Header element with a text input field   \n    // AP-25MAR25 Add subtext all variables\n    'Header': {\n      elementProps: [\n        { label: 'Label', placeholder: 'Enter Text', type: 'text', key: 'title' }]\n    },\n\n    'Text': {\n      elementProps: [\n        { label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },     \n        { label: 'Place Holder', placeholder: 'Enter Text', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n    'Book': {\n      elementProps: [\n        { label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },   \n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' }\n      ],\n      fieldProps: [\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: []\n    },\n    // AP-19MAR25 Add Line Property\n    'Line': {\n      elementProps: [\n        { label: 'Line Width', type: 'fieldSize', key: 'size' },\n        { label: 'Padding Top', type: 'number', key: 'paddingTop', placeholder: 'Enter padding top' },\n        { label: 'Padding Bottom', type: 'number', key: 'paddingBottom', placeholder: 'Enter padding bottom' },\n        {\n          label: 'Line Style', type: 'select', key: 'lineStyle',\n          options: ['Solid', 'Dashed', 'Dotted']\n        }\n      ],\n      fieldProps: []\n    },\n\n    'Space': {\n      elementProps: [\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Field Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: []\n    },\n\n    'Boolean': {\n      elementProps: [\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'checkbox', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ]\n    },\n\n    'Checkbox': {\n      elementProps: [\n         {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n\n        {\n          label: 'Options',\n          type: 'checkbox',\n          key: 'options',\n          addOptionLabel: 'Add Option',\n          icon: 'plus'\n        },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'Calendar': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    // AP-12MAR25 - Added Date element Properties\n    'Date': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n    // AP-21MAR25 - Add Time element Properties\n    'Time': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Default Time', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Select font',\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '' },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize',\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight',\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    //AP-28MAR25 -Add DateTime Properties\n    'DateTime': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" }\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'Email': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        // { label: 'Select Font', type: 'select', key: 'fontFamily', placeholder: 'Left', required: true },\n\n\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        // { label: 'Background Color', type: 'color', key: 'backgroundColor', defaultValue: '', required: true },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    \"Table\": {\n      \"elementProps\": [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { \"label\": \"tableName\", \"placeholder\": \"Employee Details\", \"type\": \"text\", \"key\": \"questionText\" },\n        { \"label\": \"inputTextAlignment\", \"placeholder\": \"Left\", \"type\": \"text\", \"key\": \"inputTextAlignment\" },\n        { \"label\": \"tableScaleSize\", \"placeholder\": \"06 - Full Scale\", \"type\": \"text\", \"key\": \"tableScaleSize\" },\n        { \"label\": \"isNosIndicator\", \"placeholder\": \"06 - Full Scale\", \"type\": \"checkbox\", \"key\": \"tableConfig.isNosIndicator\" },\n        { \"label\": \"isPagination\", \"placeholder\": \"06 - Full Scale\", \"type\": \"checkbox\", \"key\": \"tableConfig.isPagination\" },\n        { \"label\": \"addInlineRecord\", \"placeholder\": \"06 - Full Scale\", \"type\": \"checkbox\", \"key\": \"tableConfig.addInlineRecord\" },\n        { \"label\": \"actionButton\", \"placeholder\": \"06 - Full Scale\", \"type\": \"checkbox\", \"key\": \"tableConfig.actionButton\" },\n        { \"label\": \"searchBar\", \"placeholder\": \"06 - Full Scale\", \"type\": \"checkbox\", \"key\": \"tableConfig.searchBar\" },\n        { \"label\": \"isDeleteRow\", \"placeholder\": \"06 - Full Scale\", \"type\": \"checkbox\", \"key\": \"tableConfig.isDeleteRow\" },\n        { \"label\": \"isEditRow\", \"placeholder\": \"06 - Full Scale\", \"type\": \"checkbox\", \"key\": \"tableConfig.isEditRow\" },\n        { \"label\": \"isButtons\", \"placeholder\": \"06 - Full Scale\", \"type\": \"checkbox\", \"key\": \"tableConfig.isButtons\" },\n\n\n        { \"label\": \"rowChoice\", \"placeholder\": \"\", \"type\": \"text\", \"key\": \"rowChoice\" },\n        { label: 'questionNumber', type: 'number', key: 'questionNumber' },\n        { label: 'Field Size', type: 'fieldSize', key: 'size' },\n      ],\n      \"fieldProps\": [\n        { \"label\": \"tabelId\", \"placeholder\": \"Emp_Tabel_01\", \"type\": \"text\", \"key\": \"tabelId\" },\n        { \"label\": \"helpText\", \"placeholder\": \"Enter message\", \"type\": \"text\", \"key\": \"helpText\" },\n        { \"label\": \"defaultValue\", \"placeholder\": \"Default Value\", \"type\": \"text\", \"key\": \"defaultValue\" },\n        { label: 'Reference', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        },\n      ],\n      \"appearance\": [\n          {\n            label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n            options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n          },\n          { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n          {\n            label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n            options: [\n              { label: 'Small', value: '12px' },\n              { label: 'Medium', value: '14px' },\n              { label: 'Large', value: '16px' }\n            ]\n          },\n  \n          {\n            label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n            options: [\n              { value: '400', label: '400-Normal' },\n              { value: '500', label: '500-Medium' },\n              { value: '600', label: '600-Semi Bold' },\n              { value: '700', label: '700-Bold' }\n            ]\n          },\n          { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n        ]\n    },\n\n    \"TableColumn\": {\n      \"elementProps\": [\n\n        { \"label\": \"headerLabels\", \"placeholder\": \"Employee Details\", \"type\": \"text\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"label\" },\n        { \"label\": \"apiName\", \"placeholder\": \"Employee Details\", \"type\": \"text\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"apiName\" },\n\n        {\n          \"label\": \"Summary Column\", \"placeholder\": \"Summary Column\", \"type\": \"subQuestion\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"summaryColumn\",\n          \"subQuestion\": [\n            { \"label\": \"Type\", \"placeholder\": \"Employee Details\", \"type\": \"text\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"fldType\" },\n            { \"label\": \"Operation\", \"placeholder\": \"Employee Details\", \"type\": \"text\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"operation\" },\n            { \"label\": \"Operands\", \"placeholder\": \"Employee Details\", \"type\": \"array\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"operands\" },\n          ]\n        },\n        {\n          \"label\": \"Summary Row\", \"placeholder\": \"Summary Row\", \"type\": \"subQuestion\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"summaryRow\", \"subQuestion\": [\n            { \"label\": \"Type\", \"placeholder\": \"Employee Details\", \"type\": \"text\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"fldType\" },\n            { \"label\": \"operation\", \"placeholder\": \"operation\", \"type\": \"text\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"operation\" },\n            { \"label\": \"column\", \"placeholder\": \"Employee Details\", \"type\": \"radio\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"column\" },\n            { \"label\": \"operands\", \"placeholder\": \"Employee Details\", \"type\": \"array\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"operands\" },\n          ]\n        },\n\n        { \"label\": \"inputTextAlignment\", \"placeholder\": \"Left\", \"type\": \"text\", \"key\": \"inputTextAlignment\" },\n        { \"label\": \"tableScaleSize\", \"placeholder\": \"06 - Full Scale\", \"type\": \"text\", \"key\": \"tableScaleSize\" },\n        { \"label\": \"rowChoice\", \"placeholder\": \"\", \"type\": \"text\", \"key\": \"rowChoice\" },\n        {\n          \"label\": \"quickActionTools\",\n          \"type\": \"group\",\n          \"key\": \"quickActionTools\",\n          \"children\": [\n            { \"label\": \"edit\", \"type\": \"toggle\", \"key\": \"edit\" },\n            { \"label\": \"view\", \"type\": \"toggle\", \"key\": \"view\" },\n            { \"label\": \"delete\", \"type\": \"toggle\", \"key\": \"delete\" }\n          ]\n        },\n        { \"label\": \"addRecordEvent\", \"type\": \"toggle\", \"key\": \"addRecordEvent\" },\n        {\n          \"label\": \"tableScrollEventChoice\",\n          \"type\": \"group\",\n          \"key\": \"tableScrollEventChoice\",\n          \"children\": [\n            { \"label\": \"horizontal\", \"type\": \"toggle\", \"key\": \"horizontal\" },\n            { \"label\": \"vertical\", \"type\": \"toggle\", \"key\": \"vertical\" }\n          ]\n        }\n      ],\n      \"fieldProps\": [\n        { \"label\": \"tabelId\", \"placeholder\": \"Emp_Tabel_01\", \"type\": \"text\", \"key\": \"tabelId\" },\n        { \"label\": \"inputTextAlignment\", \"placeholder\": \"Left\", \"type\": \"text\", \"key\": \"inputTextAlignment\" },\n        { \"label\": \"requiredField\", \"type\": \"toggle\", \"key\": \"requiredField\" },\n        { \"label\": \"Read Only\", \"type\": \"checkbox\", \"targetArray\": \"fieldsMeta\", \"targetArrayKey\": \"uniqueIdentifier\", \"key\": \"edit\" },\n        { \"label\": \"hideLabel\", \"type\": \"toggle\", \"key\": \"hideLabel\" },\n        { \"label\": \"disabled\", \"type\": \"toggle\", \"key\": \"disabled\" },\n        { \"label\": \"hideElements\", \"type\": \"toggle\", \"key\": \"hideElements\" },\n        { \"label\": \"masking\", \"type\": \"toggle\", \"key\": \"masking\" },\n        { \"label\": \"helpText\", \"placeholder\": \"Enter help message here\", \"type\": \"text\", \"key\": \"helpText\" },\n        { \"label\": \"defaultValue\", \"placeholder\": \"Default Value\", \"type\": \"text\", \"key\": \"defaultValue\" },\n        { \"label\": \"referenceAnchor\", \"placeholder\": \"http://source/rangernxt_bio_data/74/d.doc\", \"type\": \"text\", \"key\": \"referenceAnchor\" },\n        { \"label\": \"controllingElements\", \"type\": \"toggle\", \"key\": \"controllingElements\" },\n        { \"label\": \"isDependence\", \"type\": \"toggle\", \"key\": \"isDependence\" },\n        { \"label\": \"newLine\", \"type\": \"toggle\", \"key\": \"newLine\" }\n      ],\n      \"appearance\": [\n        { \"label\": \"selectFont\", \"placeholder\": \"Left\", \"type\": \"text\", \"key\": \"selectFont\" },\n        { \"label\": \"fontColor\", \"placeholder\": \"#28343E\", \"type\": \"text\", \"key\": \"fontColor\" },\n        { \"label\": \"hexCode\", \"placeholder\": \"#28343E\", \"type\": \"text\", \"key\": \"hexCode\" },\n        { \"label\": \"fontSize\", \"placeholder\": \"300 - Medium\", \"type\": \"text\", \"key\": \"fontSize\" },\n        { \"label\": \"fontWidth\", \"placeholder\": \"Left\", \"type\": \"text\", \"key\": \"fontWidth\" },\n        { \"label\": \"backgroundColor\", \"placeholder\": \"#E2E2E2\", \"type\": \"text\", \"key\": \"backgroundColor\" },\n        { \"label\": \"backgroundHexCode\", \"placeholder\": \"#E2E2E2\", \"type\": \"text\", \"key\": \"backgroundHexCode\" },\n        { \"label\": \"referenceAnchor\", \"placeholder\": \"http://source/rangernxt_bio_data/74/d.doc\", \"type\": \"text\", \"key\": \"referenceAnchor\" },\n        { \"label\": \"blankSpace\", \"type\": \"toggle\", \"key\": \"blankSpace\" }\n      ]\n    },\n\n    'File': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n        { label: 'Default Value', type: 'text', key: 'defaultValue' }, ,\n        {\n          label: 'Support Type', type: 'select', key: 'supportType', options: [\n            { label: 'Images (JPEG, PNG, GIF)', value: 'image/*', extensions: ['.jpg', '.jpeg', '.png', '.gif'] },\n            { label: 'Audio (MP3, WAV, AIFF)', value: 'audio/*', extensions: ['.mp3', '.wav', '.aiff'] },\n            { label: 'Video (MP4, AVI, HEVC)', value: 'video/*', extensions: ['.mp4', '.avi', '.hevc'] },\n            { label: 'Documents (DOC, DOCX, PPT, PDF)', value: 'application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-powerpoint', extensions: ['.doc', '.docx', '.ppt', '.pdf'] },\n            { label: 'Executables (EXE, BAD, SH)', value: 'application/x-msdownload,application/x-sh', extensions: ['.exe', '.bad', '.sh'] },\n            { label: 'Archives (ZIP, RAR, Git-hub)', value: 'application/zip,application/x-rar-compressed,application/x-git', extensions: ['.zip', '.rar', '.git'] }\n          ]\n        },\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Field Size', type: 'fieldSize', key: 'size' },\n        { label: 'Error Msg', placeholder: 'Enter Text', type: 'text', key: 'errorMessage' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        // { label: 'Select Font', type: 'select', key: 'fontFamily', placeholder: 'Left', required: true },\n\n\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        // { label: 'Background Color', type: 'color', key: 'backgroundColor', defaultValue: '', required: true },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'List': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"array\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        // { label: 'Select Font', type: 'select', key: 'fontFamily', placeholder: 'Left', required: true },\n\n\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'TextArea': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        // { label: 'Background Color', type: 'color', key: 'backgroundColor', defaultValue: '', required: true },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'RichTextArea': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'Number': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'Dropdown': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          label: 'Options',\n          type: 'dropdown',\n          key: 'options',\n          addOptionLabel: 'Add Variant',\n          icon: 'plus'\n        },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'Image': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'Radio': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          label: 'Options',\n          type: 'radio',\n          key: 'options',\n          addOptionLabel: 'Add Option',\n          icon: 'plus'\n        },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    },\n\n    'Label': {\n      elementProps: [\n        {label: 'Is Label', placeholder: 'Enter Text ', type: 'checkbox', key: 'style.showLabel' },\n        { label: 'Label', placeholder: 'Field label', type: 'text', key: 'questionText' },\n        { label: 'Place Holder', placeholder: 'Field placeholder', type: 'text', key: 'question' },\n        { label: 'Element', type: 'number', key: 'questionNumber' },\n        { label: 'Size', type: 'fieldSize', key: 'size' },\n      ],\n      fieldProps: [\n        { label: '', type: 'toggleGroup', key: 'toggleOptions' },\n        { label: 'Help Text', placeholder: 'Enter Text ', type: 'text', key: 'helpText' },\n        { label: 'Default Value', placeholder: 'Enter Text ', type: 'text', key: 'defaultValue' },\n        { label: 'Reference Field', placeholder: 'Reference Field', type: 'text', key: 'referenceField' },\n        {\n          \"label\": \"\", \"placeholder\": \"Enter Text\", \"type\": \"subQuestion\", \"key\": \"isSubText\",\n          \"subQuestion\": [\n            { \"label\": \"End Point\", \"placeholder\": \"endpoint\", \"type\": \"text\", \"key\": \"subText.endpoint\" },\n            { \"label\": \"Variable\", \"placeholder\": \"variable\", \"type\": \"text\", \"key\": \"subText.variable\" },\n            { \"label\": \"Field\", \"placeholder\": \"field\", \"type\": \"text\", \"key\": \"subText.field\" },\n\n            { \"label\": \"Default Field\", \"placeholder\": \"defaultField\", \"type\": \"text\", \"key\": \"subText.defaultField\" },\n            { \"label\": \"Label Field\", \"placeholder\": \"labelField\", \"type\": \"text\", \"key\": \"subText.labelField\" },\n            { \"label\": \"Value Field\", \"placeholder\": \"valueField\", \"type\": \"text\", \"key\": \"subText.valueField\" },\n            { \"label\": \"Source Question Id\", \"placeholder\": \"sourceQuestionId\", \"type\": \"text\", \"key\": \"subText.sourceQuestionId\" },\n            { \"label\": \"Dependent Value\", \"placeholder\": \"dependentValue\", \"type\": \"text\", \"key\": \"subText.dependentValue\" },\n            { \"label\": \"Dependent Field\", \"placeholder\": \"isDependentField\", \"type\": \"boolean\", \"key\": \"subText.isDependentField\" },\n\n            { \"label\": \"Query Field\", \"placeholder\": \"queryField\", \"type\": \"text\", \"key\": \"subText.queryField\" },\n            { \"label\": \"Query Value\", \"placeholder\": \"queryValue\", \"type\": \"text\", \"key\": \"subText.queryValue\" },\n            { \"label\": \"Query Value Ref\", \"placeholder\": \"queryValueRef\", \"type\": \"text\", \"key\": \"subText.queryValueReference\" },\n            { \"label\": \"Unique Key\", \"placeholder\": \"uniqueKey\", \"type\": \"text\", \"key\": \"subText.uniqueKey\" },\n          ]\n        }\n      ],\n      appearance: [\n        {\n          label: 'Select Font', type: 'select', key: 'font', placeholder: 'Left', required: true,\n          options: ['Helvetica Neue', 'Arial', 'Times New Roman', 'Roboto']\n        },\n\n        { label: 'Font Color', type: 'color', key: 'fontColor', defaultValue: '', required: true },\n        {\n          label: 'Font Size', type: 'select', key: 'fontSize', defaultValue: '', required: true,\n          options: [\n            { label: 'Small', value: '12px' },\n            { label: 'Medium', value: '14px' },\n            { label: 'Large', value: '16px' }\n          ]\n        },\n\n        {\n          label: 'Font Width', type: 'select', key: 'fontWeight', defaultValue: '', required: true,\n          options: [\n            { value: '400', label: '400-Normal' },\n            { value: '500', label: '500-Medium' },\n            { value: '600', label: '600-Semi Bold' },\n            { value: '700', label: '700-Bold' }\n          ]\n        },\n        { label: 'Duplicate Field', type: 'button-toggle', key: 'duplicateField', defaultValue: false }\n      ]\n    }\n\n  };\n\n  constructor(private http: HttpClient, private formBuilderService: FormBuilderService,private templateService: TemplateService) { }\n\n  handleTemplateSelection(event: any) {\n    this.formElements = event.elements; \n    this.selectedTemplate = event.selectedTemplate;\n    this.templateService.formElements = this.formElements;\n    this.templateService.book = this.book;\n    this.templateService.unique_id = this.unique_id;\n  }\n  duplicateField(element: any) {\n    const elements = this.formBuilderService.getElements();\n    const copy = JSON.parse(JSON.stringify(element));\n    //AP-18APR25 Generate a new ID using the service's method\n    copy.id = this.formBuilderService.addElementWithId();\n    //copy.uuid = copy.id; \n    // AP-18APR25 Set the questionNumber to the next available number\n    copy.questionNumber = elements.length + 1;\n    this.formBuilderService.addElement(copy);\n  }\n  \n  saveData() {\n    this.templateService.formElements = this.formElements;\n    this.templateService.book = this.book;\n    this.templateService.unique_id = this.unique_id;\n    const updatedBook = this.templateService.download();\n  }\n\n  ngOnInit() {\n    //AP-10MAR25 Subscribes to header selection changes and updates the selected element  \n    this.formBuilderService.selectHeaderSubject$.subscribe(header => {\n      if (header) {\n        if (!this.selectedElement) {\n          this.selectedElement = {};\n        }\n        this.selectedElement['type'] = header;\n        this.headerSelect = true;\n        this.book = this.formBuilderService.getBook();\n        this.bookId = this.book.records[0].id;\n      }\n\n    });\n    this.formBuilderService.selectedElement$.subscribe(index => {\n      this.selectedElementIndex = index;\n      this.headerSelect = false;\n      if (index >= 0) {\n        const elements = this.formBuilderService.getElements();\n        this.selectedElement = elements[index];\n        if (this.selectedElement?.type === 'Table') {\n          this.selectedElement['fieldsMeta'] = typeof this.selectedElement.fieldsMeta === 'object' ? this.selectedElement.fieldsMeta : JSON.parse(this.selectedElement['fieldsMeta'] || []);\n          this.selectColumn = this.formBuilderService.getSelectTableColumn() === undefined ? null : this.formBuilderService.getSelectTableColumn();\n        } else {\n          this.selectColumn = null\n        }\n      }\n      this.getProperties()\n    });\n  }\n  //AP-10MAR25 Updates the title using the form builder service  \n  updateTitle(event: any) {\n    this.formBuilderService.updateTitle(event);\n  }\n  validateInput(value: string, type: string): boolean {\n    if (type === 'label' || type === 'placeholder') {\n      const regex = /^[a-zA-Z0-9\\s]*$/;\n      if (!regex.test(value)) {\n        this.errorMessage = 'Only letters and numbers are allowed';\n        return false;\n      }\n    }\n    this.errorMessage = '';\n    return true;\n  }\n\n  get fieldAsString(): string {\n    return this.bookSubtext.field.join(', '); //SKS28MAR25 Convert array to comma-separated string\n  }\n\n  updateField(value: string) {\n    this.bookSubtext.field = value.split(',').map(item => item.trim()); //SKS28MAR25 Convert string back to array\n  }\n  // SKS20MAR25 Getter to filter columns, excluding the one with currentUniqueIdentifier\n  get filteredColumns(): any[] {\n    const targetArray = this.getDataByPath('fieldsMeta');\n    return targetArray.filter(column => column.uniqueIdentifier !== this.selectColumn);\n  }\n\n  // SKS20MAR25 Method to handle checkbox changes\n  onCheckboxChange(targetArrayPath: any, targetArrayKey: any, key: any, apiName: string, isChecked: boolean) {\n    const targetArray = this.getDataByPath(targetArrayPath);\n    const foundItem = targetArray.find(item => item[targetArrayKey] === this.selectColumn);\n    foundItem[key] = foundItem[key] ? foundItem[key] : [];\n    if (isChecked) {\n      // Add apiName to selectedApiNames if not already present\n      if (!foundItem[key].includes(apiName)) {\n        foundItem[key].push(apiName);\n      }\n    } else {\n      // Remove apiName from selectedApiNames if present\n      const index = foundItem[key].indexOf(apiName);\n      if (index > -1) {\n        foundItem[key].splice(index, 1);\n      }\n    }\n    // this.updateElement(this.selectedElement)\n  }\n  updateProperty(key: string, value: any) {\n    if (this.selectedElementIndex >= 0) {\n      if (this.selectedElement.type === 'Table') {\n        this.setValueByPath(key, value);\n      }\n      if (key === 'questionText' || key === 'question') {\n        if (!this.validateInput(value, key)) {\n          return;\n        }\n      }\n      if (key === 'questionNumber') {\n        //AP-10MAR25 Convert the value to an integer  \n        const newOrder = parseInt(value, 10);\n        if (isNaN(newOrder)) return;\n\n        //AP-10MAR25 Update the element's questionNumber in the form builder service  \n        this.formBuilderService.updateElement(this.selectedElementIndex, { questionNumber: newOrder });\n\n        //AP-10MAR25 Sort elements based on the updated questionNumber  \n        this.formBuilderService.sortElementsByOrder();\n      }\n\n\n      if (key === 'fontWeight') {\n        // console.log('Font weight selected:', value);\n        this.selectedElement[key] = value;\n      }\n\n      const update = { [key]: value };\n      this.formBuilderService.updateElement(this.selectedElementIndex, update);\n\n      // Special handling for font and font weight\n      if (key === 'font') {\n        this.selectedElement.font = value; // Directly update the selected element's font property\n      }\n    }\n  }\n  // SKS21MAR25 radio button click handler\n  onRadioChange(targetArrayPath: any, targetArrayKey: any, key: any, value: any) {\n    if (this.selectedElement.type === 'Table') {\n      // this.updateValueByArrayPath(targetArray, targetArrayKey, this.selectColumn, key, value);\n      if (this.selectedElement?.type === 'Table') {\n        this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? this.selectedElement?.fieldsMeta : JSON.parse(this.selectedElement['fieldsMeta'] || []);\n      }\n      const targetArray = this.getDataByPath(targetArrayPath);\n      // console.log(\"targetArray\", targetArray, \"targetArrayKey\", targetArrayKey, \"selectColumn\", this.selectColumn, \"keyPath\", key, \"event\", value)\n      if (!Array.isArray(targetArray)) return;\n\n      // Find the object that matches selectColumn\n      let foundItem = targetArray.find(item => item[targetArrayKey] === this.selectColumn);\n\n      // If the item does not exist, create and add it\n      if (!foundItem) {\n        foundItem = { [targetArrayKey]: this.selectColumn }; // Ensure the key exists\n        targetArray.push(foundItem);\n      }\n\n      // Traverse and set the value\n      const keys = key.split('.');\n      let obj = foundItem;\n\n      for (let i = 0; i < keys.length - 1; i++) {\n        const key = keys[i];\n        if (!obj[key]) obj[key] = {}; // Initialize missing objects\n        obj = obj[key];\n      }\n\n      // Assign the value based on input type\n      const lastKey = keys[keys.length - 1];\n\n      obj[lastKey] = value;\n      if (this.selectedElement?.type === 'Table') {\n        this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? JSON.stringify(this.selectedElement?.fieldsMeta) : this.selectedElement['fieldsMeta'] || [];\n      }\n      this.updateElement(this.selectedElement)\n    } else {\n      this.setValueByPath(key, value); // Fallback for non-Table elements, if applicable\n    }\n  }\n  onRequiredChange(value: boolean) {\n    if (this.selectedElement) {\n      let label = this.selectedElement.label ? this.selectedElement.label.replace(/\\s*\\*+$/, '') : 'Label';\n\n      if (value) {\n        label = `${label} *`;\n      }\n\n      this.updateProperty('label', label);\n      this.updateProperty('isOptional', value);\n    }\n  }\n\n  // Toggle for Sub Questions (Each prop has its own state)\n  toggleSubQuestion(prop: any) {\n    prop.isExpanded = !prop.isExpanded;\n  }\n\n  // Separate Toggle for Style Section\n  isStyleExpanded = false;\n\n  toggleStyleSection() {\n    this.isStyleExpanded = !this.isStyleExpanded;\n  }\n\n  getProperties() {\n    if (!this.selectedElement) return null;\n\n    // AP-10MAR25 Retrieve the latest book data\n    this.book = this.formBuilderService.getBook();\n\n    // AP-10MAR25 If the selected element is a 'Header', return its properties\n    if (this.selectedElement?.type === 'Header') {\n      return this.elementProperties['Header'];\n    }\n    if (this.selectedElement?.type === 'Table') {\n      if (this.selectColumn !== '' && this.selectColumn !== null) {\n        return this.elementProperties['TableColumn'];\n      }\n    }\n    return this.elementProperties[this.selectedElement?.type];\n  }\n  // AP-28MAR25 Add an option with a unique UUID\n  addOption(options: any[]) {\n    const unique_id = uuidv4();\n    options.push({ id: unique_id,value: '' });\n  }\n\n  // AP-28MAR25 Function to remove an option based on its unique UUID\n  removeOption(options: any[], id: string) {\n    const index = options.findIndex(option => option.id === id);\n    if (index !== -1) {\n      options.splice(index, 1);\n    }\n  }\n\n  handleButtonClick() {\n    this.formButtonHandler.emit(this.formBuilderService.downloadElement());\n  }\n  handleTemplateSave() {\n    this.templateSaveHandler.emit(this.templateService.download());\n  }\n  // SKS13MAR25 active tab select\n  setActiveTab(tab: string): void {\n    this.activeTab = tab;\n  }\n  // SKS13MAR25 table property save\n  onSave(): void {\n    // console.log('Saving data:');\n  }\n  // SKS13MAR25 table property reset\n  onCancel(): void {\n    // console.log('Operation cancelled');\n  }\n\n  updateProperties(elementType: string): void {\n    // Reset alignment and styles if switching elements\n    this.selectedAlign = 'align-left';\n    this.selectedStyles = [];\n\n    // Fetch the properties of the selected element type\n\n    const properties = this.getProperties();\n    if (properties) {\n      // Make sure the properties are dynamically updated\n    }\n  }\n\n  onAlignSelect(value: string): void {\n    if (this.selectedElement) {\n      this.selectedElement.textAlign = value;\n    }\n  }\n\n  onStyleSelect(value: string): void {\n    if (!this.selectedElement) return;\n\n    // Initialize styles array if it doesn't exist\n    this.selectedElement.styles = this.selectedElement.styles || [];\n\n    // Ensure only one style is selected at a time\n    this.selectedElement.styles = [value];\n\n  }\n\n  isStyleActive(value: string): boolean {\n    return this.selectedElement?.styles?.includes(value) || false;\n  }\n  getValueByPath(path: string): any {\n    if (this.selectedElement?.type === 'Table') {\n      this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? this.selectedElement?.fieldsMeta : JSON.parse(this.selectedElement['fieldsMeta'] || []);\n    }\n\n    this.selectedElement['subText'] = \n        typeof this.selectedElement?.subText === 'object'\n            ? this.selectedElement.subText\n            : (typeof this.selectedElement?.subText === 'string' && this.selectedElement.subText.trim() !== '' \n                ? JSON.parse(this.selectedElement.subText) \n                : {});\n\n    if (this.selectedElement['subText'] && Array.isArray(this.selectedElement['subText'].field)) {\n        // Convert array to a comma-separated string\n        this.selectedElement['subText'].field = this.selectedElement['subText'].field.join(', ');\n    }  \n    return path.split('.').reduce((obj, key) => obj?.[key] ?? '', this.selectedElement);\n  }\n\n  onToggleChange(path: string, event: Event): void {\n    const checked = (event.target as HTMLInputElement).checked;\n    this.setValueByPath(path, checked);\n    if (this.selectedElement?.type === 'Table') {\n      this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? JSON.stringify(this.selectedElement?.fieldsMeta) : this.selectedElement['fieldsMeta'] || [];\n    }\n    this.updateElement(this.selectedElement)\n  }\n\n  setValueByPath(path: string, value: any): void {\n\n    if (this.selectedElementIndex >= 0) {\n      if (path === 'questionText' || value === 'question') {\n        if (!this.validateInput(value, value)) {\n        }\n      }\n      if (path === 'questionNumber') {\n        //AP-10MAR25 Convert the value to an integer  \n        const newOrder = parseInt(value, 10);\n        if (isNaN(newOrder)) return;\n\n        //AP-10MAR25 Update the element's questionNumber in the form builder service  \n        this.formBuilderService.updateElement(this.selectedElementIndex, { questionNumber: newOrder });\n\n        //AP-10MAR25 Sort elements based on the updated questionNumber  \n        this.formBuilderService.sortElementsByOrder();\n      }\n      if (path === 'fontWeight') {\n        // console.log('Font weight selected:', value);\n        this.selectedElement[path] = value;\n      }\n      // Special handling for font and font weight\n      if (path === 'font') {\n        this.selectedElement.font = value; // Directly update the selected element's font property\n      }\n    }\n\n    const keys = path.split('.');\n    let obj = this.selectedElement;\n    if (this.selectedElement?.type === 'Table') {\n      this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? this.selectedElement?.fieldsMeta : JSON.parse(this.selectedElement['fieldsMeta'] || []);\n    }\n    this.selectedElement['subText'] = typeof this.selectedElement?.subText === 'object' ? this.selectedElement?.subText : JSON.parse(this.selectedElement['subText'] || {});\n\n    keys.forEach((key, index) => {\n      if (!obj[key]) {\n        // Check if the next key is a number (array index)\n        const nextKey = keys[index + 1];\n        obj[key] = isNaN(Number(nextKey)) ? {} : [];\n      }\n      if (index === keys.length - 1) {\n        obj[key] = value; // Assign value to last key\n      } else {\n        obj = obj[key]; // Move deeper\n      }\n    });\n    this.formBuilderService.elementUpdate(this.selectedElementIndex, this.selectedElement);\n    // console.log(\"val change\", obj)\n  }\n  getStyleKeys(): string[] {\n    return Object.keys((this.selectedElement.style === null || this.selectedElement.style === '') ?\n      {} : this.selectedElement.style);\n  }\n\n  // SKS19MAR25 update element in servies\n  updateElement(element: any) {\n    this.formBuilderService.elementUpdate(this.selectedElementIndex, element)\n    if (this.selectedElement?.type === 'Table' && this.selectColumn) {\n      this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? this.selectedElement?.fieldsMeta : JSON.parse(this.selectedElement.fieldsMeta || []);\n      const foundItem = this.selectedElement['fieldsMeta'].find(item => item['uniqueIdentifier'] === this.selectColumn);\n      this.formBuilderService.setSelectedTableElement(this.selectedElementIndex, { column: foundItem?.apiName || null });\n    }\n  }\n  // SKS19MAR25 get value from array\n  getValueByArrayPath(targetArrayPath: any, targetArrayKey: string, selectColumn: string, keyPath: string): any {\n    if (this.selectedElement?.type === 'Table') {\n      this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? this.selectedElement?.fieldsMeta : JSON.parse(this.selectedElement['fieldsMeta'] || []);\n    }\n    const targetArray = this.getDataByPath(targetArrayPath);\n    if (!Array.isArray(targetArray)) return '';\n\n    const foundItem = targetArray.find(item => item[targetArrayKey] === selectColumn);\n\n    return foundItem ? keyPath.split('.').reduce((obj, key) => obj?.[key], foundItem) : '';\n  }\n\n  //SKS19MAR25 Function to update a value in an array dynamically\n  updateValueByArrayPath(targetArrayPath: any, targetArrayKey: string, selectColumn: string, keyPath: string, event: Event): void {\n    if (this.selectedElement?.type === 'Table') {\n      this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? this.selectedElement?.fieldsMeta : JSON.parse(this.selectedElement['fieldsMeta'] || []);\n    }\n    const targetArray = this.getDataByPath(targetArrayPath);\n    // console.log(\"targetArray\", targetArray, \"targetArrayKey\", targetArrayKey, \"selectColumn\", selectColumn, \"keyPath\", keyPath, \"event\", event)\n    if (!Array.isArray(targetArray)) return;\n\n    // Find the object that matches selectColumn\n    let foundItem = targetArray.find(item => item[targetArrayKey] === selectColumn);\n\n    // If the item does not exist, create and add it\n    if (!foundItem) {\n      foundItem = { [targetArrayKey]: selectColumn }; // Ensure the key exists\n      targetArray.push(foundItem);\n    }\n\n    // Traverse and set the value\n    const keys = keyPath.split('.');\n    let obj = foundItem;\n\n    for (let i = 0; i < keys.length - 1; i++) {\n      const key = keys[i];\n      if (!obj[key]) obj[key] = {}; // Initialize missing objects\n      obj = obj[key];\n    }\n\n    // Assign the value based on input type\n    const lastKey = keys[keys.length - 1];\n    const inputElement = event.target as HTMLInputElement;\n\n    obj[lastKey] = inputElement?.type === 'checkbox' ? inputElement.checked : inputElement.value;\n    if (keyPath === 'summaryColumn') {\n      if (obj['summaryRow'] === true) {\n        obj['summaryRow'] = false;\n      }\n      if (inputElement.checked === true) {\n        obj['fldType'] = 'calculation'\n      } else {\n        obj['fldType'] = 'Text'\n      }\n    }\n    if (keyPath === 'summaryRow') {\n      if (obj['summaryColumn'] === true) {\n        obj['summaryColumn'] = false;\n      }\n      if (inputElement.checked === true) {\n        obj['fldType'] = 'calculation'\n      } else {\n        obj['fldType'] = 'Text'\n      }\n    }\n    if (this.selectedElement?.type === 'Table') {\n      this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? JSON.stringify(this.selectedElement?.fieldsMeta) : this.selectedElement['fieldsMeta'] || [];\n    }\n    this.updateElement(this.selectedElement)\n  }\n  getDataByPath(path: string): any {\n    if (this.selectedElement?.type === 'Table') {\n      this.selectedElement['fieldsMeta'] = typeof this.selectedElement?.fieldsMeta === 'object' ? this.selectedElement?.fieldsMeta : JSON.parse(this.selectedElement['fieldsMeta'] || []);\n    }\n    return path.split('.').reduce((obj, key) => obj?.[key], this.selectedElement);\n  }\n\n  // SKS25MAR25 image edit functions\n  flipHorizontal() {\n    this.transform = {\n      ...this.transform,\n      flipH: !this.transform.flipH\n    };\n  }\n\n  flipVertical() {\n    this.transform = {\n      ...this.transform,\n      flipV: !this.transform.flipV\n    };\n  }\n\n  resetImage() {\n    this.canvasRotation = 0;\n    this.cropper = undefined;\n    this.transform = {\n      translateUnit: 'px',\n      scale: 1,\n      rotate: 0,\n      flipH: false,\n      flipV: false,\n      translateH: 0,\n      translateV: 0\n    };\n  }\n\n  zoomOut() {\n    this.transform = {\n      ...this.transform,\n      scale: this.transform.scale! - .1\n    };\n  }\n\n  zoomIn() {\n    this.transform = {\n      ...this.transform,\n      scale: this.transform.scale! + .1\n    };\n  }\n  rotateLeft() {\n    this.loading = true;\n    setTimeout(() => { // Use timeout because rotating image is a heavy operation and will block the ui thread\n      this.canvasRotation--;\n      this.flipAfterRotate();\n    });\n  }\n\n  rotateRight() {\n    this.loading = true;\n    setTimeout(() => {\n      this.canvasRotation++;\n      this.flipAfterRotate();\n    });\n  }\n\n  moveLeft() {\n    this.transform = {\n      ...this.transform,\n      translateH: this.transform.translateH! - 1\n    };\n  }\n\n  moveRight() {\n    this.transform = {\n      ...this.transform,\n      translateH: this.transform.translateH! + 1\n    };\n  }\n\n  moveDown() {\n    this.transform = {\n      ...this.transform,\n      translateV: this.transform.translateV! + 1\n    };\n  }\n\n  moveUp() {\n    this.transform = {\n      ...this.transform,\n      translateV: this.transform.translateV! - 1\n    };\n  }\n  private flipAfterRotate() {\n    const flippedH = this.transform.flipH;\n    const flippedV = this.transform.flipV;\n    this.transform = {\n      ...this.transform,\n      flipH: flippedV,\n      flipV: flippedH,\n      translateH: 0,\n      translateV: 0\n    };\n  }\n  async imageCropped(event: any) {\n    try {\n      const base64 = await this.convertBlobToBase64(event.objectUrl);\n      this.selectedElement.imageData = base64;\n      await this.formBuilderService.elementUpdate(this.selectedElementIndex, this.selectedElement);\n      // console.log('CROPPED', event);\n    } catch (error) {\n      console.error(\"Error in imageCropped:\", error);\n    }\n  }\n\n\n  cropperReady(sourceImageDimensions: Dimensions) {\n    // console.log('Cropper ready', sourceImageDimensions);\n    this.loading = false;\n  }\n  // SKS25MAR25 blob to base 64 converter\n  convertBlobToBase64(objectUrl: string): Promise<string> {\n    return fetch(objectUrl)\n      .then(response => response.blob())\n      .then(blob => {\n        return new Promise((resolve, reject) => {\n          const reader = new FileReader();\n          reader.readAsDataURL(blob);\n          reader.onloadend = () => resolve(reader.result as string);\n          reader.onerror = error => reject(error);\n        });\n      });\n  }\n  // SKS28MAR25 qb book update in book element\n  childEventCapture(event: any) {\n    this.selectedElement.qbReference = event.valueObj?.name\n    this.selectedElement.qbReferenceQuestions = event.valueObj?.jsonBody\n    this.formBuilderService.elementUpdate(this.selectedElementIndex, this.selectedElement);\n  }\n\n  // SKS28MAR25 book search dropdown emit\n  linkToggleDropdown(event: Event) {\n    event.stopPropagation();\n    this.isLinkDropdownOpen = !this.isLinkDropdownOpen;\n  }\n\n  // SKS28MAR25 book search dropdown close\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: Event) {\n    if (this.dropdown && !this.dropdown.nativeElement.contains(event.target)) {\n      this.isLinkDropdownOpen = false;\n    }\n  }\n  // AP-28MAR25 When drag starts, store the index\n  onDragStart(event: DragEvent, id: string) {\n    this.draggedId = id;\n    event.dataTransfer!.effectAllowed = \"move\";\n  }\n\n  // AP-28MAR25 Prevent default behavior to allow drop\n  onDragOver(event: DragEvent) {\n    event.preventDefault();\n  }\n\n  // AP-28MAR25 Swap the dragged item with the dropped position\n  onDrop(event: DragEvent, key: string) {\n    event.preventDefault();\n    const targetId = (event.target as HTMLElement).closest(\".option-items\")?.getAttribute(\"data-id\");\n\n    if (this.draggedId && targetId && this.draggedId !== targetId) {\n      const options = this.selectedElement[key];\n\n      [options[this.draggedId], options[targetId]] = [options[targetId], options[this.draggedId]];\n      // Find the indexes of the dragged and target options\n      const draggedIndex = options.findIndex(option => option.id === this.draggedId);\n      const targetIndex = options.findIndex(option => option.id === targetId);\n\n      // Swap the items\n      if (draggedIndex !== -1 && targetIndex !== -1) {\n        [options[draggedIndex], options[targetIndex]] = [options[targetIndex], options[draggedIndex]];\n      }\n    }\n\n    this.draggedId = null;\n  }\n}\n","<!-- AP 22JAN25 - Field and Element Properties -->\n<div class=\"container\">\n  <div class=\"tabs\">\n    <div class=\"tab\" [ngClass]=\"{'active': activeTab === 'attributes'}\" (click)=\"setActiveTab('attributes')\">\n      Attributes\n    </div>\n    <div class=\"tab\" [ngClass]=\"{'active': activeTab === 'property'}\" (click)=\"setActiveTab('property')\">\n      Property\n    </div>\n    <div class=\"tab\" [ngClass]=\"{'active': activeTab === 'appearance'}\" (click)=\"setActiveTab('appearance')\">\n      Appearance\n    </div>\n  </div>\n\n  <div class=\"tab-content\" *ngIf=\"activeTab === 'attributes'\">\n    <!-- Element Properrties -->\n    <!-- AP-06MAR25 Select element type show -->\n    <div *ngIf=\"getProperties()\">\n      <!-- SKS25MAR25 this is for image edit -->\n      <div *ngIf=\"selectedElement?.type === 'Image'\">\n        <image-cropper *ngIf=\"selectedElement.imageData \" [imageBase64]=\"selectedElement.orgImageData\"\n          [disabled]=\"false\" [alignImage]=\"alignImage\" [roundCropper]=\"roundCropper\" [backgroundColor]=\"'white'\"\n          imageAltText=\"Alternative image text\" [allowMoveImage]=\"false\" [hideResizeSquares]=\"false\"\n          [canvasRotation]=\"canvasRotation\" [aspectRatio]=\"aspectRatio\" [containWithinAspectRatio]=\"false\"\n          [maintainAspectRatio]=\"false\" [cropperStaticWidth]=\"cropperStaticWidth\"\n          [cropperStaticHeight]=\"cropperStaticHeight\" [cropperMinWidth]=\"cropperMinWidth\"\n          [cropperMinHeight]=\"cropperMinHeight\" [cropperMaxWidth]=\"cropperMaxWidth\"\n          [cropperMaxHeight]=\"cropperMaxHeight\" [resetCropOnAspectRatioChange]='true' [(cropper)]=\"cropper\"\n          [(transform)]=\"transform\" [onlyScaleDown]=\"true\" output=\"blob\" format=\"png\"\n          (imageCropped)=\"imageCropped($event)\" (cropperReady)=\"cropperReady($event)\"></image-cropper>\n        <div *ngIf=\"selectedElement.imageData \" style=\"display: flex; gap: 2px;\">\n          <div class=\"cursor-pointer logo-icon\" (click)=\"rotateLeft()\" title=\"Rotate Left\">⟲</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"rotateRight()\" title=\"Rotate Right\">⟳</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"zoomOut()\" title=\"Zoom Out\">-</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"zoomIn()\" title=\"Zoom In\">+</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"moveLeft()\" title=\"Move Left\">←</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"moveRight()\" title=\"Move Right\">→</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"moveUp()\" title=\"Move Up\">↑</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"moveDown()\" title=\"Move Down\">↓</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"flipHorizontal()\" [class.enabled]=\"transform.flipH\"\n            title=\"Flip Horizontally\">↔</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"flipVertical()\" [class.enabled]=\"transform.flipV\"\n            title=\"Flip Vertically\">↕</div>\n          <div class=\"cursor-pointer logo-icon\" (click)=\"resetImage()\" title=\"Reset\">×</div>\n        </div>\n      </div>\n      <!-- SKS28MAR25 search book specific for book element -->\n      <div *ngIf=\"selectedElement?.type === 'Book'\">\n        <label class=\"text-sm\">Search Book</label>\n        <div style=\"display: flex; gap: 2px; align-items: center; justify-content: center;\">\n          <lib-search-box [question]=\"selectedElement\" [apiMeta]=\"bookSubtext\" [placeHolderText]=\"'Search...'\"\n            (searchValueChange)=\"childEventCapture($event)\">\n          </lib-search-box>\n          <div class=\"link-icon\">\n            <svg (click)=\"linkToggleDropdown($event)\" fill=\"#000000\" version=\"1.1\" id=\"Capa_1\"\n              xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"24px\" height=\"24px\"\n              viewBox=\"0 0 450 450\" xml:space=\"preserve\">\n              <g>\n                <g>\n                  <g>\n                    <path d=\"M318.15,230.195l77.934-77.937c31.894-31.892,31.894-83.782-0.004-115.674l-12.66-12.66\n          c-31.893-31.896-83.78-31.896-115.674-0.004l-77.937,77.934c-17.588,17.588-25.457,41.264-23.646,64.311\n          c-23.045-1.813-46.722,6.056-64.308,23.647L23.92,267.748c-31.894,31.889-31.894,83.779,0,115.674l12.664,12.662\n          c31.893,31.893,83.783,31.893,115.674,0l77.935-77.936c17.592-17.59,25.459-41.266,23.647-64.309\n          C276.884,255.654,300.56,247.783,318.15,230.195z M202.653,290.605l-77.936,77.938c-16.705,16.703-43.889,16.703-60.59,0\n          l-12.666-12.666c-16.705-16.701-16.703-43.885,0-60.594l77.936-77.932c14.14-14.141,35.779-16.306,52.226-6.516l-32.302,32.307\n          c-7.606,7.604-7.606,19.938,0,27.541c7.605,7.607,19.937,7.607,27.541,0l32.306-32.303\n          C218.959,254.828,216.795,276.469,202.653,290.605z M238.382,209.169l32.299-32.306c7.608-7.602,7.608-19.935,0-27.538\n          c-7.604-7.61-19.936-7.61-27.541-0.004l-32.303,32.303c-9.791-16.446-7.627-38.087,6.514-52.226l77.935-77.935\n          c16.707-16.707,43.89-16.707,60.594,0l12.664,12.664c16.705,16.705,16.705,43.886,0,60.591l-77.936,77.937\n          C276.468,216.797,254.828,218.959,238.382,209.169z\" />\n                    <path d=\"M343.466,261.465c-45.287,0-82,36.713-82,82s36.713,82,82,82c45.286,0,82-36.713,82-82S388.753,261.465,343.466,261.465z\n           M372.505,333.564l-56.046,56.104c-0.239,0.238-0.536,0.41-0.862,0.496l-22.315,5.85c-0.649,0.168-1.347-0.02-1.822-0.494\n          c-0.477-0.479-0.666-1.172-0.496-1.824l5.826-22.318c0.084-0.326,0.256-0.627,0.494-0.863l56.047-56.104\n          c0.742-0.742,1.945-0.744,2.688-0.002l4.548,4.541c0.739,0.74,0.741,1.943,0,2.688l-37.433,37.471l4.709,4.703l37.435-37.471\n          c0.739-0.742,1.94-0.742,2.682-0.002l4.55,4.541C373.25,331.617,373.25,332.822,372.505,333.564z M395.472,310.574l-17,17.018\n          c-0.739,0.744-1.942,0.744-2.685,0.002l-16.489-16.475c-0.744-0.74-0.744-1.943-0.002-2.688l17-17.02\n          c0.741-0.74,1.944-0.74,2.688-0.002l16.487,16.477C396.216,308.629,396.216,309.832,395.472,310.574z\" />\n                  </g>\n                </g>\n              </g>\n            </svg>\n            <div class=\"link-dropdown-menu\" *ngIf=\"isLinkDropdownOpen\" #dropdown>\n              <label>Endpoint:</label>\n              <input type=\"text\" [(ngModel)]=\"bookSubtext.endpoint\" />\n\n              <label>Variable:</label>\n              <input type=\"text\" [(ngModel)]=\"bookSubtext.variable\" />\n\n              <label>Field:</label>\n              <input type=\"text\" [ngModel]=\"fieldAsString\" (ngModelChange)=\"updateField($event)\" />\n\n              <label>Default Field:</label>\n              <input type=\"text\" [(ngModel)]=\"bookSubtext.defaultField\" />\n            </div>\n          </div>\n        </div>\n      </div>\n      <ng-container *ngFor=\"let prop of getProperties().elementProps\">\n        <div class=\"form-group\">\n          <label *ngIf=\"prop.type !== 'checkbox' && prop.type !== 'subQuestion'\" class=\"text-sm\">{{ prop.label\n            }}</label>\n\n          <!-- Text Input -->\n          <input *ngIf=\"prop.type === 'text'\" type=\"text\" [placeholder]=\"prop.placeholder\"\n            [value]=\"headerSelect ? book.records[0].title : (selectedElement?.type === 'Table' ? (prop.targetArray ? getValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key ) : getValueByPath(prop.key) ) :  getValueByPath(prop.key))\"\n            (input)=\"headerSelect ? updateTitle($event.target.value) : (selectedElement?.type === 'Table' ? (prop.targetArray ? updateValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key, $event) : setValueByPath(prop.key, $event.target.value) ) : setValueByPath(prop.key, $event.target.value))\"\n            [class.read-only]=\"selectedElement.readOnly\" [readonly]=\"selectedElement.readOnly\" />\n\n          <!-- help text -->\n          <div *ngIf=\"prop.key === 'helpText' && selectedElement.helpText\">{{\n            selectedElement.helpText }}</div>\n\n          <!-- questionNumber -->\n          <input *ngIf=\"prop.key === 'questionNumber'\" type=\"number\" [value]=\"selectedElement.questionNumber\"\n            (input)=\"setValueByPath('questionNumber', $event.target.value)\" />\n\n          <!-- file -->\n          <!-- Add this inside the elementProps loop where other inputs are rendered -->\n          <select *ngIf=\"prop.type === 'select' && prop.key === 'supportType'\" [value]=\"selectedElement[prop.key]\"\n            (change)=\"setValueByPath(prop.key, $event.target.value)\">\n            <option value=\"\">Select file category</option>\n            <option *ngFor=\"let option of prop.options\" [value]=\"option.value\"> {{ option.label }} </option>\n          </select>\n\n          <div *ngIf=\"prop.type === 'checkbox'\">\n\n            <input type=\"checkbox\"\n              [checked]=\"selectedElement.type === 'Table' ? (prop.targetArray ? getValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key ) : getValueByPath(prop.key) ):  getValueByPath(prop.key) \"\n              (change)=\" selectedElement.type === 'Table' ? (prop.targetArray ? updateValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key, $event) : onToggleChange(prop.key, $event) ) : onToggleChange(prop.key, $event)\" />\n              <span class=\"toggle-label\" style=\"padding-left: 10px;\">{{ prop.label }}</span>\n\n          </div>\n          <!-- SKS20MAR25 Subquestion Type -->\n          <div *ngIf=\"prop.type === 'subQuestion'\">\n            <div style=\"display: flex; flex-direction: row; gap: 10px; align-items: center;\">\n              <div>{{ prop.label }}</div>\n              <input type=\"checkbox\"\n                [checked]=\"selectedElement.type === 'Table' ? (prop.targetArray ? getValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key ) : getValueByPath(prop.key) ):  getValueByPath(prop.key) \"\n                (change)=\" selectedElement.type === 'Table' ? (prop.targetArray ? updateValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key, $event) : onToggleChange(prop.key, $event) ) : onToggleChange(prop.key, $event)\" />\n            </div>\n            <!-- SKS20MAR25 Render subquestions when checkbox is checked -->\n            <div\n              *ngIf=\"selectedElement.type === 'Table' ? (prop.targetArray ? getValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key ) : getValueByPath(prop.key) ):  getValueByPath(prop.key)\">\n              <div *ngFor=\"let subProp of prop.subQuestion\"\n                style=\"background-color: #e7f2ff; padding: 8px; border-radius: 4px;\">\n                <div class=\"form-group\">\n                  <label>{{ subProp.label }}</label>\n                  <div *ngIf=\"subProp.type === 'array'\">\n                    <!-- Iterate over filtered columns to display checkboxes -->\n                    <div *ngFor=\"let column of filteredColumns\">\n                      <label>\n                        <input type=\"checkbox\"\n                          [checked]=\"subProp.operands ? subProp.operands.includes(column.apiName) : false\"\n                          (change)=\"onCheckboxChange(subProp.targetArray,subProp.targetArrayKey,subProp.key, column.apiName, $event.target.checked)\">\n                        {{ column.apiName }}\n                      </label>\n                    </div>\n                  </div>\n                  <!-- SKS21MAR25 New radio type -->\n                  <div *ngIf=\"subProp.type === 'radio'\">\n                    <div *ngFor=\"let column of filteredColumns\">\n                      <label>\n                        <input type=\"radio\" [name]=\"subProp.key\" [value]=\"column.apiName\"\n                          [checked]=\"getValueByArrayPath(subProp.targetArray, subProp.targetArrayKey, selectColumn, subProp.key) === column.apiName\"\n                          (change)=\"onRadioChange(subProp.targetArray, subProp.targetArrayKey, subProp.key, column.apiName)\">\n                        {{ column.apiName }}\n                      </label>\n                    </div>\n                  </div>\n                  <!-- SKS20MAR25 Add more subproperty types as needed -->\n                  <!-- Inside the subProp ngFor loop -->\n                  <input *ngIf=\"subProp.type === 'text'\" type=\"text\" [placeholder]=\"subProp.placeholder\"\n                    [value]=\"selectedElement.type === 'Table' ? (subProp.targetArray ? getValueByArrayPath(subProp.targetArray, subProp.targetArrayKey, selectColumn, subProp.key ) : getValueByPath(subProp.key) ) : getValueByPath(subProp.key)\"\n                    (input)=\"selectedElement.type === 'Table' ? (subProp.targetArray ? updateValueByArrayPath(subProp.targetArray, subProp.targetArrayKey, selectColumn, subProp.key, $event) : setValueByPath(subProp.key, $event.target.value) ) : setValueByPath(subProp.key, $event.target.value)\" />\n\n                  <input *ngIf=\"subProp.type === 'boolean'\" type=\"checkbox\" [checked]=\"getValueByPath(subProp.key)\"\n                    (change)=\"setValueByPath(subProp.key, $event.target.checked)\" />\n                  <select *ngIf=\"subProp.type === 'select'\" [value]=\"getValueByPath(subProp.key)\"\n                    (change)=\"setValueByPath(subProp.key, $event.target.value)\">\n                    <option *ngFor=\"let option of subProp.options\" [value]=\"option\">{{ option }}</option>\n                  </select>\n                  <input *ngIf=\"subProp.type === 'checkbox'\" type=\"checkbox\" [checked]=\"getValueByPath(subProp.key)\"\n                    (change)=\"setValueByPath(subProp.key, $event.target.checked)\" />\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <!-- SKS20MAR25 Text Align Buttons -->\n          <div *ngIf=\"prop.type === 'align'\">\n            <button *ngFor=\"let option of prop.options\" (click)=\"onAlignSelect(option.value)\"\n              [class.active]=\"selectedElement?.textAlign === option.value\" [title]=\"option.value\">\n              <img [src]=\"'../assets/icons/' + option.icon + '.svg'\" [alt]=\"option.value\" class=\"icon-size\" />\n            </button>\n          </div>\n\n          <div *ngIf=\"prop.type === 'style'\">\n            <button *ngFor=\"let option of prop.options\" (click)=\"onStyleSelect(option.value)\"\n              [class.active]=\"isStyleActive(option.value)\" [title]=\"option.value\">\n              <img [src]=\"'../assets/icons/' + option.icon + '.svg'\" [alt]=\"option.value\" class=\"icon-size\" />\n            </button>\n          </div>\n\n          <!-- Field Size Controls -->\n          <!-- AP 25FEB25 - Change key size -->\n          <div *ngIf=\"prop.key === 'size'\">\n            <input type=\"number\" [value]=\"selectedElement?.size\" (input)=\"setValueByPath('size', $event.target.value)\"\n              class=\"size-input\" />\n          </div>\n\n          <!-- AP-19MAR25 Line Properties -->\n          <!-- Padding Top -->\n          <div *ngIf=\"prop.key === 'paddingTop'\">\n            <input type=\"number\" [placeholder]=\"prop.placeholder\" [value]=\"selectedElement?.paddingTop\"\n              (input)=\"setValueByPath('paddingTop', $event.target.value)\" />\n          </div>\n\n          <!-- Padding Bottom -->\n          <div *ngIf=\"prop.key === 'paddingBottom'\">\n            <input type=\"number\" [placeholder]=\"prop.placeholder\" [value]=\"selectedElement?.paddingBottom\"\n              (input)=\"setValueByPath('paddingBottom', $event.target.value)\" />\n          </div>\n\n          <!-- Line Style -->\n          <div *ngIf=\"prop.key === 'lineStyle'\">\n            <select [value]=\"selectedElement?.lineStyle\" (change)=\"setValueByPath('lineStyle', $event.target.value)\">\n              <option *ngFor=\"let option of prop.options\" [value]=\"option\">{{ option }}</option>\n            </select>\n          </div>\n\n          <!-- Color -->\n          <div *ngIf=\"prop.key === 'color'\">\n            <input type=\"color\" [value]=\"selectedElement?.color\"\n              (input)=\"setValueByPath('color', $event.target.value)\" />\n          </div>\n\n        </div>\n      </ng-container>\n    </div>\n  </div>\n  <div class=\"tab-content\" *ngIf=\"activeTab === 'property'\">\n    <!-- Field Elements Properties -->\n    <!-- AP-06MAR25 Show elements ID  -->\n    <div *ngIf=\"getProperties()\">\n      <label>Label Id</label>\n      <div\n        style=\"font-size: 13px; padding: 11px; border-radius: 5px; background-color: #f8f8f8; border: 1px solid #ddd;\">\n        {{ headerSelect ? bookId : selectedElement.id }}</div>\n      <ng-container *ngFor=\"let prop of getProperties().fieldProps\">\n        <div class=\"form-group\">\n          <label class=\"text-sm\">{{ prop.label }}</label>\n\n          <!-- SKS21MAR25 Toggle Group -->\n          <div *ngIf=\"prop.type === 'toggleGroup'\" class=\"toggle-group\">\n            <div class=\"toggle-item\">\n              <label class=\"toggle-label\">\n                <input type=\"checkbox\" [checked]=\"selectedElement?.isOptional\"\n                  (change)=\"onRequiredChange($event.target.checked)\" />\n                Required\n              </label>\n            </div>\n            <div class=\"toggle-item\">\n              <label class=\"toggle-label\">\n                <input type=\"checkbox\" [checked]=\"selectedElement?.isReadOnly\"\n                  (change)=\"onToggleChange('isReadOnly', $event)\" />\n                Read Only\n              </label>\n            </div>\n            <div class=\"toggle-item\">\n              <label class=\"toggle-label\">\n                <input type=\"checkbox\" />\n                Disabled\n              </label>\n            </div>\n            <div class=\"toggle-item\">\n              <label class=\"toggle-label\">\n                <input type=\"checkbox\" [checked]=\"selectedElement?.isHidden\"\n                  (change)=\"onToggleChange('isHidden', $event)\" />\n                Is Hide\n              </label>\n            </div>\n          </div>\n\n          <!-- AP 28FEB25 - handled options with UUID -->\n          <div\n            *ngIf=\"prop.type === 'dropdown' || prop.type === 'checkbox' || prop.type === 'radio' && prop.key === 'options'\"\n            class=\"options-container\">\n\n            <div class=\"option-list\" (dragover)=\"onDragOver($event)\" (drop)=\"onDrop($event, prop.key)\">\n              <div *ngFor=\"let option of selectedElement[prop.key]\" class=\"option-items\" [attr.data-id]=\"option.id\"\n                draggable=\"true\" (dragstart)=\"onDragStart($event, option.id)\">\n\n                <input type=\"text\" [(ngModel)]=\"option.value\" placeholder=\"Option\" class=\"options\" />\n                <img src=\"../assets/icons/Trash.svg\" (click)=\"removeOption(selectedElement[prop.key], option.id)\">\n                <span class=\"drag-handle\">☰</span>\n              </div>\n            </div>\n\n            <button (click)=\"addOption(selectedElement[prop.key])\">\n              <div class=\"add-varient\">\n                <span class=\"text-lg\">+</span>\n                <span>Add</span>\n              </div>\n            </button>\n          </div>\n\n          <input *ngIf=\"prop.type === 'text'\" type=\"text\" [placeholder]=\"prop.placeholder\"\n            [value]=\"headerSelect ? book.records[0].title : (selectedElement?.type === 'Table' ? (prop.targetArray ? getValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key ) : getValueByPath(prop.key) ) :  getValueByPath(prop.key))\"\n            (input)=\"headerSelect ? updateTitle($event.target.value) : (selectedElement?.type === 'Table' ? (prop.targetArray ? updateValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key, $event) : setValueByPath(prop.key, $event.target.value) ) : setValueByPath(prop.key, $event.target.value))\"\n            [class.read-only]=\"selectedElement.readOnly\" [readonly]=\"selectedElement.readOnly\" />\n\n          <!-- Sub Questions Toggle -->\n          <div *ngIf=\"prop.type === 'subQuestion'\">\n            <div class=\"style-toggle-header\" (click)=\"toggleSubQuestion(prop)\">\n              <div class=\"head-elements\">Sub Text</div>\n              <img [src]=\"prop.isExpanded ? '../assets/icons/arrow-down.svg' : '../assets/icons/arrow-right.svg'\"\n                alt=\"Toggle Arrow\" class=\"arrow-icon\">\n            </div>\n\n            <!-- Render subquestions when arrow is down -->\n            <div *ngIf=\"prop.isExpanded\" style=\"border: 1px solid #ddd; padding: 8px; border-radius: 4px;\">\n              <div *ngFor=\"let subProp of prop.subQuestion\" class=\"sub-question-container\">\n                <div class=\"form-group\">\n                  <label>{{ subProp.label }}</label>\n\n                  <input *ngIf=\"subProp.type === 'text'\" type=\"text\" [placeholder]=\"subProp.placeholder\"\n                    [value]=\"getValueByPath(subProp.key)\" (input)=\"setValueByPath(subProp.key, $event.target.value)\" />\n                    \n                  <!-- AP-02APR25 Render input field only if subProp.type is 'array' -->\n                  <input *ngIf=\"subProp.type === 'array'\" type=\"text\" [placeholder]=\"subProp.placeholder\"\n                    [value]=\"getValueByPath(subProp.key)\" (input)=\"setValueByPath(subProp.key, $event.target.value)\" />\n                    <!-- <input type=\"text\" [ngModel]=\"fieldAsString\" (ngModelChange)=\"updateField($event)\" /> -->\n\n                  <input *ngIf=\"subProp.type === 'boolean'\" type=\"checkbox\" [checked]=\"getValueByPath(subProp.key)\"\n                    (change)=\"setValueByPath(subProp.key, $event.target.checked)\" />\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <div *ngIf=\"prop.type === 'checkbox'\">\n            <span class=\"toggle-label\" style=\"padding-right: 10px;\">{{ prop.label }}</span>\n            <input type=\"checkbox\"\n              [checked]=\"selectedElement.type === 'Table' ? (prop.targetArray ? getValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key ) : getValueByPath(prop.key) ):  getValueByPath(prop.key) \"\n              (change)=\" selectedElement.type === 'Table' ? (prop.targetArray ? updateValueByArrayPath(prop.targetArray, prop.targetArrayKey, selectColumn, prop.key, $event) : onToggleChange(prop.key, $event) ) : onToggleChange(prop.key, $event)\" />\n\n          </div>\n\n        </div>\n      </ng-container>\n\n      <!-- SKS21MAR25 Move Style Outside the Loop -->\n      <!-- Style Toggle -->\n      <div class=\"style-toggle-header\" (click)=\"toggleStyleSection()\">\n        <div class=\"head-elements\">Style</div>\n        <img [src]=\"isStyleExpanded ? '../assets/icons/arrow-down.svg' : '../assets/icons/arrow-right.svg'\"\n          alt=\"Toggle Arrow\" class=\"arrow-icon\">\n      </div>\n\n      <div *ngIf=\"isStyleExpanded\" style=\"border: 1px solid #ddd; padding: 8px; border-radius: 4px;\">\n        <div class=\"form-group\">\n          <div *ngFor=\"let key of getStyleKeys()\">\n            <label>{{ key }}</label>\n            <input type=\"text\" [(ngModel)]=\"selectedElement.style[key]\"\n              (input)=\"setValueByPath('style.' + key, $event.target.value)\" placeholder=\"Enter {{ key }}\" />\n          </div>\n        </div>\n      </div>\n\n    </div>\n  </div>\n  <div class=\"tab-content\" *ngIf=\"activeTab === 'appearance'\">\n    <div *ngIf=\"getProperties()\">\n      <ng-container *ngFor=\"let prop of getProperties().appearance\">\n        <div class=\"form-group\">\n          <label class=\"text-sm\">{{ prop.label }}</label>\n          <!-- Font Selection -->\n          <div *ngIf=\"prop.key === 'font'\">\n            <select *ngIf=\"prop.type === 'select'\" class=\"select-container\" [(ngModel)]=\"selectedElement.font\"\n              (change)=\"setValueByPath('font', $event.target.value)\">\n              <option *ngFor=\"let option of prop.options\" [value]=\"option\">\n                {{ option }}\n              </option>\n            </select>\n          </div>\n          <!-- Input Box -->\n          <input *ngIf=\"prop.type === 'text'\" type=\"text\" [placeholder]=\"prop.placeholder\"\n            [value]=\"selectedElement[prop.key]\" (input)=\"setValueByPath(prop.key, $event.target.value)\" />\n\n          <!-- Font Size Selection -->\n          <div *ngIf=\"prop.key === 'fontSize'\">\n            <select *ngIf=\"prop.type === 'select'\" [(ngModel)]=\"selectedElement[prop.key]\"\n              (change)=\"setValueByPath(prop.key, $event.target.value)\">\n              <option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\n                {{ option.label }}\n              </option>\n            </select>\n          </div>\n          <!-- Font Weight Selection -->\n          <div *ngIf=\"prop.key === 'fontWeight'\">\n            <select *ngIf=\"prop.type === 'select'\" [(ngModel)]=\"selectedElement[prop.key]\"\n              (change)=\"setValueByPath(prop.key, $event.target.value)\">\n              <option *ngFor=\"let option of prop.options\" [value]=\"option.value\">\n                {{ option.label }}\n              </option>\n            </select>\n          </div>\n\n          <div class=\"flex-container\">\n            <!-- Dropdown Box -->\n            <div *ngIf=\"prop.type === 'dropdown'\" class=\"input-box-field\">\n              <select [(ngModel)]=\"selectedElement[prop.key]\" (change)=\"setValueByPath(prop.key, $event.target.value)\">\n                <option *ngFor=\"let option of prop.options\" [value]=\"option\">\n                  {{ option }}\n                </option>\n              </select>\n            </div>\n\n            <!-- Color Picker -->\n            <div *ngIf=\"prop.type === 'color'\" class=\"color-selector\">\n              <input type=\"color\" [(ngModel)]=\"selectedElement.fontColor\"\n                (change)=\"setValueByPath('fontColor', $event.target.value)\">\n            </div>\n\n            <!-- HEX Input Box -->\n            <div *ngIf=\"prop.type === 'color'\" class=\"hex-input-container\">\n              <span>HEX Code</span>\n              <input type=\"text\" [(ngModel)]=\"selectedElement[prop.key]\"\n                (change)=\"setValueByPath(prop.key, $event.target.value)\" />\n            </div>\n          </div>\n          \n          <!-- AP-17APR25 Button for Duplicate Field  -->\n<div *ngIf=\"prop.type === 'button-toggle'\" class=\"button-toggle-wrapper\">\n  <button type=\"button\"\n    class=\"toggle-button\"\n    (click)=\"duplicateField(selectedElement)\">\n    Add Duplicate\n  </button>\n</div>\n\n\n        </div>\n      </ng-container>\n    </div>\n  </div>\n\n<!-- AP-08APR25 Default Save Button -->\n<div class=\"button-container\" *ngIf=\"!templateSelected\">\n  <button class=\"cancel-btn\" (click)=\"onCancel()\">Cancel</button>\n  <button class=\"save-btn\" (click)=\"handleButtonClick()\">Save</button>\n</div>\n\n<!-- AP-08APR25 Template Save Button -->\n<div class=\"button-container\" *ngIf=\"templateSelected\" style=\"margin-top: 20px;\">\n  <button class=\"save-btn\" (click)=\"handleTemplateSave()\">Save Template</button>\n</div>\n\n</div>","// AP 22JAN25\nimport { Component } from '@angular/core';\n\n@Component({\n  selector: 'app-menu',\n  templateUrl: './menu.component.html',\n  styleUrls: ['./menu.component.css']\n})\nexport class MenuComponent {\n  activeIndex: number = 0;\n\n  menuItems = [\n    { icon: '../assets/icons/Related.svg' },\n    { icon: '../assets/icons/TextColumns.svg' },\n    { icon: '../assets/icons/Monotone.svg' },\n    { icon: '../assets/icons/Preview1.svg' },\n    { icon: '../assets/icons/Website.svg' },\n    { icon: '../assets/icons/Preview2.svg' },\n    { icon: '../assets/icons/pdf.svg' },\n    { icon: '../assets/icons/Setting.svg' }\n    // { icon: '../assets/icons/ProfileImage.svg' }\n  ];\n\n  setActiveMenu(index: number): void {\n    this.activeIndex = index;\n  }\n}\n","<!-- AP 22JAN25 - Top menu ,Left side menu  -->\n<!-- menu.component.html -->\n<div class=\"top-bar\">\n    <button class=\"button share-button\">Share</button>\n    <button class=\"button publish-button\">Publish</button>\n</div>\n<div class=\"menu-sidebar\">\n  <!-- Logo Section -->\n  <div class=\"menu-logo\">\n    <img src=\"../assets/Nxt.png\">\n  </div>\n\n  <!-- Menu Items -->\n  <ul class=\"menu-list\">\n    <li\n      *ngFor=\"let item of menuItems; let i = index\"\n      class=\"menu-item\"\n      [class.active]=\"activeIndex === i\"\n      (click)=\"setActiveMenu(i)\"\n      [attr.aria-label]=\"item.label\"\n    >\n      <!-- Dynamic Icon -->\n      <img [src]=\"item.icon\" alt=\"Menu Icon\" class=\"menu-icon\" />\n    </li>\n  </ul>\n\n  <!-- Profile Section -->\n  <div class=\"menu-profile\">\n    <img src=\"../assets/icons/ProfileImage.svg\" />\n  </div>\n</div>\n\n","// AP-29JAN25 \nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'app-form-builder',\n  templateUrl: './form.component.html',\n  styleUrls: ['./form.component.css'],\n})\nexport class FormComponent {\n  // Input data for app-element\n  // bookletJson: any = {}; // Replace with your actual JSON object\n  // bookletId: string = '123'; // Replace with your actual booklet ID\n    @Input() bookletJSON: any;\n    @Input() bookletId: any;\n    @Output() formButtonHandler = new EventEmitter<string>();\n    @Output() templateSaveHandler = new EventEmitter<string>();\n\n  // Input data for app-properties\n  // api: string = 'https://example.com/api'; // Replace with your actual API endpoint\n  // apiMethod: string = 'GET'; // Replace with your actual API method\n  selectedElementType: string = 'button'; // Replace with the default selected element type\n  isTemplateSelected = false;\n\nonTemplateModeChange(status: boolean) {\n  this.isTemplateSelected = status;\n}\n\n  // Event handler for app-element\n  formButtonHandlerClick(event){\n    this.formButtonHandler.emit(event);\n  }\n\n  saveTemplate(event: any) {  \n    this.templateSaveHandler.emit(event);\n  }  \n  \n}\n","<!-- AP-29JAN25 -->\n<div class=\"form-container \">\n    <!-- app-element Component -->\n     <!--AP-08APR25 Passes a boolean to indicate if a template is selected -->\n    <app-element \n    [bookletJSON]=\"bookletJSON\" \n    [bookletId]=\"bookletId\"\n    (templateMode)=\"onTemplateModeChange($event)\">\n  </app-element>\n   <!-- app-properties Component -->\n  <!-- AP-08APR25 Emits an event when the template mode -->\n  <app-properties \n  (formButtonHandler)=\"formButtonHandlerClick($event)\"\n  (templateSaveHandler)=\"saveTemplate($event)\"\n  [templateSelected]=\"isTemplateSelected\">\n </app-properties>\n  \n  ","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'nxt-info-card',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './info-card.component.html',\n  styleUrl: './info-card.component.css'\n})\nexport class NxtInfoCard {\n  @Input() title: string = ''; // title of the card\n  @Input() value: string | number = ''; // value of the card\n  @Input() description: string = ''; // description of the card\n  @Input() content: string = ''; // content of the card\n\n  @Input() imgSrc: string = 'https://img.icons8.com/material-sharp/24/permanent-job.png';  // image source of the card\n  @Input() hoverImgSrc: string = ''; // hover image source of the card\n\n  @Input() color: string = '#ffffff'; // color of the card\n  @Input() hoverColor: string = '#f8f9fa'; // hover color of the card\n  @Input() padding: string = '20px'; // padding of the card\n\n  @Input() isImageRight: boolean = false; // whether the image is on the right side of the card\n  @Input() isImageLeft: boolean = true; // whether the image is on the left side of the card\n  @Input() iconColor: string = '#f8f9fa'; // color of the icon\n  @Input() iconHoverColor: string = '#ffffff'; // hover color of the icon\n\n\n  @Input() isEdit: boolean = false; // whether the card is editable\n  @Input() editConfig: any = null; // edit config of the card\n\n  @Output() buttonClick = new EventEmitter<{ button: any, cardData: any }>();\n\n  isHovered: boolean = false;\n  isDropdownOpen: boolean = false;\n\n  constructor(private elementRef: ElementRef) { }\n  onMouseEnter() {\n    this.isHovered = true;\n  }\n\n  onMouseLeave() {\n    this.isHovered = false;\n  }\n\n\n  getCurrentImgSrc(): string {\n    return this.isHovered && this.hoverImgSrc ? this.hoverImgSrc : this.imgSrc;\n  }\n\n  getCurrentBgColor(): string {\n    return this.isHovered ? this.hoverColor : this.color;\n  }\n  getCurrentIconBgColor(): string {\n    return this.isHovered ? this.iconHoverColor : this.iconColor;\n  }\n  toggleDropdown() {\n    this.isDropdownOpen = !this.isDropdownOpen;\n  }\n\n  closeDropdown() {\n    this.isDropdownOpen = false;\n  }\n\n  onButtonClick(button: any) {\n    const cardData = {\n      title: this.title,\n      value: this.value,\n      description: this.description,\n      content: this.content\n    };\n\n    this.buttonClick.emit({ button, cardData });\n    this.closeDropdown();\n  }\n  hasEditButtons(): boolean {\n    return this.isEdit && this.editConfig && this.editConfig.buttons && this.editConfig.buttons.length > 0;\n  }\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n    if (this.isDropdownOpen && !this.elementRef.nativeElement.contains(event.target)\n    ) {\n      this.isDropdownOpen = false;\n    }\n  }\n}","<div class=\"workforce-card\" [ngStyle]=\"{'background-color': getCurrentBgColor(), 'padding': padding}\"\n  (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n\n  <div class=\"card-content\">\n    <!-- Left image -->\n    <div *ngIf=\"isImageLeft\" class=\"image-container left-image\"\n      [ngStyle]=\"{'background-color': getCurrentIconBgColor()}\">\n      <img [src]=\"getCurrentImgSrc()\" alt=\"icon\">\n    </div>\n\n    <!-- Card text content -->\n    <div class=\"text-content\">\n      <div class=\"title\">{{ title }}</div>\n      <div class=\"value\">{{ value }}</div>\n      <div *ngIf=\"description\" class=\"description\">{{ description }}</div>\n      <div *ngIf=\"content\" class=\"additional-content\">{{ content }}</div>\n    </div>\n\n    <!-- Right image -->\n    <div *ngIf=\"isImageRight\" class=\"image-container right-image\"\n      [ngStyle]=\"{'background-color': getCurrentIconBgColor()}\">\n      <img [src]=\"getCurrentImgSrc()\" alt=\"icon\">\n    </div>\n\n    <!-- Edit button -->\n    <div *ngIf=\"isEdit\" class=\"edit-button\" (click)=\"toggleDropdown(); $event.stopPropagation()\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" stroke=\"#bababa\">\n        <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n        <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n        <g id=\"SVGRepo_iconCarrier\">\n          <path\n            d=\"M13 5C13 4.44772 12.5523 4 12 4C11.4477 4 11 4.44772 11 5C11 5.55228 11.4477 6 12 6C12.5523 6 13 5.55228 13 5Z\"\n            stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n          <path\n            d=\"M13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13C12.5523 13 13 12.5523 13 12Z\"\n            stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n          <path\n            d=\"M13 19C13 18.4477 12.5523 18 12 18C11.4477 18 11 18.4477 11 19C11 19.5523 11.4477 20 12 20C12.5523 20 13 19.5523 13 19Z\"\n            stroke=\"#d4d4d4\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n        </g>\n      </svg>\n    </div>\n    <!-- Dropdown menu -->\n    <div *ngIf=\"isDropdownOpen\" class=\"edit-dropdown-menu show\">\n      <div *ngFor=\"let button of editConfig.buttons\" class=\"edit-dropdown-item\" (click)=\"onButtonClick(button)\">\n        <div class=\"dropdown-button-content\">\n          <img *ngIf=\"button.isImageSvg && button.iconSrc\" [src]=\"button.iconSrc\" alt=\"icon\" class=\"button-icon\">\n          <span class=\"button-name\">{{ button.name }}</span>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nexport interface Field {\n  icon: string;       // URL or path to the icon\n  name: string;       // Name/label of the position\n  value: number | string; // Count/value for this position\n}\n\nexport interface CardConfig {\n  width?: string;\n  height?: string;\n  backgroundColor?: string;\n  borderRadius?: string;\n}\n\n@Component({\n  selector: 'nxt-group-info',\n  standalone: true,\n  imports: [CommonModule, FormsModule],\n  templateUrl: './group-info.component.html',\n  styleUrl: './group-info.component.css'\n})\nexport class NxtGroupInfo {\n  @Input() cardTitle: string = 'Title'; // card title\n  @Input() fields: Field[] = []; // fields to display\n  @Input() isEditable: boolean = false; // is the card editable\n  @Input() allowAdd: boolean = false; // allow adding new fields\n  @Input() allowEditValues: boolean = false; // allow editing values\n  @Input() allowDelete: boolean = false; // allow deleting fields\n  @Input() cardWidth: string = '300px'; // card width\n  @Input() cardHeight: string = 'auto'; // card height\n  @Input() backgroundColor: string = 'white'; // card background color\n  @Input() borderRadius: string = '10px'; // card border radius\n  @Input() editConfig: any = null; // edit config\n\n  @Output() buttonClick = new EventEmitter<{}>();\n\n  editingIndex: number = -1;\n  isDropdownOpen: boolean = false;\n\n  constructor(private elementRef: ElementRef) { }\n\n  getCardStyle() {\n    return {\n      width: this.cardWidth,\n      height: this.cardHeight,\n      backgroundColor: this.backgroundColor,\n      borderRadius: this.borderRadius || '8px'\n    };\n  }\n\n  startEditing(index: number): void {\n    if (this.isEditable) {\n      this.editingIndex = index;\n    }\n  }\n\n  saveItem(index: number): void {\n    this.editingIndex = -1;\n  }\n\n  deleteItem(index: number): void {\n    if (this.isEditable && this.allowDelete) {\n      this.fields.splice(index, 1);\n    }\n  }\n\n  addNewItem(): void {\n    if (this.isEditable && this.allowAdd) {\n      this.fields.push({ icon: 'https://img.icons8.com/material-sharp/24/permanent-job.png', name: 'New Position', value: 0 });\n      this.editingIndex = this.fields.length - 1;\n    }\n  }\n  toggleDropdown() {\n    this.isDropdownOpen = !this.isDropdownOpen;\n  }\n  closeDropdown() {\n    this.isDropdownOpen = false;\n  }\n  @HostListener('document:click', ['$event'])\n  onClickOutside(event: MouseEvent) {\n    if (this.isDropdownOpen && !this.elementRef.nativeElement.contains(event.target)\n    ) {\n      this.isDropdownOpen = false;\n    }\n  }\n  onButtonClick(button: any) {\n    this.buttonClick.emit({ button, fields: this.fields });\n    this.closeDropdown();\n  }\n}\n","<div class=\"position-card\" [ngStyle]=\"getCardStyle()\">\n  <div class=\"title-card-header\">\n    <h3 class=\"card-title\">{{ cardTitle }}</h3>\n    <div class=\"card-actions\" *ngIf=\"isEditable\">\n      <button class=\"edit-button\" (click)=\"toggleDropdown(); $event.stopPropagation()\">\n        <i class=\"fa fa-ellipsis-v\"></i>\n      </button>\n      <!-- SKS4APR25 Dropdown menu -->\n      <div *ngIf=\"isDropdownOpen\" class=\"edit-dropdown-menu show\">\n        <div *ngFor=\"let button of editConfig.buttons\" class=\"edit-dropdown-item\" (click)=\"onButtonClick(button)\">\n          <div class=\"dropdown-button-content\">\n            <img *ngIf=\"button.isImageSvg && button.iconSrc\" [src]=\"button.iconSrc\" alt=\"icon\" class=\"button-icon\">\n            <span class=\"button-name\">{{ button.name }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  <div class=\"card-content\">\n    <div class=\"position-item\" *ngFor=\"let field of fields; let i = index\">\n      <div *ngIf=\"editingIndex !== i\" class=\"position-display\">\n        <div class=\"position-icon\">\n          <img [src]=\"field.icon\" alt=\"icon\">\n        </div>\n        <div class=\"position-name\">{{ field.name }}</div>\n        <div class=\"position-value\">{{ field.value }}</div>\n        <div class=\"edit-actions\" *ngIf=\"isEditable\">\n          <button class=\"edit-btn\" (click)=\"startEditing(i)\" *ngIf=\"allowEditValues\">\n            <i class=\"fa fa-pencil\"></i>\n          </button>\n          <button class=\"delete-btn\" (click)=\"deleteItem(i)\" *ngIf=\"allowDelete\">\n            <i class=\"fa fa-trash\"></i>\n          </button>\n        </div>\n      </div>\n\n      <div *ngIf=\"editingIndex === i\" class=\"position-edit\">\n        <div class=\"position-icon\">\n          <img [src]=\"field.icon\" alt=\"icon\">\n        </div>\n        <input [(ngModel)]=\"field.name\" class=\"edit-name\" placeholder=\"Position name\">\n        <input [(ngModel)]=\"field.value\" class=\"edit-value\" type=\"number\">\n        <button class=\"save-btn\" (click)=\"saveItem(i)\">\n          <i class=\"fa fa-check\"></i>\n        </button>\n      </div>\n    </div>\n\n    <div class=\"add-position\" *ngIf=\"isEditable && allowAdd\">\n      <button class=\"add-btn\" (click)=\"addNewItem()\">\n        <i class=\"fa fa-plus\"></i> Add\n      </button>\n    </div>\n  </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\ninterface CardData {\n  key: string;\n  value: string | number;\n}\n\n@Component({\n  selector: 'nxt-image-card',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './image-card.component.html',\n  styleUrl: './image-card.component.css'\n})\nexport class NxtImageCard {\n  @Input() imageSrc: string = ''; // image\n  @Input() iconSrc: string = ''; // icon\n  @Input() hoverIconSrc: string = ''; // hover icon\n  @Input() iconBgColor: string = '#e8eaf6'; // icon background color\n  @Input() iconHoverBgColor: string = '#c5cae9'; // icon hover background color\n  @Input() iconPosition: 'start' | 'middle' | 'end' = 'middle'; // icon position\n  @Input() title: string = ''; // title\n  @Input() content: string = ''; // content\n  @Input() cardData: CardData[] = []; // card data(key: value)\n  @Input() cardHeight: string = 'auto'; // card height\n  @Input() cardWidth: string = '300px'; // card width\n  @Input() cardColor: string = 'white'; // card color\n  @Input() padding: string = '20px'; // padding\n  @Input() cardImageHeight: string = '40%'; // card image height\n  @Input() cardImageWidth: string = '100%'; // card image width\n  @Input() cardImageColor: string = '10px'; // card image color\n  @Input() imagePadding: string = '10px'; // image padding\n  @Input() imageBorderRadius: string = '25px'; // image border radius\n\n  isHovered: boolean = false;\n\n  constructor() { }\n\n  ngOnInit(): void { }\n\n  getIconPositionClass(): string {\n    switch (this.iconPosition) {\n      case 'start': return 'justify-content-start';\n      case 'end': return 'justify-content-end';\n      default: return 'justify-content-center';\n    }\n  }\n\n  onMouseEnter(): void {\n    this.isHovered = true;\n  }\n\n  onMouseLeave(): void {\n    this.isHovered = false;\n  }\n}","<div class=\"custom-card\" [style.height]=\"cardHeight\" [style.width]=\"cardWidth\" [style.background-color]=\"cardColor\"\n  [style.padding]=\"padding\">\n\n  <!-- Background Image -->\n  <div class=\"card-image\" *ngIf=\"imageSrc\" [style.height]=\"cardImageHeight\" [style.width]=\"cardImageWidth\"\n    [style.background-color]=\"cardImageColor\">\n    <img [src]=\"imageSrc\" alt=\"Card background\" [style.padding]=\"imagePadding\"\n      [style.border-radius]=\"imageBorderRadius\">\n  </div>\n  <!-- Icon Container -->\n  <div class=\"icon-container d-flex\" [ngClass]=\"getIconPositionClass()\">\n    <div class=\"icon-wrapper\" [style.border]=\"'4px solid ' + cardColor\"\n      [style.background-color]=\"isHovered ? iconHoverBgColor : iconBgColor\" (mouseenter)=\"onMouseEnter()\"\n      (mouseleave)=\"onMouseLeave()\">\n      <img [src]=\"isHovered && hoverIconSrc ? hoverIconSrc : iconSrc\" alt=\"Icon\">\n    </div>\n  </div>\n  <!-- Content -->\n  <div class=\"card-content\">\n    <h2 class=\"card-title\" *ngIf=\"title\">{{ title }}</h2>\n    <p class=\"card-description\" *ngIf=\"content\">{{ content }}</p>\n  </div>\n\n  <!-- Data Points -->\n  <div class=\"card-data\" *ngIf=\"cardData && cardData.length > 0\">\n    <div class=\"data-row\">\n      <div class=\"data-item\" *ngFor=\"let item of cardData\">\n        <div class=\"data-value\">{{ item.value }}</div>\n        <div class=\"data-key\">{{ item.key }}</div>\n      </div>\n    </div>\n  </div>\n</div>","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { NxtInfoCard } from '../info-card/info-card.component';\n\n@Component({\n  selector: 'nxt-group-card',\n  standalone: true,\n  imports: [CommonModule, NxtInfoCard],\n  templateUrl: './group-card.component.html',\n  styleUrl: './group-card.component.css'\n})\nexport class NxtGroupCard {\n  @Input() title: string = 'title'; // card title\n  @Input() cardWidth: string = '250px'; // card width\n  @Input() cardHeight: string = '80px'; // card height\n  @Input() titleIconSrc: string = 'https://img.icons8.com/material-sharp/24/permanent-job.png'; // card title icon\n  @Input() infoCardArray: any[] = []; // array of info cards\n\n  @Output() buttonClick = new EventEmitter<any>();\n  \n\n  onButtonClick(event: any) {\n    const { button, cardData } = event;\n    this.buttonClick.emit(event);\n  }\n}\n","<!-- SKS4APR25 group card -->\n<div class=\"cards-container\" [style.width]=\"cardWidth\" [style.height]=\"cardHeight\">\n    <div class=\"header\">\n      <div class=\"title-container\">\n        <img [src]=\"titleIconSrc\" alt=\"Icon\" class=\"title-icon\" *ngIf=\"titleIconSrc\">\n        <h2 class=\"title\">{{ title }}</h2>\n      </div>\n    </div>\n    \n    <div class=\"cards-grid\">\n      <div *ngFor=\"let card of infoCardArray\" class=\"card-wrapper\">\n        <nxt-info-card \n          [title]=\"card.title\"\n          [description]=\"card.description\"\n          [imgSrc]=\"card.imgSrc\"\n          [hoverImgSrc]=\"card.hoverImgSrc\"\n          [color]=\"card.color\"\n          [hoverColor]=\"card.hoverColor\"\n          [iconColor]=\"card.iconColor\"\n          [iconHoverColor]=\"card.iconHoverColor\"\n          [padding]=\"card.padding\"\n          [isImageLeft]=\"card.isImageLeft\"\n          [isImageRight]=\"card.isImageRight\"\n          [isEdit]=\"card.isEdit\"\n          [editConfig]=\"card.editConfig\"\n          (buttonClick)=\"onButtonClick($event)\"\n        ></nxt-info-card>\n      </div>\n    </div>\n  </div>","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { NxtAppComponent } from './nxt-app.component';\nimport { QuestionnaireComponent } from './pages/questionnaire/questionnaire.component';\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule,ReactiveFormsModule } from '@angular/forms';\nimport { NgCircleProgressModule } from 'ng-circle-progress';\nimport { NgxSpinnerModule } from \"ngx-spinner\";\nimport { GOOGLE_MAP_API_KEY } from '../lib/sample';\nimport { PickLocationComponent } from './components/pick-location/pick-location.component';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { CustomInputComponent } from './components/custom-input/custom-input.component';\nimport { CustomTextAreaComponent } from './components/custom-text-area/custom-text-area.component';\nimport { CustomTableComponent } from './components/custom-table/custom-table.component';\nimport { CustomRichTextComponent, QuillConfiguration } from './components/custom-rich-text/custom-rich-text.component'; //RS 06JAN2025 Imports modules and components for browser compatibility, Quill-based rich text editing, and custom configurations\nimport { QuillModule } from 'ngx-quill';\nimport { DropdownWithFlagComponent } from './components/dropdown-with-flag/dropdown-with-flag.component';\nimport { OwlDateTimeModule, OwlNativeDateTimeModule } from '@danielmoncada/angular-datetime-picker';\n\n//import { OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS } from 'ng-pick-datetime/date-time/adapter/moment-adapter/moment-date-time-adapter.class';\nimport { CustomDatePickerComponent } from './components/custom-date-picker/custom-date-picker.component';\nimport { CustomDropdownComponent } from './components/custom-dropdown/custom-dropdown.component';\n// VD 23JAN24 removed HttpClientModule\nimport { BookletComponent } from './pages/booklet/booklet.component';\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { SearchBoxComponent } from './components/search-box/search-box.component';\nimport { QuestionbookComponent } from './pages/questionbook/questionbook.component';\nimport { FileUploadComponent } from './components/file-upload/file-upload.component';\nimport { SummaryPageComponent } from './pages/summary-page/summary-page.component';\nimport { FileViewComponent } from './components/file-view/file-view.component';\nimport { DependentTableComponent } from './components/dependent-table/dependent-table.component';\nimport { CustomLabelComponent } from './components/custom-label/custom-label.component';\nimport { TableAppendixComponent } from './components/table-appendix/table-appendix.component';\nimport { CustomDateComponent } from './components/custom-date/custom-date.component';\nimport { CustomTimeComponent } from './components/custom-time/custom-time.component';\nimport { CustomButtonComponent } from './components/custom-button/custom-button.component';\n// HA 19DEC23 Importing for translation\nimport { I18nModule } from './i18n.module'\nimport { I18nComponent } from './i18n.component';\nimport { I18nPipe } from './i18n.pipe';\nimport * as enI18n from './en.i18n';\nimport * as arI18n from './ar.i18n';\nimport * as tamI18n from './tam.i18n'\nimport { I18nService } from './i18n.service';\nimport { MatTooltipModule } from '@angular/material/tooltip'; // VD 20JUN24 - help text changes\nimport { GetValuePipe } from './pipe/get-value.pipe'; // VD 26JUN24 - pipe changes\nimport { CustomCalendarComponent } from './components/custom-calendar/custom-calendar.component';\nimport { CustomModelComponent } from './components/custom-model/custom-model.component';\nimport { CustomImageComponent } from './components/custom-image/custom-image.component';\nimport { CustomRadioComponent } from './components/custom-radio/custom-radio.component';\nimport { LoaderComponent } from './components/loader/loader.component';\nimport { ComponenthostDirective } from './directives/componenthost/componenthost.directive';\n// AP 22JAN2025 Added the below components\nimport { ElementComponent } from './pages/builder/element/element.component';\nimport { PropertiesComponent } from './pages/builder/properties/properties.component';\nimport { MenuComponent } from './pages/builder/menu/menu.component';\n// AP 22JAN2025 Added the DragDropModule\nimport { DragDropModule } from '@angular/cdk/drag-drop';\n//AP 22JAN2025 Added the FormBuilderService\nimport { FormBuilderService } from './services/form-builder.service';\nimport { FormComponent } from './pages/builder/form/form.component';\nimport { NxtDatatable } from './components/datatable/datatable.component';\nimport { ImageCropperComponent } from './components/image-cropper/component/image-cropper.component';\nimport { NxtInfoCard } from './components/cards/info-card/info-card.component';\nimport { NxtGroupInfo } from './components/cards/group-info/group-info.component';\nimport { NxtImageCard } from './components/cards/image-card/image-card.component';\nimport { NxtGroupCard } from './components/cards/group-card/group-card.component';\nimport { AppTemplatesComponent } from './pages/builder/templates/templates.component';\n \n \n// export const MY_CUSTOM_FORMATS = {\n//   fullPickerInput: 'DD/MM/YYYY HH:mm:ss',\n//   useUtc: true,\n// };\n\n// HA 19DEC23 variable created for translation\nconst languages = [\n  // { lang: 'EN', flag: 'assets/images/en.i18n.png', file: enI18n },\n  { lang: 'EN', file: enI18n },\n  { lang: 'TAM', file: tamI18n },\n  { lang: 'AR', file: arI18n }\n]\n\n@NgModule({\n  declarations: [NxtAppComponent,\n    QuestionnaireComponent,\n    PickLocationComponent,\n    CustomInputComponent,\n    CustomTextAreaComponent,\n    CustomTableComponent,\n    CustomCalendarComponent,\n    CustomDatePickerComponent,\n    DropdownWithFlagComponent,\n    CustomDropdownComponent,\n    BookletComponent,\n    SearchBoxComponent,\n    QuestionbookComponent,\n    FileUploadComponent,\n    SummaryPageComponent,\n    FileViewComponent,\n    DependentTableComponent,\n    CustomLabelComponent,\n    TableAppendixComponent,\n    CustomDateComponent,\n    CustomTimeComponent,\n    CustomButtonComponent,\n    CustomModelComponent,\n    LoaderComponent,\n    I18nComponent,\n    I18nPipe,\n    CustomImageComponent,\n    CustomRadioComponent,\n    //AP 22JAN2025 Added the below components\n    ElementComponent,\n    PropertiesComponent,\n    MenuComponent,\n    FormComponent,\n    AppTemplatesComponent  \n  ],\n  imports: [\n    QuillModule.forRoot(),// RS 06JAN2025 Initializes the QuillModule with default settings for integrating the Quill editor.\n    CustomRichTextComponent,\n    CommonModule, FormsModule,\n    NxtDatatable,\n    NxtInfoCard,\n    NxtGroupInfo,\n    NxtImageCard,\n    NxtGroupCard,\n    // BrowserModule,\n    ReactiveFormsModule,\n    OwlDateTimeModule,\n    OwlNativeDateTimeModule,\n    ComponenthostDirective,\n    GetValuePipe,\n    //    VD 23JAN24 removed HttpClientModule\n    NgSelectModule,\n    GoogleMapsModule,\n    MatTooltipModule,\n    DragDropModule, //AP 22JAN25 Added the DragDropModule\n    ImageCropperComponent,\n    //AgmCoreModule.forRoot({\n    //  apiKey: GOOGLE_MAP_API_KEY,\n    //  libraries: ['geometry', 'places', 'visualization', 'drawing']\n  //  }),\n    NgxSpinnerModule,\n    I18nModule.forRoot(languages),\n    /*NgCircleProgressModule.forRoot({\n      \"backgroundPadding\": -10,\n      \"radius\": 60,\n      \"space\": -6,\n      \"innerStrokeColor\": \"#919191\",\n      \"outerStrokeColor\": \"#db9594\",\n      \"outerStrokeGradientStopColor\": \"#e0b1b0\",\n      \"innerStrokeWidth\": 2,\n      \"backgroundGradient\": true,\n      \"backgroundColor\": \"#dd2e13\",\n      \"backgroundGradientStopColor\": \"#dd2e13\",\n      \"backgroundStroke\": \"#d3cfcf\",\n      \"title\": [\n\n                \"%\"\n      ],\n      // titleFontSize: 12,\n      // \"subtitleFontSize\": 20,\n      \"animateTitle\": false,\n      \"animationDuration\": 1000,\n      \"showUnits\": false,\n      \"clockwise\":true\n\n      //\"backgroundStrokeWidth\": \"0\",\n\"backgroundGradient\": true,\n      //\"backgroundColor\": \"#dd2e13\",\n      \"backgroundGradientStopColor\": \"#dd2e13\",\n      \"backgroundStroke\": \"#000000\",\n      \"backgroundPadding\": -10,\n      \"radius\": 60,\n      \"unitsFontWeight\": \"600\",\n      \"unitsColor\": \"#f2f2f2\",\n      \"outerStrokeGradient\": true,\n      \"outerStrokeColor\": \"#e0b1b0\",\n      \"outerStrokeGradientStopColor\": \"#e0b1b0\",\n      \"outerStrokeLinecap\": \"inherit\",\n      \"innerStrokeColor\": \"#f6dfdf\",\n      \"title\": [\n\n        \"%\"\n],\n      \"titleColor\": \"#e7d9d9\",\n      \"titleFontSize\": \"31\",\n      \"titleFontWeight\": \"100\",\n      \"subtitleColor\": \"#f7f7f7\",\n      \"subtitleFontSize\": \"36\",\n      \"subtitleFontWeight\": \"900\",\n      \"animateTitle\": false,\n      \"animationDuration\": 1000,\n      \"showTitle\": true,\n      \"showUnits\": true,\n      \"clockwise\": false,\n      \"startFromZero\": true,\n      \"showZeroOuterStroke\": false,\n      \"lazy\": true})*/\n\n      NgCircleProgressModule.forRoot({\n        \"backgroundGradient\": true,\n        \"backgroundColor\": \"#e29d98\",\n        \"backgroundGradientStopColor\": \"#c5281c\",\n        \"backgroundStroke\": \"#ece4e4\",\n        \"backgroundStrokeWidth\": 0,\n        \"backgroundPadding\": -10,\n        \"radius\": 60,\n        \"space\": 4,\n        \"maxPercent\": 100,\n        \"unitsFontSize\": \"35\",\n        \"unitsColor\": \"#f0ebeb\",\n        \"outerStrokeGradient\": true,\n        \"outerStrokeWidth\": 10,\n        \"outerStrokeColor\": \"#f7c0bf\",\n        \"outerStrokeGradientStopColor\": \"#f9c9c8\",\n        \"innerStrokeWidth\": 0,\n        \"titleColor\": \"#f3eded\",\n        \"titleFontSize\": \"40\",\n        \"subtitleColor\": \"#444444\",\n        \"showSubtitle\": false})\n  ],\n  bootstrap: [ NxtAppComponent ],\n  schemas: [CUSTOM_ELEMENTS_SCHEMA],\n  exports: [NxtAppComponent,\n    QuestionnaireComponent,\n    BookletComponent,\n    SummaryPageComponent,\n    I18nPipe,\n    I18nComponent,\n    ElementComponent,\n    PropertiesComponent,\n    MenuComponent,\n    FormComponent,\n    NxtDatatable,\n    NxtInfoCard,\n    NxtGroupInfo,\n    NxtImageCard,\n    NxtGroupCard,\n    // CustomRichTextComponent\n  ],\n  providers: [\n    I18nService,\n    I18nPipe,\n    FormBuilderService//AP 22JAN2025 Added the FormBuilderService\n  ]\n  // providers: [\n  //   { provide: OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS, useValue: { useUtc: false } },\n  //   { provide: OWL_DATE_TIME_FORMATS, useValue: MY_CUSTOM_FORMATS },\n  // ]\n})\nexport class NxtAppModule { }\n","/*\n * Public API Surface of nxt-app\n */\n\nexport * from './lib/nxt-app.service';\nexport * from './lib/nxt-app.component';\nexport * from './lib/nxt-app.module';\nexport * from './lib/pages/questionnaire/questionnaire.component';\nexport * from './lib/pages/booklet/booklet.component';\nexport * from './lib/pages/questionbook/questionbook.component';\nexport * from './lib/pages/summary-page/summary-page.component';\nexport * from './lib/services/salesforce.service';\n// HA-11-01-2024 We need these below lines to work public\nexport * from './lib/i18n.component';\nexport * from './lib/i18n.pipe';\nexport * from './lib/pages/builder/element/element.component';\nexport * from './lib/pages/builder/menu/menu.component';\nexport * from './lib/pages/builder/properties/properties.component';\nexport * from './lib/pages/builder/form/form.component';\n// export * from './lib/style.css';\n// SKS20FEB25 nxt datatable\nexport * from './lib/components/datatable/datatable.component';\n// AP-07APR25 NxtGroupCard,NxtGroupInfo,NxtInfoCard,NxtImageCard\nexport * from './lib/components/cards/group-card/group-card.component';\nexport * from './lib/components/cards/group-info/group-info.component';\nexport * from './lib/components/cards/info-card/info-card.component';\nexport * from './lib/components/cards/image-card/image-card.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.I18nService","i2.ChangeService","i4","i2","i1.DataService","i3","i5.I18nPipe","i1.ChangeService","i2.I18nService","i3.DataService","i5","i2.DataService","i3.I18nService","i6","i1.SalesforceService","i3.ChangeService","i4.SharedService","i8","i10.I18nService","i11.CustomRichTextComponent","i12","i13.NxtDatatable","i15.PickLocationComponent","i16.CustomInputComponent","i17.CustomTextAreaComponent","i18.CustomDatePickerComponent","i19.DropdownWithFlagComponent","i20.CustomDropdownComponent","i21.CustomLabelComponent","i22.I18nPipe","i6.GetValuePipe","i1.SharedService","i4.I18nService","i6.I18nPipe","i4.CustomDropdownComponent","i5.FileUploadComponent","i20.FileUploadComponent","i21.DependentTableComponent","i22.CustomLabelComponent","i23.TableAppendixComponent","i24.CustomDateComponent","i25.CustomTimeComponent","i26.CustomButtonComponent","i27.CustomModelComponent","i28.CustomRadioComponent","i29.I18nPipe","i3.StorageService","i6.ChangeService","i7.I18nService","i9","i10","i11.QuestionbookComponent","i4.I18nPipe","i3.FileViewComponent","uuidv4","i1.TemplateService","i1.FormBuilderService","i4.NxtDatatable","i6.BookletComponent","i7.AppTemplatesComponent","i2.FormBuilderService","i3.TemplateService","i6.ImageCropperComponent","i7.SearchBoxComponent","i1.ElementComponent","i2.PropertiesComponent","enI18n","tamI18n","arI18n"],"mappings":"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"}