{"action":"created","comment":{"url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/comments/180581839","pull_request_review_id":111028031,"id":180581839,"diff_hunk":"@@ -0,0 +1,430 @@\n+import { KeytipLayerBase } from '../../KeytipLayer';\n+import { KeytipTree } from './KeytipTree';\n+import { IKeytipTreeNode } from './IKeytipTreeNode';\n+import { IKeytipProps } from '../../Keytip';\n+import {\n+  IKeySequence,\n+  convertSequencesToKeytipID,\n+  transitionKeysContain,\n+  IKeytipTransitionKey,\n+  fullKeySequencesAreEqual,\n+  getDocument,\n+  replaceElement,\n+  findIndex,\n+  mergeOverflowKeySequences,\n+  Async\n+} from '../../Utilities';\n+import { constructKeytipExecuteTargetFromId } from './KeytipUtils';\n+\n+export interface IUniqueKeytip {\n+  uniqueID: string;\n+  keytip: IKeytipProps;\n+}\n+\n+export class KeytipManager {\n+  private static _instance: KeytipManager = new KeytipManager();\n+\n+  public keytipTree: KeytipTree = new KeytipTree();\n+  public currentSequence: IKeySequence;\n+  public keytips: IUniqueKeytip[] = [];\n+\n+  private _layer: KeytipLayerBase;\n+\n+  private _enableSequences: IKeytipTransitionKey[];\n+  private _exitSequences: IKeytipTransitionKey[];\n+  private _returnSequences: IKeytipTransitionKey[];\n+  private _newCurrentKeytipSequences?: IKeySequence[];\n+\n+  private _keytipIDCounter = 0;\n+\n+  private _delayedKeytipQueue: string[] = [];\n+  private _delayedQueueTimeout: number;\n+  private _async: Async = new Async();\n+\n+  /**\n+   * Static function to get singleton KeytipManager instance\n+   *\n+   * @returns {KeytipManager} Singleton KeytipManager instance\n+   */\n+  public static getInstance(): KeytipManager {\n+    return this._instance;\n+  }\n+\n+  /**\n+   * Sets the _layer property and other related variables\n+   * Should be called from the KeytipLayer constructor\n+   *\n+   * @param layer - KeytipLayerBase object\n+   */\n+  public init(layer: KeytipLayerBase): void {\n+    this._layer = layer;\n+    this.currentSequence = '';\n+    // All guaranteed to be set because of defaultProps in KeytipLayer\n+    this._enableSequences = this._layer.props.keytipStartSequences!;\n+    this._exitSequences = this._layer.props.keytipExitSequences!;\n+    this._returnSequences = this._layer.props.keytipReturnSequences!;\n+  }\n+\n+  /**\n+   * Registers a keytip\n+   *\n+   * @param keytipProps - Keytip to register\n+   * @returns {string} Unique ID for this keytip\n+   */\n+  public registerKeytip(keytipProps: IKeytipProps): string {\n+    const keytipTree = this.keytipTree;\n+\n+    // Create a unique keytip\n+    const uniqueKeytip: IUniqueKeytip = this._constructUniqueKeytip(keytipProps);\n+\n+    // Add keytip to the Manager, Tree, and Layer\n+    // Check if trying to register a duplicate keytip, if so just update\n+    const keytipIndex = this._findKeytipIndex(uniqueKeytip);\n+    if (keytipIndex < 0) {\n+      // Add\n+      this.keytips.push(uniqueKeytip);\n+      keytipTree.addNode(keytipProps, uniqueKeytip.uniqueID);\n+      this._layer && this._layer.setKeytips(this.getKeytips());\n+\n+      // Add the keytip to the queue to show later\n+      if (this.keytipTree.isCurrentKeytipParent(keytipProps)) {\n+        this._addKeytipToQueue(convertSequencesToKeytipID(keytipProps.keySequences));\n+      }\n+    } else {\n+      // Update\n+      this._updateKeytip(uniqueKeytip, keytipIndex);\n+    }\n+\n+    if (this._newCurrentKeytipSequences && fullKeySequencesAreEqual(keytipProps.keySequences, this._newCurrentKeytipSequences)) {\n+      // This keytip should become the currentKeytip and should execute right away\n+      let keytipSequence = [...keytipProps.keySequences];\n+      if (keytipProps.overflowSetSequence) {\n+        keytipSequence = mergeOverflowKeySequences(keytipSequence, keytipProps.overflowSetSequence);\n+      }\n+\n+      // Set currentKeytip\n+      keytipTree.currentKeytip = keytipTree.getNode(convertSequencesToKeytipID(keytipSequence));\n+      if (keytipTree.currentKeytip) {\n+        // Show all children keytips if there\n+        const children = keytipTree.getChildren();\n+        children.length && this.showKeytips(children);\n+\n+        if (keytipTree.currentKeytip.onExecute) {\n+          keytipTree.currentKeytip.onExecute(this._getKeytipDOMElement(keytipTree.currentKeytip.id));\n+        }\n+      }\n+\n+      // Unset _newCurrentKeytipSequences\n+      this._newCurrentKeytipSequences = undefined;\n+    }\n+\n+    return uniqueKeytip.uniqueID;\n+  }\n+\n+  /**\n+   * Register a persisted keytip\n+   * This means just adding a KeytipTreeNode\n+   *\n+   * @param keytipProps - Persisted Keytip to register\n+   * @returns {string} Unique ID for this persisted keytip\n+   */\n+  public registerPersistedKeytip(keytipProps: IKeytipProps): string {\n+    const uniqueID = this._getNextUniqueID();\n+    this.keytipTree.addNode(keytipProps, uniqueID, true);\n+    return uniqueID;\n+  }\n+\n+  /**\n+   * Update a keytip's props\n+   *\n+   * @param keytipProps - Keytip to update\n+   * @param uniqueID - Unique ID of this keytip\n+   */\n+  public updateKeytip(keytipProps: IKeytipProps, uniqueID: string): void {\n+    // Update keytip in this.keytips\n+    const uniqueKeytip = this._constructUniqueKeytip(keytipProps, uniqueID);\n+    const keytipIndex = this._findKeytipIndex(uniqueKeytip);\n+    if (keytipIndex >= 0) {\n+      this._updateKeytip(uniqueKeytip, keytipIndex);\n+    }\n+  }\n+\n+  /**\n+   * Unregisters a keytip\n+   *\n+   * @param keytipToRemove - IKeytipProps of the keytip to remove\n+   */\n+  public unregisterKeytip(keytipToRemove: IKeytipProps, uniqueID: string): void {\n+    // Add the unique ID to the keytip\n+    const uniqueKeytipToRemove = this._constructUniqueKeytip(keytipToRemove, uniqueID);\n+\n+    // Remove keytipToRemove from this.keytips\n+    this.keytips = this.keytips.filter((uniqueKtp: IUniqueKeytip) => {\n+      return !(fullKeySequencesAreEqual(uniqueKtp.keytip.keySequences, keytipToRemove.keySequences) && uniqueKtp.uniqueID === uniqueID);\n+    });\n+\n+    // Remove keytip from the delayed queue\n+    this._removeKeytipFromQueue(convertSequencesToKeytipID(keytipToRemove.keySequences));\n+\n+    // Remove the node from the Tree\n+    this.keytipTree.removeNode(keytipToRemove, uniqueID);\n+    this._layer && this._layer.setKeytips(this.getKeytips());\n+  }\n+\n+  /**\n+   * Unegister a persisted keytip\n+   * This means just removing it from the KeytipTree\n+   *\n+   * @param keytipToRemove - Persisted keytip to remove\n+   * @param uniqueID - Unique ID of this persisted keytip\n+   */\n+  public unregisterPersistedKeytip(keytipToRemove: IKeytipProps, uniqueID: string): void {\n+    // Add the unique ID to the keytip\n+    this.keytipTree.removeNode(keytipToRemove, uniqueID);\n+  }\n+\n+  /**\n+   * Method that makes visible keytips currently in the DOM given a list of IDs.\n+   *\n+   * @param ids - list of Keytip IDs to show\n+   */\n+  public showKeytips(ids: string[]): void {\n+    // Set visible property in this.keytips\n+    for (const keytip of this.getKeytips()) {\n+      const keytipId = convertSequencesToKeytipID(keytip.keySequences);\n+      if (ids.indexOf(keytipId) >= 0) {\n+        keytip.visible = true;\n+      } else if (keytip.overflowSetSequence && ids.indexOf(\n+        convertSequencesToKeytipID(\n+          mergeOverflowKeySequences(keytip.keySequences, keytip.overflowSetSequence))) >= 0) {\n+        // Check if the ID with the overflow is the keytip we're looking for\n+        keytip.visible = true;\n+      } else {\n+        keytip.visible = false;\n+      }\n+    }\n+\n+    // Set in layer\n+    this._layer && this._layer.setKeytips(this.getKeytips());\n+  }\n+\n+  /**\n+   * Exit keytip mode\n+   */\n+  public exitKeytipMode(): void {\n+    this.keytipTree.currentKeytip = undefined;\n+    // Hide all keytips\n+    this.showKeytips([]);","path":"packages/office-ui-fabric-react/src/utilities/keytips/KeytipManager.ts","position":217,"original_position":217,"commit_id":"3334bbf4e47737c149c0f14b6d10b885a15b8158","original_commit_id":"3334bbf4e47737c149c0f14b6d10b885a15b8158","user":{"login":"ddlbrena","id":36862912,"avatar_url":"https://avatars2.githubusercontent.com/u/36862912?v=4","gravatar_id":"","url":"https://api.github.com/users/ddlbrena","html_url":"https://github.com/ddlbrena","followers_url":"https://api.github.com/users/ddlbrena/followers","following_url":"https://api.github.com/users/ddlbrena/following{/other_user}","gists_url":"https://api.github.com/users/ddlbrena/gists{/gist_id}","starred_url":"https://api.github.com/users/ddlbrena/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ddlbrena/subscriptions","organizations_url":"https://api.github.com/users/ddlbrena/orgs","repos_url":"https://api.github.com/users/ddlbrena/repos","events_url":"https://api.github.com/users/ddlbrena/events{/privacy}","received_events_url":"https://api.github.com/users/ddlbrena/received_events","type":"User","site_admin":false},"body":">this.showKeytips([]); [](start = 4, length = 21)\r\n\r\ni wonder if it is nicer to have a separate function to do this, or just in place here have a foreach to set all keytips to not visible and update the layer","created_at":"2018-04-10T22:06:33Z","updated_at":"2018-04-10T22:06:33Z","html_url":"https://github.com/OfficeDev/office-ui-fabric-react/pull/4462#discussion_r180581839","pull_request_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/4462","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/comments/180581839"},"html":{"href":"https://github.com/OfficeDev/office-ui-fabric-react/pull/4462#discussion_r180581839"},"pull_request":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/4462"}}},"pull_request":{"url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/4462","id":179519720,"html_url":"https://github.com/OfficeDev/office-ui-fabric-react/pull/4462","diff_url":"https://github.com/OfficeDev/office-ui-fabric-react/pull/4462.diff","patch_url":"https://github.com/OfficeDev/office-ui-fabric-react/pull/4462.patch","issue_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/issues/4462","number":4462,"state":"open","locked":false,"title":"(DO NOT MERGE) PR 1 of 2 for Keytips review","user":{"login":"kelseyyoung","id":4252452,"avatar_url":"https://avatars2.githubusercontent.com/u/4252452?v=4","gravatar_id":"","url":"https://api.github.com/users/kelseyyoung","html_url":"https://github.com/kelseyyoung","followers_url":"https://api.github.com/users/kelseyyoung/followers","following_url":"https://api.github.com/users/kelseyyoung/following{/other_user}","gists_url":"https://api.github.com/users/kelseyyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/kelseyyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kelseyyoung/subscriptions","organizations_url":"https://api.github.com/users/kelseyyoung/orgs","repos_url":"https://api.github.com/users/kelseyyoung/repos","events_url":"https://api.github.com/users/kelseyyoung/events{/privacy}","received_events_url":"https://api.github.com/users/kelseyyoung/received_events","type":"User","site_admin":false},"body":"#### Pull request checklist\r\n\r\n- [ ] Addresses an existing issue: Fixes #0000\r\n- [ ] Include a change request file using `$ npm run change`\r\n\r\n#### Description of changes\r\n\r\nThis PR focuses mostly on the new keytip files added in office-ui-fabric-react and utilities. See the second PR [here](https://github.com/OfficeDev/office-ui-fabric-react/pull/4463).\r\n\r\n#### Focus areas to test\r\n\r\n(optional)\r\n","created_at":"2018-04-04T21:38:33Z","updated_at":"2018-04-10T22:06:33Z","closed_at":null,"merged_at":null,"merge_commit_sha":"645215ff2de339b43169b1afb57fd1a1e54957f6","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/4462/commits","review_comments_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/4462/comments","review_comment_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/issues/4462/comments","statuses_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/statuses/3334bbf4e47737c149c0f14b6d10b885a15b8158","head":{"label":"kelseyyoung:keyou/keytip-work","ref":"keyou/keytip-work","sha":"3334bbf4e47737c149c0f14b6d10b885a15b8158","user":{"login":"kelseyyoung","id":4252452,"avatar_url":"https://avatars2.githubusercontent.com/u/4252452?v=4","gravatar_id":"","url":"https://api.github.com/users/kelseyyoung","html_url":"https://github.com/kelseyyoung","followers_url":"https://api.github.com/users/kelseyyoung/followers","following_url":"https://api.github.com/users/kelseyyoung/following{/other_user}","gists_url":"https://api.github.com/users/kelseyyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/kelseyyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kelseyyoung/subscriptions","organizations_url":"https://api.github.com/users/kelseyyoung/orgs","repos_url":"https://api.github.com/users/kelseyyoung/repos","events_url":"https://api.github.com/users/kelseyyoung/events{/privacy}","received_events_url":"https://api.github.com/users/kelseyyoung/received_events","type":"User","site_admin":false},"repo":{"id":116312257,"name":"office-ui-fabric-react","full_name":"kelseyyoung/office-ui-fabric-react","owner":{"login":"kelseyyoung","id":4252452,"avatar_url":"https://avatars2.githubusercontent.com/u/4252452?v=4","gravatar_id":"","url":"https://api.github.com/users/kelseyyoung","html_url":"https://github.com/kelseyyoung","followers_url":"https://api.github.com/users/kelseyyoung/followers","following_url":"https://api.github.com/users/kelseyyoung/following{/other_user}","gists_url":"https://api.github.com/users/kelseyyoung/gists{/gist_id}","starred_url":"https://api.github.com/users/kelseyyoung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kelseyyoung/subscriptions","organizations_url":"https://api.github.com/users/kelseyyoung/orgs","repos_url":"https://api.github.com/users/kelseyyoung/repos","events_url":"https://api.github.com/users/kelseyyoung/events{/privacy}","received_events_url":"https://api.github.com/users/kelseyyoung/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kelseyyoung/office-ui-fabric-react","description":"React components for building experiences for Office and Office 365.","fork":true,"url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react","forks_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/forks","keys_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/teams","hooks_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/hooks","issue_events_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/issues/events{/number}","events_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/events","assignees_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/assignees{/user}","branches_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/branches{/branch}","tags_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/tags","blobs_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/git/refs{/sha}","trees_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/statuses/{sha}","languages_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/languages","stargazers_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/stargazers","contributors_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/contributors","subscribers_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/subscribers","subscription_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/subscription","commits_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/commits{/sha}","git_commits_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/git/commits{/sha}","comments_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/comments{/number}","issue_comment_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/issues/comments{/number}","contents_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/contents/{+path}","compare_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/merges","archive_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/downloads","issues_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/issues{/number}","pulls_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/pulls{/number}","milestones_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/milestones{/number}","notifications_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/labels{/name}","releases_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/releases{/id}","deployments_url":"https://api.github.com/repos/kelseyyoung/office-ui-fabric-react/deployments","created_at":"2018-01-04T22:05:52Z","updated_at":"2018-04-04T21:10:27Z","pushed_at":"2018-04-10T18:16:14Z","git_url":"git://github.com/kelseyyoung/office-ui-fabric-react.git","ssh_url":"git@github.com:kelseyyoung/office-ui-fabric-react.git","clone_url":"https://github.com/kelseyyoung/office-ui-fabric-react.git","svn_url":"https://github.com/kelseyyoung/office-ui-fabric-react","homepage":"https://developer.microsoft.com/en-us/fabric#/components","size":27736,"stargazers_count":0,"watchers_count":0,"language":"TypeScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"OfficeDev:master","ref":"master","sha":"15c098d4165f30be5f2f3d29776fc2d6294d194b","user":{"login":"OfficeDev","id":6789362,"avatar_url":"https://avatars2.githubusercontent.com/u/6789362?v=4","gravatar_id":"","url":"https://api.github.com/users/OfficeDev","html_url":"https://github.com/OfficeDev","followers_url":"https://api.github.com/users/OfficeDev/followers","following_url":"https://api.github.com/users/OfficeDev/following{/other_user}","gists_url":"https://api.github.com/users/OfficeDev/gists{/gist_id}","starred_url":"https://api.github.com/users/OfficeDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OfficeDev/subscriptions","organizations_url":"https://api.github.com/users/OfficeDev/orgs","repos_url":"https://api.github.com/users/OfficeDev/repos","events_url":"https://api.github.com/users/OfficeDev/events{/privacy}","received_events_url":"https://api.github.com/users/OfficeDev/received_events","type":"Organization","site_admin":false},"repo":{"id":60537144,"name":"office-ui-fabric-react","full_name":"OfficeDev/office-ui-fabric-react","owner":{"login":"OfficeDev","id":6789362,"avatar_url":"https://avatars2.githubusercontent.com/u/6789362?v=4","gravatar_id":"","url":"https://api.github.com/users/OfficeDev","html_url":"https://github.com/OfficeDev","followers_url":"https://api.github.com/users/OfficeDev/followers","following_url":"https://api.github.com/users/OfficeDev/following{/other_user}","gists_url":"https://api.github.com/users/OfficeDev/gists{/gist_id}","starred_url":"https://api.github.com/users/OfficeDev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OfficeDev/subscriptions","organizations_url":"https://api.github.com/users/OfficeDev/orgs","repos_url":"https://api.github.com/users/OfficeDev/repos","events_url":"https://api.github.com/users/OfficeDev/events{/privacy}","received_events_url":"https://api.github.com/users/OfficeDev/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OfficeDev/office-ui-fabric-react","description":"React components for building experiences for Office and Office 365.","fork":false,"url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react","forks_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/forks","keys_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/teams","hooks_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/hooks","issue_events_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/issues/events{/number}","events_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/events","assignees_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/assignees{/user}","branches_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/branches{/branch}","tags_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/tags","blobs_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/git/refs{/sha}","trees_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/statuses/{sha}","languages_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/languages","stargazers_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/stargazers","contributors_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/contributors","subscribers_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/subscribers","subscription_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/subscription","commits_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/commits{/sha}","git_commits_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/git/commits{/sha}","comments_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/comments{/number}","issue_comment_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/issues/comments{/number}","contents_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/contents/{+path}","compare_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/merges","archive_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/downloads","issues_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/issues{/number}","pulls_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls{/number}","milestones_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/milestones{/number}","notifications_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/labels{/name}","releases_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/releases{/id}","deployments_url":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/deployments","created_at":"2016-06-06T15:03:44Z","updated_at":"2018-04-10T19:18:39Z","pushed_at":"2018-04-10T22:05:01Z","git_url":"git://github.com/OfficeDev/office-ui-fabric-react.git","ssh_url":"git@github.com:OfficeDev/office-ui-fabric-react.git","clone_url":"https://github.com/OfficeDev/office-ui-fabric-react.git","svn_url":"https://github.com/OfficeDev/office-ui-fabric-react","homepage":"https://developer.microsoft.com/en-us/fabric#/components","size":27276,"stargazers_count":2484,"watchers_count":2484,"language":"TypeScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":517,"mirror_url":null,"archived":false,"open_issues_count":494,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":517,"open_issues":494,"watchers":2484,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/4462"},"html":{"href":"https://github.com/OfficeDev/office-ui-fabric-react/pull/4462"},"issue":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/issues/4462"},"comments":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/issues/4462/comments"},"review_comments":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/4462/comments"},"review_comment":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/pulls/4462/commits"},"statuses":{"href":"https://api.github.com/repos/OfficeDev/office-ui-fabric-react/statuses/3334bbf4e47737c149c0f14b6d10b885a15b8158"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"ddlbrena"}}