{"version":3,"file":"handsontable-angular-wrapper.mjs","sources":["../../../projects/hot-table/src/lib/editor/custom-editor-placeholder.component.ts","../../../projects/hot-table/src/lib/editor/base-editor-adapter.ts","../../../projects/hot-table/src/lib/renderer/hot-cell-renderer.component.ts","../../../projects/hot-table/src/lib/editor/hot-cell-editor.component.ts","../../../projects/hot-table/src/lib/editor/editor-factory-adapter.ts","../../../projects/hot-table/src/lib/renderer/hot-cell-renderer-advanced.component.ts","../../../projects/hot-table/src/lib/editor/hot-cell-editor-advanced.component.ts","../../../projects/hot-table/src/lib/renderer/hot-dynamic-renderer-component.service.ts","../../../projects/hot-table/src/lib/services/hot-settings-resolver.service.ts","../../../projects/hot-table/src/lib/services/hot-global-config.service.ts","../../../projects/hot-table/src/lib/hot-table.component.ts","../../../projects/hot-table/src/lib/hot-table.module.ts","../../../projects/hot-table/src/public-api.ts","../../../projects/hot-table/src/handsontable-angular-wrapper.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ComponentRef, Input, ViewChild, ViewContainerRef } from '@angular/core';\nimport { HotCellEditorComponent } from './hot-cell-editor.component';\nimport { HotCellEditorAdvancedComponent } from './hot-cell-editor-advanced.component';\n\n/**\n * Component representing a placeholder for a custom editor in Handsontable.\n * It is used only within the wrapper.\n */\n@Component({\n  template: ` <div\n    [class]=\"placeholderCustomClass\"\n    [style.display]=\"display\"\n    [style.width.px]=\"width\"\n    [style.height.px]=\"height\"\n    [style.maxWidth.px]=\"width\"\n    [style.maxHeight.px]=\"height\"\n    [style.top.px]=\"top\"\n    [style.left.px]=\"left\"\n  >\n    <ng-template #inputPlaceholder></ng-template>\n  </div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class CustomEditorPlaceholderComponent {\n  /** The top position of the editor. */\n  @Input() top: number;\n\n  /** The left position of the editor. */\n  @Input() left: number;\n\n  /** The height of the editor. */\n  @Input() height: number;\n\n  /** The width of the editor. */\n  @Input() width: number;\n\n  @Input()\n  set isVisible(value: boolean) {\n    this._isVisible = value;\n  }\n\n  @Input() placeholderCustomClass = 'handsontableInputHolder ht_clone_master';\n\n  /** The reference to the component instance of the editor. */\n  @Input() set componentRef(\n    hotEditorComponentRef: ComponentRef<HotCellEditorComponent<any>> |\n    ComponentRef<HotCellEditorAdvancedComponent<any>>) {\n    if (hotEditorComponentRef) {\n      this.container.insert(hotEditorComponentRef.hostView);\n    }\n  }\n\n  /** The container for the editor's input placeholder. */\n  @ViewChild('inputPlaceholder', { read: ViewContainerRef, static: true }) container: ViewContainerRef;\n\n  /** The display style of the editor. */\n  get display(): string {\n    return this._isVisible ? 'block' : 'none';\n  }\n\n  private _isVisible = false;\n\n  /**\n   * Detaches the container from the Handsontable.\n   */\n  detachEditor(): void {\n    this.container.detach();\n  }\n}\n","import Handsontable from 'handsontable/base';\nimport {\n  ComponentRef,\n  createComponent,\n  EnvironmentInjector,\n} from '@angular/core';\nimport { CustomEditorPlaceholderComponent } from './custom-editor-placeholder.component';\nimport { ColumnSettingsInternal } from '../models/column-settings';\nimport { HotCellEditorComponent } from './hot-cell-editor.component';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n/**\n * Adapter for BaseEditor from Handsontable.\n */\nexport class BaseEditorAdapter extends Handsontable.editors.BaseEditor {\n  /** Reference to the custom editor component. */\n  private _componentRef?: ComponentRef<HotCellEditorComponent<any>>;\n\n  /** Reference to the editor placeholder component. */\n  private _editorPlaceHolderRef: ComponentRef<CustomEditorPlaceholderComponent>;\n\n  /** Flag indicating whether the placeholder is ready. */\n  private _isPlaceholderReady = false;\n\n  /** Subscription for the finish edit event. */\n  private _finishEditSubscription?: Subscription;\n\n  /** Subscription for the cancel edit event. */\n  private _cancelEditSubscription?: Subscription;\n\n  /**\n   * Creates an instance of BaseEditorAdapter.\n   * @param instance The Handsontable instance.\n   */\n  constructor(instance: Handsontable.Core) {\n    super(instance);\n\n    this.hot.addHook('afterRowResize', this.onAfterRowResize.bind(this));\n    this.hot.addHook('afterColumnResize', this.onAfterColumnResize.bind(this));\n    this.hot.addHook('afterDestroy', this.onAfterDestroy.bind(this));\n  }\n\n  /**\n   * Prepares the editor for editing. Parameters are passed from Handsontable.\n   * @param row The row index.\n   * @param column The column index.\n   * @param prop The property name.\n   * @param TD The table cell element.\n   * @param originalValue The original value of the cell.\n   * @param cellProperties The cell properties.\n   */\n  override prepare(\n    row: number,\n    column: number,\n    prop: string | number,\n    TD: HTMLTableCellElement,\n    originalValue: any,\n    cellProperties: Handsontable.CellProperties\n  ): void {\n    if (!this.isOpened()) {\n      super.prepare(row, column, prop, TD, originalValue, cellProperties);\n      const columnMeta: ColumnSettingsInternal = this.hot.getColumnMeta(\n        column\n      ) as ColumnSettingsInternal;\n\n      if (!this._isPlaceholderReady) {\n        this.createEditorPlaceholder(columnMeta._environmentInjector);\n        this._isPlaceholderReady = true;\n      }\n\n      this._componentRef = columnMeta._editorComponentReference;\n\n      if (this._finishEditSubscription) {\n        this._finishEditSubscription.unsubscribe();\n        this._finishEditSubscription = undefined;\n      }\n\n      if (this._cancelEditSubscription) {\n        this._cancelEditSubscription.unsubscribe();\n        this._cancelEditSubscription = undefined;\n      }\n\n      this._finishEditSubscription = this._componentRef.instance.finishEdit\n        .pipe(take(1))\n        .subscribe(() => {\n          this.finishEditing();\n        });\n\n      this._cancelEditSubscription = this._componentRef.instance.cancelEdit\n        .pipe(take(1))\n        .subscribe(() => {\n          this.cancelChanges();\n        });\n    }\n  }\n\n  /**\n   * Closes the editor. This event is triggered by Handsontable.\n   */\n  close(): void {\n    if (this.isOpened()) {\n      this.resetEditorState();\n      this._editorPlaceHolderRef.changeDetectorRef.detectChanges();\n      this._editorPlaceHolderRef.instance.detachEditor();\n      this._componentRef.instance.onClose();\n    }\n  }\n\n  /**\n   * Focuses the editor. This event is triggered by Handsontable.\n   */\n  focus(): void {\n    this._componentRef.instance.onFocus();\n  }\n\n  /**\n   * Gets the value from the editor.\n   * @returns The value from the editor.\n   */\n  getValue(): any {\n    return this._componentRef.instance?.getValue();\n  }\n\n  /**\n   * Opens the editor. This event is triggered by Handsontable.\n   * When opening, we set the shortcut context to 'editor'.\n   * This allows the built-in keyboard shortcuts to operate within the editor.\n   * @param event The event that triggered the opening of the editor.\n   * @remarks When entering edit mode using double-click, keyboard shortcuts do not work.\n   */\n  open(event?: Event): void {\n    this.hot.getShortcutManager().setActiveContextName('editor');\n    this.applyPropsToEditor();\n    this._componentRef.instance.onOpen(event);\n  }\n\n  /**\n   * Sets the value for the custom editor.\n   * @param newValue The value to set.\n   */\n  setValue(newValue?: any): void {\n    this._componentRef.instance?.setValue(newValue);\n    this._componentRef.changeDetectorRef.detectChanges();\n  }\n\n  /**\n   * Applies properties to the custom editor and editor placeholder.\n   */\n  private applyPropsToEditor(): void {\n    const rect = this.getEditedCellRect();\n\n    if (!this.isInFullEditMode()) {\n      this._componentRef.instance.setValue(null);\n    }\n\n    this._componentRef.setInput('originalValue', this.originalValue);\n    this._componentRef.setInput('row', this.row);\n    this._componentRef.setInput('column', this.col);\n    this._componentRef.setInput('prop', this.prop);\n    this._componentRef.setInput('cellProperties', this.cellProperties);\n\n    this._editorPlaceHolderRef.setInput('top', rect.top);\n    this._editorPlaceHolderRef.setInput('left', rect.start);\n    this._editorPlaceHolderRef.setInput('height', rect.height);\n    this._editorPlaceHolderRef.setInput('width', rect.width);\n    this._editorPlaceHolderRef.setInput('isVisible', true);\n    this._editorPlaceHolderRef.setInput('componentRef', this._componentRef);\n    this._editorPlaceHolderRef.changeDetectorRef.detectChanges();\n  }\n\n  /**\n   * Creates the editor placeholder and append it to hot rootElement.\n   * @param injector The environment injector.\n   */\n  private createEditorPlaceholder(injector: EnvironmentInjector): void {\n    this._editorPlaceHolderRef = createComponent(\n      CustomEditorPlaceholderComponent,\n      {\n        environmentInjector: injector as EnvironmentInjector,\n      }\n    );\n\n    this.hot.rootElement.appendChild(\n      this._editorPlaceHolderRef.location.nativeElement\n    );\n  }\n\n  /**\n   * Handles the after column resize event.\n   * Helps adjust the editor size to the column size and update its position.\n   */\n  private onAfterColumnResize(): void {\n    if (this.isOpened()) {\n      this.applyPropsToEditor();\n    }\n  }\n\n  /**\n   * Handles the after row resize event.\n   * Helps adjust the editor size to the column size and update its position.\n   */\n  private onAfterRowResize(): void {\n    if (this.isOpened()) {\n      this.applyPropsToEditor();\n    }\n  }\n\n  /**\n   * Handles the after destroy event.\n   */\n  private onAfterDestroy(): void {\n    this._editorPlaceHolderRef?.destroy();\n  }\n\n  /**\n   * Resets the editor placeholder state.\n   * We need to reset the editor placeholder state because we use it\n   * to store multiple references to the custom editor.\n   */\n  private resetEditorState(): void {\n    this._editorPlaceHolderRef.setInput('top', undefined);\n    this._editorPlaceHolderRef.setInput('left', undefined);\n    this._editorPlaceHolderRef.setInput('height', undefined);\n    this._editorPlaceHolderRef.setInput('width', undefined);\n    this._editorPlaceHolderRef.setInput('isVisible', false);\n    this._editorPlaceHolderRef.setInput('componentRef', undefined);\n  }\n}\n","import Handsontable from 'handsontable/base';\nimport {Component, Input} from '@angular/core';\n\n/**\n * Abstract base component for creating custom cell renderer components for Handsontable.\n *\n * This class provides a common interface and properties required by any custom cell renderer.\n *\n * @template TValue - The type of the component renderer.\n * @template TProps - The type of additional renderer properties.\n */\n@Component({\n  selector: 'hot-cell-renderer',\n  template: `<!-- This is an abstract component. Extend this component and provide your own template. -->`\n})\nexport abstract class HotCellRendererComponent<TValue extends string | number | boolean = string, TProps extends {} = any> {\n  static readonly RENDERER_MARKER = Symbol('HotCellRendererComponent');\n\n  @Input() value: TValue = '' as TValue;\n\n  @Input() instance: Handsontable;\n  @Input() td: HTMLTableCellElement;\n  @Input() row: number;\n  @Input() col: number;\n  @Input() prop: string;\n\n  /**\n   * The cell properties provided by Handsontable, extended with optional renderer-specific properties.\n   */\n  @Input() cellProperties: Handsontable.CellProperties & { rendererProps?: TProps };\n\n  /**\n   * Retrieves the renderer-specific properties from the cell properties.\n   *\n   * @returns The additional properties for the renderer.\n   */\n  public getProps(): TProps {\n    return this.cellProperties?.rendererProps ?? ({} as TProps);\n  }\n}\n","import { Directive, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { CellProperties } from 'handsontable/settings';\n\n/**\n * Abstract class representing a Handsontable editor in angular.\n */\n@Directive()\nexport abstract class HotCellEditorComponent<T extends string | number | boolean> {\n  static readonly EDITOR_MARKER = Symbol('HotCellEditorComponent');\n\n  /** The tabindex attribute for the editor. */\n  @HostBinding('attr.tabindex') protected tabindex = -1;\n\n  /** The data-hot-input attribute for the editor. */\n  @HostBinding('attr.data-hot-input') protected dataHotInput = '';\n\n  /** The handsontableInput class for the editor. */\n  @HostBinding('class.handsontableInput') protected handsontableInputClass = true;\n\n  /** The height of the editor as a percentage of the parent container. */\n  @HostBinding('style.height.%') protected heightFitParentContainer = 100;\n\n  /** The width of the editor as a percentage of the parent container. */\n  @HostBinding('style.width.%') protected widthFitParentContainer = 100;\n\n  /** The row index of the cell being edited. */\n  @Input() row: number;\n\n  /** The column index of the cell being edited. */\n  @Input() column: number;\n\n  /** The property name of the cell being edited. */\n  @Input() prop: string | number;\n\n  /** The original value of the cell being edited. */\n  @Input() originalValue: T;\n\n  /** The cell properties of the cell being edited. */\n  @Input() cellProperties: CellProperties;\n\n  /** Event emitted when the edit is finished.\n   * The data will be saved to the model.\n   */\n  @Output() finishEdit = new EventEmitter<void>();\n\n  /** Event emitted when the edit is canceled.\n   * The entered data will be reverted to the original value.\n   */\n  @Output() cancelEdit = new EventEmitter<void>();\n\n  /** The current value of the editor. */\n  private _value: T;\n\n  /** Event triggered by Handsontable on closing the editor.\n   * The user can define their own actions for\n   * the custom editor to be called after the base logic. */\n  onClose(): void {}\n\n  /** Event triggered by Handsontable on open the editor.\n   * The user can define their own actions for\n   * the custom editor to be called after the base logic. */\n  onOpen(event?: Event): void {}\n\n  /** Event triggered by Handsontable on focus the editor.\n   * The user have to define focus logic.\n   * @example\n   * ```typescript\n   * component({\n   *  template: `<input #inputElement>`\n   * })\n   * class CustomEditor extends HotEditor<string> {\n   *   @ViewChild('inputElement') inputElement!: ElementRef;\n   *\n   *   onFocus(): void {\n   *     this.inputElement.nativeElement.focus();\n   *   }\n   * }\n   * ```\n   */\n  abstract onFocus(): void;\n\n  /**\n   * Gets the current value of the editor.\n   * @returns The current value of the editor.\n   */\n  getValue(): T {\n    return this._value;\n  }\n\n  /**\n   * Sets the current value of the editor.\n   * @param value The value to set.\n   */\n  setValue(value: T): void {\n    this._value = value;\n  }\n}\n","import { ComponentRef, createComponent, EnvironmentInjector } from '@angular/core';\nimport { CustomEditorPlaceholderComponent } from './custom-editor-placeholder.component';\nimport { AngularEditorProperties } from './models/factory-editor-properties';\nimport { editorFactory, ExtendedEditor } from 'handsontable/editors/factory';\nimport { take } from 'rxjs/operators';\nimport { HotCellEditorAdvancedComponent } from './hot-cell-editor-advanced.component';\n\n/**\n * Combined type representing an extended editor with Angular component properties.\n * Used internally by the factory adapter to bridge Angular and Handsontable.\n */\ntype EditorInstance = ExtendedEditor<AngularEditorProperties & HotCellEditorAdvancedComponent<any>>;\n\n/**\n * Factory function to create a custom Handsontable editor adapter for Angular components.\n *\n * This adapter integrates Angular components with Handsontable's editor system using the new\n * editorFactory API, allowing you to use Angular components as custom cell editors while\n * maintaining full Angular lifecycle management and change detection.\n *\n * @returns A custom editor class that can be used in Handsontable column settings.\n *\n */\nexport const FactoryEditorAdapter = (componentRef: ComponentRef<HotCellEditorAdvancedComponent<any>>) =>\n  editorFactory<ExtendedEditor<any>>({\n    position: componentRef.instance.position,\n    shortcuts: componentRef.instance.shortcuts,\n    config: componentRef.instance.config,\n    init(editor: EditorInstance): void {\n      editor._componentRef = componentRef;\n      editor._editorPlaceHolderRef = undefined;\n      editor._finishEditSubscription = undefined;\n      editor._cancelEditSubscription = undefined;\n\n      createEditorPlaceholder(editor, (editor.hot as any)._angularEnvironmentInjector);\n      editor.input = editor._editorPlaceHolderRef.location.nativeElement;\n\n      editor._afterRowResizeCallback = (): void => {\n        if (editor.isOpened()) {\n          applyPropsToEditor(editor);\n        }\n      };\n\n      editor._afterColumnResizeCallback = (): void => {\n        if (editor.isOpened()) {\n          applyPropsToEditor(editor);\n        }\n      };\n\n      editor._afterDestroyCallback = (): void => {\n        if (editor._editorPlaceHolderRef) {\n          editor._editorPlaceHolderRef.destroy();\n        }\n      };\n\n      // Hooks are automatically removed by Handsontable on table destroy\n      editor.hot.addHook('afterRowResize', editor._afterRowResizeCallback);\n      editor.hot.addHook('afterColumnResize', editor._afterColumnResizeCallback);\n      editor.hot.addHook('afterDestroy', editor._afterDestroyCallback);\n    },\n\n    afterInit: (editor) => editor._componentRef.instance.afterInit?.(editor),\n    beforeOpen: (editor: EditorInstance, context) => {\n      cleanupSubscriptions(editor);\n\n      applyPropsToEditor(editor);\n\n      editor._finishEditSubscription = editor._componentRef.instance.finishEdit.pipe(take(1)).subscribe((): void => {\n        editor.finishEditing();\n      });\n\n      editor._cancelEditSubscription = editor._componentRef.instance.cancelEdit.pipe(take(1)).subscribe((): void => {\n        editor.cancelChanges();\n      });\n      editor._componentRef.instance.beforeOpen?.(editor, context);\n    },\n    afterOpen: (editor, event) => {\n      editor._componentRef.instance.afterOpen?.(editor, event);\n    },\n    onFocus: (editor) => editor._componentRef.instance.onFocus?.(editor),\n    afterClose: (editor: EditorInstance) => {\n      resetEditorState(editor);\n      editor._editorPlaceHolderRef.changeDetectorRef.detectChanges();\n      editor._editorPlaceHolderRef.instance.detachEditor();\n      editor._componentRef.instance.afterClose?.(editor);\n    },\n    getValue: (editor) => editor._componentRef.instance.getValue(),\n    setValue: (editor: EditorInstance, value) => {\n      editor.value = value;\n      editor._componentRef.instance.setValue(value);\n      editor._componentRef.changeDetectorRef.detectChanges();\n    },\n  });\n\n/**\n * Creates the editor placeholder component.\n * @param editor The editor instance.\n * @param injector The environment injector from Angular.\n */\nfunction createEditorPlaceholder(editor: EditorInstance, injector: EnvironmentInjector | undefined): void {\n  if (!injector) {\n    return;\n  }\n\n  editor._editorPlaceHolderRef = createComponent(CustomEditorPlaceholderComponent, {\n    environmentInjector: injector,\n  });\n}\n\n/**\n * Applies properties to the custom Angular editor and editor placeholder.\n * Updates position, size, and cell context information.\n * @param editor The editor instance.\n */\nfunction applyPropsToEditor(editor: EditorInstance): void {\n  if (!editor._componentRef || !editor._editorPlaceHolderRef) {\n    return;\n  }\n\n  editor._componentRef.setInput('originalValue', editor.originalValue);\n  editor._componentRef.setInput('row', editor.row);\n  editor._componentRef.setInput('column', editor.col);\n  editor._componentRef.setInput('prop', editor.prop);\n  editor._componentRef.setInput('cellProperties', editor.cellProperties);\n\n  const rect = editor.hot.getCell(editor.row, editor.col)?.getBoundingClientRect();\n\n  editor._editorPlaceHolderRef.setInput('placeholderCustomClass', '');\n  editor._editorPlaceHolderRef.setInput('height', rect.height);\n  editor._editorPlaceHolderRef.setInput('width', rect.width);\n  editor._editorPlaceHolderRef.setInput('isVisible', true);\n  editor._editorPlaceHolderRef.setInput('componentRef', editor._componentRef);\n\n  editor._editorPlaceHolderRef.changeDetectorRef.detectChanges();\n}\n\n/**\n * Resets the editor placeholder state.\n * Clears all positioning and visibility settings.\n * @param editor The editor instance.\n */\nfunction resetEditorState(editor: EditorInstance): void {\n  if (!editor._editorPlaceHolderRef) {\n    return;\n  }\n\n  editor._editorPlaceHolderRef.setInput('top', undefined);\n  editor._editorPlaceHolderRef.setInput('left', undefined);\n  editor._editorPlaceHolderRef.setInput('height', undefined);\n  editor._editorPlaceHolderRef.setInput('width', undefined);\n  editor._editorPlaceHolderRef.setInput('isVisible', false);\n  editor._editorPlaceHolderRef.setInput('componentRef', undefined);\n}\n\n/**\n * Cleans up existing subscriptions.\n * @param editor The editor instance.\n */\nfunction cleanupSubscriptions(editor: EditorInstance): void {\n  if (editor._finishEditSubscription) {\n    editor._finishEditSubscription.unsubscribe();\n    editor._finishEditSubscription = undefined;\n  }\n\n  if (editor._cancelEditSubscription) {\n    editor._cancelEditSubscription.unsubscribe();\n    editor._cancelEditSubscription = undefined;\n  }\n}\n","import Handsontable from 'handsontable/base';\nimport { Component, Input } from '@angular/core';\n\n/**\n * Abstract base component for creating advanced custom cell renderer components for Handsontable.\n *\n * This class provides a common interface and properties required by any custom cell renderer.\n *\n * @template TValue - The type of the component renderer.\n * @template TProps - The type of additional renderer properties.\n */\n@Component({\n  selector: 'hot-cell-renderer-advanced',\n  template: `<!-- This is an abstract component. Extend this component and provide your own template. -->`,\n})\nexport abstract class HotCellRendererAdvancedComponent<\n  TValue extends string |\n  number |\n  boolean |\n  Record<string, any> | Array<any> = string,\n  TProps extends {} = any\n> {\n  static readonly RENDERER_MARKER = Symbol('HotCellRendererAdvancedComponent');\n\n  @Input() value: TValue = '' as TValue;\n\n  @Input() instance: Handsontable;\n  @Input() td: HTMLTableCellElement;\n  @Input() row: number;\n  @Input() col: number;\n  @Input() prop: string;\n\n  /**\n   * The cell properties provided by Handsontable, extended with optional renderer-specific properties.\n   */\n  @Input() cellProperties: Handsontable.CellProperties & { rendererProps?: TProps };\n\n  /**\n   * Retrieves the renderer-specific properties from the cell properties.\n   *\n   * @returns The additional properties for the renderer.\n   */\n  public getProps(): TProps {\n    return this.cellProperties?.rendererProps ?? ({} as TProps);\n  }\n}\n","import { Directive, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { ExtendedEditor } from 'handsontable/editors/factory';\nimport { CellProperties } from 'handsontable/settings';\nimport { KeyboardShortcutConfig } from './models/keyboard-shortcut-config';\n\n/**\n * Abstract class representing a Handsontable editor in angular.\n */\n@Directive()\nexport abstract class HotCellEditorAdvancedComponent<T extends string | number | boolean | Record<string, any> | Array<any>> {\n  static readonly EDITOR_MARKER = Symbol('HotCellEditorAdvancedComponent');\n\n  /** The height of the editor as a percentage of the parent container. */\n  @HostBinding('style.height.%') protected heightFitParentContainer = 100;\n\n  /** The width of the editor as a percentage of the parent container. */\n  @HostBinding('style.width.%') protected widthFitParentContainer = 100;\n\n  /** The row index of the cell being edited. */\n  @Input() row: number;\n\n  /** The column index of the cell being edited. */\n  @Input() column: number;\n\n  /** The property name of the cell being edited. */\n  @Input() prop: string | number;\n\n  /** The original value of the cell being edited. */\n  @Input() originalValue: T;\n\n  /** The cell properties of the cell being edited. */\n  @Input() cellProperties: CellProperties;\n\n  /** Event emitted when the edit is finished.\n   * The data will be saved to the model.\n   */\n  @Output() finishEdit = new EventEmitter<void>();\n\n  /** Event emitted when the edit is canceled.\n   * The entered data will be reverted to the original value.\n   */\n  @Output() cancelEdit = new EventEmitter<void>();\n\n  /** The current value of the editor. */\n  protected value: T;\n\n  /** Event triggered by Handsontable on focus the editor.\n   * The user have to define focus logic.\n   */\n  onFocus(editor?: ExtendedEditor<T>): void {}\n\n  /**\n   * Gets the current value of the editor.\n   * @returns The current value of the editor.\n   */\n  getValue(): T {\n    return this.value;\n  }\n\n  /**\n   * Sets the current value of the editor.\n   * @param value The value to set.\n   */\n  setValue(value: T): void {\n    this.value = value;\n  }\n\n  /** The position of the editor in the DOM. Used by Handsontable API. Available in advanced mode. */\n  position: 'container' | 'portal' = 'container';\n\n  /** The shortcuts available for the editor. Available in advanced mode. */\n  shortcuts?: KeyboardShortcutConfig[];\n\n  /** The group name for the shortcuts. Available in advanced mode.*/\n  shortcutsGroup?: string;\n\n  /** Configuration. Available in advanced mode. */\n  config?: any;\n\n  /** Lifecycle hook called after the editor is opened. Available in advanced mode.*/\n  afterOpen(editor: ExtendedEditor<T>, event?: Event): void {}\n\n  /** Lifecycle hook called after the editor is closed. Available in advanced mode. */\n  afterClose(editor: ExtendedEditor<T>): void {}\n\n  /** Lifecycle hook called after the editor is initialized. Available in advanced mode.*/\n  afterInit(editor: ExtendedEditor<T>): void {}\n\n  /** Lifecycle hook called before the editor is opened. Available in advanced mode. */\n  beforeOpen(\n    editor: ExtendedEditor<T>,\n    {\n      row,\n      col,\n      prop,\n      td,\n      originalValue,\n      cellProperties,\n    }: {\n      row: number;\n      col: number;\n      prop: string | number;\n      td: HTMLTableCellElement;\n      originalValue: any;\n      cellProperties: CellProperties;\n    }\n  ): void {}\n}\n","import {\n  ApplicationRef,\n  ComponentRef,\n  createComponent,\n  EmbeddedViewRef,\n  EnvironmentInjector,\n  Injectable,\n  TemplateRef,\n  Type\n} from '@angular/core';\nimport { baseRenderer, BaseRenderer, registerRenderer, rendererFactory } from 'handsontable/renderers';\nimport Handsontable from 'handsontable/base';\nimport { HotCellRendererComponent } from './hot-cell-renderer.component';\nimport { HotCellRendererAdvancedComponent } from './hot-cell-renderer-advanced.component';\n\ntype BaseRendererParameters = Parameters<BaseRenderer>;\n\nexport const INVALID_RENDERER_WARNING =\n  'The provided renderer component was not recognized as a valid custom renderer. ' +\n  'It must either extend HotCellRendererComponent or be a valid TemplateRef. ' +\n  'Please ensure that your custom renderer is implemented correctly and imported from the proper source.';\n\nexport const INVALID_ADVANCED_RENDERER_WARNING =\n  'The provided renderer component was not recognized as a valid custom renderer. ' +\n  'It must either extend HotCellRendererAdvancedComponent. ' +\n  'Please ensure that your custom renderer is implemented correctly and imported from the proper source.';\n\n/**\n * An object representing the parameters passed to a Handsontable renderer.\n */\ninterface BaseRendererParametersObject {\n  instance: Handsontable.Core;\n  td: HTMLTableCellElement;\n  row: number;\n  col: number;\n  prop: string | number;\n  value: any;\n  cellProperties: Handsontable.CellProperties;\n}\n\n/**\n * Type guard that checks if the given object is a TemplateRef.\n *\n * @param obj - The object to check.\n * @returns True if the object is a TemplateRef; otherwise, false.\n */\nexport function isTemplateRef<T>(obj: any): obj is TemplateRef<T> {\n  return obj && typeof obj.createEmbeddedView === 'function';\n}\n\n/**\n * Type guard to check if an object is an instance of HotCellRendererComponent.\n *\n * @param obj - The object to check.\n * @returns True if the object is a HotCellRendererComponent, false otherwise.\n */\nexport function isHotCellRendererComponent(obj: any): obj is Type<HotCellRendererComponent> {\n  return obj?.RENDERER_MARKER === HotCellRendererComponent.RENDERER_MARKER;\n}\n\n/**\n * Type guard to check if an object is an instance of HotCellRendererAdvancedComponent.\n *\n * @param obj - The object to check.\n * @returns True if the object is a HotCellRendererAdvancedComponent, false otherwise.\n */\nexport function isAdvancedHotCellRendererComponent(obj: any): obj is Type<HotCellRendererAdvancedComponent> {\n  return obj?.RENDERER_MARKER === HotCellRendererAdvancedComponent.RENDERER_MARKER;\n}\n\n/**\n * Service for dynamically creating Angular components or templates as custom renderers for Handsontable.\n *\n * This service allows you to create a renderer function that wraps a given Angular component or TemplateRef\n * so that it can be used as a Handsontable renderer.\n *\n * @example\n * const customRenderer = dynamicComponentService.createRendererFromComponent(MyRendererComponent, { someProp: value });\n * // Use customRenderer in your Handsontable configuration\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class DynamicComponentService {\n  constructor(private appRef: ApplicationRef, private environmentInjector: EnvironmentInjector) {}\n\n  /**\n   * Creates a custom renderer function for Handsontable from an Angular component or TemplateRef.\n   * The generated renderer function will be used by Handsontable to render cell content.\n   *\n   * @param component - The Angular component type or TemplateRef to use as renderer.\n   * @param componentProps - An object containing additional properties to use by the renderer.\n   * @param register - If true, registers the renderer with Handsontable using the component's name.\n   * @returns A renderer function that can be used in Handsontable's configuration.\n   */\n  createRendererFromComponent(\n    component: Type<HotCellRendererComponent> | TemplateRef<any>,\n    componentProps: Record<string, any> = {},\n    register: boolean = false\n  ) {\n    return (\n      instance: Handsontable.Core,\n      td: HTMLTableCellElement,\n      row: number,\n      col: number,\n      prop: string | number,\n      value: any,\n      cellProperties: Handsontable.CellProperties\n    ) => {\n      const properties: BaseRendererParametersObject = {\n        value,\n        instance,\n        td,\n        row,\n        col,\n        prop,\n        cellProperties,\n      };\n\n      if (componentProps) {\n        Object.assign(cellProperties, { rendererProps: componentProps });\n      }\n\n      const rendererParameters: BaseRendererParameters = [instance, td, row, col, prop, value, cellProperties];\n\n      baseRenderer.apply(this, rendererParameters);\n\n      td.innerHTML = '';\n\n      if (isTemplateRef(component)) {\n        this.attachTemplateToElement(component, td, properties);\n      } else if (isHotCellRendererComponent(component)) {\n        const componentRef = this.createComponent(component, properties);\n        this.attachComponentToElement(componentRef, td);\n      } else {\n        console.warn(INVALID_RENDERER_WARNING);\n      }\n\n      if (register && isHotCellRendererComponent(component)) {\n        Handsontable.renderers.registerRenderer(component.constructor.name, component as any as BaseRenderer);\n      }\n\n      return td;\n    };\n  }\n\n  /**\n   * Creates a custom renderer function using rendererFactory from Handsontable.\n   * This is an alternative implementation that uses the factory pattern.\n   *\n   * @param component - The Angular component type to use as renderer.\n   * @param componentProps - An object containing additional properties to use by the renderer.\n   * @param register - If true, registers the renderer with Handsontable using the component's name.\n   * @returns A renderer function that can be used in Handsontable's configuration.\n   */\n  createRendererWithFactory(\n    component: Type<HotCellRendererAdvancedComponent>,\n    componentProps: Record<string, any> = {},\n    register: boolean = false\n  ) {\n    return rendererFactory(({\n      instance,\n      td,\n      row,\n      column,\n      prop,\n      value,\n      cellProperties\n    }) => {\n      const properties: BaseRendererParametersObject = {\n        value,\n        instance,\n        td,\n        row,\n        col: column,\n        prop,\n        cellProperties,\n      };\n\n      if (componentProps) {\n        Object.assign(cellProperties, { rendererProps: componentProps });\n      }\n\n      td.innerHTML = '';\n\n      if (isAdvancedHotCellRendererComponent(component)) {\n        const componentRef = this.createComponent(component, properties);\n        this.attachComponentToElement(componentRef, td);\n      } else {\n        console.warn(INVALID_ADVANCED_RENDERER_WARNING);\n      }\n\n      if (register && isAdvancedHotCellRendererComponent(component)) {\n        registerRenderer(component.constructor.name, component as any as BaseRenderer);\n      }\n    });\n  }\n\n  /**\n   * Attaches an embedded view created from a TemplateRef to a given DOM element.\n   *\n   * @param template - The TemplateRef to create an embedded view from.\n   * @param tdEl - The target DOM element (a table cell) to which the view will be appended.\n   * @param properties - Context object providing properties to be used within the template.\n   */\n  private attachTemplateToElement(template: TemplateRef<any>, tdEl: HTMLTableCellElement, properties: BaseRendererParametersObject) {\n    const embeddedView: EmbeddedViewRef<any> = template.createEmbeddedView({\n      $implicit: properties.value,\n      ...properties,\n    });\n    embeddedView.detectChanges();\n\n    embeddedView.rootNodes.forEach((node) => {\n      tdEl.appendChild(node);\n    });\n  }\n\n  /**\n   * Dynamically creates an Angular component of the given type.\n   *\n   * @param component - The Angular component type to be created.\n   * @param rendererParameters - An object containing input properties to assign to the component instance.\n   * @returns The ComponentRef of the dynamically created component.\n   */\n  private createComponent<T extends HotCellRendererComponent>(\n    component: Type<T>,\n    rendererParameters: BaseRendererParametersObject\n  ): ComponentRef<T> {\n    const componentRef = createComponent(component, {\n      environmentInjector: this.environmentInjector,\n    });\n\n    Object.keys(rendererParameters).forEach((key) => {\n      if (rendererParameters.hasOwnProperty(key)) {\n        componentRef.setInput(key, rendererParameters[key]);\n      } else {\n        console.warn(`Input property \"${key}\" does not exist on component instance: ${component?.name}.`);\n      }\n    });\n    componentRef.changeDetectorRef.detectChanges();\n\n    this.appRef.attachView(componentRef.hostView);\n\n    return componentRef;\n  }\n\n  /**\n   * Attaches a dynamically created component's view to a specified DOM container element.\n   *\n   * @param componentRef - The reference to the dynamically created component.\n   * @param container - The target DOM element to which the component's root node will be appended.\n   */\n  private attachComponentToElement<T>(componentRef: ComponentRef<T>, container: HTMLElement): void {\n    const domElem = (componentRef.hostView as EmbeddedViewRef<T>).rootNodes[0] as HTMLElement;\n    container.appendChild(domElem);\n  }\n\n  /**\n   * Destroys a dynamically created component and detaches its view from the Angular application.\n   *\n   * @param componentRef - The reference to the component to be destroyed.\n   */\n  destroyComponent<T>(componentRef: ComponentRef<T>): void {\n    this.appRef.detachView(componentRef.hostView);\n    componentRef.destroy();\n  }\n}\n","import { createComponent, EnvironmentInjector, Injectable, NgZone, TemplateRef, Type } from '@angular/core';\nimport { DynamicComponentService } from '../renderer/hot-dynamic-renderer-component.service';\nimport { BaseEditorAdapter } from '../editor/base-editor-adapter';\nimport { GridSettings, GridSettingsInternal } from '../models/grid-settings';\nimport { CustomValidatorFn, ColumnSettings } from '../models/column-settings';\nimport { HotCellRendererComponent } from '../renderer/hot-cell-renderer.component';\nimport { HotCellEditorComponent } from '../editor/hot-cell-editor.component';\nimport Handsontable from 'handsontable/base';\nimport { FactoryEditorAdapter } from '../editor/editor-factory-adapter';\nimport { HotCellRendererAdvancedComponent } from '../renderer/hot-cell-renderer-advanced.component';\nimport { HotCellEditorAdvancedComponent } from '../editor/hot-cell-editor-advanced.component';\n\nconst AVAILABLE_OPTIONS: string[] = Object.keys(Handsontable.DefaultSettings);\nconst AVAILABLE_HOOKS: string[] = Handsontable.hooks.getRegistered();\n\n/**\n * Service to resolve and apply custom settings for Handsontable settings object.\n */\n@Injectable()\nexport class HotSettingsResolver {\n  constructor(private dynamicComponentService: DynamicComponentService, private readonly environmentInjector: EnvironmentInjector) {}\n\n  /**\n   * Applies custom settings to the provided GridSettings.\n   * @param settings The original grid settings.\n   * @param ngZone The NgZone instance to run hooks inside the zone context.\n   * @returns The merged grid settings with custom settings applied.\n   */\n  applyCustomSettings(settings: GridSettings, ngZone: NgZone): GridSettingsInternal {\n    const mergedSettings: GridSettings = settings;\n\n    this.updateColumnRendererForGivenCustomRenderer(mergedSettings);\n    this.updateColumnEditorForGivenCustomEditor(mergedSettings);\n    this.updateColumnValidatorForGivenCustomValidator(mergedSettings);\n\n    this.wrapHooksInNgZone(mergedSettings, ngZone);\n\n    return (mergedSettings as GridSettingsInternal) ?? {};\n  }\n\n  /**\n   * Ensures that hook callbacks in the provided grid settings run inside Angular's zone.\n   *\n   * @param settings The original grid settings.\n   * @param ngZone The NgZone instance to run hooks inside the zone context.\n   */\n  private wrapHooksInNgZone(settings: GridSettings, ngZone: NgZone) {\n    const options = AVAILABLE_HOOKS.concat(AVAILABLE_OPTIONS);\n\n    options.forEach((key) => {\n      const isHook = AVAILABLE_HOOKS.indexOf(key) > -1;\n      let option;\n\n      if (isHook) {\n        option = settings[key];\n      }\n\n      if (option === void 0) {\n        return;\n      } else if (!!ngZone && typeof option === 'function' && isHook) {\n        settings[key] = function (...args: any) {\n          return ngZone.run(() => option.apply(this, args));\n        };\n      } else {\n        settings[key] = option;\n      }\n    });\n  }\n\n  /**\n   * Updates the column renderer for columns with a custom renderer.\n   * @param mergedSettings The merged grid settings.\n   */\n  private updateColumnRendererForGivenCustomRenderer(mergedSettings: GridSettings): void {\n    if (!Array.isArray(mergedSettings?.columns)) {\n      return;\n    }\n\n    (mergedSettings?.columns as ColumnSettings[])\n      ?.filter((settings) => this.isCustomRenderer(settings.renderer))\n      ?.forEach((cellSettings) => {\n        const renderer = cellSettings.renderer;\n        const props: any = cellSettings.rendererProps ?? {};\n\n        if (this.isAdvancedRendererComponentRefType(renderer)) {\n          cellSettings.renderer = this.dynamicComponentService.createRendererWithFactory(renderer, props);\n        } else if (this.isRendererComponentRefType(renderer) || this.isTemplateRef(renderer)) {\n          cellSettings.renderer = this.dynamicComponentService.createRendererFromComponent(renderer, props);\n        }\n      });\n  }\n\n  /**\n   * Updates the column editor for columns with a custom editor.\n   * @param mergedSettings The merged grid settings.\n   */\n  private updateColumnEditorForGivenCustomEditor(mergedSettings: GridSettings): void {\n    if (!Array.isArray(mergedSettings?.columns)) {\n      return;\n    }\n\n    (mergedSettings?.columns as ColumnSettings[])\n      ?.filter((settings) => this.isEditorComponentRefType(settings.editor) || this.isAdvancedEditorComponentRefType(settings.editor))\n      ?.forEach((cellSettings) => {\n        if (this.isAdvancedEditorComponentRefType(cellSettings.editor)) {\n          const component = createComponent(cellSettings.editor, {\n            environmentInjector: this.environmentInjector,\n          });\n          cellSettings.editor = FactoryEditorAdapter(component);\n        } else {\n          const component = createComponent(cellSettings.editor as Type<HotCellEditorComponent<any>>, {\n            environmentInjector: this.environmentInjector,\n          });\n          cellSettings['_editorComponentReference'] = component;\n          cellSettings['_environmentInjector'] = this.environmentInjector;\n          cellSettings.editor = BaseEditorAdapter;\n        }\n      });\n  }\n\n  /**\n   * Updates the column validator for columns with a custom validator.\n   * @param mergedSettings The merged grid settings.\n   */\n  private updateColumnValidatorForGivenCustomValidator(mergedSettings: GridSettings): void {\n    if (!Array.isArray(mergedSettings?.columns)) {\n      return;\n    }\n\n    (mergedSettings?.columns as ColumnSettings[])\n      ?.filter((settings) => this.isCustomValidatorFn(settings.validator))\n      ?.forEach((cellSettings) => {\n        const customValidatorFn = cellSettings.validator as CustomValidatorFn<any>;\n\n        cellSettings.validator = (value: any, callback: (result: boolean) => void) => {\n          callback(customValidatorFn(value));\n        };\n      });\n  }\n\n  private isCustomValidatorFn(validator: unknown): validator is CustomValidatorFn<any> {\n    return typeof validator === 'function' && validator.length === 1;\n  }\n\n  private isEditorComponentRefType(editor: any): editor is Type<HotCellEditorComponent<any>> {\n    // ecmp - we need it to check if the editor is a component\n    return typeof editor === 'function' &&\n      !!(editor as any)?.ɵcmp &&\n      (editor as any)?.EDITOR_MARKER === HotCellEditorComponent.EDITOR_MARKER;\n  }\n\n  private isAdvancedEditorComponentRefType(editor: any): editor is Type<HotCellEditorAdvancedComponent<any>> {\n    // ecmp - we need it to check if the editor is a component\n    return typeof editor === 'function' &&\n      !!(editor as any)?.ɵcmp &&\n      (editor as any)?.EDITOR_MARKER === HotCellEditorAdvancedComponent.EDITOR_MARKER;\n  }\n\n  private isRendererComponentRefType(renderer: any): renderer is Type<HotCellRendererComponent<any, any>> {\n    // ecmp - we need it to check if the renderer is a component\n    return typeof renderer === 'function' &&\n      !!(renderer as any)?.ɵcmp &&\n      (renderer as any)?.RENDERER_MARKER === HotCellRendererComponent.RENDERER_MARKER;\n  }\n\n  private isAdvancedRendererComponentRefType(renderer: any): renderer is Type<HotCellRendererAdvancedComponent<any, any>> {\n    // ecmp - we need it to check if the renderer is a component\n    return typeof renderer === 'function' &&\n      !!(renderer as any)?.ɵcmp &&\n      (renderer as any)?.RENDERER_MARKER === HotCellRendererAdvancedComponent.RENDERER_MARKER;\n  }\n\n  private isTemplateRef(renderer: any): renderer is TemplateRef<any> {\n    return renderer && typeof renderer.createEmbeddedView === 'function';\n  }\n\n  private isCustomRenderer(renderer: any): renderer is Type<HotCellRendererComponent<any, any>> |\n    TemplateRef<any> |\n    Type<HotCellRendererAdvancedComponent<any, any>> {\n    return this.isRendererComponentRefType(renderer) ||\n      this.isTemplateRef(renderer) ||\n      this.isAdvancedRendererComponentRefType(renderer);\n  }\n}\n","import {Injectable, InjectionToken, Inject} from '@angular/core';\nimport {BehaviorSubject, Observable} from 'rxjs';\n\n/**\n * A constant representing the non-commercial and evaluation license.\n * */\nexport const NON_COMMERCIAL_LICENSE = 'non-commercial-and-evaluation';\n\n/**\n * Type representing a theme name.\n * Possible values include predefined themes and any custom string.\n */\nexport enum PredefinedTheme {\n  Main = 'ht-theme-main',\n  MainDark = 'ht-theme-main-dark',\n  MainDarkAuto = 'ht-theme-main-dark-auto',\n  Horizon = 'ht-theme-horizon',\n  HorizonDark = 'ht-theme-horizon-dark',\n  HorizonDarkAuto = 'ht-theme-horizon-dark-auto'\n}\n\nexport type ThemeName = PredefinedTheme | string;\n\n/**\n * Interface for the Handsontable global configuration.\n */\nexport interface HotGlobalConfig {\n  /**\n   * The license key for Handsontable.\n   */\n  license?: string;\n\n  /**\n   * The name of the theme to be used.\n   */\n  themeName?: ThemeName;\n\n  /**\n   * The theme to be used (ThemeBuilder instance or theme name string).\n   * When set, takes precedence over `themeName` for Handsontable 17+.\n   */\n  theme?: object | string;\n\n  /**\n   * The language code to be used for localization.\n   * For example, 'en-US', 'pl-PL', etc.\n   * **Note:** The language must be chosen from the languages supported by Handsontable and registered in the application.\n   */\n  language?: string;\n\n  /**\n   * The layout direction for the Handsontable instance.\n   * This property defines whether the layout should be left-to-right ('ltr'), right-to-left ('rtl'),\n   * or inherit the direction from the parent element ('inherit').\n   */\n  layoutDirection?: 'ltr' | 'rtl' | 'inherit';\n}\n\n/**\n * Injection token for providing a global default configuration.\n */\nexport const HOT_GLOBAL_CONFIG = new InjectionToken<HotGlobalConfig>('HOT_GLOBAL_CONFIG', {\n  providedIn: 'root',\n  factory: () => ({})\n});\n\n/**\n * Service for configuring Handsontable settings.\n * This service allows setting and retrieving global configuration.\n */\n@Injectable({\n  providedIn: 'root',\n})\nexport class HotGlobalConfigService {\n\n  /**\n   * The default configuration object for Handsontable.\n   *\n   * This object is used as the initial value for the configuration BehaviorSubject.\n   * It can be overridden by a global configuration provided through the\n   * {@link HOT_GLOBAL_CONFIG} injection token.\n   *\n   * @private\n   * @type {HotGlobalConfig}\n   */\n  private defaultConfig: HotGlobalConfig = {\n    license: undefined,\n  };\n\n  /**\n   * A BehaviorSubject that holds the current Handsontable configuration.\n   *\n   * New configuration values can be emitted by calling next() on this subject.\n   * This allows subscribers to react to configuration changes dynamically.\n   *\n   * @private\n   * @type {BehaviorSubject<HotGlobalConfig>}\n   */\n  private configSubject = new BehaviorSubject<HotGlobalConfig>(this.defaultConfig);\n\n  /**\n   * An Observable stream of the current Handsontable configuration.\n   *\n   * Components can subscribe to this observable to receive updates whenever the configuration changes.\n   *\n   * @returns The configuration as an observable stream.\n   */\n  get config$(): Observable<HotGlobalConfig> {\n    return this.configSubject.asObservable();\n  }\n\n  constructor(\n    @Inject(HOT_GLOBAL_CONFIG) globalConfig: HotGlobalConfig\n  ) {\n    // Merge global configuration (if provided) into defaultConfig immutably.\n    this.defaultConfig = { ...this.defaultConfig, ...globalConfig };\n    this.configSubject.next(this.defaultConfig);\n  }\n\n  /**\n   * Sets the global configuration for Handsontable.\n   *\n   * @param config - An object containing configuration options.\n   *                 Each Handsontable instance can override this configuration by providing its own settings.\n   */\n  setConfig(config: HotGlobalConfig) {\n    this.configSubject.next({ ...this.defaultConfig, ...config });\n  }\n\n  /**\n   * Retrieves the current Handsontable configuration.\n   *\n   * @returns An object with the current settings.\n   */\n  getConfig(): HotGlobalConfig {\n    return this.configSubject.value;\n  }\n\n  /**\n   * Resets the configuration to the default settings.\n   * This method updates the configuration BehaviorSubject with the default configuration.\n   */\n  resetConfig(): void {\n    this.configSubject.next({ ...this.defaultConfig });\n  }\n}\n","import {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  EnvironmentInjector,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport Handsontable from 'handsontable/base';\nimport { HotSettingsResolver } from './services/hot-settings-resolver.service';\nimport { HotGlobalConfigService } from './services/hot-global-config.service';\nimport { GridSettings } from './models/grid-settings';\nimport { Subscription } from 'rxjs';\n\nexport const HOT_DESTROYED_WARNING = 'The Handsontable instance bound to this component was destroyed and cannot be' + ' used properly.';\n\n@Component({\n  selector: 'hot-table',\n  template: '<div #container></div>',\n  encapsulation: ViewEncapsulation.None,\n  providers: [HotSettingsResolver],\n  styles: [\n    `\n      :host {\n        display: block;\n      }\n    `,\n  ],\n})\nexport class HotTableComponent implements AfterViewInit, OnChanges, OnDestroy {\n  // component inputs\n  /** The data for the Handsontable instance. */\n  @Input() data: Handsontable.GridSettings['data'] | null = null;\n  /** The settings for the Handsontable instance. */\n  @Input() settings: GridSettings = {};\n\n  /** The container element for the Handsontable instance. */\n  @ViewChild('container', { static: false })\n  public container: ElementRef<HTMLDivElement>;\n\n  /** The Handsontable instance. */\n  private __hotInstance: Handsontable | null = null;\n  private configSubscription: Subscription;\n\n  constructor(\n    private _hotSettingsResolver: HotSettingsResolver,\n    private _hotConfig: HotGlobalConfigService,\n    public ngZone: NgZone,\n    private readonly environmentInjector: EnvironmentInjector\n  ) {}\n\n  /**\n   * Gets the Handsontable instance.\n   * @returns The Handsontable instance or `null` if it's not yet been created or has been destroyed.\n   */\n  public get hotInstance(): Handsontable | null {\n    if (!this.__hotInstance || (this.__hotInstance && !this.__hotInstance.isDestroyed)) {\n      // Will return the Handsontable instance or `null` if it's not yet been created.\n      return this.__hotInstance;\n    } else {\n      console.warn(HOT_DESTROYED_WARNING);\n      return null;\n    }\n  }\n\n  /**\n   * Sets the Handsontable instance.\n   * @param hotInstance The Handsontable instance to set.\n   */\n  private set hotInstance(hotInstance) {\n    this.__hotInstance = hotInstance;\n  }\n\n  /**\n   * Initializes the Handsontable instance after the view has been initialized.\n   * The initial settings of the table are also prepared here\n   */\n  ngAfterViewInit(): void {\n    let options: Handsontable.GridSettings = this._hotSettingsResolver.applyCustomSettings(this.settings, this.ngZone);\n\n    const negotiatedSettings = this.getNegotiatedSettings(options);\n    options = { ...options, ...negotiatedSettings, data: this.data };\n\n    this.ngZone.runOutsideAngular(() => {\n      this.hotInstance = new Handsontable.Core(this.container.nativeElement, options);\n\n      (this.hotInstance as any)._angularEnvironmentInjector = this.environmentInjector;\n\n      this.hotInstance.init();\n    });\n\n    this.configSubscription = this._hotConfig.config$.subscribe((config) => {\n      if (this.hotInstance) {\n        const negotiatedSettings = this.getNegotiatedSettings(this.settings);\n        this.updateHotTable(negotiatedSettings);\n      }\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.hotInstance === null) {\n      return;\n    }\n\n    if (changes.settings && !changes.settings.firstChange) {\n      const newOptions: Handsontable.GridSettings = this._hotSettingsResolver.applyCustomSettings(\n        changes.settings.currentValue,\n        this.ngZone\n      );\n\n      this.updateHotTable(newOptions);\n    }\n\n    if (changes.data && !changes.data.firstChange) {\n      this.hotInstance?.updateData(changes.data.currentValue);\n    }\n  }\n\n  /**\n   * Destroys the Handsontable instance and clears the columns from custom editors.\n   */\n  ngOnDestroy(): void {\n    this.ngZone.runOutsideAngular(() => {\n      if (!this.hotInstance) {\n        return;\n      }\n\n      const columns = this.hotInstance.getSettings().columns;\n\n      if (columns && Array.isArray(columns)) {\n        columns.forEach((column) => {\n          if (column._editorComponentReference) {\n            column._editorComponentReference.destroy();\n          }\n        });\n      }\n\n      this.hotInstance.destroy();\n    });\n\n    this.configSubscription.unsubscribe();\n  }\n\n  /**\n   * Updates the Handsontable instance with new settings.\n   * @param newSettings The new settings to apply to the Handsontable instance.\n   */\n  private updateHotTable(newSettings: Handsontable.GridSettings): void {\n    if (!this.hotInstance) {\n      return;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      this.hotInstance?.updateSettings(newSettings, false);\n    });\n  }\n\n  /**\n   * Merges the provided Handsontable grid settings with the global configuration.\n   *\n   * This method retrieves the global configuration from the HotGlobalConfigService and negotiates the final\n   * Handsontable settings by giving precedence to the provided settings.\n   * Additionally, the `layoutDirection` is only merged if the Handsontable instance has not yet been initialized.\n   *\n   * @param settings - The grid settings provided by the user or component.\n   * @returns The final negotiated grid settings after merging with global defaults.\n   */\n  private getNegotiatedSettings(settings: GridSettings): Handsontable.GridSettings {\n    const hotConfig = this._hotConfig.getConfig();\n    const negotiatedSettings: Handsontable.GridSettings = {};\n\n    negotiatedSettings.licenseKey = settings.licenseKey ?? hotConfig.license;\n    negotiatedSettings.language = settings.language ?? hotConfig.language;\n\n    const theme = settings.theme ?? hotConfig.theme;\n    const themeName = settings.themeName ?? hotConfig.themeName;\n\n    if (theme !== undefined) {\n      negotiatedSettings.theme = theme as Handsontable.GridSettings['theme'];\n    } else if (themeName) {\n      negotiatedSettings.themeName = themeName;\n    }\n\n    // settings that can be set only before the Handsontable instance is initialized\n    if (!this.__hotInstance) {\n      negotiatedSettings.layoutDirection = settings.layoutDirection ?? hotConfig.layoutDirection;\n    }\n\n    return negotiatedSettings;\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { HotTableComponent } from './hot-table.component';\nimport { CustomEditorPlaceholderComponent } from './editor/custom-editor-placeholder.component';\n\n@NgModule({\n  declarations: [HotTableComponent, CustomEditorPlaceholderComponent],\n  imports: [],\n  exports: [HotTableComponent],\n})\nexport class HotTableModule {\n  /**\n   * Placeholder for the library version.\n   * Replaced automatically during the pre-build/post-build process.\n   */\n  static version = '17.0.1';\n\n  constructor() {}\n\n  public static forRoot(): ModuleWithProviders<HotTableModule> {\n    return {\n      ngModule: HotTableModule,\n    };\n  }\n}\n","/*\n * Public API Surface of hot-table\n */\n\nexport * from './lib/hot-table.component';\nexport * from './lib/services/hot-settings-resolver.service';\nexport * from './lib/hot-table.module';\nexport * from './lib/services/hot-global-config.service';\nexport * from './lib/renderer/hot-dynamic-renderer-component.service';\nexport * from './lib/renderer/hot-cell-renderer.component';\nexport * from './lib/editor/hot-cell-editor.component';\nexport * from './lib/renderer/hot-cell-renderer-advanced.component';\nexport * from './lib/editor/hot-cell-editor-advanced.component';\nexport * from './lib/editor/models/keyboard-shortcut-config';\nexport { GridSettings } from './lib/models/grid-settings';\nexport { ColumnSettings, CustomValidatorFn } from './lib/models/column-settings';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DynamicComponentService","i1.HotSettingsResolver","i2.HotGlobalConfigService"],"mappings":"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"}