{"version":3,"file":"fittable-angular.mjs","sources":["../../../projects/fittable-angular/src/lib/controls-view/common/style-functions.model.ts","../../../projects/fittable-angular/src/lib/controls-view/svg-img/svg-img.component.ts","../../../projects/fittable-angular/src/lib/controls-view/button/button.component.ts","../../../projects/fittable-angular/src/lib/controls-view/context-menu/context-menu.component.ts","../../../projects/fittable-angular/src/lib/controls-view/context-menu/context-menu.component.html","../../../projects/fittable-angular/src/lib/controls-view/combo/combo.component.ts","../../../projects/fittable-angular/src/lib/controls-view/combo/combo.component.html","../../../projects/fittable-angular/src/lib/controls-view/input/input.component.ts","../../../projects/fittable-angular/src/lib/controls-view/popup-menu/popup-menu.component.ts","../../../projects/fittable-angular/src/lib/controls-view/color-picker/color-picker.component.ts","../../../projects/fittable-angular/src/lib/controls-view/color-picker/color-picker.component.html","../../../projects/fittable-angular/src/lib/controls-view/popup-button/popup-button.component.ts","../../../projects/fittable-angular/src/lib/controls-view/popup-button/popup-button.component.html","../../../projects/fittable-angular/src/lib/controls-view/border-popup/border-type/border-type.component.ts","../../../projects/fittable-angular/src/lib/controls-view/border-popup/border-type/border-type.component.html","../../../projects/fittable-angular/src/lib/controls-view/border-popup/border-popup.component.ts","../../../projects/fittable-angular/src/lib/controls-view/border-popup/border-popup.component.html","../../../projects/fittable-angular/src/lib/controls-view/context-menu/context-menu-button.component.ts","../../../projects/fittable-angular/src/lib/controls-view/toolbar/toolbar.component.ts","../../../projects/fittable-angular/src/lib/controls-view/toolbar/toolbar.component.html","../../../projects/fittable-angular/src/lib/table-view/common/table-common.model.ts","../../../projects/fittable-angular/src/lib/table-view/common/cell-selection.directive.ts","../../../projects/fittable-angular/src/lib/table-view/table-left-top-corner/table-left-top-corner.component.ts","../../../projects/fittable-angular/src/lib/table-view/table-left-top-corner/table-left-top-corner.component.html","../../../projects/fittable-angular/src/lib/controls-view/common/scroll-container.directive.ts","../../../projects/fittable-angular/src/lib/controls-view/filter-popup/filter-popup.component.ts","../../../projects/fittable-angular/src/lib/controls-view/filter-popup/filter-popup-window.component.html","../../../projects/fittable-angular/src/lib/table-view/table-top/table-top.component.ts","../../../projects/fittable-angular/src/lib/table-view/table-top/table-top.component.html","../../../projects/fittable-angular/src/lib/table-view/table-left/table-left.component.ts","../../../projects/fittable-angular/src/lib/table-view/table-left/table-left.component.html","../../../projects/fittable-angular/src/lib/controls-view/cell-editor/cell-editor.component.ts","../../../projects/fittable-angular/src/lib/controls-view/cell-editor/cell-editor.component.html","../../../projects/fittable-angular/src/lib/controls-view/cell-editor/cell-editor.directive.ts","../../../projects/fittable-angular/src/lib/table-view/table-center/table-center.component.ts","../../../projects/fittable-angular/src/lib/table-view/table-center/table-center.component.html","../../../projects/fittable-angular/src/lib/table-view/table.component.ts","../../../projects/fittable-angular/src/lib/table-view/table.component.html","../../../projects/fittable-angular/src/lib/controls-view/statusbar/statusbar.component.ts","../../../projects/fittable-angular/src/lib/controls-view/settings-bar/settings-button/settings-button.component.ts","../../../projects/fittable-angular/src/lib/controls-view/settings-bar/settings-button/settings-button.component.html","../../../projects/fittable-angular/src/lib/controls-view/settings-bar/settings-bar.component.ts","../../../projects/fittable-angular/src/lib/fittable.component.ts","../../../projects/fittable-angular/src/lib/fittable.component.html","../../../projects/fittable-angular/src/lib/fittable.module.ts","../../../projects/fittable-angular/src/public-api.ts","../../../projects/fittable-angular/src/fittable-angular.ts"],"sourcesContent":["import { CssStyle } from 'fittable-core/model';\nimport { Window, Coord, Control } from 'fittable-core/view-model';\n\nexport function createWindowStyle(window: Window): CssStyle {\n  const style: CssStyle = {};\n  const display: string = window.isVisible() ? 'block' : 'none';\n  style['display'] = display;\n  const position: Coord | undefined = window.getPosition();\n  if (position) {\n    const x: number = position.x;\n    const y: number = position.y;\n    const transform: string = 'translate3d(' + x + 'px,' + y + 'px,0px)';\n    style['transform'] = transform;\n  }\n  return style;\n}\n\nexport function createToggleStyle(control: Control): CssStyle | null {\n  return control.isDisabled() || !control.isValid()\n    ? { opacity: 0.4, cursor: 'default' }\n    : null;\n}\n","import { Component, inject, input } from \"@angular/core\";\nimport { DomSanitizer, SafeHtml } from \"@angular/platform-browser\";\n\n\n@Component({\n  selector: 'fit-svg-img',\n  standalone: true,\n  template: '<span class=\"img-container\" [innerHTML]=\"getContent()\"></span>',\n  styles: [\n    `\n      .img-container {\n        display: flex;\n        align-items: center;\n        pointer-events: none;\n      }\n    `\n  ]\n})\nexport class SvgImgComponent {\n  content = input<string>();\n\n  private readonly domSanitizer = inject(DomSanitizer);\n\n  getContent(): SafeHtml | undefined {\n    const htmlContent = this.content();\n    return htmlContent ? this.domSanitizer.bypassSecurityTrustHtml(htmlContent) : undefined;\n  }\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CssStyle } from 'fittable-core/model';\nimport { Control, asToggleControl } from 'fittable-core/view-model';\n\nimport { createToggleStyle } from '../common/style-functions.model';\nimport { SvgImgComponent } from '../svg-img/svg-img.component';\n\n@Component({\n  selector: 'fit-button',\n  standalone: true,\n  imports: [CommonModule, SvgImgComponent],\n  template: `\n    <button\n      [ngStyle]=\"getStyle()\"\n      [ngClass]=\"{ 'is-on': isOn() }\"\n      [title]=\"getLabel()\"\n      (click)=\"run()\"\n    >\n       <fit-svg-img [content]=\"getIcon()\"/>\n    </button>\n  `,\n  styleUrl: './button.component.scss',\n})\nexport class ButtonComponent {\n  model = input.required<Control>();\n\n  getLabel(): string {\n    return this.model().getLabel();\n  }\n\n  getIcon(): string | undefined {\n    return this.model().getIcon();\n  }\n\n  getStyle(): CssStyle | null {\n    return createToggleStyle(this.model());\n  }\n\n  isOn(): boolean {\n    return asToggleControl(this.model())?.isOn() ?? false;\n  }\n\n  run(): void {\n    !this.model().isDisabled() && this.model().isValid() && this.model().run();\n  }\n}\n","import {\n  Component,\n  ElementRef,\n  AfterViewInit,\n  ViewChild,\n  OnInit,\n  HostListener,\n  input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CssStyle, Value, createStyle4Dto } from 'fittable-core/model';\nimport {\n  Control,\n  InputControl,\n  InputControlListener,\n  PopupControl,\n  Window,\n  WindowListener,\n  asInputControl,\n  asPopupControl,\n  createInputControlListener,\n  createWindowListener,\n  getImageRegistry,\n} from 'fittable-core/view-model';\n\nimport {\n  createToggleStyle,\n  createWindowStyle,\n} from '../common/style-functions.model';\nimport { ControlType } from '../common/control-type.model';\nimport { SvgImgComponent } from '../svg-img/svg-img.component';\n\n@Component({\n  selector: 'fit-context-menu',\n  standalone: true,\n  imports: [CommonModule, SvgImgComponent],\n  templateUrl: './context-menu.component.html',\n  styleUrls: ['../common/scss/utils.scss', './context-menu.component.scss'],\n})\nexport class ContextMenuComponent implements OnInit, AfterViewInit {\n  model = input.required<Window>();\n  position = input<'absolute' | 'fixed'>('absolute');\n  left = input<number | string>(0);\n  top = input<number | string>(0);\n  bottom = input<number | undefined>();\n  right = input<number | undefined>();\n  maxHeight = input<string | number>();\n  inputWidth = input<string | number>();\n  inputHeight = input<string | number | undefined>();\n  iconCol = input<'left' | 'right'>('left');\n  controlStyleFn = input<(control: Control) => CssStyle | null>();\n\n  @ViewChild('menuWindow') menuWindowRef!: ElementRef;\n  private windowListener!: WindowListener;\n  private readonly inputListeners: Map<string, InputControlListener> =\n    new Map();\n  private isTextFieldMouseDown = false;\n  private isSubMenu = false;\n\n  ngOnInit(): void {\n    this.windowListener = createWindowListener(this.model());\n  }\n\n  ngAfterViewInit(): void {\n    const htmlMenu: HTMLElement = this.menuWindowRef.nativeElement;\n    this.model() //\n      .setSize({\n        getWidth: (): number => htmlMenu.clientWidth,\n        getHeight: (): number => htmlMenu.clientHeight,\n      });\n  }\n\n  @HostListener('mousedown', ['$event']) onMouseDown(event: MouseEvent): void {\n    this.windowListener.onMouseDown(event);\n  }\n\n  @HostListener('window:mousedown') onGlobalMouseDown(): void {\n    this.windowListener.onGlobalMouseDown();\n  }\n\n  onMouseEnter(): void {\n    if (this.model().isVisible()) return;\n    this.model().setVisible(true);\n    this.isSubMenu = true;\n  }\n\n  onMouseLeave(): void {\n    this.isSubMenu && this.model().setVisible(false);\n  }\n\n  getWindowStyle(): CssStyle {\n    const style: CssStyle = createWindowStyle(this.model());\n    style['position'] = this.position();\n    style['left'] = this.left();\n    style['top'] = this.top();\n    if (this.right !== undefined) style['right'] = this.right();\n    if (this.bottom !== undefined) style['bottom'] = this.bottom();\n    if (this.maxHeight !== undefined) style['max-height'] = this.maxHeight();\n    return style;\n  }\n\n  getControlIds(): string[] {\n    return this.model().getControlIds();\n  }\n\n  getControl(id: string): Control {\n    return this.model().getControl(id);\n  }\n\n  getControlType(id: string): ControlType {\n    return this.getControl(id).getType() as ControlType;\n  }\n\n  getControlLabel(id: string): string {\n    return this.getControl(id).getLabel();\n  }\n\n  getControlIcon(id: string): string | undefined {\n    return this.getControl(id).getIcon();\n  }\n\n  hasControlIcon(id: string): boolean {\n    return this.getControlIcon(id) !== undefined;\n  }\n\n  getControlStyle(id: string): CssStyle | null {\n    const control: Control = this.getControl(id);\n    let style: CssStyle | null = createToggleStyle(control);\n    if (this.controlStyleFn) {\n      if (!style) style = {};\n      const controlStyleSignal = this.controlStyleFn();\n      const controlStyle: CssStyle | null = controlStyleSignal ? controlStyleSignal(control) : null;\n      if (controlStyle) {\n        style = createStyle4Dto(style)\n          .append(createStyle4Dto(controlStyle))\n          .toCss();\n      }\n    }\n    return style;\n  }\n\n  runControl(id: string): void {\n    const control: Control = this.getControl(id);\n    if (this.isTextFieldMouseDown) {\n      this.isTextFieldMouseDown = false;\n    } else if (!createToggleStyle(control)) {\n      control.run();\n    }\n  }\n\n  getArrowRightIcon(): string | undefined {\n    return getImageRegistry().getUrl('arrowRight');\n  }\n\n  hasTextField(id: string): boolean {\n    return this.getInputControl(id) !== undefined;\n  }\n\n  getTextFieldValue(id: string): Value | undefined {\n    return this.getInputControl(id)?.getValue();\n  }\n\n  isTextFieldDisabled(id: string): boolean {\n    return this.getInputControl(id)?.isDisabled() ?? false;\n  }\n\n  getTextFieldType(id: string): 'text' | 'number' {\n    return typeof this.getTextFieldValue(id) === 'string' ? 'text' : 'number';\n  }\n\n  getTextFieldMin(id: string): number | null {\n    return typeof this.getTextFieldValue(id) === 'string' ? null : 1;\n  }\n\n  onTextFieldMouseDown(): void {\n    this.isTextFieldMouseDown = true;\n  }\n\n  onTextFieldInput(id: string, event: Event): void {\n    this.getInputListener(id)?.onInput(event);\n  }\n\n  onTextFieldKeyDown(id: string, event: KeyboardEvent): void {\n    this.getInputListener(id)?.onKeyDown(event);\n    event.key === 'Enter' && this.model().setVisible(false);\n  }\n\n  onTextFieldFocusOut(id: string): void {\n    this.getInputListener(id)?.onFocusOut();\n  }\n\n  getMenuItemWindow(id: string): Window {\n    const popupControl: PopupControl | undefined = //\n      asPopupControl(this.getControl(id));\n    if (popupControl) return popupControl.getWindow();\n    else throw new Error(`Invalid popup control for id '${id}'`);\n  }\n\n  onMenuItemMouseEnter(id: string, event: MouseEvent): void {\n    const popupControl: PopupControl | undefined = //\n      asPopupControl(this.getControl(id));\n    if (!popupControl) {\n      throw new Error(`Invalid popup control with id '${id}'.`);\n    }\n    const menuItem: HTMLElement = event.target as HTMLElement;\n    const rect: DOMRect = menuItem.getBoundingClientRect();\n    popupControl\n      .getWindow()\n      .setPosition({ x: rect.left + rect.width - 10, y: rect.top });\n    createWindowListener(popupControl.getWindow()).onShow();\n  }\n\n  onMenuItemMouseLeave(id: string): void {\n    asPopupControl(this.getControl(id))?.getWindow().setVisible(false);\n  }\n\n  private getInputListener(id: string): InputControlListener | undefined {\n    let inputListener: InputControlListener | undefined =\n      this.inputListeners.get(id);\n    if (!inputListener) {\n      const control: InputControl | undefined = this.getInputControl(id);\n      if (control) {\n        inputListener = createInputControlListener(control);\n        this.inputListeners.set(id, inputListener);\n      }\n    }\n    return inputListener;\n  }\n\n  private getInputControl(id: string): InputControl | undefined {\n    const menuItem: InputControl | undefined = //\n      asInputControl(this.getControl(id));\n    return menuItem;\n  }\n}\n","<div\n  class=\"context-menu\"\n  #menuWindow\n  [ngStyle]=\"getWindowStyle()\"\n  (mouseenter)=\"onMouseEnter()\"\n  (mouseleave)=\"onMouseLeave()\"\n>\n  @for (id of getControlIds(); track $index) {\n    @switch (getControlType(id)) {\n      @case (\"separator\") {\n        <hr class=\"sep-v\" />\n      }\n      @case (\"label\") {\n        <div class=\"title\">{{ getControlLabel(id) }}</div>\n      }\n      @case (\"menu-item\") {\n        <div\n          class=\"item\"\n          [ngStyle]=\"getControlStyle(id)\"\n          (mousedown)=\"runControl(id)\"\n        >\n          @if (hasControlIcon(id)) {\n            @if (iconCol() === \"left\") {\n              <fit-svg-img [content]=\"getControlIcon(id)\" />\n            }\n            @if (getControlLabel(id)) {\n              <div class=\"item-label\">{{ getControlLabel(id) }}</div>\n            }\n            @if (iconCol() === \"right\") {\n              <fit-svg-img [content]=\"getControlIcon(id)\" />\n            }\n          } @else if (getControlLabel(id)) {\n            <div class=\"item-label\">{{ getControlLabel(id) }}</div>\n          }\n          @if (hasTextField(id)) {\n            <input\n              class=\"item-input\"\n              [ngStyle]=\"{ width: inputWidth(), height: inputHeight() }\"\n              [type]=\"getTextFieldType(id)\"\n              [value]=\"getTextFieldValue(id)\"\n              [min]=\"getTextFieldMin(id)\"\n              [disabled]=\"isTextFieldDisabled(id) ? 'disabled' : null\"\n              (mousedown)=\"onTextFieldMouseDown()\"\n              (keydown)=\"onTextFieldKeyDown(id, $event)\"\n              (input)=\"onTextFieldInput(id, $event)\"\n              (focusout)=\"onTextFieldFocusOut(id)\"\n            />\n          }\n        </div>\n      }\n      @case (\"parent-menu-item\") {\n        <div\n          class=\"item\"\n          [ngStyle]=\"getControlStyle(id)\"\n          (mouseenter)=\"onMenuItemMouseEnter(id, $event)\"\n          (mouseleave)=\"onMenuItemMouseLeave(id)\"\n        >\n          @if (hasControlIcon(id)) {\n            <fit-svg-img [content]=\"getControlIcon(id)\" />\n            <div class=\"item-label\">{{ getControlLabel(id) }}</div>\n          } @else {\n            <div class=\"item-label\">{{ getControlLabel(id) }}</div>\n          }\n          <fit-svg-img [content]=\"getArrowRightIcon()\" />\n        </div>\n        <fit-context-menu\n          [model]=\"getMenuItemWindow(id)\"\n          [position]=\"'fixed'\"\n          [inputWidth]=\"'100%'\"\n          [inputHeight]=\"'1.4rem'\"\n        />\n      }\n      @default {\n        <div>Unknown control type for ID: {{ id }}</div>\n      }\n    }\n  }\n</div>\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CssStyle } from 'fittable-core/model';\nimport { Control, PopupControl, Window } from 'fittable-core/view-model';\n\nimport { createToggleStyle } from '../common/style-functions.model';\nimport { ContextMenuComponent } from '../context-menu/context-menu.component';\nimport { SvgImgComponent } from '../svg-img/svg-img.component';\n\n@Component({\n  selector: 'fit-combo',\n  standalone: true,\n  imports: [CommonModule, ContextMenuComponent, SvgImgComponent],\n  templateUrl: './combo.component.html',\n  styleUrl: './combo.component.scss',\n})\nexport class ComboComponent {\n  model = input.required<PopupControl>();\n  controlStyle = input<(control: Control) => CssStyle | null>();\n\n  getStyle(): CssStyle | null {\n    return createToggleStyle(this.model());\n  }\n\n  getIcon(): string | undefined {\n    return this.model().getIcon();\n  }\n\n  getLabel(): string {\n    return this.model().getLabel();\n  }\n\n  run(): void {\n    !this.model().isDisabled() && this.model().isValid() && this.model().run();\n  }\n\n  getWindow(): Window {\n    return this.model().getWindow();\n  }\n}\n","<div class=\"combo\">\n  <input\n    [ngStyle]=\"getStyle()\"\n    [value]=\"getLabel()\"\n    [title]=\"getLabel()\"\n    (click)=\"run()\"\n    readonly\n    type=\"text\"\n  />\n  <fit-svg-img [content]=\"getIcon()\" (click)=\"run()\" />\n</div>\n<fit-context-menu\n  [model]=\"getWindow()\"\n  [top]=\"'2rem'\"\n  [maxHeight]=\"'18.75rem'\"\n  [controlStyleFn]=\"controlStyle()\"\n/>\n","import { Subscription } from 'rxjs';\nimport {\n  Component,\n  HostListener,\n  ViewChild,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  input,\n} from '@angular/core';\nimport { NgStyle } from '@angular/common';\n\nimport { CssStyle } from 'fittable-core/model';\nimport {\n  InputControl,\n  InputControlListener,\n  createInputControlListener,\n} from 'fittable-core/view-model';\n\nimport { createToggleStyle } from '../common/style-functions.model';\n\n@Component({\n  selector: 'fit-input',\n  standalone: true,\n  imports: [NgStyle],\n  template: `\n    <input\n      #inputField\n      type=\"number\"\n      min=\"1\"\n      [ngStyle]=\"getStyle()\"\n      [value]=\"this.model().getValue()\"\n      [disabled]=\"getDisabled()\"\n      [title]=\"getLabel()\"\n    />\n  `,\n  styleUrl: './input.component.scss',\n})\nexport class InputComponent implements OnInit, OnDestroy {\n  model = input.required<InputControl>();\n\n  @ViewChild('inputField') inputFieldRef!: ElementRef;\n  private inputControlListener!: InputControlListener;\n  private readonly subscriptions: Subscription[] = [];\n\n  ngOnInit(): void {\n    this.inputControlListener = createInputControlListener(this.model());\n    this.subscriptions.push(this.onFocus$());\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.forEach((s: Subscription): void => s.unsubscribe());\n  }\n\n  @HostListener('input', ['$event']) onInput(event: KeyboardEvent): void {\n    this.inputControlListener.onInput(event);\n  }\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent): void {\n    this.inputControlListener.onKeyDown(event);\n  }\n\n  @HostListener('focusout') onFocusOut(): void {\n    this.inputControlListener.onFocusOut();\n  }\n\n  getStyle(): CssStyle | null {\n    return createToggleStyle(this.model());\n  }\n\n  getDisabled(): string | null {\n    return this.model().isDisabled() ? 'disabled' : null;\n  }\n\n  getLabel(): string | undefined {\n    return this.model().getLabel();\n  }\n\n  private onFocus$(): Subscription {\n    return this.model().onSetFocus$().subscribe((focus: boolean): void => {\n      const htmlInput: HTMLElement = this.getHtmlInput();\n      if (focus) htmlInput.focus();\n      else htmlInput.blur();\n    });\n  }\n\n  private getHtmlInput(): HTMLInputElement {\n    return this.inputFieldRef.nativeElement;\n  }\n}\n","import { Component, HostListener, OnInit, input } from '@angular/core';\nimport { NgStyle } from '@angular/common';\n\nimport { CssStyle } from 'fittable-core/model';\nimport {\n  Window,\n  WindowListener,\n  createWindowListener,\n} from 'fittable-core/view-model';\n\nimport { createWindowStyle } from '../common/style-functions.model';\n\n@Component({\n  selector: 'fit-popup-menu',\n  standalone: true,\n  imports: [NgStyle],\n  template: `\n    <div class=\"popup-menu\" [ngStyle]=\"getWindowStyle()\">\n      <ng-content />\n    </div>\n  `,\n  styleUrl: 'popup-menu.component.scss',\n})\nexport class PopupMenuComponent implements OnInit {\n  model = input.required<Window>();\n  stopCloseMenu = input(false);\n\n  private windowListener!: WindowListener;\n\n  ngOnInit(): void {\n    this.windowListener = createWindowListener(this.model());\n  }\n\n  @HostListener('mousedown', ['$event']) onMouseDown(event: MouseEvent): void {\n    this.windowListener.onMouseDown(event);\n  }\n\n  @HostListener('window:mousedown') onGlobalMouseDown(): void {\n    if (this.stopCloseMenu()) return;\n    this.windowListener.onGlobalMouseDown();\n  }\n\n  getWindowStyle(): CssStyle {\n    return createWindowStyle(this.model());\n  }\n}\n","import { Observable, Subscription } from 'rxjs';\nimport {\n  Component,\n  ElementRef,\n  ViewChild,\n  OnDestroy,\n  AfterViewInit,\n  input,\n  output,\n  signal,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { Value } from 'fittable-core/model';\nimport {\n  PopupControl,\n  Control,\n  ValueControl,\n  asValueControl,\n  Window,\n  asSelectorWindow,\n} from 'fittable-core/view-model';\n\nimport { ButtonComponent } from '../button/button.component';\nimport { PopupMenuComponent } from '../popup-menu/popup-menu.component';\nimport { SvgImgComponent } from '../svg-img/svg-img.component';\n\n@Component({\n  selector: 'fit-color-picker',\n  standalone: true,\n  imports: [CommonModule, ButtonComponent, PopupMenuComponent, SvgImgComponent],\n  templateUrl: './color-picker.component.html',\n  styleUrls: ['../common/scss/utils.scss', './color-picker.component.scss'],\n})\nexport class ColorPickerComponent implements AfterViewInit, OnDestroy {\n  model = input.required<PopupControl>();\n  isVisibleEvent = output<boolean>();\n\n  @ViewChild('colorPicker') colorPickerRef!: ElementRef;\n  protected readonly isColorPickerVisible = signal(false);\n  private numberDefaultOfColors = 0;\n  private readonly subscriptions: Subscription[] = [];\n\n  ngAfterViewInit(): void {\n    this.numberDefaultOfColors = this.getWindow().getControlIds().length;\n    this.subscriptions.push(this.onWindowSetVisible$());\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.forEach((s: Subscription): void => s.unsubscribe());\n  }\n\n  getWindow(): Window {\n    return this.model().getWindow();\n  }\n\n  getSelectedColor(): string | undefined {\n    const window: Window = this.getWindow();\n    const id: string | undefined = asSelectorWindow(window)?.getControlId();\n    if (!id) return undefined;\n    const value: Value | undefined = //\n      asValueControl(window.getControl(id))?.getValue();\n    return value ? '' + value : undefined;\n  }\n\n  run(): void {\n    this.model().run();\n  }\n\n  runControl(id: string): void {\n    return this.getWindow().getControl(id).run();\n  }\n\n  getColorNoneId(): string {\n    return this.getWindow().getControlIds()[0];\n  }\n\n  getColorNoneIcon(): string | undefined {\n    return this.getWindow().getControl(this.getColorNoneId()).getIcon()\n  }\n\n  getColorNoneLabel(): string | undefined {\n    return this.getWindow().getControl(this.getColorNoneId()).getLabel();\n  }\n\n  getColorIds(): string[] {\n    return this.getWindow().hasFocus()\n      ? this.model()\n        .getWindow()\n        .getControlIds()\n        .slice(1, this.numberDefaultOfColors)\n      : [];\n  }\n\n  getCustomColorIds(): string[] {\n    return this.getWindow().hasFocus()\n      ? this.getWindow().getControlIds().slice(this.numberDefaultOfColors)\n      : [];\n  }\n\n  getColorValue(id: string): Value | undefined {\n    const control: Control = this.getWindow().getControl(id);\n    const valueControl: ValueControl | undefined = asValueControl(control);\n    if (!valueControl) throw new Error('Invalid value control for id ' + id);\n    return valueControl.getValue();\n  }\n\n  onSelectCustomColor(): void {\n    this.isColorPickerVisible.set(true);\n  }\n\n  addCustomColor(): void {\n    const customColor: string = this.colorPickerRef.nativeElement.value;\n    this.getWindow().addControl(\n      customColor,\n      new (class implements ValueControl {\n        getLabel = () => customColor;\n        getValue = () => customColor;\n        setValue = () => this;\n        onSetValue$ = () => new Observable<Value | undefined>();\n        isValid = () => true;\n        getIcon = () => undefined;\n        getType = () => undefined;\n        isDisabled = () => false;\n        run = (): void => {\n          // Do nothing!\n        };\n      })(),\n    );\n    this.isColorPickerVisible.set(false);\n  }\n\n  private onWindowSetVisible$(): Subscription {\n    return this.model()\n      .getWindow()\n      .onAfterSetFocus$()\n      .subscribe((focus: boolean): void => this.isVisibleEvent.emit(focus));\n  }\n}\n","<fit-button [model]=\"model()\" />\n<hr\n  class=\"button-color\"\n  (click)=\"run()\"\n  [ngStyle]=\"{ backgroundColor: getSelectedColor() }\"\n/>\n<fit-popup-menu [model]=\"getWindow()\">\n  <div class=\"pad-s\">\n    <div class=\"color-none-button\" (click)=\"runControl(getColorNoneId())\">\n      <fit-svg-img [content]=\"getColorNoneIcon()\" />\n      <span>{{ getColorNoneLabel() }}</span>\n    </div>\n  </div>\n  <div class=\"pad-s\">\n    <div class=\"color-panel\">\n      @for (id of getColorIds(); track $index) {\n        <div\n          class=\"color-button\"\n          (click)=\"runControl(id)\"\n          [ngStyle]=\"{ backgroundColor: getColorValue(id) }\"\n        ></div>\n      }\n    </div>\n  </div>\n  <div class=\"pad-s\">\n    <hr class=\"custom-color-separator\" />\n  </div>\n  <div class=\"pad-s\">\n    <div class=\"color-panel\">\n      @for (id of getCustomColorIds(); track $index) {\n        <div\n          class=\"color-button\"\n          (click)=\"runControl(id)\"\n          [ngStyle]=\"{ backgroundColor: getColorValue(id) }\"\n        ></div>\n      }\n    </div>\n  </div>\n  <div class=\"pad-s\">\n    <div class=\"custom-color-picker\">\n      <div class=\"custom-color-combo\">\n        <input\n          #colorPicker\n          [value]=\"getSelectedColor()\"\n          type=\"color\"\n          (input)=\"onSelectCustomColor()\"\n        />\n        <span>▼</span>\n      </div>\n      <button\n        class=\"custom-color-button\"\n        [ngStyle]=\"{\n          backgroundColor: isColorPickerVisible()\n            ? 'var(--highlight-color)'\n            : 'var(--context-menu-color)'\n        }\"\n        (click)=\"addCustomColor()\"\n      >\n        +\n      </button>\n    </div>\n  </div>\n</fit-popup-menu>\n","import { Component, input } from '@angular/core';\nimport { NgFor } from '@angular/common';\n\nimport { Control, PopupControl, Window } from 'fittable-core/view-model';\n\nimport { ButtonComponent } from '../button/button.component';\nimport { PopupMenuComponent } from '../popup-menu/popup-menu.component';\n\n@Component({\n  selector: 'fit-popup-button',\n  standalone: true,\n  imports: [NgFor, ButtonComponent, PopupMenuComponent],\n  templateUrl: './popup-button.component.html',\n  styleUrls: ['./popup-button.component.scss'],\n})\nexport class PopupButtonComponent {\n  model = input.required<PopupControl>();\n\n  getWindow(): Window {\n    return this.model().getWindow();\n  }\n\n  getControlIds(): string[] {\n    return this.getWindow().getControlIds();\n  }\n\n  getControl(id: string): Control {\n    return this.getWindow().getControl(id);\n  }\n}\n","<fit-button [model]=\"model()\" />\n<fit-popup-menu [model]=\"getWindow()\">\n  <div class=\"button-bar\">\n    @for (id of getControlIds(); track $index) {\n      <fit-button [model]=\"getControl(id)\" />\n    }\n  </div>\n</fit-popup-menu>\n","import { Subscription } from 'rxjs';\nimport {\n  Component,\n  OnDestroy,\n  AfterViewInit,\n  input,\n  output,\n} from '@angular/core';\nimport { NgFor, NgStyle } from '@angular/common';\n\nimport {\n  PopupControl,\n  Control,\n  ValueControl,\n  asValueControl,\n  Window,\n} from 'fittable-core/view-model';\n\nimport { ButtonComponent } from '../../button/button.component';\nimport { PopupMenuComponent } from '../../popup-menu/popup-menu.component';\n\n@Component({\n  selector: 'fit-border-type',\n  standalone: true,\n  imports: [NgFor, NgStyle, ButtonComponent, PopupMenuComponent],\n  templateUrl: './border-type.component.html',\n  styleUrls: ['../../common/scss/utils.scss', './border-type.component.scss'],\n})\nexport class BorderTypeComponent implements AfterViewInit, OnDestroy {\n  model = input.required<PopupControl>();\n  isVisibleEvent = output<boolean>();\n\n  private readonly subscriptions: Subscription[] = [];\n\n  ngAfterViewInit(): void {\n    this.subscriptions.push(this.onWindowSetVisible$());\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.forEach((s: Subscription): void => s.unsubscribe());\n  }\n\n  getWindow(): Window {\n    return this.model().getWindow();\n  }\n\n  getControlIds(): string[] {\n    return this.getWindow().getControlIds();\n  }\n\n  runControl(id: string): void {\n    this.getWindow().getControl(id).run();\n  }\n\n  getBorderStyle(id: string): { borderBottom: string } {\n    const control: Control = this.model().getWindow().getControl(id);\n    const valueControl: ValueControl | undefined = asValueControl(control);\n    if (!valueControl) throw new Error('Invalid value control for id ' + id);\n    const parts: string[] = (valueControl.getValue() as string).split(' ');\n    return {\n      borderBottom: parts[1] + 'px ' + parts[0] + ' var(--toolbar-color)',\n    };\n  }\n\n  private onWindowSetVisible$(): Subscription {\n    return this.getWindow()\n      .onAfterSetFocus$()\n      .subscribe((focus: boolean) => {\n        this.isVisibleEvent.emit(focus);\n      });\n  }\n}\n","<fit-button [model]=\"model()\" />\n<fit-popup-menu [model]=\"getWindow()\">\n  <div class=\"pad-s\">\n    @for (id of getControlIds(); track $index) {\n      <hr [ngStyle]=\"getBorderStyle(id)\" (click)=\"runControl(id)\" />\n    }\n  </div>\n</fit-popup-menu>\n","import { Component, input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport {\n  PopupControl,\n  Window,\n  Control,\n  asPopupControl,\n} from 'fittable-core/view-model';\n\nimport { ControlType } from '../common/control-type.model';\nimport { ButtonComponent } from '../button/button.component';\nimport { PopupMenuComponent } from '../popup-menu/popup-menu.component';\nimport { ColorPickerComponent } from '../color-picker/color-picker.component';\n\nimport { BorderTypeComponent } from './border-type/border-type.component';\n\n@Component({\n  selector: 'fit-border-popup',\n  standalone: true,\n  imports: [\n    CommonModule,\n    ButtonComponent,\n    PopupMenuComponent,\n    BorderTypeComponent,\n    ColorPickerComponent,\n  ],\n  templateUrl: './border-popup.component.html',\n  styleUrls: ['../common/scss/utils.scss', './border-popup.component.scss'],\n})\nexport class BorderPopupComponent {\n  model = input.required<PopupControl>();\n\n  protected isColorPickerVisible = signal(false);\n  protected isBorderTypeVisible = signal(false);\n\n  getWindow(): Window {\n    return this.model().getWindow();\n  }\n\n  getLeftPanelIDs(): string[] {\n    return this.getWindow()\n      .getControlIds()\n      .slice(0, this.getFirstSepartorIndex());\n  }\n\n  getRightPanelIDs(): string[] {\n    return this.getWindow()\n      .getControlIds()\n      .slice(this.getFirstSepartorIndex() + 1);\n  }\n\n  getControl(id: string): Control {\n    return this.getWindow().getControl(id);\n  }\n\n  getPopupControl(id: string): PopupControl {\n    const popupControl: PopupControl | undefined = asPopupControl(this.getControl(id));\n    if (popupControl) return popupControl;\n    else throw Error(`Invalid popup control for id: ${id}`);\n  }\n\n  getControlType(id: string): ControlType {\n    return this.getControl(id).getType() as ControlType;\n  }\n\n  getFirstSepartorIndex(): number {\n    const ids: (string | number)[] = this.getWindow().getControlIds();\n    for (let i = 0; i < ids.length; i++) {\n      if (this.getControlType('' + ids[i]) === 'separator') return i;\n    }\n    return 0;\n  }\n}\n","<fit-button [model]=\"model()\" />\n<fit-popup-menu\n  [model]=\"getWindow()\"\n  [stopCloseMenu]=\"isColorPickerVisible() || isBorderTypeVisible()\"\n>\n  <div class=\"pad-s\">\n    <div class=\"grid-2col\">\n      @for (id of getLeftPanelIDs(); track $index) {\n        @if (getControlType(id) === \"popup-button\") {\n          <fit-border-type\n            [model]=\"getPopupControl(id)\"\n            (isVisibleEvent)=\"isBorderTypeVisible.set($event)\"\n          />\n        } @else if (getControlType(id) === \"color-picker\") {\n          <fit-color-picker\n            [model]=\"getPopupControl(id)\"\n            (isVisibleEvent)=\"isColorPickerVisible.set($event)\"\n          />\n        }\n      }\n    </div>\n    <hr class=\"sep-v\" />\n    <div class=\"grid-2col\">\n      @for (id of getRightPanelIDs(); track $index) {\n        <fit-button [model]=\"getControl(id)\" />\n      }\n    </div>\n  </div>\n</fit-popup-menu>\n","import { Component, input } from '@angular/core';\n\nimport { PopupControl, Window } from 'fittable-core/view-model';\n\nimport { ButtonComponent } from '../button/button.component';\nimport { ContextMenuComponent } from './context-menu.component';\n\n@Component({\n  selector: 'fit-context-menu-button',\n  standalone: true,\n  imports: [ButtonComponent, ContextMenuComponent],\n  template: `\n    <fit-button [model]=\"model()\"></fit-button>\n    <fit-context-menu [model]=\"getWindow()\" [top]=\"'2rem'\"></fit-context-menu>\n  `,\n  styles: [\n    `\n      :host {\n        position: relative;\n      }\n    `,\n  ],\n})\nexport class ContextMenuButtonComponent {\n  model = input.required<PopupControl>();\n\n  getWindow(): Window {\n    return this.model().getWindow();\n  }\n}\n","import { Component, input } from '@angular/core';\nimport {\n  NgFor,\n  NgSwitch,\n  NgSwitchCase,\n  NgSwitchDefault,\n} from '@angular/common';\n\nimport { CssStyle, CssValue, Value } from 'fittable-core/model';\nimport {\n  Container,\n  Control,\n  InputControl,\n  asInputControl,\n  PopupControl,\n  asPopupControl,\n  ValueControl,\n  asValueControl,\n} from 'fittable-core/view-model';\n\nimport { ControlType } from '../common/control-type.model';\nimport { ButtonComponent } from '../button/button.component';\nimport { ComboComponent } from '../combo/combo.component';\nimport { InputComponent } from '../input/input.component';\nimport { ColorPickerComponent } from '../color-picker/color-picker.component';\nimport { PopupButtonComponent } from '../popup-button/popup-button.component';\nimport { BorderPopupComponent } from '../border-popup/border-popup.component';\nimport { ContextMenuComponent } from '../context-menu/context-menu.component';\nimport { ContextMenuButtonComponent } from '../context-menu/context-menu-button.component';\n\n@Component({\n  selector: 'fit-toolbar',\n  standalone: true,\n  imports: [\n    NgFor,\n    NgSwitch,\n    NgSwitchCase,\n    NgSwitchDefault,\n    ButtonComponent,\n    ComboComponent,\n    InputComponent,\n    ColorPickerComponent,\n    PopupButtonComponent,\n    BorderPopupComponent,\n    ContextMenuComponent,\n    ContextMenuButtonComponent,\n  ],\n  templateUrl: './toolbar.component.html',\n  styleUrl: './toolbar.component.scss',\n})\nexport class ToolbarComponent {\n  model = input.required<Container>();\n\n  getControlIDs(): string[] {\n    return this.model().getControlIds();\n  }\n\n  getControlType(id: string): ControlType {\n    return this.getControl(id).getType() as ControlType;\n  }\n\n  getControl(id: string): Control {\n    return this.model().getControl(id);\n  }\n\n  getInputControl(id: string): InputControl {\n    const input: InputControl | undefined = asInputControl(this.getControl(id));\n    if (input) return input;\n    else throw new Error('Invalid input control for id ' + id);\n  }\n\n  getPopupControl(id: string): PopupControl {\n    const control: Control = this.getControl(id);\n    const popup: PopupControl | undefined = asPopupControl(control);\n    if (popup) return popup;\n    else throw new Error('Invalid popup control for id ' + id);\n  }\n\n  getComboControlStyle(control: Control): CssStyle | null {\n    const valueControl: ValueControl | undefined = asValueControl(control);\n    if (!valueControl) throw new Error('Invalid valud control');\n    const value: Value | undefined = valueControl.getValue();\n    if (value) return { fontFamily: value as CssValue };\n    else return null;\n  }\n}\n","<div class=\"toolbar\">\n  @for (id of getControlIDs(); track $index) {\n    @switch (getControlType(id)) {\n      @case (\"button\") {\n        <fit-button [model]=\"getControl(id)\" />\n      }\n      @case (\"combo\") {\n        <fit-combo\n          [model]=\"getPopupControl(id)\"\n          [controlStyle]=\"getComboControlStyle\"\n        />\n      }\n      @case (\"input\") {\n        <fit-input [model]=\"getInputControl(id)\" />\n      }\n      @case (\"color-picker\") {\n        <fit-color-picker [model]=\"getPopupControl(id)\" />\n      }\n      @case (\"popup-button\") {\n        <fit-popup-button [model]=\"getPopupControl(id)\" />\n      }\n      @case (\"border-popup-button\") {\n        <fit-border-popup [model]=\"getPopupControl(id)\" />\n      }\n      @case (\"context-menu-button\") {\n        <fit-context-menu-button [model]=\"getPopupControl(id)\" />\n      }\n      @case (\"separator\") {\n        <div class=\"separator\">&nbsp;</div>\n      }\n      @default {\n        <div>Unknown control type for ID: {{ id }}</div>\n      }\n    }\n  }\n</div>\n","import { InputSignal } from '@angular/core';\nimport { RangeIterator } from 'fittable-core/common';\nimport { CssStyle, Value } from 'fittable-core/model';\nimport {\n  ViewModel,\n  getViewModelConfig,\n  createWindowListener,\n} from 'fittable-core/view-model';\n\nexport abstract class TableCommon {\n  protected abstract viewModel: InputSignal<ViewModel>;\n\n  hasColHeader(): boolean {\n    return this.viewModel().tableViewer.hasColHeader();\n  }\n\n  getColLabel(colId: number): string | number | undefined {\n    const labelFn: ((colId: number) => string | number) | undefined =\n      getViewModelConfig().colHeaderTextFn;\n    return labelFn && labelFn(colId);\n  }\n\n  getRowLabel(rowId: number): string | number | undefined {\n    const labelFn: ((rowId: number) => string | number) | undefined =\n      getViewModelConfig().rowHeaderTextFn;\n    return labelFn && labelFn(rowId);\n  }\n\n  hasRowHeader(): boolean {\n    return this.viewModel().tableViewer.hasRowHeader();\n  }\n\n  getCellStyle = (rowId: number, colId: number): CssStyle | null => {\n    return (\n      this.viewModel().tableViewer.getCellStyle(rowId, colId)?.toCss() ?? null\n    );\n  };\n\n  getCellValue(rowId: number, colId: number): Value | undefined {\n    return this.viewModel().tableViewer.getCellValue(rowId, colId);\n  }\n\n  getFormatedCellValue(rowId: number, colId: number): Value | undefined {\n    return this.viewModel().tableViewer.getFormatedCellValue(rowId, colId);\n  }\n\n  isHiddenCell(rowId: number, colId: number): boolean {\n    return this.viewModel().tableViewer.isHiddenCell(rowId, colId);\n  }\n\n  getRowSpan(rowId: number, colId: number): number {\n    return this.viewModel().tableViewer.getRowSpan(rowId, colId);\n  }\n\n  getColSpan(rowId: number, colId: number) {\n    return this.viewModel().tableViewer.getColSpan(rowId, colId);\n  }\n\n  getRowIds(): RangeIterator {\n    return this.viewModel().tableScrollContainer.getRenderableRows();\n  }\n\n  getColIds(): RangeIterator {\n    return this.viewModel().tableScrollContainer.getRenderableCols();\n  }\n\n  getColWidth(colId: number): number {\n    return this.viewModel().tableViewer.getColWidth(colId);\n  }\n\n  getRowHeight(rowId: number): number {\n    return this.viewModel().tableViewer.getRowHeight(rowId);\n  }\n\n  showContextMenu(event: MouseEvent): void {\n    const contextMenu = this.viewModel().contextMenu;\n    return contextMenu && createWindowListener(contextMenu).onShow(event);\n  }\n\n  getScrollLeft(): number {\n    return this.viewModel().tableScrollContainer.getScroller().getLeft();\n  }\n\n  getScrollTop(): number {\n    return this.viewModel().tableScrollContainer.getScroller().getTop();\n  }\n\n  getOffsetX(): number {\n    return this.viewModel().tableScrollContainer.getInnerOffsetX();\n  }\n\n  getOffsetY(): number {\n    return this.viewModel().tableScrollContainer.getInnerOffsetY();\n  }\n\n  getRowHeaderWidth(): number {\n    return this.viewModel().tableViewer.getRowHeaderWidth();\n  }\n\n  getColHeaderHeight(): number {\n    return this.viewModel().tableViewer.getColHeaderHeight();\n  }\n\n  getBodyHeight(): number {\n    return this.viewModel().tableViewer.getBodyHeight();\n  }\n\n  getBodyWidth(): number {\n    return this.viewModel().tableViewer.getBodyWidth();\n  }\n\n  getBodyOffset(): CssStyle {\n    return this.viewModel().mobileLayout.bodyOffset;\n  }\n\n  getRowHeaderOffset(): CssStyle {\n    return this.viewModel().mobileLayout.rowHeaderOffset;\n  }\n\n  getColHeaderOffset(): CssStyle {\n    return this.viewModel().mobileLayout.colHeaderOffset;\n  }\n}\n","import { Directive, HostListener, input } from '@angular/core';\n\nimport {\n  CellSelectionListener,\n  CellSelectionRanges,\n} from 'fittable-core/view-model';\n\n@Directive({ selector: '[fitCellSelection]', standalone: true })\nexport class CellSelectionDirective {\n  cellSelectionListener = input<CellSelectionListener>();\n  cellSelectionRanges = input<CellSelectionRanges>();\n\n  @HostListener('mousedown', ['$event']) onMouseDown(event: MouseEvent): void {\n    this.cellSelectionListener()?.setCellSelectionRanges(this.getCellSelectionRanges())\n      .onMouseDown(event);\n  }\n\n  @HostListener('mousemove', ['$event']) onMouseMove(event: MouseEvent): void {\n    this.cellSelectionListener()?.setCellSelectionRanges(this.getCellSelectionRanges())\n      .onMouseMove(event);\n  }\n\n  @HostListener('mouseleave') onMouseLeave(): void {\n    this.cellSelectionListener()?.setCellSelectionRanges(this.getCellSelectionRanges())\n      .onMouseLeave();\n  }\n\n  @HostListener('mouseenter') onMouseEnter(): void {\n    this.cellSelectionListener()?.setCellSelectionRanges(this.getCellSelectionRanges())\n      .onMouseEnter();\n  }\n\n  @HostListener('window:mousedown') onGlobalMouseDown(): void {\n    this.cellSelectionListener()?.setCellSelectionRanges(this.getCellSelectionRanges())\n      .onGlobalMouseDown();\n  }\n\n  @HostListener('window:mouseup', ['$event']) onGlobalMouseUp(\n    event: MouseEvent\n  ): void {\n    this.cellSelectionListener()?.setCellSelectionRanges(this.getCellSelectionRanges())\n      .onGlobalMouseUp(event);\n  }\n\n  @HostListener('window:keydown', ['$event']) onGlobalKeyDown(\n    event: KeyboardEvent\n  ): void {\n    this.cellSelectionListener()?.setCellSelectionRanges(this.getCellSelectionRanges())\n      .onGlobalKeyDown(event);\n  }\n\n  private getCellSelectionRanges(): CellSelectionRanges {\n    const cellSelectionRanges = this.cellSelectionRanges();\n    if (cellSelectionRanges) return cellSelectionRanges;\n    else throw new Error('Cell selection ranges is not defined!');\n  }\n}\n","import { Component, input } from '@angular/core';\nimport { NgFor, NgIf, NgStyle } from '@angular/common';\n\nimport { CssStyle } from 'fittable-core/model';\nimport {\n  ViewModel,\n  CellSelectionRanges,\n  CellSelectionListener,\n} from 'fittable-core/view-model';\n\nimport { TableCommon } from '../common/table-common.model';\nimport { CellSelectionDirective } from '../common/cell-selection.directive';\n\n@Component({\n  selector: 'fit-table-left-top-corner',\n  standalone: true,\n  imports: [NgStyle, NgIf, NgFor, CellSelectionDirective],\n  templateUrl: './table-left-top-corner.component.html',\n  styleUrls: [\n    '../common/scss/table.scss',\n    '../common/scss/table-header.scss',\n    './table-left-top-corner.component.scss',\n  ],\n})\nexport class TableLeftTopCornerComponent extends TableCommon {\n  viewModel = input.required<ViewModel>();\n  cellSelectionListener = input<CellSelectionListener>();\n\n  getCellSelectionRanges(): CellSelectionRanges | undefined {\n    return this.viewModel().cellSelection?.pageHeader;\n  }\n\n  getCellSelectionRectangles(): CssStyle[] {\n    return this.viewModel().mobileLayout.pageHeaderSelectionRectangles;\n  }\n}\n","@if (hasRowHeader() && hasColHeader()) {\n  <div\n    class=\"full-size-container\"\n    [ngStyle]=\"{\n      'width.px': getRowHeaderWidth(),\n      'height.px': getColHeaderHeight() + 1\n    }\"\n  >\n    <div class=\"offset-container\">\n      <table class=\"table\">\n        <colgroup>\n          <col [ngStyle]=\"{ 'width.px': getRowHeaderWidth() }\" />\n        </colgroup>\n        <thead\n          fitCellSelection\n          [cellSelectionListener]=\"cellSelectionListener()\"\n          [cellSelectionRanges]=\"getCellSelectionRanges()\"\n        >\n          <tr\n            class=\"header-row\"\n            [ngStyle]=\"{ 'height.px': getColHeaderHeight() }\"\n          >\n            <th class=\"header-cell\" [attr.rowId]=\"0\" [attr.colId]=\"0\">\n              &nbsp;\n            </th>\n          </tr>\n        </thead>\n      </table>\n    </div>\n  </div>\n  @for (rect of getCellSelectionRectangles(); track $index) {\n    <div class=\"header-cell-selection\" [ngStyle]=\"rect\"></div>\n  }\n}\n","import {\n  Directive,\n  OnInit,\n  ElementRef,\n  HostListener,\n  input,\n} from '@angular/core';\n\nimport {\n  ScrollContainerListener,\n  ScrollContainer,\n  createScrollContainerListener,\n} from 'fittable-core/view-model';\n\n@Directive({ selector: '[fitScrollContainer]', standalone: true })\nexport class ScrollContainerDirective implements OnInit {\n  scrollContainer = input.required<ScrollContainer>();\n\n  private scrollContainerListener!: ScrollContainerListener;\n\n  constructor(private readonly divRef: ElementRef) { }\n\n  ngOnInit(): void {\n    this.scrollContainerListener = createScrollContainerListener(\n      this.divRef.nativeElement,\n      this.scrollContainer()\n    );\n  }\n\n  @HostListener('scroll', ['$event'])\n  public onScroll(event: Event): void {\n    this.scrollContainerListener.onScroll(event);\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  HostListener,\n  OnInit,\n  input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { RangeIterator } from 'fittable-core/common';\nimport { CssStyle } from 'fittable-core/model';\nimport {\n  PopupControl,\n  ColFilters,\n  WindowListener,\n  Control,\n  asPopupControl,\n  ToggleControl,\n  Container,\n  InputControl,\n  asInputControl,\n  Window,\n  ScrollContainer,\n  asToggleControl,\n  createWindowListener,\n} from 'fittable-core/view-model';\n\nimport { createWindowStyle } from '../common/style-functions.model';\nimport { ScrollContainerDirective } from '../common/scroll-container.directive';\nimport { SvgImgComponent } from '../svg-img/svg-img.component';\n\n@Component({\n  selector: 'fit-filter-popup-button',\n  standalone: true,\n  imports: [CommonModule, SvgImgComponent],\n  template: `\n    <button\n      class=\"popup-button\"\n      [ngClass]=\"{ 'is-on': isOn() }\"\n      [title]=\"getLabel()\"\n    >\n      <fit-svg-img [content]=\"getIcon()\" />\n    </button>\n  `,\n  styleUrls: ['./filter-popup-window.component.scss'],\n})\nexport class FilterPopupButtonComponent implements OnInit {\n  colFilters = input.required<ColFilters>();\n  colId = input.required<number>();\n\n  private windowListener!: WindowListener;\n\n  ngOnInit(): void {\n    this.windowListener = //\n      createWindowListener(this.getPopupButton().getWindow());\n  }\n\n  @HostListener('click', ['$event']) onMouseDown(event: MouseEvent): void {\n    this.colFilters().loadCol(this.colId());\n    this.windowListener.onShow(event);\n    setTimeout((): void => {\n      this.getPopupButton().getWindow().setFocus(true);\n      this.colFilters().getValueScrollContainer().renderModel();\n    });\n  }\n\n  getLabel(): string {\n    return this.getPopupButton().getLabel();\n  }\n\n  getIcon(): string | undefined {\n    return this.getPopupButton().getIcon();\n  }\n\n  isOn(): boolean {\n    return asToggleControl(this.getPopupButton())?.isOn() ?? false;\n  }\n\n  getPopupButton(): PopupControl {\n    return this.colFilters().getPopupButton(this.colId());\n  }\n}\n\ntype ControlId =\n  | 'search-input'\n  | 'clear-button'\n  | 'select-all-button'\n  | 'value-check-list'\n  | 'ok-button'\n  | 'cancel-button';\n\n@Component({\n  selector: 'fit-filter-popup-window',\n  standalone: true,\n  imports: [CommonModule, ScrollContainerDirective, SvgImgComponent],\n  templateUrl: './filter-popup-window.component.html',\n  styleUrls: ['./filter-popup-window.component.scss'],\n})\nexport class FilterPopupWindowComponent implements AfterViewInit {\n  colFilters = input.required<ColFilters>();\n\n  private windowListener!: WindowListener;\n\n  ngAfterViewInit(): void {\n    this.windowListener = //\n      createWindowListener(this.getPopupButton().getWindow());\n  }\n\n  @HostListener('mousedown', ['$event']) onMouseDown(event: MouseEvent): void {\n    this.windowListener.onMouseDown(event);\n  }\n\n  @HostListener('window:mousedown') onGlobalMouseDown(): void {\n    this.windowListener.onGlobalMouseDown();\n  }\n\n  getWindowStyle(): CssStyle {\n    return createWindowStyle(this.getPopupWindow());\n  }\n\n  getSearchInput(): InputControl {\n    const controlId: ControlId = 'search-input';\n    const control: Control = this.getPopupWindow().getControl(controlId);\n    const input: InputControl | undefined = asInputControl(control);\n    if (input) return input;\n    else throw new Error('Search input control was not found!');\n  }\n\n  getSearchInputIcon(): string | undefined {\n    return this.getSearchInput().getIcon();\n  }\n\n  onSearchInput(event: Event): void {\n    const input: HTMLInputElement = event.target as HTMLInputElement;\n    this.getSearchInput().setValue(input.value).run();\n  }\n\n  getScrollContainer(): ScrollContainer {\n    return this.colFilters().getValueScrollContainer();\n  }\n\n  getScrollOffsetY(): number {\n    return this.getScrollContainer().getInnerOffsetY();\n  }\n\n  getCheckListHeight(): number {\n    return this.getCheckBoxContainer().getControlIds().length * 20;\n  }\n\n  hasCheckList(): boolean {\n    return this.getCheckBoxContainer().getControlIds().length > 0;\n  }\n\n  getCheckBoxIds(): RangeIterator {\n    return this.getScrollContainer().getRenderableRows();\n  }\n\n  getCheckBox(id: number): ToggleControl {\n    const control: Control | undefined = //\n      this.getCheckBoxContainer().getControl('' + id);\n    const checkBox: ToggleControl | undefined = asToggleControl(control);\n    if (checkBox) return checkBox;\n    else throw new Error('Invalid check box control');\n  }\n\n  onCheckBoxClick(id: number): void {\n    const checkBox: ToggleControl = this.getCheckBox(id);\n    checkBox.setOn(!checkBox.isOn());\n  }\n\n  getSelectAllButton(): Control {\n    const controlId: ControlId = 'select-all-button';\n    return this.getPopupWindow().getControl(controlId);\n  }\n\n  getClearButton(): Control {\n    const controlId: ControlId = 'clear-button';\n    return this.getPopupWindow().getControl(controlId);\n  }\n\n  getOkButton(): Control {\n    const controlId: ControlId = 'ok-button';\n    return this.getPopupWindow().getControl(controlId);\n  }\n\n  getCancelButton(): Control {\n    const controlId: ControlId = 'cancel-button';\n    return this.getPopupWindow().getControl(controlId);\n  }\n\n  private getCheckBoxContainer(): Container {\n    const controlId: ControlId = 'value-check-list';\n    const control: Control = this.getPopupWindow().getControl(controlId);\n    const popup: PopupControl | undefined = asPopupControl(control);\n    if (popup) return popup.getWindow();\n    else throw new Error('Invalid value check list control');\n  }\n\n  private getPopupWindow(): Window {\n    return this.getPopupButton().getWindow();\n  }\n\n  private getPopupButton(): PopupControl {\n    return this.colFilters().getPopupButton(0);\n  }\n}\n","<div class=\"popup-window\" [ngStyle]=\"getWindowStyle()\">\n  <div class=\"search-label\">{{ getSearchInput().getLabel() }}</div>\n  <div class=\"search-input\">\n    <input\n      [value]=\"getSearchInput().getValue() ?? ''\"\n      (input)=\"onSearchInput($event)\"\n    />\n    <fit-svg-img [content]=\"getSearchInputIcon()\" />\n  </div>\n  <div class=\"right-aligned-bar\">\n    <button class=\"select-button\" (click)=\"getClearButton().run()\">\n      {{ getClearButton().getLabel() }}\n    </button>\n    <button class=\"select-button\" (click)=\"getSelectAllButton().run()\">\n      {{ getSelectAllButton().getLabel() }}\n    </button>\n  </div>\n  <div\n    class=\"scroll-container\"\n    fitScrollContainer\n    [scrollContainer]=\"getScrollContainer()\"\n  >\n    @if (hasCheckList()) {\n      <div\n        class=\"full-size-container\"\n        [ngStyle]=\"{ width: '100%', 'height.px': getCheckListHeight() }\"\n      >\n        <div\n          class=\"mobile-container\"\n          [ngStyle]=\"{\n            transform: 'translate3d(0px,' + getScrollOffsetY() + 'px,0px)'\n          }\"\n        >\n          @for (id of getCheckBoxIds(); track $index) {\n            <div class=\"check-item\" (click)=\"onCheckBoxClick(id)\">\n              <input\n                type=\"checkbox\"\n                [id]=\"id\"\n                [checked]=\"getCheckBox(id).isOn() ? 'checked' : undefined\"\n              />\n              <label [for]=\"id\" (click)=\"onCheckBoxClick(id)\">{{\n                getCheckBox(id).getLabel()\n              }}</label>\n            </div>\n          }\n        </div>\n      </div>\n    }\n  </div>\n  <div class=\"center-aligned-bar\">\n    <button class=\"action-button\" (click)=\"getOkButton().run()\">\n      {{ getOkButton().getLabel() }}\n    </button>\n    <button class=\"action-button\" (click)=\"getCancelButton().run()\">\n      {{ getCancelButton().getLabel() }}\n    </button>\n  </div>\n</div>\n","import { Component, ElementRef, ViewChild, input } from '@angular/core';\nimport { NgFor, NgIf, NgStyle } from '@angular/common';\n\nimport { CssStyle, getModelConfig } from 'fittable-core/model';\nimport {\n  ViewModel,\n  CellSelectionRanges,\n  ColFilters,\n  CellSelectionListener,\n} from 'fittable-core/view-model';\n\nimport { TableCommon } from '../common/table-common.model';\nimport { CellSelectionDirective } from '../common/cell-selection.directive';\nimport {\n  FilterPopupButtonComponent,\n  FilterPopupWindowComponent,\n} from '../../controls-view/filter-popup/filter-popup.component';\n\n@Component({\n  selector: 'fit-table-top',\n  standalone: true,\n  imports: [\n    NgStyle,\n    NgFor,\n    NgIf,\n    CellSelectionDirective,\n    FilterPopupButtonComponent,\n    FilterPopupWindowComponent,\n  ],\n  templateUrl: './table-top.component.html',\n  styleUrls: [\n    '../common/scss/table.scss',\n    '../common/scss/table-header.scss',\n    './table-top.component.scss',\n  ],\n})\nexport class TableTopComponent extends TableCommon {\n  override viewModel = input.required<ViewModel>();\n  cellSelectionListener = input<CellSelectionListener>();\n\n  @ViewChild('scroller') scrollerRef?: ElementRef;\n\n  getCellSelectionRanges(): CellSelectionRanges | undefined {\n    return this.viewModel().cellSelection?.colHeader;\n  }\n\n  getCellSelectionRectangles(): CssStyle[] {\n    return this.viewModel().mobileLayout.colHeaderSelectionRectangles;\n  }\n\n  hasColFilters(): boolean {\n    return (\n      getModelConfig().colFilterExecutorFactory !== undefined &&\n      this.viewModel().colFilters !== undefined\n    );\n  }\n\n  getColFilters(): ColFilters {\n    const colFilters = this.viewModel().colFilters;\n    if (colFilters) return colFilters;\n    else throw new Error('Column filters are not defined!');\n  }\n}\n","@if (hasColHeader()) {\n  <div class=\"scroll-container\" #scroller>\n    <div\n      class=\"full-size-container\"\n      [ngStyle]=\"{\n        'width.px': getBodyWidth(),\n        'height.px': getColHeaderHeight() + 1\n      }\"\n    >\n      <div class=\"offset-container\" [ngStyle]=\"getColHeaderOffset()\">\n        <table class=\"table\">\n          <colgroup>\n            @for (colId of getColIds(); track $index) {\n              <col [ngStyle]=\"{ 'width.px': getColWidth(colId) }\" />\n            }\n          </colgroup>\n          <thead\n            (contextmenu)=\"showContextMenu($event)\"\n            fitCellSelection\n            [cellSelectionListener]=\"cellSelectionListener()\"\n            [cellSelectionRanges]=\"getCellSelectionRanges()\"\n          >\n            <tr\n              class=\"header-row\"\n              [ngStyle]=\"{ 'height.px': getColHeaderHeight() }\"\n            >\n              @for (colId of getColIds(); track $index) {\n                <th class=\"header-cell\" [attr.rowId]=\"0\" [attr.colId]=\"colId\">\n                  {{ getColLabel(colId) }}\n                  @if (hasColFilters()) {\n                    <fit-filter-popup-button\n                      [colFilters]=\"getColFilters()\"\n                      [colId]=\"colId\"\n                    />\n                  }\n                </th>\n              }\n            </tr>\n          </thead>\n        </table>\n      </div>\n    </div>\n    @for (rect of getCellSelectionRectangles(); track $index) {\n      <div class=\"header-cell-selection\" [ngStyle]=\"rect\"></div>\n    }\n    @if (hasColFilters()) {\n      <fit-filter-popup-window [colFilters]=\"getColFilters()\" />\n    }\n  </div>\n}\n","import { Component, ElementRef, ViewChild, input } from '@angular/core';\nimport { NgFor, NgIf, NgStyle } from '@angular/common';\n\nimport { CssStyle } from 'fittable-core/model';\nimport {\n  ViewModel,\n  CellSelectionRanges,\n  CellSelectionListener,\n} from 'fittable-core/view-model';\n\nimport { TableCommon } from '../common/table-common.model';\nimport { CellSelectionDirective } from '../common/cell-selection.directive';\n\n@Component({\n  selector: 'fit-table-left',\n  standalone: true,\n  imports: [NgStyle, NgFor, NgIf, CellSelectionDirective],\n  templateUrl: './table-left.component.html',\n  styleUrls: [\n    '../common/scss/table.scss',\n    '../common/scss/table-header.scss',\n    './table-left.component.scss',\n  ],\n})\nexport class TableLeftComponent extends TableCommon {\n  override viewModel = input.required<ViewModel>();\n  cellSelectionListener = input<CellSelectionListener>();\n\n  @ViewChild('scroller') scrollerRef?: ElementRef;\n\n  getCellSelectionRanges(): CellSelectionRanges | undefined {\n    return this.viewModel().cellSelection?.rowHeader;\n  }\n\n  getCellSelectionRectangles(): CssStyle[] {\n    return this.viewModel().mobileLayout.rowHeaderSelectionRectangles;\n  }\n}\n","@if (hasRowHeader()) {\n  <div class=\"scroll-container\" #scroller>\n    <div\n      class=\"full-size-container\"\n      [ngStyle]=\"{\n        'width.px': getRowHeaderWidth(),\n        'height.px': getBodyHeight()\n      }\"\n    >\n      <div class=\"offset-container\" [ngStyle]=\"getRowHeaderOffset()\">\n        <table class=\"table\">\n          <colgroup>\n            <col [ngStyle]=\"{ 'width.px': getRowHeaderWidth() }\" />\n          </colgroup>\n          <tbody\n            (contextmenu)=\"showContextMenu($event)\"\n            fitCellSelection\n            [cellSelectionListener]=\"cellSelectionListener()\"\n            [cellSelectionRanges]=\"getCellSelectionRanges()\"\n          >\n            @for (rowId of getRowIds(); track $index) {\n              <tr [ngStyle]=\"{ 'height.px': getRowHeight(rowId) }\">\n                <th class=\"header-cell\" [attr.rowId]=\"rowId\" [attr.colId]=\"0\">\n                  <p class=\"cell-text\">{{ getRowLabel(rowId) }}</p>\n                </th>\n              </tr>\n            }\n          </tbody>\n        </table>\n      </div>\n    </div>\n    @for (rect of getCellSelectionRectangles(); track $index) {\n      <div class=\"header-cell-selection\" [ngStyle]=\"rect\"></div>\n    }\n  </div>\n}\n","import { Subscription } from 'rxjs';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  OnDestroy,\n  OnInit,\n  ViewChild,\n  input,\n  signal,\n} from '@angular/core';\nimport { NgStyle } from '@angular/common';\n\nimport { CssStyle, Value, CellCoord } from 'fittable-core/model';\nimport {\n  CellEditor,\n  CellEditorListener,\n  InputControl,\n  Rectangle,\n  getViewModelConfig,\n  Option,\n} from 'fittable-core/view-model';\n\n@Component({\n  selector: 'fit-cell-editor',\n  standalone: true,\n  imports: [NgStyle],\n  templateUrl: './cell-editor.component.html',\n  styleUrl: 'cell-editor.component.scss',\n})\nexport class CellEditorComponent implements OnInit, AfterViewInit, OnDestroy {\n  cellEditorListener = input.required<CellEditorListener>();\n  getCellStyle = input.required<(rowId: number, colId: number) => CssStyle | null>();\n\n  @ViewChild('textArea') textAreaRef!: ElementRef;\n  protected readonly cellEditorStyle = signal<CssStyle>({});\n  protected readonly textAreaStyle = signal<CssStyle>({});\n  private readonly subscriptions: Subscription[] = [];\n\n  ngOnInit(): void {\n    this.initCellEditor();\n    this.createCellEditorSubscriptions();\n    this.createCellEditorInputSubscriptions();\n  }\n\n  ngAfterViewInit(): void {\n    this.updateTextAreaDimensions();\n    this.updateTextAreaValue(\n      this.cellEditorListener().cellEditor.getCellControl().getValue()\n    );\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.forEach((s: Subscription): void => s.unsubscribe());\n  }\n\n  onTextAreaMouseEnter(event: MouseEvent): void {\n    this.cellEditorListener().onMouseEnter(event);\n  }\n\n  onTextAreaMouseDown(event: MouseEvent): void {\n    this.cellEditorListener().onMouseDown(event);\n  }\n\n  onGlobalMouseDown(): void {\n    this.cellEditorListener().onGlobalMouseDown();\n  }\n\n  onGlobalMouseUp(): void {\n    this.cellEditorListener().onGlobalMouseUp();\n  }\n\n  onTextAreaKeyDown(event: KeyboardEvent): void {\n    this.cellEditorListener().onKeyDown(event);\n  }\n\n  onTextAreaInput(event: Event): void {\n    this.cellEditorListener().onInput(event);\n  }\n\n  onTextAreaContextMenu(event: MouseEvent): void {\n    this.cellEditorListener().onContextMenu(event);\n  }\n\n  private initCellEditor(): void {\n    this.updateCellEditorVisibility(true);\n    this.updateCellEditorRectangle();\n    this.updateTextAreaCellStyle();\n  }\n\n  private createCellEditorSubscriptions(): void {\n    const cellEditor: CellEditor = this.cellEditorListener().cellEditor;\n    this.subscriptions.push(\n      cellEditor.onAfterSetCell$().subscribe((): void => {\n        this.updateCellEditorRectangle();\n        this.updateTextAreaCellStyle();\n        this.updateTextAreaDimensions();\n      })\n    );\n    this.subscriptions.push(\n      cellEditor.onAfterSetVisible$().subscribe((visible: boolean): void => {\n        this.updateCellEditorVisibility(visible);\n      })\n    );\n    this.subscriptions.push(\n      cellEditor\n        .onAfterSetPointerEvents$()\n        .subscribe((events: boolean): void => {\n          this.updateCellEditorPointerEvents(events);\n        })\n    );\n  }\n\n  private createCellEditorInputSubscriptions(): void {\n    const inputControl: InputControl = this.getInputControl();\n    this.subscriptions.push(\n      inputControl.onSetFocus$().subscribe((enable: boolean): void => {\n        this.focusTextArea(enable);\n      })\n    );\n    this.subscriptions.push(\n      inputControl\n        .onScrollToEnd$()\n        .subscribe((): void => this.textAreaScrollToEnd())\n    );\n    this.subscriptions.push(\n      inputControl\n        .onCtrlEnter$()\n        .subscribe((): void => this.textAreaCtrlEnter())\n    );\n    this.subscriptions.push(\n      inputControl\n        .onSetValue$()\n        .subscribe((value?: Value): void => this.updateTextAreaValue(value))\n    );\n    this.subscriptions.push(\n      inputControl.onSetTextCursor$().subscribe((cursor: boolean): void => {\n        this.updateTextAreaCaretColor(cursor);\n      })\n    );\n  }\n\n  private updateCellEditorVisibility(visible: boolean): void {\n    this.cellEditorStyle.update((style: CssStyle) => {\n      const newStyle = { ...style };\n      newStyle['display'] = visible ? 'block' : 'none';\n      return newStyle;\n    })\n  }\n\n  private updateCellEditorRectangle(): void {\n    this.cellEditorStyle.update((style: CssStyle) => {\n      const newStyle = { ...style };\n      const rect: Rectangle | undefined =\n        this.cellEditorListener().cellEditor.getCellRectangle();\n      if (rect) {\n        newStyle['left'] = rect.left + 'px';\n        newStyle['top'] = rect.top + 'px';\n        newStyle['width'] = rect.width + 'px';\n        newStyle['height'] = rect.height + 'px';\n      }\n      return newStyle;\n    });\n  }\n\n  private updateCellEditorPointerEvents(events: boolean): void {\n    this.cellEditorStyle.update((style: CssStyle) => {\n      const newStyle = { ...style };\n      newStyle['pointer-events'] = events ? 'auto' : 'none';\n      return newStyle;\n    })\n  }\n\n  private focusTextArea(enable: boolean): void {\n    const textArea: HTMLTextAreaElement = this.getTextArea();\n    if (enable) return textArea.focus({ preventScroll: true });\n    else return textArea.blur();\n  }\n\n  private updateTextAreaCaretColor(caret: boolean): void {\n    this.textAreaStyle.update((style: CssStyle) => {\n      const newStyle = { ...style };\n      newStyle['caret-color'] = caret ? 'auto' : 'transparent';\n      return newStyle;\n    })\n  }\n\n  private updateTextAreaCellStyle(): void {\n    this.textAreaStyle.update((style: CssStyle) => {\n      const newStyle = { ...style };\n      Object.keys(newStyle).forEach((value: string): void => {\n        if (value === 'caret-color') return;\n        delete newStyle[value];\n      });\n      const cellCoord: CellCoord = this.cellEditorListener().cellEditor.getCell();\n      const rowId: number = cellCoord.getRowId();\n      const colId: number = cellCoord.getColId();\n      const cellStyleFn = this.getCellStyle();\n      const cellStyle: CssStyle | null = cellStyleFn(rowId, colId);\n      if (cellStyle) {\n        for (const name of Object.keys(cellStyle)) {\n          newStyle[name] = cellStyle[name];\n        }\n      }\n      if (!newStyle['font-size.px']) {\n        newStyle['font-size.px'] = this.getTextAreaFontSize();\n      }\n      if (!newStyle['font-family']) {\n        newStyle['font-family'] = this.getTextAreaFontFamily();\n      }\n      return newStyle;\n    });\n  }\n\n  private getTextAreaFontSize(): number {\n    return getViewModelConfig().fontSize;\n  }\n\n  private getTextAreaFontFamily(): string | undefined {\n    const fonts: Option[] | undefined = getViewModelConfig().fontFamily;\n    return fonts ? fonts[0].value : undefined;\n  }\n\n  private updateTextAreaDimensions(): void {\n    const rect: Rectangle | undefined =\n      this.cellEditorListener().cellEditor.getCellRectangle();\n    if (!rect) return;\n    this.textAreaRef.nativeElement.style['min-height'] = rect.height + 'px';\n    this.textAreaRef.nativeElement.style['min-width'] = rect.width + 'px';\n    this.textAreaRef.nativeElement.style.height = rect.height + 'px';\n    this.textAreaRef.nativeElement.style.width = rect.width + 'px';\n  }\n\n  private textAreaScrollToEnd(): void {\n    const textArea: HTMLTextAreaElement = this.getTextArea();\n    textArea.scrollTop = textArea.scrollHeight;\n    textArea.scrollLeft = textArea.scrollWidth;\n  }\n\n  private textAreaCtrlEnter(): void {\n    const textArea: HTMLTextAreaElement = this.getTextArea();\n    const textCursor: number = textArea.selectionStart;\n    const start: string = textArea.value.slice(0, textCursor);\n    const end: string = textArea.value.slice(textCursor);\n    textArea.value = start + '\\n' + end;\n    textArea.selectionEnd = textCursor + 1;\n  }\n\n  private updateTextAreaValue(value?: Value): void {\n    this.getTextArea().value = value === undefined ? '' : '' + value;\n  }\n\n  private getTextArea(): HTMLTextAreaElement {\n    return this.textAreaRef.nativeElement as HTMLTextAreaElement;\n  }\n\n  private getInputControl(): InputControl {\n    return this.cellEditorListener().cellEditor.getCellControl();\n  }\n}\n","<div class=\"cell-editor\" [ngStyle]=\"cellEditorStyle()\">\n  <textarea\n    #textArea\n    [ngStyle]=\"textAreaStyle()\"\n    (mouseenter)=\"onTextAreaMouseEnter($event)\"\n    (mousedown)=\"onTextAreaMouseDown($event)\"\n    (window:mousedown)=\"onGlobalMouseDown()\"\n    (window:mouseup)=\"onGlobalMouseUp()\"\n    (keydown)=\"onTextAreaKeyDown($event)\"\n    (input)=\"onTextAreaInput($event)\"\n    (contextmenu)=\"onTextAreaContextMenu($event)\"\n  >\n  </textarea>\n</div>\n","import { Directive, HostListener, input } from '@angular/core';\n\nimport { CellEditorListener } from 'fittable-core/view-model';\n\n@Directive({ selector: '[fitCellEditorOpen]', standalone: true })\nexport class CellEditorOpenDirective {\n  cellEditorListener = input<CellEditorListener>();\n\n\n  @HostListener('mousedown', ['$event']) onMouseDown(event: MouseEvent): void {\n    this.cellEditorListener()?.onShow(event);\n  }\n}\n","import { Subscription } from 'rxjs';\nimport {\n  Component,\n  OnInit,\n  OnDestroy,\n  input,\n  output,\n  signal\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CssStyle, CellRange, DataTypeName } from 'fittable-core/model';\nimport {\n  ViewModel,\n  CellEditorListener,\n  createCellEditorListener,\n  CellSelectionRanges,\n  FitMouseEvent,\n  createWindowListener,\n  CellSelectionListener,\n  getViewModelConfig,\n  Option,\n  ScrollContainer,\n} from 'fittable-core/view-model';\n\nimport { TableCommon } from '../common/table-common.model';\nimport { ScrollContainerDirective } from '../../controls-view/common/scroll-container.directive';\nimport { CellEditorComponent } from '../../controls-view/cell-editor/cell-editor.component';\nimport { CellEditorOpenDirective } from '../../controls-view/cell-editor/cell-editor.directive';\nimport { CellSelectionDirective } from '../common/cell-selection.directive';\n\n@Component({\n  selector: 'fit-table-center',\n  standalone: true,\n  imports: [\n    CommonModule,\n    ScrollContainerDirective,\n    CellSelectionDirective,\n    CellEditorOpenDirective,\n    CellEditorComponent,\n  ],\n  templateUrl: './table-center.component.html',\n  styleUrls: ['../common/scss/table.scss', './table-center.component.scss'],\n})\nexport class TableCenterComponent\n  extends TableCommon\n  implements OnInit, OnDestroy {\n  override viewModel = input.required<ViewModel>();\n  cellSelectionListener = input<CellSelectionListener>();\n  onScroll$ = output<{ scrollLeft: number; scrollTop: number }>();\n\n  protected readonly cellEditorListener = signal<CellEditorListener | undefined>(undefined);\n  private readonly subscriptions: Set<Subscription | undefined> = new Set();\n\n  ngOnInit(): void {\n    this.cellEditorListener.set(this.createCellEditorListener());\n    this.subscriptions.add(this.openCellEditorContextMenu$());\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.forEach((s: Subscription | undefined): void =>\n      s?.unsubscribe()\n    );\n  }\n\n  onScroll(event: Event): void {\n    const scrollContainer: HTMLElement = event.target as HTMLElement;\n    this.onScroll$.emit({\n      scrollLeft: scrollContainer.scrollLeft,\n      scrollTop: scrollContainer.scrollTop,\n    });\n  }\n\n  getScrollContainer(): ScrollContainer {\n    return this.viewModel().tableScrollContainer;\n  }\n\n  getCellSelectionRanges(): CellSelectionRanges | undefined {\n    return this.viewModel().cellSelection?.body;\n  }\n\n  getSelectedCells(): CellRange[] {\n    return this.viewModel().cellSelection?.body.getRanges() ?? [];\n  }\n\n  getCellSelectionRectangles(): CssStyle[] {\n    return this.viewModel().mobileLayout.bodySelectionRectangles;\n  }\n\n  getTableFontSize(): number {\n    return getViewModelConfig().fontSize;\n  }\n\n  getTableFontFamily(): string | undefined {\n    const fonts: Option[] | undefined = getViewModelConfig().fontFamily;\n    return fonts ? fonts[0].value : undefined;\n  }\n\n  getDataTypeClass(\n    rowId: number,\n    colId: number\n  ): ' cell-align-center' | ' cell-align-right' | '' {\n    const cellType: DataTypeName = this.viewModel().tableViewer.getCellType(rowId, colId);\n    if (cellType === 'number' || cellType === 'date-time') {\n      return ' cell-align-right';\n    } else if (cellType === 'boolean') {\n      return ' cell-align-center';\n    }\n    return '';\n  }\n\n  private createCellEditorListener(): CellEditorListener | undefined {\n    const cellEditor = this.viewModel().cellEditor;\n    return cellEditor && createCellEditorListener(cellEditor, (): CellRange[] => this.viewModel().cellSelection?.body.getRanges() ?? []);\n  }\n\n  private openCellEditorContextMenu$(): Subscription | undefined {\n    const contextMenu = this.viewModel().contextMenu;\n    return contextMenu && this.cellEditorListener()?.onContextMenu$().subscribe((event: FitMouseEvent): void => {\n      this.viewModel().contextMenu && createWindowListener(contextMenu).onShow(event);\n    })\n  }\n}\n","<div\n  class=\"scroll-container\"\n  (scroll)=\"onScroll($event)\"\n  fitScrollContainer\n  [scrollContainer]=\"getScrollContainer()\"\n>\n  <div\n    class=\"full-size-container\"\n    [ngStyle]=\"{ 'width.px': getBodyWidth(), 'height.px': getBodyHeight() }\"\n  >\n    <div class=\"offset-container\" [ngStyle]=\"getBodyOffset()\">\n      <table\n        class=\"table\"\n        [ngStyle]=\"{\n          'font-size.px': getTableFontSize(),\n          'font-family': getTableFontFamily()\n        }\"\n      >\n        <colgroup>\n          @for (colId of getColIds(); track $index) {\n            <col [ngStyle]=\"{ 'width.px': getColWidth(colId) }\" />\n          }\n        </colgroup>\n        <tbody\n          (contextmenu)=\"showContextMenu($event)\"\n          fitCellEditorOpen\n          [cellEditorListener]=\"cellEditorListener()\"\n          fitCellSelection\n          [cellSelectionListener]=\"cellSelectionListener()\"\n          [cellSelectionRanges]=\"getCellSelectionRanges()\"\n        >\n          @for (rowId of getRowIds(); track $index) {\n            <tr [ngStyle]=\"{ 'height.px': getRowHeight(rowId) }\">\n              @for (colId of getColIds(); track $index) {\n                @if (!isHiddenCell(rowId, colId)) {\n                  <td\n                    [ngClass]=\"'cell' + getDataTypeClass(rowId, colId)\"\n                    [ngStyle]=\"getCellStyle(rowId, colId)\"\n                    [rowSpan]=\"getRowSpan(rowId, colId)\"\n                    [colSpan]=\"getColSpan(rowId, colId)\"\n                    [attr.rowId]=\"rowId\"\n                    [attr.colId]=\"colId\"\n                  >\n                    <!-- prettier-ignore -->\n                    <p class=\"cell-text\">{{ getFormatedCellValue(rowId, colId) }}</p>\n                  </td>\n                }\n              }\n            </tr>\n          }\n        </tbody>\n      </table>\n    </div>\n  </div>\n  @for (rect of getCellSelectionRectangles(); track $index) {\n    <div class=\"cell-selection\" [ngStyle]=\"rect\"></div>\n  }\n  @if (cellEditorListener()) {\n    <fit-cell-editor\n      [cellEditorListener]=\"cellEditorListener()!\"\n      [getCellStyle]=\"getCellStyle\"\n    />\n  }\n</div>\n","import { Component, OnInit, ViewChild, input, signal } from '@angular/core';\n\nimport { CssStyle } from 'fittable-core/model';\nimport {\n  CellSelectionListener,\n  ScrollContainer,\n  ViewModel,\n  createCellSelectionListener,\n  getViewModelConfig,\n} from 'fittable-core/view-model';\n\nimport { TableLeftTopCornerComponent } from './table-left-top-corner/table-left-top-corner.component';\nimport { TableTopComponent } from './table-top/table-top.component';\nimport { TableLeftComponent } from './table-left/table-left.component';\nimport { TableCenterComponent } from './table-center/table-center.component';\n\n@Component({\n  selector: 'fit-table',\n  standalone: true,\n  imports: [\n    TableLeftTopCornerComponent,\n    TableTopComponent,\n    TableLeftComponent,\n    TableCenterComponent,\n  ],\n  templateUrl: 'table.component.html',\n  styleUrl: './table.component.scss',\n})\nexport class TableComponent implements OnInit {\n  viewModel = input.required<ViewModel>();\n\n  @ViewChild('tableTopComponent') tableTopComponent?: TableTopComponent;\n  @ViewChild('tableLeftComponent') tableLeftComponent?: TableLeftComponent;\n  protected readonly cellSelectionListener = signal<CellSelectionListener | undefined>(undefined);\n\n  ngOnInit(): void {\n    this.cellSelectionListener.set(this.createCellSelectionListener());\n  }\n\n  onScroll(div: { scrollLeft: number; scrollTop: number }): void {\n    this.tableTopComponent?.scrollerRef?.nativeElement //\n      .scrollTo(div.scrollLeft, 0);\n    this.tableLeftComponent?.scrollerRef?.nativeElement //\n      .scrollTo(0, div.scrollTop);\n  }\n\n  getColHeaderHeight(): number {\n    return this.viewModel().tableViewer.getColHeaderHeight();\n  }\n\n  getRowHeaderWidth(): number {\n    return this.viewModel().tableViewer.getRowHeaderWidth();\n  }\n\n  getTableScrollContainer(): ScrollContainer {\n    return this.viewModel().tableScrollContainer;\n  }\n\n  getTableBodyWidth(): number {\n    return this.viewModel().tableViewer.getBodyWidth();\n  }\n\n  getTableBodyHeight(): number {\n    return this.viewModel().tableViewer.getBodyHeight();\n  }\n\n  hasRowHeader(): boolean {\n    return getViewModelConfig().rowHeaderWidth ? true : false;\n  }\n\n  hasColHeader(): boolean {\n    return getViewModelConfig().colHeaderHeight ? true : false;\n  }\n\n  getBodyOffset(): CssStyle {\n    return this.viewModel().mobileLayout.bodyOffset;\n  }\n\n  getRowHeaderOffset(): CssStyle {\n    return this.viewModel().mobileLayout.rowHeaderOffset;\n  }\n\n  getColHeaderOffset(): CssStyle {\n    return this.viewModel().mobileLayout.colHeaderOffset;\n  }\n\n  private createCellSelectionListener(): CellSelectionListener | undefined {\n    const wm: ViewModel = this.viewModel();\n    return (\n      wm.cellSelection &&\n      createCellSelectionListener(wm.cellSelection, wm.cellSelectionScroller)\n    );\n  }\n}\n","<div class=\"table\">\n  <fit-table-left-top-corner\n    [viewModel]=\"viewModel()\"\n    [cellSelectionListener]=\"cellSelectionListener()\"\n  />\n  <fit-table-top\n    #tableTopComponent\n    [viewModel]=\"viewModel()\"\n    [cellSelectionListener]=\"cellSelectionListener()\"\n  />\n  <fit-table-left\n    #tableLeftComponent\n    [viewModel]=\"viewModel()\"\n    [cellSelectionListener]=\"cellSelectionListener()\"\n  />\n  <fit-table-center\n    (onScroll$)=\"onScroll($event)\"\n    [viewModel]=\"viewModel()\"\n    [cellSelectionListener]=\"cellSelectionListener()\"\n  />\n</div>\n","import { Component, OnDestroy, input } from '@angular/core';\n\nimport { Statusbar } from 'fittable-core/view-model';\n\n@Component({\n  selector: 'fit-statusbar',\n  standalone: true,\n  template: '<div class=\"statusbar\">{{model().getText()}}</div>',\n  styleUrl: './statusbar.component.scss',\n})\nexport class StatusbarComponent implements OnDestroy {\n  model = input.required<Statusbar>();\n\n  ngOnDestroy(): void {\n    this.model().destroy();\n  }\n}\n","import { Component, ElementRef, ViewChild, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { PopupControl, Window } from 'fittable-core/view-model';\n\nimport { ContextMenuComponent } from '../../context-menu/context-menu.component';\nimport { SvgImgComponent } from '../../svg-img/svg-img.component';\n\n@Component({\n  selector: 'fit-settings-button',\n  standalone: true,\n  imports: [CommonModule, ContextMenuComponent, SvgImgComponent],\n  templateUrl: './settings-button.component.html',\n  styleUrls: ['./settings-button.component.scss'],\n})\nexport class SettingsButtonComponent {\n  model = input.required<PopupControl>();\n\n  @ViewChild('button') buttonRef?: ElementRef;\n\n  getLabel(): string {\n    return this.model().getLabel();\n  }\n\n  getIcon(): string | undefined {\n    return this.model().getIcon();\n  }\n\n  run(): void {\n    this.model().run();\n  }\n\n  getWindow(): Window {\n    return this.model().getWindow();\n  }\n}\n","<button #button [title]=\"getLabel()\" (click)=\"run()\">\n  <fit-svg-img [content]=\"getIcon()\" />\n</button>\n<fit-context-menu\n  [model]=\"getWindow()\"\n  [left]=\"'auto'\"\n  [top]=\"'1.25rem'\"\n  [right]=\"0\"\n  [iconCol]=\"'right'\"\n/>\n","import { Component, input } from '@angular/core';\nimport { NgFor } from '@angular/common';\n\nimport {\n  Container,\n  Control,\n  PopupControl,\n  asPopupControl,\n} from 'fittable-core/view-model';\n\nimport { SettingsButtonComponent } from './settings-button/settings-button.component';\n\n@Component({\n  selector: 'fit-settingsbar',\n  standalone: true,\n  imports: [NgFor, SettingsButtonComponent],\n  template: `\n    <div class=\"settings-bar\">\n      <fit-settings-button\n        *ngFor=\"let id of getControlIds()\"\n        [model]=\"getPopupControl(id)\"\n      />\n    </div>\n  `,\n  styleUrls: ['./settings-bar.component.scss'],\n})\nexport class SettingsBarComponent {\n  model = input.required<Container>();\n\n  getControlIds(): string[] {\n    return this.model().getControlIds();\n  }\n\n  getPopupControl(id: string): PopupControl {\n    const control: Control = this.model().getControl(id);\n    const popup: PopupControl | undefined = asPopupControl(control);\n    if (popup) return popup;\n    else throw new Error(`Invalid popup control for id '${id}'`);\n  }\n}\n","import { Component, OnDestroy, input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\nimport {\n  Container,\n  Window,\n  Statusbar,\n  ViewModel,\n  TableDesigner,\n  ScrollContainer,\n} from 'fittable-core/view-model';\n\nimport { ToolbarComponent } from './controls-view/toolbar/toolbar.component';\nimport { TableComponent } from './table-view/table.component';\nimport { StatusbarComponent } from './controls-view/statusbar/statusbar.component';\nimport { SettingsBarComponent } from './controls-view/settings-bar/settings-bar.component';\nimport { ContextMenuComponent } from './controls-view/context-menu/context-menu.component';\n\n@Component({\n  selector: 'fittable',\n  standalone: true,\n  imports: [\n    NgIf,\n    ToolbarComponent,\n    TableComponent,\n    StatusbarComponent,\n    SettingsBarComponent,\n    ContextMenuComponent,\n  ],\n  templateUrl: './fittable.component.html',\n  styleUrls: ['./fittable.component.scss'],\n})\nexport class FittableComponent implements OnDestroy {\n  designer = input.required<TableDesigner>();\n\n  ngOnDestroy(): void {\n    this.designer().viewModel.destroy();\n  }\n\n  getViewModel(): ViewModel {\n    return this.designer().viewModel;\n  }\n\n  getTableScrollContainer(): ScrollContainer {\n    return this.designer().viewModel.tableScrollContainer;\n  }\n\n  hasToolbar(): boolean {\n    return this.designer().viewModel.toolbar !== undefined;\n  }\n\n  getToolbar(): Container {\n    return this.designer().viewModel.toolbar as Container;\n  }\n\n  hasContextMenu(): boolean {\n    return this.designer().viewModel.contextMenu !== undefined;\n  }\n\n  getContextMenu(): Window {\n    return this.designer().viewModel.contextMenu as Window;\n  }\n\n  hasStatusbar(): boolean {\n    return this.designer().viewModel.statusbar !== undefined;\n  }\n\n  getStatusbar(): Statusbar {\n    return this.designer().viewModel.statusbar as Statusbar;\n  }\n\n  hasSettingsBar(): boolean {\n    return this.designer().viewModel.settingsBar !== undefined;\n  }\n\n  getSettingsBar(): Container {\n    return this.designer().viewModel.settingsBar as Container;\n  }\n}\n","@if (hasToolbar()) {\n  <fit-toolbar [model]=\"getToolbar()\" />\n}\n<div class=\"table-container\">\n  <fit-table [viewModel]=\"getViewModel()\" />\n</div>\n@if (hasStatusbar()) {\n  <fit-statusbar [model]=\"getStatusbar()\" />\n}\n@if (hasSettingsBar()) {\n  <fit-settingsbar [model]=\"getSettingsBar()\" />\n}\n@if (hasContextMenu()) {\n  <fit-context-menu [model]=\"getContextMenu()\" [position]=\"'fixed'\" />\n}\n","import { NgModule } from '@angular/core';\n\nimport { FittableComponent } from './fittable.component';\nimport { ToolbarComponent } from './controls-view/toolbar/toolbar.component';\nimport { SettingsBarComponent } from './controls-view/settings-bar/settings-bar.component';\nimport { StatusbarComponent } from './controls-view/statusbar/statusbar.component';\nimport { ContextMenuComponent } from './controls-view/context-menu/context-menu.component';\nimport { TableComponent } from './table-view/table.component';\n\n@NgModule({\n  imports: [\n    FittableComponent,\n    ToolbarComponent,\n    SettingsBarComponent,\n    StatusbarComponent,\n    ContextMenuComponent,\n    TableComponent,\n  ],\n  exports: [\n    FittableComponent,\n    ToolbarComponent,\n    SettingsBarComponent,\n    StatusbarComponent,\n    ContextMenuComponent,\n    TableComponent,\n  ],\n})\nexport class FittableModule {}\n","/*\n * Public API Surface of fittable-angular\n */\n\nexport * from './lib/fittable.module';\nexport * from './lib/fittable.component';\nexport * from './lib/table-view/table.component';\nexport * from './lib/controls-view/toolbar/toolbar.component';\nexport * from './lib/controls-view/statusbar/statusbar.component';\nexport * from './lib/controls-view/settings-bar/settings-bar.component';\nexport * from './lib/controls-view/context-menu/context-menu.component';\nexport * from './lib/controls-view/common/style-functions.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}