{"action":"created","comment":{"url":"https://api.github.com/repos/appnexus/lucid/pulls/comments/54827208","id":54827208,"diff_hunk":"@@ -0,0 +1,228 @@\n+import React from 'react';\n+import _ from 'lodash';\n+import classNames from 'classnames';\n+import Portal from '../Portal/Portal';\n+import { createLucidComponentDefinition } from '../../util/component-definition';\n+import { getAbsoluteBoundingClientRect } from '../../util/dom-helpers';\n+import { bindClassNames } from '../../util/style-helpers';\n+\n+const boundClassNames = bindClassNames('ContextMenu');\n+\n+const {\n+\tPropTypes: {\n+\t\tbool,\n+\t\tnode,\n+\t\tfunc,\n+\t\tobject,\n+\t\toneOf,\n+\t\tstring\n+\t}\n+} = React;\n+\n+/**\n+ *\n+ * {\"categories\": [\"utility\"]}\n+ *\n+ * A ContextMenu component is used to render a target and a flyout which is positioned relative to the target.\n+ */\n+const ContextMenu = React.createClass(createLucidComponentDefinition({\n+\tdisplayName: 'ContextMenu',\n+\tpropTypes: {\n+\t\t/**\n+\t\t * `children` should include exactly one ContextMenu.Target and one ContextMenu.FlyOut.\n+\t\t */\n+\t\tchildren: node,\n+\t\t/**\n+\t\t * Appended to the component-specific class names set on the root element.\n+\t\t */\n+\t\tclassName: string,\n+\t\t/**\n+\t\t * Passed through to the root element.\n+\t\t */\n+\t\tstyle: object,\n+\t\t/**\n+\t\t * Indicates whether the FlyOut will render or not. Defaults to `true`.\n+\t\t */\n+\t\tisExpanded: bool,\n+\t\t/**\n+\t\t * alignment of the FlyOut relative to Target. Defaults to `'down'`.\n+\t\t */\n+\t\tdirection: oneOf(['down', 'up']),\n+\t\t/**\n+\t\t * The `id` of the FlyOut portal element that is appended to `document.body`. Defaults to a generated `id`.\n+\t\t */\n+\t\tportalId: string,\n+\t\t/**\n+\t\t * Called once when one of following happens:\n+\t\t *\n+\t\t * - Called with `BELOW_FOLD` if direction is `down` and FlyOut clips screen bottom.\n+\t\t * - Called with `ABOVE_FOLD` if direction is `up` and it has enough space to render down without clipping.\n+\t\t */\n+\t\tonChangeBounds: func,\n+\t\t/**\n+\t\t * Called when a click event happenens outside of the ContextMenu.\n+\t\t */\n+\t\tonClickOut: func\n+\t},\n+\n+\tchildProps: {\n+\t\tTarget: {},\n+\t\tFlyOut: {\n+\t\t\tstyle: object\n+\t\t}\n+\t},\n+\n+\tgetDefaultProps() {\n+\t\treturn {\n+\t\t\tisExpanded: true,\n+\t\t\tdirection: 'down',\n+\t\t\tonChangeBounds: null,\n+\t\t\tonClickOut: null\n+\t\t};\n+\t},\n+\n+\tgetInitialState() {\n+\t\tconst {\n+\t\t\tportalId,\n+\t\t\tdirection\n+\t\t} = this.props;\n+\t\treturn {\n+\t\t\tportalId: portalId || 'ContextMenu-Portal-' + Math.random().toString(16).substr(2),\n+\t\t\ttargetRect: {\n+\t\t\t\tbottom: 0,\n+\t\t\t\ttop: 0,\n+\t\t\t\tleft: 0,\n+\t\t\t\tright: 0,\n+\t\t\t\theight: 0,\n+\t\t\t\twidth: 0\n+\t\t\t},\n+\t\t\tflyOutHeight: 0,\n+\t\t\tisFlyoutBelowFold: direction !== ContextMenu.DOWN\n+\t\t};\n+\t},\n+\n+\tcomponentDidMount() {\n+\t\tlet targetDOMNode = this.refs.target;\n+\n+\t\tthis.updateTargetRectangleIntervalId = setInterval(() => {\n+\t\t\tthis.alignFlyOut(targetDOMNode);\n+\t\t}, 10);\n+\n+\t\tthis.onClickBodyEventListener = window.addEventListener('click', (event) => {\n+\t\t\tif (this.props.onClickOut && this.refs.flyOutPortal) {\n+\t\t\t\tlet flyOutEl = this.refs.flyOutPortal.portalElement.firstChild;\n+\t\t\t\tif (!(flyOutEl.contains(event.target) || targetDOMNode.contains(event.target))) {\n+\t\t\t\t\tthis.props.onClickOut(event);\n+\t\t\t\t}\n+\t\t\t}\n+\t\t});\n+\t},\n+\n+\tcomponentWillUnmount() {\n+\t\tclearInterval(this.updateTargetRectangleIntervalId);\n+\t\twindow.document.body.removeEventListener('click', this.onClickBodyEventListener);\n+\t},\n+\n+\tcomponentWillReceiveProps() {\n+\t\tlet targetDOMNode = this.refs.target;\n+\n+\t\tif (targetDOMNode) {\n+\t\t\tthis.alignFlyOut(targetDOMNode);\n+\t\t}\n+\t},\n+\n+\tstatics: {\n+\t\tDOWN: 'down',\n+\t\tUP: 'up',\n+\t\tBELOW_FOLD: 'BELOW_FOLD',\n+\t\tABOVE_FOLD: 'ABOVE_FOLD',\n+\t\tisElementBelowFold(targetElement, yPosition) {\n+\t\t\tif (typeof window !== 'undefined') {\n+\t\t\t\tlet bodyRect = window.document.body.getBoundingClientRect();\n+\t\t\t\tlet targetElementRect = targetElement.getBoundingClientRect();\n+\t\t\t\tyPosition = (yPosition === undefined ? targetElementRect.top : yPosition);\n+\t\t\t\tif (yPosition + targetElementRect.height - bodyRect.top > window.innerHeight - bodyRect.top) {\n+\t\t\t\t\treturn true;\n+\t\t\t\t} else {\n+\t\t\t\t\treturn false;\n+\t\t\t\t}\n+\t\t\t} else {\n+\t\t\t\tthrow new Error('Browser only! Cannot access window object.');\n+\t\t\t}\n+\t\t}\n+\t},\n+\n+\talignFlyOut(targetDOMNode) {\n+\t\tlet flyOutHeight = this.state.flyOutHeight;\n+\t\tif (this.refs.flyOutPortal) {\n+\t\t\tlet flyOutEl = this.refs.flyOutPortal.portalElement.firstChild;\n+\t\t\tflyOutHeight = flyOutEl.getBoundingClientRect().height;\n+\n+\t\t\tif (this.props.onChangeBounds) {\n+\t\t\t\tlet isFlyoutBelowFold = ContextMenu.isElementBelowFold(flyOutEl, targetDOMNode.getBoundingClientRect().bottom);\n+\t\t\t\tif (this.state.isFlyoutBelowFold !== isFlyoutBelowFold) {\n+\t\t\t\t\tthis.setState({\n+\t\t\t\t\t\tisFlyoutBelowFold: isFlyoutBelowFold\n+\t\t\t\t\t});\n+\t\t\t\t\tthis.props.onChangeBounds(isFlyoutBelowFold ? ContextMenu.BELOW_FOLD : ContextMenu.ABOVE_FOLD);\n+\t\t\t\t}\n+\t\t\t}\n+\t\t}\n+\n+\t\tthis.setState({\n+\t\t\ttargetRect: getAbsoluteBoundingClientRect(targetDOMNode),\n+\t\t\tflyOutHeight: flyOutHeight\n+\t\t});\n+\t},\n+\n+\trender() {\n+\t\tconst {\n+\t\t\tclassName,\n+\t\t\tstyle,\n+\t\t\tisExpanded,\n+\t\t\tdirection\n+\t\t} = this.props;\n+\n+\t\tconst {\n+\t\t\tportalId,\n+\t\t\ttargetRect,\n+\t\t\tflyOutHeight\n+\t\t} = this.state;\n+\n+\t\tconst targetProps = _.first(ContextMenu.Target.findInAllAsProps(this.props));\n+\t\tconst targetChildren = targetProps.children;\n+\t\tconst flyProps = _.first(ContextMenu.FlyOut.findInAllAsProps(this.props));\n+\t\tconst flyChildren = flyProps.children;","path":"src/components/ContextMenu/ContextMenu.jsx","position":195,"original_position":195,"commit_id":"d8bd889815e0dacca226b0c20de7b0d4b1dff601","original_commit_id":"d8bd889815e0dacca226b0c20de7b0d4b1dff601","user":{"login":"nathaniellee","id":914872,"avatar_url":"https://avatars.githubusercontent.com/u/914872?v=3","gravatar_id":"","url":"https://api.github.com/users/nathaniellee","html_url":"https://github.com/nathaniellee","followers_url":"https://api.github.com/users/nathaniellee/followers","following_url":"https://api.github.com/users/nathaniellee/following{/other_user}","gists_url":"https://api.github.com/users/nathaniellee/gists{/gist_id}","starred_url":"https://api.github.com/users/nathaniellee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nathaniellee/subscriptions","organizations_url":"https://api.github.com/users/nathaniellee/orgs","repos_url":"https://api.github.com/users/nathaniellee/repos","events_url":"https://api.github.com/users/nathaniellee/events{/privacy}","received_events_url":"https://api.github.com/users/nathaniellee/received_events","type":"User","site_admin":false},"body":"Best variable name I've seen in a while. ;)","created_at":"2016-03-03T02:14:56Z","updated_at":"2016-03-03T02:14:56Z","html_url":"https://github.com/appnexus/lucid/pull/63#discussion_r54827208","pull_request_url":"https://api.github.com/repos/appnexus/lucid/pulls/63","_links":{"self":{"href":"https://api.github.com/repos/appnexus/lucid/pulls/comments/54827208"},"html":{"href":"https://github.com/appnexus/lucid/pull/63#discussion_r54827208"},"pull_request":{"href":"https://api.github.com/repos/appnexus/lucid/pulls/63"}}},"pull_request":{"url":"https://api.github.com/repos/appnexus/lucid/pulls/63","id":61497021,"html_url":"https://github.com/appnexus/lucid/pull/63","diff_url":"https://github.com/appnexus/lucid/pull/63.diff","patch_url":"https://github.com/appnexus/lucid/pull/63.patch","issue_url":"https://api.github.com/repos/appnexus/lucid/issues/63","number":63,"state":"open","locked":false,"title":"ContextMenu Component","user":{"login":"ogupte","id":1967266,"avatar_url":"https://avatars.githubusercontent.com/u/1967266?v=3","gravatar_id":"","url":"https://api.github.com/users/ogupte","html_url":"https://github.com/ogupte","followers_url":"https://api.github.com/users/ogupte/followers","following_url":"https://api.github.com/users/ogupte/following{/other_user}","gists_url":"https://api.github.com/users/ogupte/gists{/gist_id}","starred_url":"https://api.github.com/users/ogupte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ogupte/subscriptions","organizations_url":"https://api.github.com/users/ogupte/orgs","repos_url":"https://api.github.com/users/ogupte/repos","events_url":"https://api.github.com/users/ogupte/events{/privacy}","received_events_url":"https://api.github.com/users/ogupte/received_events","type":"User","site_admin":false},"body":"most of the files and commits are from other PRs which this depends on, when those PRs get merged, this PR will look a lot simpler","created_at":"2016-03-03T01:27:41Z","updated_at":"2016-03-03T02:14:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c1f765abaffc79885f84092514cdf7e1013126d9","assignee":{"login":"ogupte","id":1967266,"avatar_url":"https://avatars.githubusercontent.com/u/1967266?v=3","gravatar_id":"","url":"https://api.github.com/users/ogupte","html_url":"https://github.com/ogupte","followers_url":"https://api.github.com/users/ogupte/followers","following_url":"https://api.github.com/users/ogupte/following{/other_user}","gists_url":"https://api.github.com/users/ogupte/gists{/gist_id}","starred_url":"https://api.github.com/users/ogupte/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ogupte/subscriptions","organizations_url":"https://api.github.com/users/ogupte/orgs","repos_url":"https://api.github.com/users/ogupte/repos","events_url":"https://api.github.com/users/ogupte/events{/privacy}","received_events_url":"https://api.github.com/users/ogupte/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/appnexus/lucid/pulls/63/commits","review_comments_url":"https://api.github.com/repos/appnexus/lucid/pulls/63/comments","review_comment_url":"https://api.github.com/repos/appnexus/lucid/pulls/comments{/number}","comments_url":"https://api.github.com/repos/appnexus/lucid/issues/63/comments","statuses_url":"https://api.github.com/repos/appnexus/lucid/statuses/d8bd889815e0dacca226b0c20de7b0d4b1dff601","head":{"label":"appnexus:feature/context-menu","ref":"feature/context-menu","sha":"d8bd889815e0dacca226b0c20de7b0d4b1dff601","user":{"login":"appnexus","id":1664176,"avatar_url":"https://avatars.githubusercontent.com/u/1664176?v=3","gravatar_id":"","url":"https://api.github.com/users/appnexus","html_url":"https://github.com/appnexus","followers_url":"https://api.github.com/users/appnexus/followers","following_url":"https://api.github.com/users/appnexus/following{/other_user}","gists_url":"https://api.github.com/users/appnexus/gists{/gist_id}","starred_url":"https://api.github.com/users/appnexus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appnexus/subscriptions","organizations_url":"https://api.github.com/users/appnexus/orgs","repos_url":"https://api.github.com/users/appnexus/repos","events_url":"https://api.github.com/users/appnexus/events{/privacy}","received_events_url":"https://api.github.com/users/appnexus/received_events","type":"Organization","site_admin":false},"repo":{"id":51951143,"name":"lucid","full_name":"appnexus/lucid","owner":{"login":"appnexus","id":1664176,"avatar_url":"https://avatars.githubusercontent.com/u/1664176?v=3","gravatar_id":"","url":"https://api.github.com/users/appnexus","html_url":"https://github.com/appnexus","followers_url":"https://api.github.com/users/appnexus/followers","following_url":"https://api.github.com/users/appnexus/following{/other_user}","gists_url":"https://api.github.com/users/appnexus/gists{/gist_id}","starred_url":"https://api.github.com/users/appnexus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appnexus/subscriptions","organizations_url":"https://api.github.com/users/appnexus/orgs","repos_url":"https://api.github.com/users/appnexus/repos","events_url":"https://api.github.com/users/appnexus/events{/privacy}","received_events_url":"https://api.github.com/users/appnexus/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/appnexus/lucid","description":"A UI component library from AppNexus.","fork":false,"url":"https://api.github.com/repos/appnexus/lucid","forks_url":"https://api.github.com/repos/appnexus/lucid/forks","keys_url":"https://api.github.com/repos/appnexus/lucid/keys{/key_id}","collaborators_url":"https://api.github.com/repos/appnexus/lucid/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/appnexus/lucid/teams","hooks_url":"https://api.github.com/repos/appnexus/lucid/hooks","issue_events_url":"https://api.github.com/repos/appnexus/lucid/issues/events{/number}","events_url":"https://api.github.com/repos/appnexus/lucid/events","assignees_url":"https://api.github.com/repos/appnexus/lucid/assignees{/user}","branches_url":"https://api.github.com/repos/appnexus/lucid/branches{/branch}","tags_url":"https://api.github.com/repos/appnexus/lucid/tags","blobs_url":"https://api.github.com/repos/appnexus/lucid/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/appnexus/lucid/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/appnexus/lucid/git/refs{/sha}","trees_url":"https://api.github.com/repos/appnexus/lucid/git/trees{/sha}","statuses_url":"https://api.github.com/repos/appnexus/lucid/statuses/{sha}","languages_url":"https://api.github.com/repos/appnexus/lucid/languages","stargazers_url":"https://api.github.com/repos/appnexus/lucid/stargazers","contributors_url":"https://api.github.com/repos/appnexus/lucid/contributors","subscribers_url":"https://api.github.com/repos/appnexus/lucid/subscribers","subscription_url":"https://api.github.com/repos/appnexus/lucid/subscription","commits_url":"https://api.github.com/repos/appnexus/lucid/commits{/sha}","git_commits_url":"https://api.github.com/repos/appnexus/lucid/git/commits{/sha}","comments_url":"https://api.github.com/repos/appnexus/lucid/comments{/number}","issue_comment_url":"https://api.github.com/repos/appnexus/lucid/issues/comments{/number}","contents_url":"https://api.github.com/repos/appnexus/lucid/contents/{+path}","compare_url":"https://api.github.com/repos/appnexus/lucid/compare/{base}...{head}","merges_url":"https://api.github.com/repos/appnexus/lucid/merges","archive_url":"https://api.github.com/repos/appnexus/lucid/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/appnexus/lucid/downloads","issues_url":"https://api.github.com/repos/appnexus/lucid/issues{/number}","pulls_url":"https://api.github.com/repos/appnexus/lucid/pulls{/number}","milestones_url":"https://api.github.com/repos/appnexus/lucid/milestones{/number}","notifications_url":"https://api.github.com/repos/appnexus/lucid/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/appnexus/lucid/labels{/name}","releases_url":"https://api.github.com/repos/appnexus/lucid/releases{/id}","deployments_url":"https://api.github.com/repos/appnexus/lucid/deployments","created_at":"2016-02-17T19:59:27Z","updated_at":"2016-03-01T23:31:10Z","pushed_at":"2016-03-03T01:27:43Z","git_url":"git://github.com/appnexus/lucid.git","ssh_url":"git@github.com:appnexus/lucid.git","clone_url":"https://github.com/appnexus/lucid.git","svn_url":"https://github.com/appnexus/lucid","homepage":"","size":250,"stargazers_count":13,"watchers_count":13,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":15,"forks":1,"open_issues":15,"watchers":13,"default_branch":"master"}},"base":{"label":"appnexus:master","ref":"master","sha":"dd92256de7f6cfe83e5da83515b91e524f050edc","user":{"login":"appnexus","id":1664176,"avatar_url":"https://avatars.githubusercontent.com/u/1664176?v=3","gravatar_id":"","url":"https://api.github.com/users/appnexus","html_url":"https://github.com/appnexus","followers_url":"https://api.github.com/users/appnexus/followers","following_url":"https://api.github.com/users/appnexus/following{/other_user}","gists_url":"https://api.github.com/users/appnexus/gists{/gist_id}","starred_url":"https://api.github.com/users/appnexus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appnexus/subscriptions","organizations_url":"https://api.github.com/users/appnexus/orgs","repos_url":"https://api.github.com/users/appnexus/repos","events_url":"https://api.github.com/users/appnexus/events{/privacy}","received_events_url":"https://api.github.com/users/appnexus/received_events","type":"Organization","site_admin":false},"repo":{"id":51951143,"name":"lucid","full_name":"appnexus/lucid","owner":{"login":"appnexus","id":1664176,"avatar_url":"https://avatars.githubusercontent.com/u/1664176?v=3","gravatar_id":"","url":"https://api.github.com/users/appnexus","html_url":"https://github.com/appnexus","followers_url":"https://api.github.com/users/appnexus/followers","following_url":"https://api.github.com/users/appnexus/following{/other_user}","gists_url":"https://api.github.com/users/appnexus/gists{/gist_id}","starred_url":"https://api.github.com/users/appnexus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appnexus/subscriptions","organizations_url":"https://api.github.com/users/appnexus/orgs","repos_url":"https://api.github.com/users/appnexus/repos","events_url":"https://api.github.com/users/appnexus/events{/privacy}","received_events_url":"https://api.github.com/users/appnexus/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/appnexus/lucid","description":"A UI component library from AppNexus.","fork":false,"url":"https://api.github.com/repos/appnexus/lucid","forks_url":"https://api.github.com/repos/appnexus/lucid/forks","keys_url":"https://api.github.com/repos/appnexus/lucid/keys{/key_id}","collaborators_url":"https://api.github.com/repos/appnexus/lucid/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/appnexus/lucid/teams","hooks_url":"https://api.github.com/repos/appnexus/lucid/hooks","issue_events_url":"https://api.github.com/repos/appnexus/lucid/issues/events{/number}","events_url":"https://api.github.com/repos/appnexus/lucid/events","assignees_url":"https://api.github.com/repos/appnexus/lucid/assignees{/user}","branches_url":"https://api.github.com/repos/appnexus/lucid/branches{/branch}","tags_url":"https://api.github.com/repos/appnexus/lucid/tags","blobs_url":"https://api.github.com/repos/appnexus/lucid/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/appnexus/lucid/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/appnexus/lucid/git/refs{/sha}","trees_url":"https://api.github.com/repos/appnexus/lucid/git/trees{/sha}","statuses_url":"https://api.github.com/repos/appnexus/lucid/statuses/{sha}","languages_url":"https://api.github.com/repos/appnexus/lucid/languages","stargazers_url":"https://api.github.com/repos/appnexus/lucid/stargazers","contributors_url":"https://api.github.com/repos/appnexus/lucid/contributors","subscribers_url":"https://api.github.com/repos/appnexus/lucid/subscribers","subscription_url":"https://api.github.com/repos/appnexus/lucid/subscription","commits_url":"https://api.github.com/repos/appnexus/lucid/commits{/sha}","git_commits_url":"https://api.github.com/repos/appnexus/lucid/git/commits{/sha}","comments_url":"https://api.github.com/repos/appnexus/lucid/comments{/number}","issue_comment_url":"https://api.github.com/repos/appnexus/lucid/issues/comments{/number}","contents_url":"https://api.github.com/repos/appnexus/lucid/contents/{+path}","compare_url":"https://api.github.com/repos/appnexus/lucid/compare/{base}...{head}","merges_url":"https://api.github.com/repos/appnexus/lucid/merges","archive_url":"https://api.github.com/repos/appnexus/lucid/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/appnexus/lucid/downloads","issues_url":"https://api.github.com/repos/appnexus/lucid/issues{/number}","pulls_url":"https://api.github.com/repos/appnexus/lucid/pulls{/number}","milestones_url":"https://api.github.com/repos/appnexus/lucid/milestones{/number}","notifications_url":"https://api.github.com/repos/appnexus/lucid/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/appnexus/lucid/labels{/name}","releases_url":"https://api.github.com/repos/appnexus/lucid/releases{/id}","deployments_url":"https://api.github.com/repos/appnexus/lucid/deployments","created_at":"2016-02-17T19:59:27Z","updated_at":"2016-03-01T23:31:10Z","pushed_at":"2016-03-03T01:27:43Z","git_url":"git://github.com/appnexus/lucid.git","ssh_url":"git@github.com:appnexus/lucid.git","clone_url":"https://github.com/appnexus/lucid.git","svn_url":"https://github.com/appnexus/lucid","homepage":"","size":250,"stargazers_count":13,"watchers_count":13,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":15,"forks":1,"open_issues":15,"watchers":13,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/appnexus/lucid/pulls/63"},"html":{"href":"https://github.com/appnexus/lucid/pull/63"},"issue":{"href":"https://api.github.com/repos/appnexus/lucid/issues/63"},"comments":{"href":"https://api.github.com/repos/appnexus/lucid/issues/63/comments"},"review_comments":{"href":"https://api.github.com/repos/appnexus/lucid/pulls/63/comments"},"review_comment":{"href":"https://api.github.com/repos/appnexus/lucid/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/appnexus/lucid/pulls/63/commits"},"statuses":{"href":"https://api.github.com/repos/appnexus/lucid/statuses/d8bd889815e0dacca226b0c20de7b0d4b1dff601"}}}}