{"action":"created","comment":{"url":"https://api.github.com/repos/adazzle/react-data-grid/pulls/comments/279994632","pull_request_review_id":232478383,"id":279994632,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI3OTk5NDYzMg==","diff_hunk":"@@ -0,0 +1,729 @@\n+import React from 'react';\n+\n+import Grid, { GridProps } from './Grid';\n+import ToolbarContainer from './ToolbarContainer';\n+import CheckboxEditor, { CheckboxEditorProps } from './common/editors/CheckboxEditor';\n+import { SelectAll } from './formatters';\n+import * as rowUtils from './RowUtils';\n+import { getColumn, getSize } from './ColumnUtils';\n+import KeyCodes from './KeyCodes';\n+import { sameColumn, sameColumns, recalculate, resizeColumn } from './ColumnMetrics';\n+import { CellNavigationMode, EventTypes, UpdateActions, HeaderRowType, DEFINE_SORT } from './common/enums';\n+import { EventBus } from './masks';\n+import { Position, Column, CellMetaData, InteractionMasksMetaData, ColumnMetrics, RowData, SelectedRange, RowSelection, HeaderRowData, FilterArgs, ColumnList, CommitArgs } from './common/types';\n+\n+type SharedGridProps = Pick<GridProps,\n+/** The primary key property of each row */\n+'rowKey'\n+/** An array of objects representing each column on the grid. Can also be an ImmutableJS object */\n+| 'columns'\n+/** The height of each row in pixels */\n+| 'rowHeight'\n+| 'rowRenderer'\n+/** Function called whenever keyboard key is pressed down */\n+| 'rowGroupRenderer'\n+/** A function called for each rendered row that should return a plain key/value pair object */\n+| 'rowGetter'\n+/** The number of rows to be rendered */\n+| 'rowsCount'\n+/** The minimum height of the grid in pixels */\n+| 'minHeight'\n+/** When set, grid will scroll to this row index */\n+| 'scrollToRowIndex'\n+/** Component used to render a context menu. react-data-grid-addons provides a default context menu which may be used*/\n+| 'contextMenu'\n+/** Used to toggle whether cells can be selected or not */\n+| 'enableCellSelect'\n+/** Toggles whether cells should be autofocused */\n+| 'enableCellAutoFocus'\n+| 'cellNavigationMode'\n+/** The node where the editor portal should mount. */\n+| 'editorPortalTarget'\n+/** The key of the column which is currently being sorted */\n+| 'sortColumn'\n+/** The direction to sort the sortColumn*/\n+| 'sortDirection'\n+/** Called when a column is resized */\n+| 'onColumnResize'\n+/** Called when the grid is scrolled */\n+| 'onScroll'\n+/** Component used to render a draggable header cell */\n+| 'draggableHeaderCell'\n+| 'getValidFilterValues'\n+| 'RowsContainer'\n+| 'emptyRowsView'\n+| 'onHeaderDrop'\n+| 'getSubRowDetails'\n+>;\n+\n+type SharedCellMetaData = Pick<CellMetaData,\n+/** Function called on each cell render to render a list of actions for each cell */\n+'getCellActions'\n+/** Called whenever a sub row is deleted from the grid */\n+| 'onDeleteSubRow'\n+/** Called whenever a sub row is added to the grid */\n+| 'onAddSubRow'\n+/** Function called whenever a cell has been expanded */\n+| 'onCellExpand'\n+| 'onRowExpandToggle'\n+>;\n+\n+type SharedInteractionMasksMetaData = Pick<InteractionMasksMetaData,\n+/** Deprecated: Function called when grid is updated via a copy/paste. Use onGridRowsUpdated instead*/\n+'onCellCopyPaste'\n+/** Function called whenever a cell is selected */\n+| 'onCellSelected'\n+/** Function called whenever a cell is deselected */\n+| 'onCellDeSelected'\n+/** called before cell is set active, returns a boolean to determine whether cell is editable */\n+| 'onCheckCellIsEditable'\n+>;\n+\n+interface Props extends SharedGridProps, SharedCellMetaData, SharedInteractionMasksMetaData {\n+  /** The minimum width of the grid in pixels */\n+  minWidth?: number;\n+  /** The height of the header row in pixels */\n+  headerRowHeight?: number;\n+  /** The height of the header filter row in pixels */\n+  headerFiltersHeight: number;\n+  /** Deprecated: Legacy prop to turn on row selection. Use rowSelection props instead*/\n+  enableRowSelect?: string | number;\n+  /** Component used to render toolbar above the grid */\n+  toolbar?: React.ReactElement;\n+  cellRangeSelection?: {\n+    onStart(selectedRange: SelectedRange): void;\n+    onUpdate?(selectedRange: SelectedRange): void;\n+    onComplete?(selectedRange: SelectedRange): void;\n+  };\n+  /** Minimum column width in pixels */\n+  minColumnWidth: number;\n+  /** Component to render the UI in the header row for selecting all rows  */\n+  selectAllRenderer?: React.ComponentType;\n+  /** Function called whenever row is clicked */\n+  onRowClick?(rowIdx: number, rowData: RowData, column: Column): void;\n+  /** Function called whenever row is double clicked */\n+  onRowDoubleClick?(rowIdx: number, rowData: RowData, column: Column): void;\n+  onAddFilter?(args: FilterArgs): void;\n+  onClearFilters?(): void;\n+  /** Function called whenever grid is sorted*/\n+  onGridSort?: GridProps['onSort'];\n+  /** Function called whenever keyboard key is pressed up */\n+  onGridKeyUp?(e: React.KeyboardEvent<HTMLDivElement>): void;\n+  /** Function called whenever keyboard key is pressed down */\n+  onGridKeyDown?(e: React.KeyboardEvent<HTMLDivElement>): void;\n+  onRowSelect?(rowData: RowData[]): void;\n+  columnEquality(c1: Column, c2: Column): boolean;\n+  rowSelection?: {\n+    enableShiftSelect?: boolean;\n+    /** Function called whenever rows are selected */\n+    onRowsSelected?(args: ({ rowIdx: number; row: RowData })[]): void;\n+    /** Function called whenever rows are deselected */\n+    onRowsDeselected?(args: ({ rowIdx: number; row: RowData })[]): void;\n+    /** toggle whether to show a checkbox in first column to select rows */\n+    showCheckbox?: boolean;\n+    /** Method by which rows should be selected */\n+    selectBy: RowSelection;\n+  };\n+  /** Custom checkbox formatter */\n+  rowActionsCell?: React.ComponentType<CheckboxEditorProps>;\n+  /**\n+   * Callback called whenever row data is updated\n+   * When editing is enabled, this callback will be called for the following scenarios\n+   * 1. Using the supplied editor of the column. The default editor is the [SimpleTextEditor](https://github.com/adazzle/react-data-grid/blob/master/packages/common/editors/SimpleTextEditor.js).\n+   * 2. Copy/pasting the value from one cell to another <kbd>CTRL</kbd>+<kbd>C</kbd>, <kbd>CTRL</kbd>+<kbd>V</kbd>\n+   * 3. Update multiple cells by dragging the fill handle of a cell up or down to a destination cell.\n+   * 4. Update all cells under a given cell by double clicking the cell's fill handle.\n+   */\n+  onGridRowsUpdated?(args: {\n+    cellKey: string;\n+    fromRow: number;\n+    toRow: number;\n+    fromRowId: unknown;\n+    toRowId: unknown;\n+    rowIds: unknown[];\n+    updated: { [key: string]: unknown };\n+    action: UpdateActions;\n+    fromRowData: RowData;\n+  }): void;\n+}\n+\n+interface State {\n+  columnMetrics: ColumnMetrics;\n+  lastRowIdxUiSelected: number;\n+  selectedRows: RowData[];\n+  canFilter?: boolean;\n+  sortColumn?: string;\n+  sortDirection?: DEFINE_SORT;\n+}\n+\n+function isRowSelected(keys: unknown, indexes: unknown, isSelectedKey: unknown, rowData: RowData, rowIdx: number) {\n+  return rowUtils.isRowSelected(keys as { rowKey?: string; values?: string[] } | null, indexes as number[] | null, isSelectedKey as string | null, rowData, rowIdx);\n+}\n+\n+/** Main API Component to render a data grid of rows and columns\n+ *\n+ * Example code\n+ * -----\n+ *\n+ * ```javascript\n+ * <ReactDataGrid\n+ *   columns={columns}\n+ *   rowGetter={i => rows[i]}\n+ *   rowsCount={3} />\n+ * ```\n+*/\n+export default class ReactDataGrid extends React.Component<Props, State> {\n+  static displayName = 'ReactDataGrid';\n+\n+  static defaultProps = {\n+    enableCellSelect: false,\n+    rowHeight: 35,\n+    headerFiltersHeight: 45,\n+    enableRowSelect: false,\n+    minHeight: 350,\n+    rowKey: 'id',\n+    cellNavigationMode: CellNavigationMode.NONE,\n+    enableCellAutoFocus: true,\n+    minColumnWidth: 80,\n+    columnEquality: sameColumn,\n+    editorPortalTarget: document.body\n+  };\n+\n+  private readonly grid = React.createRef<HTMLDivElement>();\n+  private readonly base = React.createRef<Grid>();\n+  private readonly selectAllCheckbox = React.createRef<HTMLInputElement>();\n+  private readonly eventBus = new EventBus();\n+  private readonly _keysDown: { [key: number]: boolean } = {};\n+  private _cachedColumns?: Column[];\n+  private _cachedComputedColumns?: ColumnList;\n+\n+  readonly state: Readonly<State>;\n+\n+  constructor(props: Props) {\n+    super(props);\n+    const initialState: State = {\n+      columnMetrics: this.createColumnMetrics(),\n+      selectedRows: [],\n+      canFilter: false,\n+      lastRowIdxUiSelected: -1\n+    };\n+\n+    if (this.props.sortColumn && this.props.sortDirection) {\n+      initialState.sortColumn = this.props.sortColumn;\n+      initialState.sortDirection = this.props.sortDirection;\n+    }\n+    this.state = initialState;","path":"packages/react-data-grid/src/ReactDataGrid.tsx","position":215,"original_position":215,"commit_id":"af8ca3892e3382bba4dc4cfbfbba50fc62801e09","original_commit_id":"af8ca3892e3382bba4dc4cfbfbba50fc62801e09","user":{"login":"amanmahajan7","id":1452717,"node_id":"MDQ6VXNlcjE0NTI3MTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1452717?v=4","gravatar_id":"","url":"https://api.github.com/users/amanmahajan7","html_url":"https://github.com/amanmahajan7","followers_url":"https://api.github.com/users/amanmahajan7/followers","following_url":"https://api.github.com/users/amanmahajan7/following{/other_user}","gists_url":"https://api.github.com/users/amanmahajan7/gists{/gist_id}","starred_url":"https://api.github.com/users/amanmahajan7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amanmahajan7/subscriptions","organizations_url":"https://api.github.com/users/amanmahajan7/orgs","repos_url":"https://api.github.com/users/amanmahajan7/repos","events_url":"https://api.github.com/users/amanmahajan7/events{/privacy}","received_events_url":"https://api.github.com/users/amanmahajan7/received_events","type":"User","site_admin":false},"body":"Need to use constructor to initialize state as it relies on some methods that should be initialized before state is set ","created_at":"2019-05-01T02:20:24Z","updated_at":"2019-05-01T02:26:06Z","html_url":"https://github.com/adazzle/react-data-grid/pull/1618#discussion_r279994632","pull_request_url":"https://api.github.com/repos/adazzle/react-data-grid/pulls/1618","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/adazzle/react-data-grid/pulls/comments/279994632"},"html":{"href":"https://github.com/adazzle/react-data-grid/pull/1618#discussion_r279994632"},"pull_request":{"href":"https://api.github.com/repos/adazzle/react-data-grid/pulls/1618"}}},"pull_request":{"url":"https://api.github.com/repos/adazzle/react-data-grid/pulls/1618","id":274917090,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjc0OTE3MDkw","html_url":"https://github.com/adazzle/react-data-grid/pull/1618","diff_url":"https://github.com/adazzle/react-data-grid/pull/1618.diff","patch_url":"https://github.com/adazzle/react-data-grid/pull/1618.patch","issue_url":"https://api.github.com/repos/adazzle/react-data-grid/issues/1618","number":1618,"state":"open","locked":false,"title":"tsfiy react-data-grid","user":{"login":"amanmahajan7","id":1452717,"node_id":"MDQ6VXNlcjE0NTI3MTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1452717?v=4","gravatar_id":"","url":"https://api.github.com/users/amanmahajan7","html_url":"https://github.com/amanmahajan7","followers_url":"https://api.github.com/users/amanmahajan7/followers","following_url":"https://api.github.com/users/amanmahajan7/following{/other_user}","gists_url":"https://api.github.com/users/amanmahajan7/gists{/gist_id}","starred_url":"https://api.github.com/users/amanmahajan7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amanmahajan7/subscriptions","organizations_url":"https://api.github.com/users/amanmahajan7/orgs","repos_url":"https://api.github.com/users/amanmahajan7/repos","events_url":"https://api.github.com/users/amanmahajan7/events{/privacy}","received_events_url":"https://api.github.com/users/amanmahajan7/received_events","type":"User","site_admin":false},"body":"The majority of complexity in `react-data-grid.tsx` is due to the selection and column metrics logic which we will visit in the future","created_at":"2019-04-30T23:08:36Z","updated_at":"2019-05-01T02:26:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5ccf2cc8cee4a2b14d4a6aca608616d161073f93","assignee":{"login":"amanmahajan7","id":1452717,"node_id":"MDQ6VXNlcjE0NTI3MTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1452717?v=4","gravatar_id":"","url":"https://api.github.com/users/amanmahajan7","html_url":"https://github.com/amanmahajan7","followers_url":"https://api.github.com/users/amanmahajan7/followers","following_url":"https://api.github.com/users/amanmahajan7/following{/other_user}","gists_url":"https://api.github.com/users/amanmahajan7/gists{/gist_id}","starred_url":"https://api.github.com/users/amanmahajan7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amanmahajan7/subscriptions","organizations_url":"https://api.github.com/users/amanmahajan7/orgs","repos_url":"https://api.github.com/users/amanmahajan7/repos","events_url":"https://api.github.com/users/amanmahajan7/events{/privacy}","received_events_url":"https://api.github.com/users/amanmahajan7/received_events","type":"User","site_admin":false},"assignees":[{"login":"amanmahajan7","id":1452717,"node_id":"MDQ6VXNlcjE0NTI3MTc=","avatar_url":"https://avatars0.githubusercontent.com/u/1452717?v=4","gravatar_id":"","url":"https://api.github.com/users/amanmahajan7","html_url":"https://github.com/amanmahajan7","followers_url":"https://api.github.com/users/amanmahajan7/followers","following_url":"https://api.github.com/users/amanmahajan7/following{/other_user}","gists_url":"https://api.github.com/users/amanmahajan7/gists{/gist_id}","starred_url":"https://api.github.com/users/amanmahajan7/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amanmahajan7/subscriptions","organizations_url":"https://api.github.com/users/amanmahajan7/orgs","repos_url":"https://api.github.com/users/amanmahajan7/repos","events_url":"https://api.github.com/users/amanmahajan7/events{/privacy}","received_events_url":"https://api.github.com/users/amanmahajan7/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"MayhemYDG","id":567105,"node_id":"MDQ6VXNlcjU2NzEwNQ==","avatar_url":"https://avatars0.githubusercontent.com/u/567105?v=4","gravatar_id":"","url":"https://api.github.com/users/MayhemYDG","html_url":"https://github.com/MayhemYDG","followers_url":"https://api.github.com/users/MayhemYDG/followers","following_url":"https://api.github.com/users/MayhemYDG/following{/other_user}","gists_url":"https://api.github.com/users/MayhemYDG/gists{/gist_id}","starred_url":"https://api.github.com/users/MayhemYDG/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MayhemYDG/subscriptions","organizations_url":"https://api.github.com/users/MayhemYDG/orgs","repos_url":"https://api.github.com/users/MayhemYDG/repos","events_url":"https://api.github.com/users/MayhemYDG/events{/privacy}","received_events_url":"https://api.github.com/users/MayhemYDG/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/adazzle/react-data-grid/pulls/1618/commits","review_comments_url":"https://api.github.com/repos/adazzle/react-data-grid/pulls/1618/comments","review_comment_url":"https://api.github.com/repos/adazzle/react-data-grid/pulls/comments{/number}","comments_url":"https://api.github.com/repos/adazzle/react-data-grid/issues/1618/comments","statuses_url":"https://api.github.com/repos/adazzle/react-data-grid/statuses/af8ca3892e3382bba4dc4cfbfbba50fc62801e09","head":{"label":"adazzle:tsify-rdg","ref":"tsify-rdg","sha":"af8ca3892e3382bba4dc4cfbfbba50fc62801e09","user":{"login":"adazzle","id":1763971,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3NjM5NzE=","avatar_url":"https://avatars0.githubusercontent.com/u/1763971?v=4","gravatar_id":"","url":"https://api.github.com/users/adazzle","html_url":"https://github.com/adazzle","followers_url":"https://api.github.com/users/adazzle/followers","following_url":"https://api.github.com/users/adazzle/following{/other_user}","gists_url":"https://api.github.com/users/adazzle/gists{/gist_id}","starred_url":"https://api.github.com/users/adazzle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adazzle/subscriptions","organizations_url":"https://api.github.com/users/adazzle/orgs","repos_url":"https://api.github.com/users/adazzle/repos","events_url":"https://api.github.com/users/adazzle/events{/privacy}","received_events_url":"https://api.github.com/users/adazzle/received_events","type":"Organization","site_admin":false},"repo":{"id":31764022,"node_id":"MDEwOlJlcG9zaXRvcnkzMTc2NDAyMg==","name":"react-data-grid","full_name":"adazzle/react-data-grid","private":false,"owner":{"login":"adazzle","id":1763971,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3NjM5NzE=","avatar_url":"https://avatars0.githubusercontent.com/u/1763971?v=4","gravatar_id":"","url":"https://api.github.com/users/adazzle","html_url":"https://github.com/adazzle","followers_url":"https://api.github.com/users/adazzle/followers","following_url":"https://api.github.com/users/adazzle/following{/other_user}","gists_url":"https://api.github.com/users/adazzle/gists{/gist_id}","starred_url":"https://api.github.com/users/adazzle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adazzle/subscriptions","organizations_url":"https://api.github.com/users/adazzle/orgs","repos_url":"https://api.github.com/users/adazzle/repos","events_url":"https://api.github.com/users/adazzle/events{/privacy}","received_events_url":"https://api.github.com/users/adazzle/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/adazzle/react-data-grid","description":"Excel-like grid component built with React, with editors, keyboard navigation, copy & paste, and the like http://adazzle.github.io/react-data-grid/  ","fork":false,"url":"https://api.github.com/repos/adazzle/react-data-grid","forks_url":"https://api.github.com/repos/adazzle/react-data-grid/forks","keys_url":"https://api.github.com/repos/adazzle/react-data-grid/keys{/key_id}","collaborators_url":"https://api.github.com/repos/adazzle/react-data-grid/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/adazzle/react-data-grid/teams","hooks_url":"https://api.github.com/repos/adazzle/react-data-grid/hooks","issue_events_url":"https://api.github.com/repos/adazzle/react-data-grid/issues/events{/number}","events_url":"https://api.github.com/repos/adazzle/react-data-grid/events","assignees_url":"https://api.github.com/repos/adazzle/react-data-grid/assignees{/user}","branches_url":"https://api.github.com/repos/adazzle/react-data-grid/branches{/branch}","tags_url":"https://api.github.com/repos/adazzle/react-data-grid/tags","blobs_url":"https://api.github.com/repos/adazzle/react-data-grid/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/adazzle/react-data-grid/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/adazzle/react-data-grid/git/refs{/sha}","trees_url":"https://api.github.com/repos/adazzle/react-data-grid/git/trees{/sha}","statuses_url":"https://api.github.com/repos/adazzle/react-data-grid/statuses/{sha}","languages_url":"https://api.github.com/repos/adazzle/react-data-grid/languages","stargazers_url":"https://api.github.com/repos/adazzle/react-data-grid/stargazers","contributors_url":"https://api.github.com/repos/adazzle/react-data-grid/contributors","subscribers_url":"https://api.github.com/repos/adazzle/react-data-grid/subscribers","subscription_url":"https://api.github.com/repos/adazzle/react-data-grid/subscription","commits_url":"https://api.github.com/repos/adazzle/react-data-grid/commits{/sha}","git_commits_url":"https://api.github.com/repos/adazzle/react-data-grid/git/commits{/sha}","comments_url":"https://api.github.com/repos/adazzle/react-data-grid/comments{/number}","issue_comment_url":"https://api.github.com/repos/adazzle/react-data-grid/issues/comments{/number}","contents_url":"https://api.github.com/repos/adazzle/react-data-grid/contents/{+path}","compare_url":"https://api.github.com/repos/adazzle/react-data-grid/compare/{base}...{head}","merges_url":"https://api.github.com/repos/adazzle/react-data-grid/merges","archive_url":"https://api.github.com/repos/adazzle/react-data-grid/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/adazzle/react-data-grid/downloads","issues_url":"https://api.github.com/repos/adazzle/react-data-grid/issues{/number}","pulls_url":"https://api.github.com/repos/adazzle/react-data-grid/pulls{/number}","milestones_url":"https://api.github.com/repos/adazzle/react-data-grid/milestones{/number}","notifications_url":"https://api.github.com/repos/adazzle/react-data-grid/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/adazzle/react-data-grid/labels{/name}","releases_url":"https://api.github.com/repos/adazzle/react-data-grid/releases{/id}","deployments_url":"https://api.github.com/repos/adazzle/react-data-grid/deployments","created_at":"2015-03-06T10:15:04Z","updated_at":"2019-04-30T05:14:20Z","pushed_at":"2019-05-01T02:14:14Z","git_url":"git://github.com/adazzle/react-data-grid.git","ssh_url":"git@github.com:adazzle/react-data-grid.git","clone_url":"https://github.com/adazzle/react-data-grid.git","svn_url":"https://github.com/adazzle/react-data-grid","homepage":null,"size":46044,"stargazers_count":3214,"watchers_count":3214,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1631,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":51,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":1631,"open_issues":51,"watchers":3214,"default_branch":"master"}},"base":{"label":"adazzle:next","ref":"next","sha":"2bf4f27dd66e00d39f63af827aa1fb8be29f46b5","user":{"login":"adazzle","id":1763971,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3NjM5NzE=","avatar_url":"https://avatars0.githubusercontent.com/u/1763971?v=4","gravatar_id":"","url":"https://api.github.com/users/adazzle","html_url":"https://github.com/adazzle","followers_url":"https://api.github.com/users/adazzle/followers","following_url":"https://api.github.com/users/adazzle/following{/other_user}","gists_url":"https://api.github.com/users/adazzle/gists{/gist_id}","starred_url":"https://api.github.com/users/adazzle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adazzle/subscriptions","organizations_url":"https://api.github.com/users/adazzle/orgs","repos_url":"https://api.github.com/users/adazzle/repos","events_url":"https://api.github.com/users/adazzle/events{/privacy}","received_events_url":"https://api.github.com/users/adazzle/received_events","type":"Organization","site_admin":false},"repo":{"id":31764022,"node_id":"MDEwOlJlcG9zaXRvcnkzMTc2NDAyMg==","name":"react-data-grid","full_name":"adazzle/react-data-grid","private":false,"owner":{"login":"adazzle","id":1763971,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3NjM5NzE=","avatar_url":"https://avatars0.githubusercontent.com/u/1763971?v=4","gravatar_id":"","url":"https://api.github.com/users/adazzle","html_url":"https://github.com/adazzle","followers_url":"https://api.github.com/users/adazzle/followers","following_url":"https://api.github.com/users/adazzle/following{/other_user}","gists_url":"https://api.github.com/users/adazzle/gists{/gist_id}","starred_url":"https://api.github.com/users/adazzle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adazzle/subscriptions","organizations_url":"https://api.github.com/users/adazzle/orgs","repos_url":"https://api.github.com/users/adazzle/repos","events_url":"https://api.github.com/users/adazzle/events{/privacy}","received_events_url":"https://api.github.com/users/adazzle/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/adazzle/react-data-grid","description":"Excel-like grid component built with React, with editors, keyboard navigation, copy & paste, and the like http://adazzle.github.io/react-data-grid/  ","fork":false,"url":"https://api.github.com/repos/adazzle/react-data-grid","forks_url":"https://api.github.com/repos/adazzle/react-data-grid/forks","keys_url":"https://api.github.com/repos/adazzle/react-data-grid/keys{/key_id}","collaborators_url":"https://api.github.com/repos/adazzle/react-data-grid/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/adazzle/react-data-grid/teams","hooks_url":"https://api.github.com/repos/adazzle/react-data-grid/hooks","issue_events_url":"https://api.github.com/repos/adazzle/react-data-grid/issues/events{/number}","events_url":"https://api.github.com/repos/adazzle/react-data-grid/events","assignees_url":"https://api.github.com/repos/adazzle/react-data-grid/assignees{/user}","branches_url":"https://api.github.com/repos/adazzle/react-data-grid/branches{/branch}","tags_url":"https://api.github.com/repos/adazzle/react-data-grid/tags","blobs_url":"https://api.github.com/repos/adazzle/react-data-grid/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/adazzle/react-data-grid/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/adazzle/react-data-grid/git/refs{/sha}","trees_url":"https://api.github.com/repos/adazzle/react-data-grid/git/trees{/sha}","statuses_url":"https://api.github.com/repos/adazzle/react-data-grid/statuses/{sha}","languages_url":"https://api.github.com/repos/adazzle/react-data-grid/languages","stargazers_url":"https://api.github.com/repos/adazzle/react-data-grid/stargazers","contributors_url":"https://api.github.com/repos/adazzle/react-data-grid/contributors","subscribers_url":"https://api.github.com/repos/adazzle/react-data-grid/subscribers","subscription_url":"https://api.github.com/repos/adazzle/react-data-grid/subscription","commits_url":"https://api.github.com/repos/adazzle/react-data-grid/commits{/sha}","git_commits_url":"https://api.github.com/repos/adazzle/react-data-grid/git/commits{/sha}","comments_url":"https://api.github.com/repos/adazzle/react-data-grid/comments{/number}","issue_comment_url":"https://api.github.com/repos/adazzle/react-data-grid/issues/comments{/number}","contents_url":"https://api.github.com/repos/adazzle/react-data-grid/contents/{+path}","compare_url":"https://api.github.com/repos/adazzle/react-data-grid/compare/{base}...{head}","merges_url":"https://api.github.com/repos/adazzle/react-data-grid/merges","archive_url":"https://api.github.com/repos/adazzle/react-data-grid/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/adazzle/react-data-grid/downloads","issues_url":"https://api.github.com/repos/adazzle/react-data-grid/issues{/number}","pulls_url":"https://api.github.com/repos/adazzle/react-data-grid/pulls{/number}","milestones_url":"https://api.github.com/repos/adazzle/react-data-grid/milestones{/number}","notifications_url":"https://api.github.com/repos/adazzle/react-data-grid/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/adazzle/react-data-grid/labels{/name}","releases_url":"https://api.github.com/repos/adazzle/react-data-grid/releases{/id}","deployments_url":"https://api.github.com/repos/adazzle/react-data-grid/deployments","created_at":"2015-03-06T10:15:04Z","updated_at":"2019-04-30T05:14:20Z","pushed_at":"2019-05-01T02:14:14Z","git_url":"git://github.com/adazzle/react-data-grid.git","ssh_url":"git@github.com:adazzle/react-data-grid.git","clone_url":"https://github.com/adazzle/react-data-grid.git","svn_url":"https://github.com/adazzle/react-data-grid","homepage":null,"size":46044,"stargazers_count":3214,"watchers_count":3214,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1631,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":51,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":1631,"open_issues":51,"watchers":3214,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/adazzle/react-data-grid/pulls/1618"},"html":{"href":"https://github.com/adazzle/react-data-grid/pull/1618"},"issue":{"href":"https://api.github.com/repos/adazzle/react-data-grid/issues/1618"},"comments":{"href":"https://api.github.com/repos/adazzle/react-data-grid/issues/1618/comments"},"review_comments":{"href":"https://api.github.com/repos/adazzle/react-data-grid/pulls/1618/comments"},"review_comment":{"href":"https://api.github.com/repos/adazzle/react-data-grid/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/adazzle/react-data-grid/pulls/1618/commits"},"statuses":{"href":"https://api.github.com/repos/adazzle/react-data-grid/statuses/af8ca3892e3382bba4dc4cfbfbba50fc62801e09"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"amanmahajan7"}}