{"version":3,"file":"project-sunbird-sb-dashlet-v14.mjs","sources":["../../../projects/sb-dashlets/src/lib/types/Chart/IChartType.ts","../../../projects/sb-dashlets/src/lib/types/Chart/IMap.ts","../../../projects/sb-dashlets/src/lib/types/IBase.ts","../../../projects/sb-dashlets/src/lib/types/Table/type.ts","../../../projects/sb-dashlets/src/lib/tokens/constants.ts","../../../projects/sb-dashlets/src/lib/tokens/defaultConfig.ts","../../../projects/sb-dashlets/src/lib/tokens/services.ts","../../../projects/sb-dashlets/src/lib/components/base/base.component.ts","../../../projects/sb-dashlets/src/lib/components/chart-js/defaultConfiguration.ts","../../../projects/sb-dashlets/src/lib/components/filters/defaultConfiguration.ts","../../../projects/sb-dashlets/src/lib/components/filters/filters.component.ts","../../../projects/sb-dashlets/src/lib/components/filters/filters.component.html","../../../projects/sb-dashlets/src/lib/components/chart-js/chart-js.component.ts","../../../projects/sb-dashlets/src/lib/components/chart-js/chart-js.component.html","../../../projects/sb-dashlets/src/lib/directives/reportWrapper/report-wrapper.directive.ts","../../../projects/sb-dashlets/src/lib/directives/templateRefs/template-refs.directive.ts","../../../projects/sb-dashlets/src/lib/components/dashlet/type_to_component_mapping.ts","../../../projects/sb-dashlets/src/lib/components/dashlet/schema.ts","../../../projects/sb-dashlets/src/lib/components/dashlet/dashlet.component.ts","../../../projects/sb-dashlets/src/lib/components/dashlet/dashlet.component.html","../../../projects/sb-dashlets/src/lib/components/big-number/operations.ts","../../../projects/sb-dashlets/src/lib/components/big-number/big-number.component.ts","../../../projects/sb-dashlets/src/lib/components/big-number/big-number.component.html","../../../projects/sb-dashlets/src/lib/components/dt-table/defaultConfiguration.ts","../../../projects/sb-dashlets/src/lib/components/dt-table/dt-table.component.ts","../../../projects/sb-dashlets/src/lib/components/dt-table/dt-table.component.html","../../../projects/sb-dashlets/src/lib/components/map/defaultConfiguration.ts","../../../projects/sb-dashlets/src/lib/components/map/map.component.ts","../../../projects/sb-dashlets/src/lib/components/map/map.component.html","../../../projects/sb-dashlets/src/lib/services/data/data.service.ts","../../../projects/sb-dashlets/src/lib/dashlet.module.ts","../../../projects/sb-dashlets/src/public-api.ts","../../../projects/sb-dashlets/src/project-sunbird-sb-dashlet-v14.ts","../../../projects/sb-dashlets/src/lib/components/filters/schema.ts","../../../projects/sb-dashlets/src/lib/components/chart-js/schema.ts","../../../projects/sb-dashlets/src/lib/components/big-number/schema.ts","../../../projects/sb-dashlets/src/lib/components/dt-table/schema.ts","../../../projects/sb-dashlets/src/lib/components/map/schema.ts"],"sourcesContent":["export enum ChartType {\n  BAR = \"bar\",\n  LINE = \"line\",\n  PIE = \"pie\",\n  DOUGHNUT = \"doughnut\",\n  POLAR = \"polar\",\n  RADAR = \"radar\",\n  BUBBLE = \"bubble\",\n  SCATTER = \"scatter\",\n  AREA = \"area\",\n  VERTICAL_BAR = \"verticalBar\",\n  BIG_NUMBER = \"bigNumber\",\n  MAP = \"map\",\n  HORIZONTAL_Bar = \"horizontalBar\"\n}\n","export interface IGeoJSON {\n    type: string;\n    features: Feature[];\n}\n\nexport interface Feature {\n    type: FeatureType;\n    geometry: Geometry;\n    properties: Properties;\n}\n\nexport interface Geometry {\n    type: GeometryType;\n    coordinates: Array<Array<number[]>>;\n}\n\nexport enum GeometryType {\n    Polygon = 'Polygon',\n}\n\nexport interface Properties {\n    [key: string]: any;\n}\n\nexport enum FeatureType {\n    Feature = 'Feature',\n}\n\nexport interface ICustomMapObj {\n    drillDown: boolean;\n    name: string;\n    fitBounds: boolean;\n    district?: string;\n    st_nm?: string;\n    dt_code?: string | number;\n    st_code?: string | number;\n}\n\nexport interface IMapConfig {\n    state: string;\n    districts?: string[];\n    metrics?: string[];\n    folder?: string;\n    labelExpr?: string;\n    strict?: boolean;\n    country?: string;\n    states?: string[];\n    initialCoordinate?: [number, number];\n    latBounds?: [number, number];\n    lonBounds?: [number, number];\n    initialZoomLevel?: number | string;\n    controlTitle?: String;\n    geoJSONMapping: any;\n    tileLayer?: {\n        [key: string]: any;\n    };\n    rootStyle?: {\n        [key: string]: any;\n    }\n    [key: string]: any;\n}\n","import { EventEmitter } from \"@angular/core\";\n\nexport enum IReportType {\n  CHART = \"chart\",\n  TABLE = \"table\"\n}\n\nexport type InputParams = {\n  type: string;\n  config: object;\n  data: IData\n}\n\nexport type UpdateInputParams = {\n  type: string;\n  config: object;\n  data: object[]\n}\n\nexport enum ReportState {\n  PENDING = \"pending\",\n  DONE = \"done\"\n}\n\nexport type CustomEvent = {\n  type: string;\n  event: any\n}\nexport interface IBase {\n  reportType: IReportType;\n  readonly _defaultConfig: object;\n  height?: string;\n  width?: string;\n  id: string;\n  config: object;\n  data: object[];\n  state: EventEmitter<ReportState>;\n  events: EventEmitter<CustomEvent>;\n  initialize(config: InputParams): void;\n  reset(): void;\n  destroy(): void;\n  update(input: UpdateInputParams);\n  fetchData(config: IData);\n}\n\nexport type methodType = \"GET\" | \"POST\";\nexport interface IApiConfig {\n  body: object | null;\n  headers?: {\n    [header: string]: string | string[];\n  };\n  params?: {\n    [param: string]: string | string[];\n  };\n  responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n  reportProgress?: boolean;\n  response: {\n    path: string;\n  };\n  [key: string]: any\n}\nexport interface IDataSchema {\n  type: string,\n  enum?: string[],\n  default?: string,\n  format?: string;\n  items?: IDataSchema\n}\nexport interface IData {\n  values?: unknown[];\n  location?: {\n    options?: Partial<IApiConfig>;\n    url?: string;\n    method?: string;\n  },\n  dataSchema?: {\n    [key: string]: IDataSchema;\n  }\n}\n\nexport type StringObject = { [key: string]: string };\n","export enum TableType {\n    TABLE = \"table\"\n  }\n  ","import { InjectionToken } from \"@angular/core\";\n\nexport const DASHLET_CONSTANTS = new InjectionToken('CONSTANTS', {\n  factory() {\n    return constants;\n  }\n})\n\nexport const constants = {\n  INVALID_INPUT: \"invalid input\",\n  METHOD_NOT_IMPLEMENTED: \"Method not implemented\",\n  CHART_NOT_INITIALIZED: \"Chart is not initialized\"\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const DEFAULT_CONFIG = new InjectionToken<any>('DEFAULT_CONFIG');\n","import { InjectionToken } from \"@angular/core\";\nimport { IDataService } from '../types/index';\n\nexport const DATA_SERVICE = new InjectionToken<IDataService>('DATA_SERVICE');\n\n","import { EventEmitter, Inject, TemplateRef } from '@angular/core';\nimport { Observable, of,Subject } from 'rxjs';\nimport { InputParams, IBase, IData, ReportState, IReportType, UpdateInputParams, CustomEvent, IDataService } from '../../types/index';\nimport { tap } from 'rxjs/operators';\nimport { constants } from '../../tokens/constants';\nimport * as jsonexport from \"jsonexport/dist\"; const jsonExport = jsonexport;\nimport { pick } from 'lodash-es';\nimport { DATA_SERVICE } from '../../tokens/index';\n\nexport abstract class BaseComponent implements Partial<IBase> {\n\n  constructor(@Inject(DATA_SERVICE) protected dataService: IDataService) { }\n\n  id: string;\n  templateRefs: Record<string, TemplateRef<any>>;\n  $context;\n  data = [];\n  protected _isInitialized: boolean = false;\n\n  state = new EventEmitter<ReportState>();\n  events = new EventEmitter<CustomEvent>();\n  eventsSubject: Subject<void> = new Subject<void>();\n\n  abstract inputParameters;\n  abstract reportType: IReportType;\n  abstract config: object;\n  abstract _defaultConfig: object;\n  abstract exportOptions: string[];\n  abstract initialize(config: InputParams): Promise<any>\n  abstract builder(config, data): void;\n  abstract reset(): void;\n  abstract destroy(): void;\n  abstract update(config: UpdateInputParams);\n  abstract addData(data: object);\n  abstract exportAs(format: string);\n\n  fetchData(config: IData): Observable<any[]> {\n    const { values = null, location: { url = null, options = {}, method = 'GET' } = {} } = config || {};\n    if (values) return of(values);\n    if (!url) throw new Error('invalid input');\n    this.state.emit(ReportState.PENDING);\n    return this.dataService.fetchData({ method, url, options }).pipe(\n      tap(_ => this.state.emit(ReportState.DONE))\n    );\n  }\n\n  getConfigValue(key: string) {\n    return this.config && this.config[key];\n  }\n\n  protected checkIfInitialized(): never | void {\n    if (!this._isInitialized) {\n      throw Error(constants.CHART_NOT_INITIALIZED);\n    }\n  }\n\n  protected _downloadFile(url, filename) {\n    var link = document.createElement(\"a\");\n    link.setAttribute(\"href\", url);\n    link.setAttribute(\"download\", filename);\n    link.click();\n  }\n\n  getCsv(data, options) {\n    return new Promise((resolve, reject) => {\n      jsonExport(data, options, (error, csv) => {\n        if (!error && csv) {\n          resolve(csv);\n        } else {\n          reject(error);\n        }\n      })\n    })\n  }\n\n  async exportAsCsv(data?: object[], options?: Record<string, any>) {\n    const { columnsToPick = [], ...others } = options || {};\n    const JSON = this.sortAndTransformData(data || this.data, { columnsToPick });\n    try {\n      const csv: any = await this.getCsv(JSON, others);\n      var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n      var url = URL.createObjectURL(blob);\n      this._downloadFile(url, 'data.csv');\n    } catch (error) {\n      console.log(error);\n    }\n  }\n\n  sortAndTransformData(rows: object[], { columnsToPick = [] }: { columnsToPick: string[] }) {\n    if (!columnsToPick.length) return rows;\n    return rows.map(row => {\n      const defaultValue = columnsToPick.reduce((acc, val) => {\n        acc[val] = undefined;\n        return acc;\n      }, {});\n      return pick({ ...defaultValue, ...row }, columnsToPick);\n    });\n  }\n\n\n}\n","\nexport const CHART_DEFAULT_CONFIG =  {\n  labels: [],\n  datasets: [],\n  legend: true,\n  options: {},\n  colors: []\n};","export const FILTER_DEFAULT_CONFIG = {\n    config: {\n        controlType: 'multi-select',\n        searchable: true,\n        default: [],\n        placeholder: 'Select Option',\n        options: [],\n        dateFormat: 'DD-MM-YYYY'\n    },\n    dropdownSettings: {\n        singleSelection: false,\n        idField: 'item_id',\n        textField: 'item_text',\n        selectAllText: 'Select All',\n        unSelectAllText: 'UnSelect All',\n        itemsShowLimit: 3,\n        allowSearchFilter: true\n    }\n}","import { Component, Input, OnInit, Output, EventEmitter, OnDestroy, Inject, ViewChild, ElementRef } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { DEFAULT_CONFIG } from '../../tokens/index';\nimport * as _ from 'lodash-es'\nimport { debounceTime, distinctUntilChanged, takeUntil, map, tap, pairwise, startWith } from 'rxjs/operators';\nimport { Subject, zip,Observable } from 'rxjs';\nimport { IFilterConfig } from '../../types/index'\nimport { FILTER_DEFAULT_CONFIG } from './defaultConfiguration';\nimport dayjs from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\ndayjs.extend(customParseFormat)\n\nconst ranges: any = {\n  'Today': [dayjs(), dayjs()],\n  'Yesterday': [dayjs().subtract(1, 'day'), dayjs().subtract(1, 'day')],\n  'Last 7 Days': [dayjs().subtract(6, 'days'), dayjs()],\n  'Last 30 Days': [dayjs().subtract(29, 'days'), dayjs()],\n  'This Month': [dayjs().startOf('month'), dayjs().endOf('month')],\n  'Last Month': [dayjs().subtract(1, 'month').startOf('month'), dayjs().subtract(1, 'month').endOf('month')]\n};\n\nconst sortDates = (dates: string[], format = 'DD-MM-YYYY') => {\n  return dates.sort((pre, next) => {\n    const preDate = dayjs(pre, format), nextDate = dayjs(next, format);\n    if (preDate.isSame(nextDate)) return 0;\n    if (preDate.isBefore(nextDate)) return -1;\n    return 1;\n  });\n}\n\ninterface AdditionalConfig {\n  options?: string[];\n  minDate?: any;\n  maxData?: any;\n  dropdownSettings: object;\n  dateFormat: string;\n}\n\nexport type IFilterConfiguration = IFilterConfig & AdditionalConfig\n\n@Component({\n  selector: 'sb-dashlets-filters',\n  templateUrl: './filters.component.html',\n  styleUrls: ['./filters.component.scss'],\n  providers: [{\n    provide: DEFAULT_CONFIG,\n    useValue: FILTER_DEFAULT_CONFIG\n  }]\n})\nexport class FiltersComponent implements OnInit, OnDestroy {\n\n  @Input() config: IFilterConfig[] = [];\n  @Input() data;\n  @Output() filteredData = new EventEmitter();\n  @Input() resetFilters: Observable<void>;\n\n  private _data;\n\n  public filtersFormGroup: UntypedFormGroup;\n  public filters: IFilterConfiguration[];\n  public unsubscribe$ = new Subject<void>();\n  public ranges = ranges;\n  public locale = { applyLabel: 'Set Date', format: 'DD-MM-YYYY' };\n  public dropdownSettings: any;\n\n  @ViewChild('datePickerForFilters') datepicker: ElementRef;\n\n  constructor(private fb: UntypedFormBuilder, @Inject(DEFAULT_CONFIG) private defaultConfig) { }\n\n  ngOnInit() {\n    this._data = this.data;\n    this.init(this.config, this._data);\n    this.handleFilterValueChanges();\n\n     this.resetFilters.subscribe(() => {\n        this.filtersFormGroup.reset();\n    });\n  }\n\n  private _setDropdownSettings(config: object = {}) {\n    return { ...this.defaultConfig.dropdownSettings, ...config };\n  }\n\n  private _getFilterOptions(dataExpr: string, data: object[]) {\n    const getFilterValue = dataExpr => row => (row && row[dataExpr]) || '';\n    const inputDataArr = (data && Array.isArray(data) && data.map(getFilterValue(dataExpr))) || [];\n    return _.compact(_.sortBy(_.uniq(inputDataArr)));\n  }\n\n  init(config: IFilterConfig[], data: object[]) {\n    this.filters = [];\n    this.filtersFormGroup = this.fb.group({});\n    config.forEach(filter => {\n      const filterObj: IFilterConfiguration = { ...this.defaultConfig.config, ...filter };\n      const { reference, default: defaultValue, searchable, controlType, dropdownSettings = {}, dateFormat } = filterObj;\n      const options = this._getFilterOptions(reference, data);\n      if (filter.controlType === 'date' || /date/i.test(reference)) {\n        const sortedDateRange = sortDates([...options], dateFormat);\n        filterObj['minDate'] = dayjs(sortedDateRange[0], dateFormat);\n        filterObj['maxDate'] = dayjs(sortedDateRange[sortedDateRange.length - 1], dateFormat);\n      } else {\n        filterObj['dropdownSettings'] = this._setDropdownSettings({\n          singleSelection: controlType === 'single-select' ? true : false,\n          allowSearchFilter: searchable,\n          ...dropdownSettings\n        });\n      }\n      filterObj.options = options;\n      this.filtersFormGroup.addControl(reference, this.fb.control(defaultValue));\n      this.filters.push(filterObj);\n    });\n  }\n\n  private _omitEmptyFilters = filters => _.omitBy(filters, _.isEmpty);\n\n  private transformFilterValues = filters => _.mapValues(filters, values => Array.isArray(values) ? values : [values]);\n\n  private getSelectedFiltersObservable = () => {\n    return this.filtersFormGroup.valueChanges\n      .pipe(\n        takeUntil(this.unsubscribe$),\n        debounceTime(1000),\n        distinctUntilChanged(),\n        map(this._omitEmptyFilters.bind(this)),\n        map(this.transformFilterValues.bind(this)),\n        startWith({}),\n        pairwise()\n      );\n  }\n\n\n  handleFilterValueChanges() {\n    const selectedFilters$ = this.getSelectedFiltersObservable();\n\n    const filteredData$ = selectedFilters$.pipe(\n      tap(console.log),\n      map(([_, currentFilters]) => currentFilters),\n      map(this.filterDataBySelectedFilters(this._data))\n    )\n\n    zip(selectedFilters$, filteredData$)\n      .subscribe(([[previousFilters, currentFilters], filteredData]) => {\n        _.forEach(this.filters, filter => {\n          const { reference } = filter;\n          const options = this._getFilterOptions(reference, filteredData);\n          const referenceExistsInPreviousFilters = reference in (previousFilters as object);\n          const referenceExistsInCurrentFilters = reference in (currentFilters as object);\n          if (!referenceExistsInCurrentFilters || (referenceExistsInPreviousFilters && JSON.stringify(previousFilters[reference]) === JSON.stringify(currentFilters[reference]))) {\n            filter.options = options;\n            if (filter.controlType === 'date' || /date/i.test(reference)) {\n              const sortedDateRange = sortDates([...options], 'DD-MM-YYYY');\n              filter['minDate'] = dayjs(sortedDateRange[0], 'DD-MM-YYYY');\n              filter['maxDate'] = dayjs(sortedDateRange[sortedDateRange.length - 1], 'DD-MM-YYYY');\n            }\n          }\n        })\n        this.filteredData.emit(filteredData);\n      })\n  }\n\n  filterDataBySelectedFilters(JSON) {\n    return selectedFilters => _.filter(JSON, data => {\n      return _.every(selectedFilters, (values, key) => {\n        if (data[key]) {\n          return _.some(values, value => _.trim(_.toLower(value)) === _.trim(_.toLower(data[key])));\n        }\n        return false;\n      });\n    });\n  }\n\n  ngOnDestroy() {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n\n  updateDateRange({ startDate, endDate }, columnRef, dateFormat) {\n    const selectedStartDate = dayjs(startDate).subtract(1, 'day');\n    const selectedEndDate = dayjs(endDate).add(1, 'day');\n    const dateRange = [];\n    let currDate = dayjs(selectedStartDate).startOf('day');\n    const lastDate = dayjs(selectedEndDate).startOf('day');\n    while (currDate.diff(lastDate) < 0) {\n      dateRange.push(currDate.clone().format(dateFormat));\n      currDate = currDate.add(1, 'day')\n    }\n    this.filtersFormGroup.get(columnRef).setValue(dateRange);\n  }\n\n  reset() {\n    this.filtersFormGroup.reset();\n    if (this.datepicker) {\n      this.datepicker.nativeElement.value = '';\n    }\n  }\n}\n","\n<ng-container *ngIf=\"filters?.length && filtersFormGroup\">\n    <form [formGroup]=\"filtersFormGroup\">\n        <div class=\"sb-filter-g\">\n                <ng-container *ngFor=\"let filter of filters\">\n                    <ng-container\n                        *ngIf=\"filter?.controlType === 'multi-select' || filter?.controlType === 'single-select'\">\n                        <ng-multiselect-dropdown class=\"sb-filter-g__item\"\n                            [placeholder]=\"filter?.placeholder || filter?.displayName || filter?.label\"\n                            [settings]=\"filter?.dropdownSettings\" [data]=\"filter?.options\"\n                            [formControlName]=\"filter.reference\">\n                        </ng-multiselect-dropdown>\n                    </ng-container>\n                    <ng-container *ngIf=\"filter?.controlType === 'date'\">\n                        <div class=\"sb-filter-g__item\">\n                            <input type=\"text\"\n                                [placeholder]=\"filter?.placeholder || filter?.displayName || filter?.label\"\n                                ngxDaterangepickerMd [minDate]=\"filter?.minDate\" [maxDate]=\"filter?.maxDate\"\n                                [ranges]=\"ranges\" [alwaysShowCalendars]=\"true\" [locale]=\"locale\"\n                                [linkedCalendars]=\"true\" [showCustomRangeLabel]=\"true\"\n                                (change)=\"updateDateRange($event,filter.reference, filter?.dateFormat)\"\n                                #datePickerForFilters />\n                        </div>\n                    </ng-container>\n                </ng-container>\n        </div>\n    </form>\n</ng-container>","import { Component, Inject, OnDestroy, ViewChild } from '@angular/core';\nimport { BaseChartDirective, ThemeService } from 'ng2-charts';\nimport { InputParams, IReportType, IDataset, IChart, StringObject, ReportState, IDataService } from '../../types/index';\nimport { BaseComponent } from '../base/base.component';\nimport { IChartOptions, ChartType, UpdateInputParams } from '../../types/index';\nimport { get, groupBy, mapValues, sumBy, remove } from 'lodash-es';\nimport { DEFAULT_CONFIG, DASHLET_CONSTANTS, DATA_SERVICE } from '../../tokens/index';\nimport { CHART_DEFAULT_CONFIG } from './defaultConfiguration'\n\n/**\n * @dynamic\n */\n@Component({\n  selector: 'sb-chart-js',\n  templateUrl: './chart-js.component.html',\n  styleUrls: ['./chart-js.component.css'],\n  providers: [\n    ThemeService,\n    {\n      provide: DEFAULT_CONFIG,\n      useValue: CHART_DEFAULT_CONFIG\n    }\n  ]\n})\nexport class ChartJsComponent extends BaseComponent implements IChart, OnDestroy {\n\n  @ViewChild(BaseChartDirective) baseChartDirective: BaseChartDirective;\n  readonly reportType: IReportType = IReportType.CHART;\n\n  public _defaultConfig: Partial<IChartOptions>;\n  public config: Partial<IChartOptions>;\n  public type: ChartType;\n  public inputParameters: Partial<IChartOptions> = {};\n  public _labelsAndDatasetsClosure: any;\n  public exportOptions = ['png', 'csv', 'jpg'];\n  \n  constructor(@Inject(DATA_SERVICE) protected dataService: IDataService, @Inject(DEFAULT_CONFIG) defaultConfig: object, @Inject(DASHLET_CONSTANTS) private CONSTANTS: StringObject) {\n    super(dataService);\n    this._defaultConfig = defaultConfig;\n  }\n\n  /**\n   * @description initializes the component with the passed config and data\n   * @param {InputParams} { config, type, data }\n   * @return {*}  {Promise<any>}\n   * @memberof ChartJsComponent\n   */\n  async initialize({ config, type, data }: InputParams): Promise<any> {\n    if (!(config && type && data)) throw new SyntaxError(this.CONSTANTS.INVALID_INPUT);\n    this.config = config = { ...config, type };\n    const fetchedJSON = this.data = await this.fetchData(data).toPromise().catch(err => []);\n    this.builder(config, fetchedJSON);\n    this._isInitialized = true;\n    this.state.emit(ReportState.DONE);\n  }\n\n  /**\n   * @description It's a high order function responsible for getting labels and datasets, addition and removal of data.\n   * @private\n   * @param {string} labelExpr\n   * @param {IDataset[]} datasets\n   * @return {*}\n   * @memberof ChartJsComponent\n   */\n  private getLabelsAndDatasetsClosure(labelExpr: string, datasets: IDataset[]) {\n    return (data: object[]) => {\n      const getDataGroupedByLabelExpr = data => groupBy(data, val => {\n        const value = get(val, labelExpr);\n        return value && typeof value === 'string' ? value.trim() : '';\n      });\n      const getLabels = (data: object) => Object.keys(data);\n      const getDatasets = (data: object) => datasets.map(dataset => {\n        return {\n          ...dataset,\n          ...(dataset.dataExpr && {\n            data: Object.values(mapValues(data, rows => sumBy(rows, row => +(row[dataset.dataExpr] || 0))))\n          })\n        }\n      });\n      const findDataByLabelPredicate = (label: string) => (row: object) => row[labelExpr] === label;\n      return {\n        addData(newData: object[]) {\n          data = data.concat(newData);\n          return this.getData(data);\n        },\n        getData(overriddenData?: object[]) {\n          data = overriddenData || data;\n          const groupedData = getDataGroupedByLabelExpr(data);\n          return {\n            labels: getLabels(groupedData),\n            datasets: getDatasets(groupedData)\n          }\n        },\n        removeData(label: string) {\n          remove(data, findDataByLabelPredicate(label));\n          return this.getData(data);\n        }\n      }\n    }\n  }\n\n  /**\n   * @description prepared the chart data using the configuration passed\n   * @param {Partial<IChartOptions>} config\n   * @param {*} data\n   * @memberof ChartJsComponent\n   */\n  builder(config: Partial<IChartOptions>, data) {\n    let { labels = [], labelExpr = null, type = null, legend = true, colors = [], datasets = [], options = {}, ...others } = config;\n    options = { ...others, ...options };\n    if (labelExpr) {\n      this._labelsAndDatasetsClosure = this.getLabelsAndDatasetsClosure(labelExpr, datasets)(data);\n      const { getData } = this._labelsAndDatasetsClosure;\n      ({ labels, datasets } = getData());\n    } else {\n      datasets = datasets.map(dataset => {\n        dataset.data = data.map(rec => rec[dataset.dataExpr]);\n        return dataset;\n      });\n    }\n    \n    this.setChartData({ labels, datasets, options, type, legend, colors });\n  }\n\n  private setChartData(config: Partial<IChartOptions> = {}) {\n    this.inputParameters = { ...this._defaultConfig, ...this.inputParameters, ...config };\n    this.$context = { data: this.data, config: this.config, inputParameters: this.inputParameters, exportOptions: this.exportOptions };\n  }\n\n  reset(): void {\n    this.eventsSubject.next();\n  }\n\n  destroy(): void {\n    get(this.baseChartDirective, 'chart.destroy') && this.baseChartDirective.chart.destroy();\n  }\n\n  ngOnDestroy() {\n    this.destroy();\n  }\n\n  /**\n   * @description updates the type, data or Dashlet configuration\n   * @param {InputParams} input\n   * @memberof ChartJsComponent\n   */\n  update(input: Partial<UpdateInputParams>) {\n    this.checkIfInitialized();\n    if (!input) throw new Error(this.CONSTANTS.INVALID_INPUT);\n    const { type = null, config = {}, data = null } = input;\n    let labels, datasets;\n    if (data) {\n      const { labelExpr, datasets: datasetsConfig } = config as { labelExpr: string, datasets: IDataset[] };\n      if (labelExpr || datasets) {\n        this._labelsAndDatasetsClosure = this.getLabelsAndDatasetsClosure(labelExpr || this.getConfigValue(labelExpr), datasetsConfig || this.getConfigValue(datasets))(data);\n      }\n      ({ labels, datasets } = this._labelsAndDatasetsClosure.getData(data));\n    }\n    this.setChartData({ ...config, ...(type && { type }), ...(labels && datasets && { labels, datasets }) });\n    get(this.baseChartDirective, 'update') && this.baseChartDirective.update();\n  }\n\n  addData(data: object[] | object) {\n    this.checkIfInitialized();\n    if (!data) throw new Error(this.CONSTANTS.INVALID_INPUT);\n    if (this._labelsAndDatasetsClosure) {\n      data = Array.isArray(data) ? data : [data];\n      const { labels, datasets } = this._labelsAndDatasetsClosure.addData(data);\n      this.setChartData({ labels, datasets });\n    }\n  }\n\n  refreshChart() {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  /**\n   * @description Removes data associated with a label\n   * @param {string} label\n   * @memberof ChartJsComponent\n   */\n  removeData(label: string) {\n    this.checkIfInitialized();\n    const { labels, datasets } = this._labelsAndDatasetsClosure.removeData(label);\n    this.setChartData({ labels, datasets });\n  }\n\n  getTelemetry() {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  getCurrentSelection() {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  getDatasetAtIndex(index: number) {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  onChartClicked(event) {\n    this.events.emit({\n      type: 'CLICK',\n      event\n    })\n  }\n\n  onChartHovered(event) {\n    this.events.emit({\n      type: 'HOVER',\n      event\n    })\n  }\n\n  exportAsImage(format = 'jpg') {\n    const dataUrl = (document.getElementById(this.id) as any).toDataURL(`image/${format}`, 1);\n    const fileName = `image.${format}`;\n    this._downloadFile(dataUrl, fileName);\n  }\n\n  exportAs(format: string) {\n    if (!this.exportOptions.includes(format)) {\n      throw new Error('given type not supported');\n    }\n    switch (format) {\n      case 'csv': {\n        this.exportAsCsv();\n        break;\n      }\n      default: {\n        this.exportAsImage(format);\n        break;\n      }\n    }\n  }\n\n}\n","<ng-template #defaultFilterTemplate let-context>\n  <sb-dashlets-filters [data]=\"context?.data\" [config]=\"context?.config?.filters\"\n    (filteredData)=\"update({data: $event})\" [resetFilters]=\"eventsSubject.asObservable()\">\n  </sb-dashlets-filters>\n</ng-template>\n\n<ng-container *ngIf=\"$context?.config?.filters\" [ngTemplateOutlet]=\"templateRefs?.filter || defaultFilterTemplate\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n<ng-container *ngIf=\"templateRefs?.header && $context\" [ngTemplateOutlet]=\"templateRefs?.header\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n<div *ngIf=\"$context?.inputParameters as data\">\n  <canvas [id]=\"id\" baseChart [width]=\"data.options.width ? data.options.width : '400'\" [height]=\"data.options.height ? data.options.height : '400'\" [datasets]=\"data?.datasets\" [labels]=\"data?.labels\"\n    [options]=\"data?.options\" [colors]=\"data?.colors\" [legend]=\"data?.legend\" [chartType]=\"data?.type\"\n    (chartClick)=\"onChartClicked($event)\" (chartHover)=\"onChartHovered($event)\"></canvas>\n</div>\n\n<ng-container *ngIf=\"templateRefs?.footer && $context\" [ngTemplateOutlet]=\"templateRefs?.footer\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>","import { Directive, ViewContainerRef } from '@angular/core';\n\n@Directive({\n  selector: '[sbReportWrapper]'\n})\nexport class ReportWrapperDirective {\n\n  constructor(public viewContainerRef: ViewContainerRef) { }\n\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[sbTemplateRef]'\n})\nexport class TemplateRefsDirective {\n\n\n  @Input('sbTemplateRef') slot: string;\n  \n  constructor(public templateRef: TemplateRef<any>) { }\n\n}\n","import { ChartType, TableType } from '../../types/index';\n\nexport const TYPE_TO_COMPONENT_MAPPING = {\n  [ChartType.LINE]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.BAR]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.PIE]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.AREA]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.BUBBLE]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.DOUGHNUT]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.POLAR]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.SCATTER]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.DOUGHNUT]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n  [ChartType.BIG_NUMBER]: {\n    componentPath: import('../big-number/big-number.component').then(module => module.BigNumberComponent),\n    schemaPath: import(\"../big-number/schema\").then(module => module.schema)\n  },\n  [TableType.TABLE]: {\n    componentPath: import('../dt-table/dt-table.component').then(module => module.DtTableComponent),\n    schemaPath: import(\"../dt-table/schema\").then(module => module.schema)\n  },\n  [ChartType.MAP]: {\n    componentPath: import('../map/map.component').then(module => module.MapComponent),\n    schemaPath: import(\"../map/schema\").then(module => module.schema)\n  },\n  [ChartType.HORIZONTAL_Bar]: {\n    componentPath: import('../chart-js/chart-js.component').then(module => module.ChartJsComponent),\n    schemaPath: import(\"../chart-js/schema\").then(module => module.schema)\n  },\n};","import Joi from 'joi';\nimport { TYPE_TO_COMPONENT_MAPPING } from './type_to_component_mapping'\nconst chartTypes = Object.keys(TYPE_TO_COMPONENT_MAPPING)\n\nconst getSchema = (config: Joi.ObjectSchema<any>) => Joi.object({\n    type: Joi.string().required().valid(...chartTypes),\n    config: config.required(),\n    data: Joi.object({\n        values: Joi.array(),\n        location: Joi.object({\n            url: Joi.string().required(),\n            method: Joi.string().required(),\n            options: Joi.object({\n                body: Joi.object().allow(...[null]).optional(),\n                headers: Joi.object().pattern(Joi.string(), Joi.alternatives(...[Joi.string(), Joi.array().items(...[Joi.string()])])).optional(),\n                params: Joi.object().pattern(Joi.string(), Joi.alternatives(...[Joi.string(), Joi.array().items(...[Joi.string()])])).optional(),\n                responseType: Joi.string().valid(...['arraybuffer', 'blob', 'json', 'text']),\n                reportProgress: Joi.boolean().optional(),\n                response: Joi.object({\n                    path: Joi.string()\n                }).optional()\n            }).optional().options({ allowUnknown: true })\n        }),\n        dataSchema: Joi.object().optional()\n    }).required().xor(\"values\", \"location\")\n})\n\nexport const defaultObjectSchemaAllowingAllKeys = Joi.object().options({ allowUnknown: true });\n\nexport const validateInputAgainstSchema = (typeBasedConfigSchema: Joi.ObjectSchema<any>) => (inputObject: object) => getSchema(typeBasedConfigSchema).validate(inputObject)","import { Component, ComponentFactoryResolver, ContentChildren, EventEmitter, Input, OnChanges, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { ReportWrapperDirective, TemplateRefsDirective } from '../../directives/index';\nimport { CustomEvent, IBase, ReportState } from '../../types/index';\nimport { TYPE_TO_COMPONENT_MAPPING } from './type_to_component_mapping';\nimport { v4 as uuidv4 } from 'uuid';\nimport { defaultObjectSchemaAllowingAllKeys, validateInputAgainstSchema } from './schema'\n\ntype componentInstanceType = Pick<IBase, \"initialize\" | \"events\" | \"state\" | \"id\">;\n\nconst transformTemplates = (result: object, current: { slot: string, templateRef: TemplateRef<any> }) => {\n  result[current.slot] = current.templateRef;\n  return result;\n}\n@Component({\n  selector: 'sb-dashlet',\n  templateUrl: './dashlet.component.html',\n  styleUrls: ['./dashlet.component.css']\n})\nexport class DashletComponent implements OnInit, OnChanges {\n\n  @Input() type: string;\n  @Input() config: object;\n  @Input() data: object;\n\n  @Output() events = new EventEmitter();\n  \n  @ViewChild(ReportWrapperDirective, { static: true }) reportWrapper: ReportWrapperDirective;\n  @ContentChildren(TemplateRefsDirective) templateRefs: QueryList<TemplateRefsDirective>;\n\n  private _componentInstance;\n  private readonly _typeToComponentMapping = Object.freeze(TYPE_TO_COMPONENT_MAPPING);\n  public id: string;\n\n\n  get instance() {\n    return this._componentInstance;\n  }\n  set instance(componentInstance) {\n    this._componentInstance = componentInstance;\n  }\n\n  constructor(private componentFactoryResolver: ComponentFactoryResolver) { }\n\n  ngOnInit(): void {\n    this.id = uuidv4();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.type && this.config && this.data) {\n      this.loadComponent(this.type).catch(err => {\n        console.error(err);\n        throw err;\n      });\n    }\n\n    console.error('Syntax Error. Please check configuration');\n  }\n\n  async loadComponent(type: string) {\n    const componentResolver = this._typeToComponentMapping && this._typeToComponentMapping[type];\n    if (!componentResolver) { throw new Error('Given Type not supported'); }\n    const { componentPath, schemaPath = Promise.resolve(defaultObjectSchemaAllowingAllKeys) } = componentResolver;\n    const schema = await schemaPath;\n    const input = { data: this.data, config: this.config, type: this.type }\n    const { error } = validateInputAgainstSchema(schema)(input)\n    if (error) {\n      throw new SyntaxError(error.message)\n    }\n    const component = await componentPath;\n    this.reportWrapper.viewContainerRef.clear();\n    const componentFactory = this.componentFactoryResolver.resolveComponentFactory<componentInstanceType>(component);\n    const componentRef = this.reportWrapper.viewContainerRef.createComponent(componentFactory);\n    const instance = this.instance = componentRef.instance;\n    if (this.templateRefs.length) {\n      instance['templateRefs'] = this.templateRefs.toArray().reduce(transformTemplates, {});\n    }\n    instance.id = this.id;\n    instance.initialize({ config: this.config, type: this.type, data: this.data });\n    instance.state.subscribe(this._stateEventsHandler.bind(this));\n    instance.events.subscribe(this._eventsHandler.bind(this));\n  }\n\n  private _stateEventsHandler(event: ReportState) {\n    this.events.emit({ type: 'STATE', event });\n  }\n\n  private _eventsHandler(event: CustomEvent) {\n    this.events.emit(event);\n  }\n  \n  public filter(filteredData) {\n    this.instance.update({ data: filteredData });\n  }\n  public reset(){\n    this.instance.reset();\n  }\n}\n","<div>\n    <ng-template sbReportWrapper></ng-template>\n</div>","import { sumBy, toNumber, minBy, maxBy } from 'lodash-es'\n\nconst iterateeFn = key => row => toNumber(row[key]);\n\nconst SUM = data => key => sumBy(data, iterateeFn(key));\n\nconst MIN = data => key => minBy(data, iterateeFn(key))[key];\n\nconst MAX = data => key => maxBy(data, iterateeFn(key))[key];\n\nconst AVG = data => key => {\n  const length = data.length || 0;\n  if (length === 0) return 0;\n  const totalSum = SUM(data)(key);\n  return (totalSum / length).toFixed(2);\n}\n\nconst $operations = new Map([\n  ['SUM', SUM],\n  ['MIN', MIN],\n  ['MAX', MAX],\n  ['AVG', AVG]\n]);\n\nexport const runAggregator = (aggregateFn: string, data: object[], key: string) => {\n  const aggregateFnUpper = aggregateFn.toUpperCase();\n  if ($operations.has(aggregateFnUpper)) {\n    return $operations.get(aggregateFnUpper)(data)(key);\n  }\n  throw new Error('Specified Aggregator function does not exists');\n}\n","import { ChangeDetectorRef, Component, Inject} from '@angular/core';\nimport { IReportType, InputParams, IBigNumberConfig, IBigNumber, ChartType, UpdateInputParams, StringObject, ReportState, IDataService } from '../../types/index';\nimport { BaseComponent } from '../base/base.component';\nimport { DEFAULT_CONFIG as DEFAULT_CONFIG_TOKEN, DASHLET_CONSTANTS, DATA_SERVICE } from '../../tokens/index';\nimport { runAggregator } from './operations';\n@Component({\n  selector: 'sb-big-number',\n  templateUrl: './big-number.component.html',\n  styleUrls: ['./big-number.component.css'],\n  providers: [\n    {\n      provide: DEFAULT_CONFIG_TOKEN,\n      useValue: {\n        header: '',\n        footer: '',\n        operation: 'SUM'\n      }\n    }\n  ]\n})\nexport class BigNumberComponent extends BaseComponent implements IBigNumber {\n\n  public config: any;\n  public reportType: IReportType = IReportType.CHART;\n  public type: ChartType = ChartType.BIG_NUMBER;\n  public _defaultConfig: IBigNumberConfig;\n  public inputParameters: IBigNumberConfig = {};\n  public exportOptions = ['csv'];\n\n  private _bigNumberClosure: any;\n\n  constructor(@Inject(DATA_SERVICE) protected dataService: IDataService, @Inject(DEFAULT_CONFIG_TOKEN) defaultConfig: IBigNumberConfig, private cdr: ChangeDetectorRef, @Inject(DASHLET_CONSTANTS) private CONSTANTS: StringObject) {\n    super(dataService);\n    this._defaultConfig = defaultConfig;\n  }\n\n  async initialize({ config, data, type = \"bigNumber\" }: InputParams): Promise<any> {\n    if (!(config && data)) throw new SyntaxError(this.CONSTANTS.INVALID_INPUT);\n    this.config = config = { ...config, type };\n    const fetchedJSON = this.data = await this.fetchData(data).toPromise().catch(err => []);\n    this.builder(config as IBigNumberConfig, fetchedJSON);\n    this._isInitialized = true;\n    this.state.emit(ReportState.DONE);\n  }\n\n  builder(config: IBigNumberConfig, JSONData) {\n    const { header = this._defaultConfig.header, footer = this._defaultConfig.footer, dataExpr, operation = this._defaultConfig.operation } = config;\n    if (!dataExpr || !JSONData) {\n      throw Error(this.CONSTANTS.INVALID_INPUT);\n    }\n    this._bigNumberClosure = this.bigNumberDataClosure(dataExpr)(operation)(JSONData);\n    const bigNumberObj = { header, footer, data: this._bigNumberClosure.getData() }\n    this.setBigNumberData(bigNumberObj);\n  }\n\n  private setBigNumberData(config: object = {}) {\n    this.inputParameters = { ...this._defaultConfig, ...this.inputParameters, ...config };\n    this.$context = { data: this.data, config: this.config, inputParameters: this.inputParameters, exportOptions: this.exportOptions }\n    this.cdr.detectChanges();\n  }\n\n  private bigNumberDataClosure = (dataExpr: string) => $aggregateFn => (data: object[]) => {\n    return {\n      getData(overriddenData?: object[]) {\n        data = overriddenData || data;\n        return runAggregator($aggregateFn, data, dataExpr);\n      },\n      addData(newData: object[]) {\n        data = data.concat(newData);\n        return this.getData();\n      }\n    }\n  }\n\n  reset(): void {\n    this.eventsSubject.next();\n  }\n\n  destroy(): void {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  update(input: Partial<UpdateInputParams>) {\n    this.checkIfInitialized();\n    if (!input) throw new Error(this.CONSTANTS.INVALID_INPUT);\n    const { config = {}, data = null } = input;\n    const { header, footer, dataExpr, operation = 'SUM' } = config as IBigNumberConfig;\n    let bigNumber;\n    if (data) {\n      this._bigNumberClosure = (dataExpr && this.bigNumberDataClosure(dataExpr)(operation)(data)) || this._bigNumberClosure;\n      bigNumber = this._bigNumberClosure.getData(data);\n    }\n    this.setBigNumberData({\n      ...(header && { header }),\n      ...(footer && { footer }),\n      ...(bigNumber && {\n        data: bigNumber\n      })\n    })\n  }\n\n  addData(data: object | object[]) {\n    if (!data) throw new Error(this.CONSTANTS.INVALID_INPUT);\n    data = Array.isArray(data) ? data : [data];\n    const bigNumber = this._bigNumberClosure.addData(data);\n    this.setBigNumberData({\n      data: bigNumber\n    });\n  }\n\n  refreshChart() {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  getTelemetry() {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  exportAs(format: string) {\n    if (!this.exportOptions.includes(format)) {\n      throw new Error('given type not supported');\n    }\n\n    this.exportAsCsv();\n  }\n  \n}\n","<ng-template #defaultTemplate let-config>\n  <div class=\"ui cards\">\n    <div class=\"card\">\n      <div class=\"content\">\n        <div class=\"header\">{{config?.inputParameters?.header}}</div>\n        <div class=\"meta\">{{config?.inputParameters?.footer}}</div>\n        <div class=\"description\">\n          {{config?.inputParameters?.data}}\n        </div>\n      </div>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #defaultFilterTemplate let-context>\n  <sb-dashlets-filters [data]=\"context?.data\" [config]=\"context?.config?.filters\"\n    (filteredData)=\"update({data: $event})\" [resetFilters]=\"eventsSubject.asObservable()\">\n  </sb-dashlets-filters>\n</ng-template>\n\n<ng-container *ngIf=\"$context?.config?.filters\" [ngTemplateOutlet]=\"templateRefs?.filter || defaultFilterTemplate\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n\n<ng-container *ngIf=\"templateRefs?.header && $context\" [ngTemplateOutlet]=\"templateRefs?.header\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n<ng-container *ngIf=\"$context\" [ngTemplateOutlet]=\"templateRefs?.body || defaultTemplate\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n<ng-container *ngIf=\"templateRefs?.footer && $context\" [ngTemplateOutlet]=\"templateRefs?.footer\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>","\nexport const TABLE_DEFAULT_CONFIG = {\n  tableLevelConfig: {\n    autoWidth: true,\n    paging: false,\n    bFilter: false,\n    bInfo: false,\n    info: false,\n    searchable: false,\n    bLengthChange: false\n  },\n  columnConfig: {\n    searchable: true,\n    orderable: true,\n    visible: true,\n    autoWidth: true\n  }\n};","import { Component, ElementRef, Inject, ViewChild } from '@angular/core';\nimport { DataTableDirective } from 'angular-datatables';\nimport { DASHLET_CONSTANTS, DATA_SERVICE, DEFAULT_CONFIG } from '../../tokens/index';\nimport { IReportType, InputParams, UpdateInputParams, StringObject, ReportState, IDataService } from '../../types/index';\nimport { BaseComponent } from '../base/base.component';\nimport { TABLE_DEFAULT_CONFIG } from './defaultConfiguration';\nimport * as jsonexport from \"jsonexport/dist\"; const jsonExport = jsonexport;\nimport { sortBy, map, get, omitBy } from 'lodash-es';\n\ndeclare var $;\n\n@Component({\n  selector: 'sb-dt-table',\n  templateUrl: './dt-table.component.html',\n  styleUrls: ['./dt-table.component.css'],\n  providers: [\n    {\n      provide: DEFAULT_CONFIG,\n      useValue: TABLE_DEFAULT_CONFIG\n    }\n  ]\n})\nexport class DtTableComponent extends BaseComponent {\n\n  private _dtClosure: any;\n\n    \n  public reportType: IReportType = IReportType.TABLE;\n  public config: object;\n  public _defaultConfig: object;\n  public inputParameters = {};\n  public exportOptions = ['csv'];\n\n  @ViewChild(DataTableDirective) set dataTableElement(element: ElementRef | null) {\n    if (!element) return;\n    this._dtClosure = this._tableOpsClosure(element && element['dtInstance']);\n  }\n\n  constructor(@Inject(DATA_SERVICE) protected dataService: IDataService, @Inject(DEFAULT_CONFIG) defaultConfig, @Inject(DASHLET_CONSTANTS) private CONSTANTS: StringObject) {\n    super(dataService);\n    this._defaultConfig = defaultConfig;\n  }\n\n  async initialize({ config, type, data }: InputParams): Promise<any> {\n    if (!(config && type && data)) throw new SyntaxError(this.CONSTANTS.INVALID_INPUT);\n    this.config = config = { ...config, type };\n    const fetchedJSON = this.data = await this.fetchData(data).toPromise().catch(err => []);\n    this.builder(config, fetchedJSON);\n    this._isInitialized = true;\n    this.state.emit(ReportState.DONE);\n  }\n\n  private rowClickHandler = (row: Node, data: any[] | Object, index: number) => {\n    const self = this;\n    $.default('td', row).off('click');\n    $.default('td', row).on('click', () => {\n      this.events.emit({\n        type: 'CLICK',\n        event: data\n      });\n    });\n    return row;\n  }\n\n  private _addDefaultToColumn = column => {\n    return { ...this._defaultConfig['columnConfig'], ...column };\n  }\n\n  builder(config, data) {\n    const { columnConfig, ...others } = config;\n    const columns = columnConfig.map(this._addDefaultToColumn);\n    const columnsSortedByIndex = sortBy(columns, ['index']);\n    this._setTableOptions({\n      ...others,\n      data,\n      columns: columnsSortedByIndex,\n      rowCallback: this.rowClickHandler.bind(this)\n    });\n  }\n\n  private _setTableOptions(config: object = {}) {\n    this.inputParameters = {\n      ...this._defaultConfig['tableLevelConfig'],\n      ...this.inputParameters,\n      ...config\n    }\n    this.$context = { data: this.data, config: this.config, inputParameters: this.inputParameters, exportOptions: this.exportOptions,reset:false };\n  }\n\n  getRowsCount(): Promise<number> {\n    return this._dtClosure && this._dtClosure.rowsCount();\n  }\n\n  // resets to the original state.\n  reset(): void {\n      this.eventsSubject.next();\n      this._dtClosure.updateData(this.data);\n  }\n\n  destroy(): void {\n    const { destroy } = this._dtClosure;\n    if (destroy && typeof destroy === 'function') {\n      try {\n        destroy.call(this._dtClosure);\n      } catch (err) {\n        console.error('component not destroyed', err);\n      }\n    }\n  }\n\n  update(input: Partial<UpdateInputParams>) {\n    this.checkIfInitialized();\n    if (!input) throw new Error(this.CONSTANTS.INVALID_INPUT);\n    const { config = {}, data = null } = input;\n    const { columnConfig: columns, ...others } = config as any;\n    if (data && this._dtClosure) {\n      this._dtClosure.updateData(data);\n    }\n    this._setTableOptions({\n      ...others,\n      ...(data && { data }),\n      ...(columns && { columns })\n    });\n  };\n\n  addRows(data: object | object[]): void {\n    this.addData(data);\n  }\n\n  getRowAtIndex(index): Promise<any> {\n    const { getRowAtIndex } = this._dtClosure;\n    if (getRowAtIndex) {\n      return getRowAtIndex.bind(this._dtClosure, index);\n    }\n  }\n\n  async removeRow(index: number) {\n    const data = await this._dtClosure.getData();\n    data.splice(index, 1);\n    await this._dtClosure.updateData(data);\n  }\n\n  addData(data: object | object[]): void {\n    const { addData } = this._dtClosure;\n    if (addData && typeof addData === 'function') {\n      try {\n        addData.call(this._dtClosure, data);\n      } catch (error) {\n        console.error('addition of data failed', error);\n      }\n    }\n  }\n\n  private _tableOpsClosure(tableInstance) {\n    return {\n      get instance() {\n        return tableInstance;\n      },\n      async addData(data: object | object[]) {\n        const instance = await this.instance;\n        instance.row.add(data);\n        instance.draw();\n      },\n      async draw() {\n        const instance = await this.instance;\n        instance.draw();\n        return instance;\n      },\n      async destroy() {\n        const instance = await this.instance;\n        instance.destroy();\n        return instance;\n      },\n      async updateData(data) {\n        const instance = await this.instance;\n        instance.clear();\n        instance.rows.add(data);\n        instance.draw();\n      },\n      async rowsCount() {\n        const instance = await this.instance;\n        return instance.rows().count();\n      },\n      async getData() {\n        const instance = await this.instance;\n        return instance.rows().data();\n      },\n      async getRowAtIndex(index: number) {\n        const data = await this.getData();\n        return data[index];\n      }\n    }\n  }\n\n  private _getColumnsForStrictMode() {\n    const columnsConfig = get(this.config, 'columnConfig');\n    const columnsSortedByIndex = sortBy(columnsConfig, 'index');\n    const omitHiddenColumns = omitBy(columnsSortedByIndex, col => get(col, 'visible') === false);\n    return omitHiddenColumns;\n  }\n\n  // Returns the csv string for the mobile platform\n  async exportCsv(options = {}) {\n    let JSON = await this._dtClosure.getData();\n    if (options && options['strict']) {\n      const columnsConfig = this._getColumnsForStrictMode();\n      const columnsToPick = map(columnsConfig, 'data');\n      const headersMapping = map(columnsConfig, 'title');\n      options['rename'] = headersMapping;\n      JSON = this.sortAndTransformData(JSON || this.data, { columnsToPick });\n    }\n    return this.getCsv((JSON && JSON.toArray()) || this.data, options);\n  }\n\n  async exportAs(format: string, options = {}) {\n    if (!this.exportOptions.includes(format)) {\n      throw new Error('given type not supported');\n    }\n    const data = await this._dtClosure.getData();\n    switch (format) {\n      case 'csv': {\n        if (options && options['strict']) {\n          const columnsConfig = this._getColumnsForStrictMode()\n          const headersMapping = map(columnsConfig, 'title');\n          const columnsToPick = map(columnsConfig, 'data');\n          options['rename'] = headersMapping;\n          options['columnsToPick'] = columnsToPick;\n        }\n        this.exportAsCsv(data && data.toArray(), options);\n        break;\n      }\n    }\n  }\n}\n","<ng-template #defaultFilterTemplate let-context>\n  <sb-dashlets-filters [data]=\"context?.data\" [config]=\"context?.config?.filters\"\n    (filteredData)=\"update({data: $event})\"  [resetFilters]=\"eventsSubject.asObservable()\">\n  </sb-dashlets-filters>\n</ng-template>\n\n<ng-container *ngIf=\"$context?.config?.filters\" [ngTemplateOutlet]=\"templateRefs?.filter || defaultFilterTemplate\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n<ng-container *ngIf=\"templateRefs?.header && $context\" [ngTemplateOutlet]=\"templateRefs?.header\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n<ng-container *ngIf=\"$context?.inputParameters\">\n  <table datatable [dtOptions]=\"$context?.inputParameters\" class=\"row-border hover\"></table>\n</ng-container>\n\n<ng-container *ngIf=\"templateRefs?.footer && $context\" [ngTemplateOutlet]=\"templateRefs?.footer\"\n  [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>","export const __defaultConfig = {\n    initialCoordinate: [20, 78],\n    latBounds: [6.4626999, 68.1097],\n    lonBounds: [35.513327, 97.39535869999999],\n    initialZoomLevel: 5,\n    controlTitle: 'India Heat Map',\n    tileLayer: {\n        urlTemplate: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',\n        options: {\n            attributions: '&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'\n        }\n    },\n    rootStyle: {\n        fillColor: '#007cbe',\n        weight: 2,\n        opacity: 1,\n        color: 'white',\n        dashArray: '3',\n        fillOpacity: 0.7,\n        cursor: 'no-drop'\n    },\n    country: null,\n    states: [],\n    state: null,\n    districts: [],\n    metrics: [],\n    strict: false,\n    folder: 'geoJSONFiles',\n    labelExpr: 'District'\n};","import { AfterViewInit, Component, ElementRef, Inject, ViewChild } from '@angular/core';\nimport { IReportType, InputParams, Properties, IGeoJSON, ICustomMapObj, ChartType, UpdateInputParams, StringObject, ReportState, IMapConfig, IDataService } from '../../types/index';\nimport { BaseComponent } from '../base/base.component';\nimport { DEFAULT_CONFIG as DEFAULT_CONFIG_TOKEN, DASHLET_CONSTANTS, DATA_SERVICE } from '../../tokens/index';\nimport { __defaultConfig } from './defaultConfiguration';\nimport { cloneDeep, toLower, find, groupBy, reduce, omit } from 'lodash-es';\nimport * as geoJSONMapping from './geoJSONDataMapping.json'\nimport { catchError, skipWhile, tap, map, switchMap } from 'rxjs/operators';\nimport { BehaviorSubject, Observable, of, throwError } from 'rxjs';\nimport * as L from \"leaflet\";\n\n/**\n * @dynamic\n */\n@Component({\n  selector: 'sb-map',\n  templateUrl: './map.component.html',\n  styleUrls: ['./map.component.scss'],\n  providers: [\n    {\n      provide: DEFAULT_CONFIG_TOKEN,\n      useValue: __defaultConfig\n    }\n  ]\n})\nexport class MapComponent extends BaseComponent {\n\n  public config: any;\n  public reportType: IReportType = IReportType.CHART;\n  public type: ChartType = ChartType.MAP;\n  public _defaultConfig: object;\n  public inputParameters: object = {};\n  public exportOptions = ['csv'];\n\n  private mappingConfig;\n  private getGeoJSON = new BehaviorSubject(undefined);\n  private mapClosure;\n\n  @ViewChild('map') set mapContainer(element: ElementRef | null) {\n    if (!element) return;\n    if (this.inputParameters) {\n      this.mapClosure = this._mapClosure(this.inputParameters);\n      this.getGeoJSON.next({ ...this.inputParameters, reportData: this.data });\n    }\n  }\n\n  constructor(@Inject(DATA_SERVICE) protected dataService: IDataService, @Inject(DEFAULT_CONFIG_TOKEN) defaultConfig: object, @Inject(DASHLET_CONSTANTS) private CONSTANTS: StringObject) {\n    super(dataService);\n    this.mappingConfig = (geoJSONMapping as any).default;\n    this._defaultConfig = defaultConfig;\n  }\n\n  async initialize({ config, data, type = ChartType.MAP }: InputParams): Promise<any> {\n    if (!(config && data)) throw new SyntaxError(this.CONSTANTS.INVALID_INPUT);\n    this.config = config = { ...config, type };\n    const fetchedJSON = this.data = await this.fetchData(data).toPromise().catch(err => []);\n    this.builder(config, fetchedJSON);\n    this._isInitialized = true;\n    this.state.emit(ReportState.DONE);\n  }\n\n  private _setMapOptions(config: Partial<IMapConfig> = {}) {\n    this.inputParameters = { ...this._defaultConfig, ...this.inputParameters, ...this.config, ...config };\n    this.$context = { data: this.data, config: this.config, inputParameters: this.inputParameters, exportOptions: this.exportOptions };\n  }\n\n  private _mapClosure(config: Partial<IMapConfig> = {}) {\n    const { initialCoordinate, initialZoomLevel, latBounds, lonBounds, mapId = this.id } = config;\n\n    const map = L && L.map(mapId).setView(initialCoordinate, initialZoomLevel);\n\n    const geoJSONLayer = map && (L && L.geoJSON(null, {\n      style: this.setStyle.bind(this),\n      onEachFeature: this.onEachFeature.bind(this)\n    }));\n\n    const maxBounds = L && L.latLngBounds([latBounds, lonBounds]);\n    map.setMaxBounds(maxBounds);\n\n    const { urlTemplate, options } = config.tileLayer;\n    const controlObject = this.getControlObject();\n\n    L && map && L.tileLayer(urlTemplate, options).addTo(map);\n    geoJSONLayer && geoJSONLayer.addTo(map);\n    controlObject && controlObject.addTo(map);\n\n    return {\n      get map() {\n        return map;\n      },\n      get geoJSONLayer() { return geoJSONLayer; },\n      set geoJSONLayers(data: IGeoJSON) {\n        if (geoJSONLayer && map) {\n          geoJSONLayer.addData(data);\n          const bounds = geoJSONLayer.getBounds();\n          map.fitBounds(bounds);\n        }\n      },\n      resetLayers() {\n        geoJSONLayer && geoJSONLayer.clearLayers();\n      },\n      updatePropertiesInsideInfoControl(properties) {\n        controlObject && controlObject.update(properties);\n      }\n    }\n  }\n\n  async builder(config: any, _) {\n    this._setMapOptions(config);\n\n    // geoJSON mapping can be overridden by passing in the config\n    if (config.geoJSONMapping) {\n      this.mappingConfig = config.geoJSONMapping;\n    }\n\n    this.getGeoJSON.pipe(\n      skipWhile(input => input === undefined || input === null || !(input.hasOwnProperty('state') || input.hasOwnProperty('country'))),\n      switchMap(input => {\n        const { country, states, state, districts, metrics, labelExpr, strict, folder, reportData = [], omitMetrics = [] } = input;\n        let paramter;\n        if (country) {\n          paramter = { type: 'country', name: country };\n        } else {\n          paramter = { type: 'state', name: state };\n        }\n        const { geoJSONFilename = null } = this.findRecordInConfigMapping(paramter) || {};\n        if (!geoJSONFilename) {\n          return throwError('specified geoJSON file not found');\n        }\n        return this.getGeoJSONFile({ fileName: geoJSONFilename, folder }).pipe(\n          map(geoJSONData => {\n            const { type, features = [] } = cloneDeep(geoJSONData) as IGeoJSON;\n            let filteredFeatures;\n            if (country && states.length) {\n              filteredFeatures = this.addProperties({ reportData, layers: states, labelExpr, type: 'state', features, metrics, omitMetrics });\n            } else {\n              filteredFeatures = this.addProperties({ reportData, layers: districts, labelExpr, type: 'district', features, metrics, omitMetrics });\n            }\n            return { type, features: strict ? filteredFeatures : features };\n          },\n            catchError(err => {\n              return of({\n                type: 'FeatureCollection',\n                features: []\n              })\n            }))\n        );\n      }),\n      tap((geoJSONLayers: IGeoJSON) => {\n        if (this.mapClosure) {\n          this.mapClosure.geoJSONLayers = geoJSONLayers;\n        }\n      })\n    ).subscribe()\n  }\n\n  reset(): void {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  destroy(): void {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  update(input: Partial<UpdateInputParams>) {\n    this.checkIfInitialized();\n    if (!input) throw new Error(this.CONSTANTS.INVALID_INPUT);\n    if (this.mapClosure) {\n      const { data = null, config = {} } = input;\n      this._setMapOptions(config);\n      if (this.inputParameters && data) {\n        this.mapClosure.resetLayers();\n        this.getGeoJSON.next({ ...this.inputParameters, strict: true, reportData: data });\n      }\n    }\n  }\n\n  addData(data: object | object[]) {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  refreshChart() {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  getTelemetry() {\n    throw new Error(this.CONSTANTS.METHOD_NOT_IMPLEMENTED);\n  }\n\n  exportAs(format: string) {\n    if (!this.exportOptions.includes(format)) {\n      throw new Error('given type not supported');\n    }\n    this.exportAsCsv();\n  }\n\n  /**\n   * @description click handler for a specfic layer within the map\n   * @private\n   * @param {*} { properties, metaData }\n   * @param {*} event\n   * @memberof Map2Component\n   */\n  private clickHandler({ properties = {}, metaData = {} }: { properties: Properties; metaData: Partial<ICustomMapObj> }, event) {\n    this.events.emit({\n      type: 'CLICK',\n      event: {\n        ...metaData, ...properties\n      }\n    })\n  }\n\n  /**\n   * @description handles mouse out event for a specific layer\n   * @private\n   * @param {*} { properties, metaData }\n   * @param {*} event\n   * @memberof Map2Component\n   */\n  private mouseoutHandler({ properties = {}, metaData = {} }: { properties: Properties; metaData: Partial<ICustomMapObj> }, event) {\n    if (this.mapClosure) {\n      this.mapClosure.geoJSONLayer.resetStyle(event.target);\n    }\n  }\n\n  /**\n   * @description mouseover event handler\n   * @private\n   * @param {*} { properties, metaData }\n   * @param {*} event\n   * @memberof Map2Component\n   */\n  private mouseoverHandler({ properties = {}, metaData = {} }: { properties: Properties; metaData: Partial<ICustomMapObj> }, event) {\n    const layer = event.target;\n    layer.setStyle({\n      weight: 3,\n      color: '#666',\n      dashArray: '',\n      fillOpacity: 0.8\n    });\n    if (L && (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge)) {\n      layer.bringToFront();\n    }\n    this.mapClosure && this.mapClosure.updatePropertiesInsideInfoControl(properties);\n    const mergedObj = { ...properties, ...metaData };\n    this.events.emit({\n      type: 'HOVER',\n      event: {\n        ...mergedObj\n      }\n    });\n    layer.bindPopup(mergedObj.name || 'Unknown').openPopup();\n  }\n\n  /**\n   * @description attaches event handlers on each layer\n   * @private\n   * @param {*} feature\n   * @param {*} layer\n   * @memberof Map2Component\n   */\n  private onEachFeature(feature, layer) {\n    const { properties, metaData = {} } = feature;\n    layer.on({\n      mouseover: this.mouseoverHandler.bind(this, { properties, metaData }),\n      mouseout: this.mouseoutHandler.bind(this, { properties, metaData }),\n      click: this.clickHandler.bind(this, { properties, metaData })\n    });\n  }\n\n  private getControlObject() {\n    const { controlTitle } = this.inputParameters as any;\n    const infoControl = L && L.control();\n    infoControl.onAdd = function (map) {\n      this._div = L && L.DomUtil.create('div', 'infoControl');\n      this.update();\n      return this._div;\n    };\n    infoControl.update = function (properties = {}) {\n      const text = Object.entries(properties).map(([key, value]) => `<br />${key}: ${value}`).join('<br />');\n      this._div.innerHTML = `<h4>${controlTitle}</h4>\n      ${text}`;\n    };\n\n    return infoControl;\n  }\n\n  /**\n   * @description sets styles for each feature layer\n   * @private\n   * @param {*} feature\n   * @returns\n   * @memberof MapComponent\n   */\n  private setStyle(feature, layer) {\n    const { metaData = {} } = feature;\n    return {\n      ...this.inputParameters['rootStyle'], ...(!metaData.drillDown && !metaData.fileName &&\n        { className: 'notAllowedCursor' })\n    };\n  }\n\n  /**\n * @description dynamically add custom properties from external JSON to feature Objects\n * @private\n * @param {*} { reportData = [], layers = [], labelExpr = 'District', type = 'district', features = [], metrics = [] }\n * @returns\n * @memberof MapComponent\n */\n  private addProperties({ reportData = [], layers = [], labelExpr = 'District', type = 'district', features = [], metrics = [], omitMetrics = [] }) {\n    const filteredFeatures = [];\n    const datasets = groupBy(reportData || [], data => toLower(data[labelExpr]));\n    layers.forEach(layer => {\n      const recordFromConfigMapping = this.findRecordInConfigMapping({ type, name: layer });\n      const dataset = datasets.hasOwnProperty(toLower(layer)) && datasets[toLower(layer)];\n      const featureObj = features.find(feature => {\n        const { properties = {} } = feature;\n        return recordFromConfigMapping && +properties.code === +recordFromConfigMapping.code;\n      });\n      if (!recordFromConfigMapping || !dataset || !featureObj) { return; }\n      featureObj['metaData'] = { name: layer };\n      const result = reduce(dataset, (accumulator, value) => {\n        metrics.forEach(metric => {\n          accumulator[metric] = (accumulator[metric] || 0) + (+value[metric]);\n        });\n        return accumulator;\n      }, {});\n      featureObj.properties = omit({\n        ...(featureObj.properties || {}),\n        ...(result || {})\n      }, omitMetrics);\n      filteredFeatures.push(featureObj);\n    });\n    return filteredFeatures;\n  }\n\n\n  private findRecordInConfigMapping({ type = null, name = null, code = null }) {\n    return find(this.mappingConfig, config => {\n      const { type: configType, name: configName, code: configCode } = config;\n      if (code) { return configCode === code; }\n      return configType && configName && toLower(configType) === toLower(type) && toLower(configName) === toLower(name);\n    });\n  }\n\n  private getGeoJSONFile({ folder = 'geoJSONFiles', fileName }: Record<string, string>): Observable<IGeoJSON> {\n    return this.dataService.fetchGeoJSONFile(`${folder}/${fileName}`);\n  }\n}\n","<ng-template #defaultFilterTemplate let-context>\n    <sb-dashlets-filters [data]=\"context?.data\" [config]=\"context?.config?.filters\"\n        (filteredData)=\"update({data: $event})\">\n    </sb-dashlets-filters>\n</ng-template>\n\n<ng-container *ngIf=\"$context?.config?.filters\" [ngTemplateOutlet]=\"templateRefs?.filter || defaultFilterTemplate\"\n    [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n<ng-container *ngIf=\"templateRefs?.header && $context\" [ngTemplateOutlet]=\"templateRefs?.header\"\n    [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>\n\n<ng-container *ngIf=\"$context?.inputParameters\">\n    <div [attr.id]=\"id\" class=\"mapContainer\" #map></div>\n</ng-container>\n\n<ng-container *ngIf=\"templateRefs?.footer && $context\" [ngTemplateOutlet]=\"templateRefs?.footer\"\n    [ngTemplateOutletContext]=\"{'$implicit': $context}\">\n</ng-container>","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { of, throwError } from 'rxjs';\nimport { catchError, pluck, retry, tap } from 'rxjs/operators';\nimport { IApiConfig, IDataService } from '../../types/index';\n\ntype apiConfig = {\n  method: string;\n  url: string;\n  options: Partial<IApiConfig>\n}\n@Injectable({\n  providedIn: 'root'\n})\nexport class DataService implements IDataService {\n\n  constructor(private httpClient: HttpClient) { }\n\n  private cachedData = new Map();\n\n  /**\n   * @description fetches the dataSources using the api configuration\n   * @param {apiConfig} config\n   * @return {*} \n   * @memberof DataService\n   */\n  fetchData(config: apiConfig) {\n    const stringifiedConfig = JSON.stringify(config);\n    if (this.cachedData.has(stringifiedConfig)) return of(this.cachedData.get(stringifiedConfig));\n    const { method, url, options } = config;\n    return this.httpClient.request(method, url, options).pipe(\n      tap(response => {\n        this.cachedData.set(stringifiedConfig, response);\n      })\n    );\n  }\n  /**\n   * @description method is used to fetch the geoJSON files. Can be overridden by the client to use the necessary endpoint\n   * @param {string} path\n   * @return {*} \n   * @memberof DataService\n   */\n  fetchGeoJSONFile(path: string) {\n    return this.fetchData({ method: 'GET', url: `/reports/fetch/${path}`, options: {} })\n      .pipe(\n        pluck('result'),\n        retry(2),\n        catchError(err => throwError({ errorText: 'Failed to download geoJSON file.' }))\n      );\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DashletComponent, ChartJsComponent, BigNumberComponent, DtTableComponent, FiltersComponent, MapComponent } from './components/index';\nimport { ReportWrapperDirective, TemplateRefsDirective } from './directives/index';\nimport { HttpClientModule } from '@angular/common/http'\nimport { ChartsModule } from 'ng2-charts'\nimport { CommonModule } from '@angular/common';\nimport { DataTablesModule } from \"angular-datatables\";\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { NgMultiSelectDropDownModule } from 'ng-multiselect-dropdown';\nimport { NgxDaterangepickerMd } from 'ngx-daterangepicker-material';\nimport { DATA_SERVICE } from './tokens/index'\nimport { IDashletsConfig } from './types/index';\nimport { DataService } from './services/index';\n\n\n\n@NgModule({\n    declarations: [ChartJsComponent, DashletComponent, ReportWrapperDirective, BigNumberComponent, DtTableComponent, TemplateRefsDirective, FiltersComponent, MapComponent],\n    imports: [HttpClientModule, ChartsModule, CommonModule, DataTablesModule, ReactiveFormsModule, NgMultiSelectDropDownModule,\n        NgxDaterangepickerMd.forRoot(),\n    ],\n    exports: [DashletComponent, TemplateRefsDirective]\n})\nexport class DashletModule {\n\n  static forRoot(config?: IDashletsConfig): ModuleWithProviders<DashletModule> {\n    return {\n      ngModule: DashletModule,\n      providers: [\n        { provide: DATA_SERVICE, useClass: (config && config.dataService) || DataService  }\n      ]\n    }\n  }\n}\n","/*\n * Public API Surface of my-lib\n */\n\nexport * from './lib/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n","import Joi from 'joi';\n\nexport default Joi.array().items(...[Joi.object({\n    label: Joi.string().optional(),\n    reference: Joi.string().required(),\n    placeholder: Joi.string().optional(),\n    controlType: Joi.string().valid(...[\"single-select\", \"multi-select\", \"date\"]).required(),\n    default: Joi.string().optional(),\n    searchable: Joi.boolean().optional(),\n    displayName: Joi.string().optional()\n})])","import Joi from 'joi';\nimport filterSchema from '../filters/schema'\n\nexport const schema = Joi.object({\n    labelExpr: Joi.string(),\n    labels: Joi.array().items(...[Joi.string(), Joi.number()]),\n    datasets: Joi.array().items(...[Joi.object({\n        label: Joi.string().required(),\n        dataExpr: Joi.string(),\n        data: Joi.array()\n    }).options({\n        allowUnknown: true\n    }).xor(\"data\", \"dataExpr\")]).required(),\n    options: Joi.object().optional().options({ allowUnknown: true }),\n    colors: Joi.alternatives(...[Joi.object(), Joi.array()]).optional(),\n    filters: filterSchema.optional(),\n    tooltip: Joi.object().optional(),\n    responsive: Joi.boolean().optional().default(true),\n    type: Joi.string().optional(),\n    scales: Joi.object({\n        axes: Joi.any().required()\n    }).optional().options({ allowUnknown: true }),\n    caption: Joi.object().optional().options({ allowUnknown: true })\n}).xor(\"labelExpr\", \"labels\");","import Joi from 'joi';\n\nexport const schema = Joi.object({\n    header: Joi.string().optional().allow(...[\"\"]),\n    footer: Joi.string().optional().allow(...[\"\"]),\n    dataExpr: Joi.string(),\n    data: Joi.alternatives(...[Joi.string(), Joi.number()]),\n    operation: Joi.string().valid(...[\"SUM\", \"MIN\", \"MAX\", \"AVG\"]).optional()\n}).xor(\"data\", \"dataExpr\");\n\n","import Joi from 'joi';\nimport filterSchema from '../filters/schema'\n\nexport const schema = Joi.object({\n    filters: filterSchema.optional(),\n    columnConfig: Joi.array().items({\n        title: Joi.string().required(),\n        data: Joi.string().required(),\n        render: Joi.function().optional(),\n        index: Joi.number().optional(),\n        searchable: Joi.boolean().optional(),\n        orderable: Joi.boolean().optional(),\n        visible: Joi.boolean().optional(),\n        autoWidth: Joi.boolean().optional(),\n    }).required().options({ allowUnknown: true }),\n    autoWidth: Joi.boolean().optional(),\n    bLengthChange: Joi.boolean().optional(),\n    paging: Joi.boolean().optional(),\n    bFilter: Joi.boolean().optional(),\n    bInfo: Joi.boolean().optional(),\n    searchable: Joi.boolean().optional(),\n    info: Joi.boolean().optional(),\n    order: Joi.array().optional()\n}).options({ allowUnknown: true })","import Joi from 'joi';\nimport filterSchema from '../filters/schema'\n\nexport const schema = Joi.object({\n    state: Joi.string(),\n    districts: Joi.array().items(...[Joi.string()]),\n    metrics: Joi.array().items(...[Joi.string()]).required(),\n    folder: Joi.string().optional().default(\"geoJSONFiles\"),\n    labelExpr: Joi.string().required(),\n    strict: Joi.boolean().optional().default(false),\n    country: Joi.string(),\n    states: Joi.array().items(...[Joi.string()]),\n    initialCoordinate: Joi.array().length(2).items(...[Joi.string()]).optional(),\n    latBounds: Joi.array().length(2).items(...[Joi.string()]).optional(),\n    lonBounds: Joi.array().length(2).items(...[Joi.string()]).optional(),\n    initialZoomLevel: Joi.alternatives(...[Joi.number, Joi.string()]).optional().default(5),\n    controlTitle: Joi.string().optional().default(\"India Heat Map\"),\n    geoJSONMapping: Joi.object({\n        type: Joi.string().required(),\n        features: Joi.array().required()\n    }).optional(),\n    tileLayer: Joi.object({\n        urlTemplate: Joi.string().required(),\n        options: Joi.object({\n            attributions: Joi.string().required()\n        }).required().options({ allowUnknown: true })\n    }).optional().options({ allowUnknown: true }),\n    rootStyle: Joi.object().optional(),\n    filters: filterSchema.optional(),\n    omitMetrics: Joi.array().items(...[Joi.string()]).optional()\n}).xor(\"state\", \"country\").xor(\"districts\", \"states\").and(\"state\", \"districts\").and(\"country\", \"states\");"],"names":["jsonExport","i2","i1","i3.FiltersComponent","uuidv4","i1.ReportWrapperDirective","DEFAULT_CONFIG_TOKEN","i2.FiltersComponent","map","geoJSONMapping.default","schema"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}