import { get, isFunction } from '@bixi/core/utils';
import { NzSafeAny } from 'ng-zorro-antd/core/types';
import { IAllowFn, ICol, IFn, IRenderProp, IRow } from './table.type';

export function valueGetter(row: IRow, col: ICol, index: number) {
  const value = get(row, col.key as string);
  if (isFunction(col.value)) {
    return (col.value as IFn<IRenderProp>)(value, row, index);
  } else {
    return value;
  }
}

export function propGetter(row: IRow, col: ICol, index: number, fn: IAllowFn<IRenderProp>) {
  if (!row) return undefined;
  if (isFunction(fn)) {
    return (fn as IFn<IRenderProp>)(valueGetter(row, col, index), row, index);
  }
  return fn;
}

export function hasKey(obj: NzSafeAny, key: string) {
  if (typeof obj !== 'object') return false;
  return obj.hasOwnProperty(key);
}


