{"version":3,"file":"angular-datatables.net.mjs","sources":["../../../lib/src/angular-datatable.ts","../../../lib/src/data-tables.module.ts","../../../lib/public-api.ts","../../../lib/index.ts","../../../lib/angular-datatables.net.ts"],"sourcesContent":["/**\n * @license MIT\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/vinccool96/angular-datatables.net/master/LICENSE\n */\n\nimport {\n  Directive,\n  ElementRef,\n  inject,\n  input,\n  model,\n  OnDestroy,\n  OnInit,\n  PipeTransform,\n  Renderer2,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Api } from 'datatables.net';\nimport { Subject } from 'rxjs';\n\nimport { ADTColumns, ADTSettings, ADTTemplateRef } from './models/settings';\n\n@Directive({\n  selector: '[adtDatatable]',\n})\nexport class AngularDatatable implements OnDestroy, OnInit {\n  /**\n   * The DataTable instance built by the jQuery library [DataTables](datatables.net).\n   *\n   * It's possible to execute the [DataTables APIs](https://datatables.net/reference/api/) with this variable.\n   */\n  public dtInstance!: Promise<Api>;\n\n  /**\n   * The DataTable option you pass to configure your table.\n   */\n  public readonly dtOptions = model<ADTSettings>({});\n\n  /**\n   * This trigger is used if one wants to trigger manually the DT rendering. Useful when rendering angular rendered DOM.\n   */\n  public readonly dtTrigger = input<Subject<ADTSettings> | Subject<ADTSettings | null>>();\n\n  // Only used for destroying the table when destroying this directive\n  private dt: Api | undefined;\n\n  private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n  private readonly renderer = inject(Renderer2);\n  private readonly vcr = inject(ViewContainerRef);\n\n  public ngOnDestroy(): void {\n    this.dtTrigger()?.unsubscribe();\n\n    this.dt?.destroy(true);\n  }\n\n  public ngOnInit(): void {\n    const trigger = this.dtTrigger();\n\n    if (trigger === undefined) {\n      this.displayTable(null);\n    } else {\n      trigger.subscribe((options) => {\n        this.displayTable(options);\n      });\n    }\n  }\n\n  private applyNgPipeTransform(row: Node, columns: ADTColumns[]): void {\n    // Filter columns with pipe declared\n    const colsWithPipe = columns.filter((x) => x.ngPipeInstance !== undefined && x.ngTemplateRef === undefined);\n    const table = this.dt as Api;\n    const currentRow = table.row(row);\n\n    for (const element of colsWithPipe) {\n      const pipe = element.ngPipeInstance as PipeTransform;\n      const pipeArguments = element.ngPipeArgs ?? [];\n      // find index of column using `data` attr\n      const index = columns.filter((c) => c.visible !== false).findIndex((event) => event.id === element.id);\n      // get <td> element which holds data using index\n      const rowFromCol = row.childNodes.item(index);\n      const cell = table.cell(currentRow.index(), index);\n      // Transform data with Pipe and PipeArgs\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n      const rowValue = cell.data();\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      const rowValueAfter = pipe.transform(rowValue, ...pipeArguments) as string;\n      // Apply transformed string to <td>\n      $(rowFromCol).text(rowValueAfter);\n    }\n  }\n\n  private applyNgRefTemplate(row: Node, columns: ADTColumns[], data: object): void {\n    // Filter columns using `ngTemplateRef`\n    const colsWithTemplate = columns.filter((x) => x.ngTemplateRef !== undefined && x.ngPipeInstance === undefined);\n\n    for (const element of colsWithTemplate) {\n      const { context, ref } = element.ngTemplateRef as ADTTemplateRef;\n      // get <td> element which holds data using index\n      const index = columns.filter((c) => c.visible !== false).findIndex((column) => column.id === element.id);\n      const cellFromIndex = row.childNodes.item(index);\n      // reset cell before applying transform\n      $(cellFromIndex).html('');\n      // render onto DOM\n      // finalize context to be sent to user\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n      const _context = Object.assign({}, context, context?.userData, {\n        adtData: data,\n      });\n      const instance = this.vcr.createEmbeddedView(ref, _context);\n      this.renderer.appendChild(cellFromIndex, instance.rootNodes[0]);\n    }\n  }\n\n  private applyTitleNgPipeTransform(header: Node, columns: ADTColumns[]): void {\n    // Filter columns with pipe declared\n    const colsWithPipe = columns.filter(\n      (x) => x.titleNgPipeInstance !== undefined && x.titleNgTemplateRef === undefined,\n    );\n\n    for (const element of colsWithPipe) {\n      const pipe = element.titleNgPipeInstance as PipeTransform;\n      const pipeArguments = element.titleNgPipeArgs ?? [];\n      // find index of column using `data` attr\n      const index = columns.filter((c) => c.visible !== false).findIndex((event) => event.id === element.id);\n      // get <td> element which holds data using index\n      const rowFromCol = header.childNodes.item(index);\n      const title = $(rowFromCol).find('.dt-column-title');\n      // Transform data with Pipe and PipeArgs\n      const titleValue = element.title ?? $(title).text();\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n      const titleVValueAfter = pipe.transform(titleValue, ...pipeArguments) as string;\n      // Apply transformed string to <td>\n      $(title).text(titleVValueAfter);\n    }\n  }\n\n  private applyTitleNgRefTemplate(header: Node, columns: ADTColumns[]): void {\n    // Filter columns using `ngTemplateRef`\n    const colsWithTemplate = columns.filter(\n      (x) => x.titleNgTemplateRef !== undefined && x.titleNgPipeInstance === undefined,\n    );\n\n    for (const element of colsWithTemplate) {\n      const { context, ref } = element.titleNgTemplateRef as ADTTemplateRef;\n      // get <td> element which holds data using index\n      const index = columns.filter((c) => c.visible !== false).findIndex((column) => column.id === element.id);\n      const cellFromIndex = header.childNodes.item(index);\n      const title = $(cellFromIndex).find('.dt-column-title');\n      // reset cell before applying transform\n      $(title).html('');\n      // render onto DOM\n      // finalize context to be sent to user\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n      const _context = Object.assign({}, context, context?.userData);\n      const instance = this.vcr.createEmbeddedView(ref, _context);\n      this.renderer.appendChild(title.get(0), instance.rootNodes[0]);\n    }\n  }\n\n  private displayTable(dtOptions: ADTSettings | null): void {\n    // assign new options if provided\n    if (dtOptions !== null) {\n      this.dtOptions.set(dtOptions);\n    }\n\n    this.dtInstance = new Promise((resolve, reject) => {\n      void Promise.resolve(this.dtOptions()).then((resolvedDTOptions) => {\n        // validate object\n        const isTableEmpty =\n          Object.keys(resolvedDTOptions).length === 0 && $('tbody tr', this.el.nativeElement).length === 0;\n\n        if (isTableEmpty) {\n          reject(new Error('Both the table and dtOptions cannot be empty'));\n          return;\n        }\n\n        // Set a column unique\n        if (resolvedDTOptions.columns !== undefined) {\n          for (const col of resolvedDTOptions.columns) {\n            if ((col.id ?? '').trim() === '') {\n              col.id = this.getColumnUniqueId();\n            }\n          }\n        }\n\n        // Using setTimeout as a \"hack\" to be \"part\" of NgZone\n        setTimeout(() => {\n          // Assign DT properties here\n          let options: ADTSettings = {\n            headerCallback: (header, data, start, end, display) => {\n              if (resolvedDTOptions.columns !== undefined) {\n                const columns = resolvedDTOptions.columns;\n                this.applyTitleNgPipeTransform(header, columns);\n                this.applyTitleNgRefTemplate(header, columns);\n              }\n\n              if (resolvedDTOptions.headerCallback !== undefined) {\n                // @ts-expect-error It's normal\n                resolvedDTOptions.headerCallback(header, data, start, end, display);\n              }\n            },\n            rowCallback: (row, data, index) => {\n              if (resolvedDTOptions.columns !== undefined) {\n                const columns = resolvedDTOptions.columns;\n                this.applyNgPipeTransform(row, columns);\n                this.applyNgRefTemplate(row, columns, data);\n              }\n\n              // run user specified row callback if provided.\n              if (resolvedDTOptions.rowCallback !== undefined) {\n                // @ts-expect-error It's normal\n                resolvedDTOptions.rowCallback(row, data, index);\n              }\n            },\n          };\n          // merge user's config with ours\n          options = Object.assign({}, resolvedDTOptions, options);\n          this.dt = $(this.el.nativeElement).DataTable(options);\n          resolve(this.dt);\n        });\n      });\n    });\n  }\n\n  private getColumnUniqueId(): string {\n    let result = '';\n    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n    for (let index = 0; index < 6; index++) {\n      const randomIndex = Math.floor(Math.random() * characters.length);\n      result += characters.charAt(randomIndex);\n    }\n\n    return result.trim();\n  }\n}\n","/**\n * @license MIT\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/vinccool96/angular-datatables.net/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { AngularDatatable } from './angular-datatable';\n\n@NgModule({\n  exports: [AngularDatatable],\n  imports: [CommonModule, AngularDatatable],\n})\nexport class DataTablesModule {}\n","/**\n * @license MIT\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/vinccool96/angular-datatables.net/master/LICENSE\n */\n\n/**\n * @description\n * Entry point from which you should import all public library APIs.\n */\nexport { AngularDatatable } from './src/angular-datatable';\nexport { DataTablesModule } from './src/data-tables.module';\nexport { ADTColumns, ADTSettings, ADTTemplateRef, ADTTemplateRefContext } from './src/models/settings';\n","/**\n * @license MIT\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://raw.githubusercontent.com/vinccool96/angular-datatables.net/master/LICENSE\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}