{"version":3,"file":"obliczeniowo-elementary-array-to-table.mjs","sources":["../../../../projects/components/array-to-table/components/editable-cell/editable-cell.component.ts","../../../../projects/components/array-to-table/components/editable-cell/editable-cell.component.html","../../../../projects/components/array-to-table/components/pipe/is.pipe.ts","../../../../projects/components/array-to-table/components/pipe/is-template.pipe.ts","../../../../projects/components/array-to-table/components/array-to-table/array-to-table.component.ts","../../../../projects/components/array-to-table/components/array-to-table/array-to-table.component.html","../../../../projects/components/array-to-table/array-to-table.module.ts","../../../../projects/components/array-to-table/obliczeniowo-elementary-array-to-table.ts"],"sourcesContent":["import { ElementaryMath } from '@obliczeniowo/elementary/math';\nimport {\n  Component,\n  HostListener,\n  ElementRef,\n  HostBinding,\n  input,\n  model,\n  effect,\n} from '@angular/core';\n\n@Component({\n    selector: 'td[obl-editable-cell]',\n    templateUrl: './editable-cell.component.html',\n    styleUrls: ['./editable-cell.component.scss'],\n    standalone: false\n})\nexport class EditableCellComponent {\n  value = model.required<string | number | { [key: string]: number | string }>();\n\n  editable = input<boolean>(true);\n\n  type: 'string' | 'number' | 'json' | 'none' = 'none';\n\n  inputValue: string | number | undefined;\n\n  @HostBinding('class.focus')\n  focus: boolean = false;\n\n  @HostBinding('class.number') get isNumber(): boolean {\n    return this.type === 'number';\n  }\n\n  @HostBinding('class.string') get isText(): boolean {\n    return this.type === 'string';\n  }\n\n  @HostListener('click') clicked() {\n    if (this.editable()) {\n      this.focus = true;\n    }\n  }\n\n  blur(event: any) {\n    console.log(event.target.value)\n    this.value.set(event.target.value);\n    this.focus = false;\n  }\n\n  constructor(protected elementRef: ElementRef<HTMLElement>) {\n    effect(() => {\n      this.value();\n      this.changed();\n    }, {\n      allowSignalWrites: true\n    });\n  }\n\n  ngAfterViewChecked(): void {\n    if (this.focus) {\n      const input = this.elementRef.nativeElement.querySelector('input');\n\n      if (input) {\n        input.focus();\n      }\n    }\n  }\n\n  changed() {\n    const value = this.value();\n    const isString = typeof value === 'string';\n    if (isString || typeof value === 'number') {\n      if (isString && ElementaryMath.isNumeric(value as string, true)) {\n        this.value.set(parseFloat(value as string));\n      }\n      this.type = typeof value as any;\n      this.inputValue = value as any;\n    } else if (value === undefined) {\n      this.type = 'none';\n      this.inputValue = '';\n    } else {\n      this.type = 'json';\n      this.inputValue = 'object';\n    }\n  }\n}\n","@if (editable() && focus && (type === 'string' || type === 'number')) {\n  <obl-input-wrapper\n    display=\"none\"\n  >\n    <input oblInput type=\"text\" [value]=\"inputValue\" (blur)=\"blur($event)\" />\n  </obl-input-wrapper>\n} @else {\n  {{ inputValue }}\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'is',\n    standalone: false\n})\nexport class IsPipe implements PipeTransform {\n  transform(value: any, ...args: ['string' | 'number']): boolean {\n    // eslint-disable-next-line valid-typeof\n    return typeof value === args[0];\n  }\n}\n","import { Pipe, PipeTransform, TemplateRef } from '@angular/core';\n\n@Pipe({\n    name: 'isTemplate',\n    standalone: false\n})\nexport class IsTemplatePipe implements PipeTransform {\n  transform(value: any, ...args: unknown[]): TemplateRef<any> | undefined {\n    return value instanceof TemplateRef && value || undefined;\n  }\n}\n","import { PageControllerRecordAdapter } from '@obliczeniowo/elementary/scroller-nav';\nimport { ElementaryMath } from '@obliczeniowo/elementary/math';\nimport { OblFileService, Csv } from '@obliczeniowo/elementary/files';\nimport {\n  Component,\n  ElementRef,\n  Input,\n  SimpleChanges,\n  ChangeDetectorRef,\n  Output,\n  EventEmitter,\n  TemplateRef,\n  input,\n} from '@angular/core';\n\ninterface Record {\n  x: number;\n  y: number;\n  value: string | number;\n}\n\n/**\n * Component prepared to display raw data like text/numbers as a quick formatted table\n */\n@Component({\n    selector: 'obl-array-to-table',\n    templateUrl: './array-to-table.component.html',\n    styleUrls: ['./array-to-table.component.scss'],\n    standalone: false\n})\nexport class ArrayToTableComponent {\n  /**\n   * Array of elements to display number/string/table of number/string\n   */\n  @Input() array: (string | number)[] | (string | number)[][] = [];\n  /** */\n  headers = input<string[] | undefined>([]);\n  /**\n   * Caption text of table to display\n   */\n  caption = input<string | TemplateRef<any> | undefined>();\n  /**\n   * Maximum number of columns in one line, if number of columns is greater then this value\n   * then it will split data in new record line\n   */\n  maxLength = input<number | undefined>();\n  /** */\n  editable = input<boolean>(false);\n  /** */\n  display = input<{ index?: boolean; download?: 'json' | 'csv' }>({\n    index: true,\n    download: 'csv',\n  });\n\n  @Output() arrayChanged: EventEmitter<(string | number)[][]> =\n    new EventEmitter<(string | number)[][]>();\n\n  /**\n   * Prepared to display data\n   */\n  records: Record[][] = [];\n  /**\n   * body of table reference for scroller\n   */\n  tbody: HTMLElement | null = null;\n  /**\n   * y table wrapper reference for scroller\n   */\n  yWrapper: HTMLElement | null = null;\n\n  pageAdapter: PageControllerRecordAdapter = new PageControllerRecordAdapter(\n    this.records.length\n  );\n\n  constructor(\n    protected elementRef: ElementRef<HTMLElement>,\n    protected change: ChangeDetectorRef,\n    protected file: OblFileService\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.array || changes.maxLength) {\n      this.array = this.array.map((v) => {\n        if (v instanceof Array) {\n          return v;\n        }\n        return [v];\n      });\n\n      this.records =\n        this.convert().reduce((p, c) => {\n          const copy = [...c];\n          while (this.maxLength() && copy.length > (this.maxLength() || 0)) {\n            p.push(copy.splice(0, this.maxLength()));\n          }\n          if (copy.length) {\n            p.push(copy);\n          }\n          return p;\n        }, [] as Record[][]) || [];\n\n      this.pageAdapter.setMax(this.records.length);\n    }\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.tbody = this.elementRef.nativeElement.querySelector('tbody');\n      this.yWrapper = this.elementRef.nativeElement.querySelector('.y-wrapper');\n    });\n  }\n\n  downloadCsv(name: string = 'Table') {\n    if (this.array.length) {\n      const converted = this.convert();\n      const csv = Csv.fromArray(\n        converted.map((v) => v.map((v) => v.value)),\n        this.headers()\n      );\n\n      this.file.saveTextFile(csv.prepare(), name, 'text/csv');\n    }\n  }\n\n  downloadJson(name: string = 'Table') {\n    if (this.array.length) {\n      const converted = this.convert();\n      const csv = Csv.fromArray(\n        converted.map((v) => v.map((v) => v.value)),\n        this.headers()\n      );\n\n      this.file.saveTextFile(\n        JSON.stringify(csv.toJson(), undefined, '  '),\n        name,\n        'text/json'\n      );\n    }\n  }\n\n  changed(value: any, record: number, index: number) {\n    if (ElementaryMath.isNumeric(value, true)) {\n      value = parseFloat(value);\n      this.records[record][index].value = value;\n      (this.array as (string | number)[][])[this.records[record][index].y][\n        this.records[record][index].x\n      ] = value;\n    } else {\n      this.records[record][index].value = value;\n      (this.array as (string | number)[][])[this.records[record][index].y][\n        this.records[record][index].x\n      ] = value;\n    }\n\n    this.arrayChanged.emit(this.array as (string | number)[][]);\n  }\n\n  protected convert(): Record[][] {\n    return (this.array as (string | number)[][]).map((v, y) =>\n      v.map((value, x) => ({ x, y, value }))\n    );\n  }\n}\n","<div class=\"table-wrapper\">\n  <div class=\"y-wrapper\">\n    <table>\n      @if (caption()) {\n        <caption>\n          @if (caption() | is: 'string') {\n            {{ caption() }}\n          } @else {\n            <ng-container *ngTemplateOutlet=\"(caption() | isTemplate) || captionRef\"></ng-container>\n          }\n        </caption>\n      }\n\n      <tbody>\n        @if (!maxLength() && headers()?.length) {\n          @if (!maxLength() && headers()?.length) {\n            <tr>\n              @if (display().index) {\n                <th class=\"index\"></th>\n              }\n              @for ( header of headers(); track header) {\n                <th>{{ header }}</th>\n              }\n            </tr>\n          }\n        }\n        @for(record of records; track $index; let vIndex = $index) { \n          @if (\n            vIndex >= pageAdapter.position &&\n            vIndex < pageAdapter.page.jump + pageAdapter.position\n          ) {\n            <tr>\n              @if (display().index) {\n                <td class=\"index\">{{ vIndex + 1 }}</td>\n              }\n              @for (value of record; track value) {\n                <td\n                  obl-editable-cell\n                  [value]=\"value.value\"\n                  [editable]=\"editable()\"\n                  (valueChanged)=\"changed($event, vIndex, $index)\"\n                ></td>\n              }\n            </tr>\n          }\n        }\n      </tbody>\n    </table>\n  </div>\n  <div class=\"buttons-vertical\">\n    @if (pageAdapter.getMax() > pageAdapter.page.jump) {\n      <obl-scroller-nav\n        [horizontal]=\"false\"\n        [pageController]=\"pageAdapter\"\n        [element]=\"tbody\"\n      ></obl-scroller-nav>\n    }\n\n    @if (display().download === 'csv') {\n      <button oblButton (click)=\"downloadCsv()\">\n        <obl-icon [name]=\"'csv-file'\"></obl-icon>\n      </button>\n    }\n\n    @if (display().download === 'json') {\n      <button oblButton (click)=\"downloadJson()\">\n        <obl-icon [name]=\"'json-file'\"></obl-icon>\n      </button>\n    }\n\n    <ng-content></ng-content>\n  </div>\n</div>\n\n<obl-scroller-nav [element]=\"yWrapper\"></obl-scroller-nav>\n\n<ng-template #captionRef></ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ButtonsModule } from '@obliczeniowo/elementary/buttons';\nimport { ScrollerNavModule } from '@obliczeniowo/elementary/scroller-nav';\nimport { IconsModule } from '@obliczeniowo/elementary/icons';\nimport { InputModule } from '@obliczeniowo/elementary/input';\n\nimport { ArrayToTableComponent } from './components/array-to-table/array-to-table.component';\nimport { EditableCellComponent } from './components/editable-cell/editable-cell.component';\nimport { FormsModule } from '@angular/forms';\nimport { IsPipe } from './components/pipe/is.pipe';\nimport { IsTemplatePipe } from './components/pipe/is-template.pipe';\n\n@NgModule({\n  declarations: [\n    ArrayToTableComponent,\n    EditableCellComponent,\n    IsPipe,\n    IsTemplatePipe,\n  ],\n  imports: [\n    CommonModule,\n    FormsModule,\n    IconsModule,\n    ButtonsModule,\n    ScrollerNavModule,\n    InputModule,\n  ],\n  exports: [\n    ArrayToTableComponent\n  ]\n})\nexport class ArrayToTableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i6.EditableCellComponent","i7.IsPipe","i8.IsTemplatePipe"],"mappings":"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"}