// #region common Types
export type ListSource = {
  ref_id: number;
  ts_ref: string;
  other_info: OtherInfo;
  topics: [];
  sort_date_timestamp: number;
  main_type: string;
  version_info: VersionInfo;
  content: string;
  expire_date: string;
  sub_type: string;
  parent_id: string;
  qanon_etebar: string;
  ts_date: string;
  qanon_title: string;
  qanon_id: string;
  ref_key: string;
  html: string;
  id: string;
  content_len: number;
  state_etebar: string;
  ts_year: string;
  child_order: number;
  title_type: string;
};
export type OtherInfo = {
  level: number;
  hierarchy: string;
  number_text: string;
  full_path: string;
};
export type VersionInfo = {
  number: number;
  operation: string;
  timestamp: number;
};
// #endregion common Types
// #region ListItem Types
export type ListItem = {
  _index: string;
  _id: string;
  _score: null;
  _source: ListSource;
  sort: number[];
};
export type List = ListItem[];
// #endregion ListItem Types

// #region ActiveEntityViewSchema Types
export type ActiveEntityViewSchema = {
  key: string;
  routeName: string;
  type: string;
  label: string;
  header: {
    componentName: string;
    top_main: HeaderItems[];
    top_jump: [];
    top_mirror: HeaderItems[];
    tools: {
      showCompare: number;
      showSearch: number;
      showHeading: number;
      showSettings: number;
      showHilight: number;
      showChanges: number;
    };
  };
  entityPanel: {
    entityHeading: EntityPanel & {
      type: string;
    };
    navigation: EntityPanel;
  };
  contextMenu: ContextMenu[];
  researchs: Researchs[];
  property: Property[];
  settings: Settings[];
  versionEnable: false;
  field_collapse: string;
  entity_title: string;
  items: ActiveEntityViewSchemaItems[];
  tabs: Tabs[];
};
export type Property = {
  title: string;
  key: string;
  type: string;
  items: PropertyItem[];
};
export type PropertyItem = {
  hideInCreateEntity: number;
  key: string;
  label: string;
  type: string;
  placeholder: string;
  required: string;
  validation_regex: string;
  validation_error: string;
  multi_select: string;
  options: [];
  labelClass: string;
  inputClass: string;
};
export type Panel = {
  header: [{ key: string; label: string; type: string }];
  content: { key: string; label: string; type: string };
};
export type ContextMenu = {
  key: string;
  title: string;
  icon: string;
  panel: Panel[];
  form?: [];
};
export type TstateOptions = {
  value: string;
  title: string;
  type_label: string;
  showInput: number;
};
export type ActiveEntityViewSchemaItems = {
  title: string;
  scrollTitle: string;
  key: string;
  type: string;
  filed_state: string;
  readonly: number;
  modalName: string;
  completion: string;
  tstate_options: TstateOptions[];
  items: ActiveEntityViewSchemaItemschilds[];
};
export type ActiveEntityViewSchemaItemschilds = {
  key: string;
  label: string;
};
export type EntityPanel = {
  title: string;
  key: string;
  routeName: string;
};
export type HeaderItems = {
  title: string;
  key: string;
  type: string;
  col: string;
};
export type Researchs = {
  key: string;
  title: string;
  icon: string;
  form: [];
};
export type Settings = {
  label: string;
  key: string;
  type: string;
  items: [{ value: string; title: string }];
  default: string | boolean;
};
export type Tabs = {
  title: string;
  componentName: string;
  key: string;
};
// #endregion ActiveEntityViewSchema Types
// #region ActiveSystem Types
export type ActiveSystem = {
  id: number;
  created_at: number;
  updated_at: number;
  title: string;
  users: string;
  organ: string;
  owner: number;
  comment: string;
  link: string;
  showInDashboard: number;
  loading: boolean;
};
// #endregion ActiveSystem Types
// #region ActiveTab  Types
export type ActiveTab = {
  title: string;
  componentName: string;
  key: string;
};
// #endregion ActiveTab  Types
export type EntityViewSchema = ActiveEntityViewSchema[];
// #region ListEntity Types
export type ListEntity = [
  ListItem & {
    fields: { qanon_id: string[] };
    inner_hits: InnerHits;
  }
];
export type InnerHits = {
  by_collapse: {
    hits: {
      total: { value: number; relation: string };
      max_score: number;
      hits: ListItem[];
    };
  };
};
// #endregion ListEntity Types
export type SelectedItemEntity = ListItem & ListSource;
// #region SimilarInfo Types

export type SimilarInfo = {
  type: string;
  show: boolean;
  text: string;
  id: string;
  label: string;
};
// #endregion SimilarInfo Types
// #region qruleActiveTabGetter Types
export type qruleActiveTabGetter = {
  key: string;
  routeName: string;
  type: string;
  label: string;
  field_collapse: string;
  filter: qruleActiveTabFilter[];
  tabs: qruleActiveTabGetterTabs[];
};

export type qruleActiveTabFilter = {
  title: string;
  filter_key: string;
  source_key: string;
  by_more: number;
};

export type qruleActiveTabGetterTabsTable_columns = {
  key: string;
  title: string;
  width: string;
  textAlign: string;
  isLink: boolean;
  trancate_word: number;
  process: string;
};
export type qruleActiveTabGetterTabsItems_headers = {
  key: string;
  label: string;
  options: [{ value: string; title: string }];
};
export type qruleActiveTabGetterTabsItems = {
  key: string;
  label: string;
  type: string;
  placeholder: string;
  required: string;
  delimiter: string;
  isarray: 1;
  classes: string;
  url_GET: string;
  rows: string;
  options: [{ value: string; title: string }];
};
export type qruleActiveTabGetterTabs = {
  title: "اجزاء قانون";
  key: "rulesection";
  componentName: "EntityQModelRule";
  key_filter: "";
  items_headers: qruleActiveTabGetterTabsItems_headers[];
  table_columns: qruleActiveTabGetterTabsTable_columns[];
  items: qruleActiveTabGetterTabsItems[];
};
// #endregion qruleActiveTabGetter Types
export type qruleActiveTab = {
  title: string;
  key: string;
  componentName: string;
  key_filter: string;
  items_headers: [];
  table_columns: qruleActiveTabGetterTabsTable_columns[];
};
export type activeResearchType = { key: string; title: string };