{"action":"created","comment":{"url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/comments/183917840","pull_request_review_id":115008272,"id":183917840,"diff_hunk":"@@ -45,23 +61,126 @@ export default class Toolbar extends React.Component {\n    */\n   onOverrideContent = (overrideContent) => {\n     this.setState({ overrideContent });\n-  }\n+  };\n \n   onSelectionChanged = () => {\n     // need to wait a tick for window.getSelection() to be accurate\n     // when focusing editor with already present selection\n     setTimeout(() => {\n       if (!this.toolbar) return;\n+\n+      if (typeof this.state.width !== 'number') {\n+        this.setState({ width: this.toolbar.offsetWidth });\n+      }\n+\n+      const metrics = {\n+        rule: 'left',\n+        ruleValue: 0,\n+        shift: null,\n+        shiftValue: 0\n+      };\n+      // boundings of the selected text\n+      const selectionRect = getVisibleSelectionRect(window);\n+      if (!selectionRect) return;\n+\n       const relativeParent = getRelativeParent(this.toolbar.parentElement);\n-      const toolbarHeight = this.toolbar.clientHeight;\n+      if (relativeParent) {\n+        // avoid false\n+        const fontSize = window.getComputedStyle(relativeParent, null).getPropertyValue('font-size');\n+        // exit if no selection was made\n+        if (selectionRect.left === selectionRect.right && selectionRect.height === parseFloat(fontSize)) {\n+          return;\n+        }\n+      }\n       const relativeRect = (relativeParent || document.body).getBoundingClientRect();\n-      const selectionRect = getVisibleSelectionRect(window);\n \n-      if (!selectionRect) return;\n+      // if parent block width is wider than the toolbar, we must forcibly set its\n+      // height to prevent unexpected geometry changes\n+      if (relativeRect.width > this.toolbar.offsetWidth) {\n+        this.toolbar.style.width = `${this.state.width}px`;\n+      }\n+\n+      const toolbarHalfWidth = this.toolbar.offsetWidth / 2;\n+      // calculating the middle of the text selection\n+      const fromBeginningToMiddle = (selectionRect.left + (selectionRect.width / 2));\n+      // calculating the distance from editor left side to the text selection middle\n+      const fromParentBeginning = fromBeginningToMiddle - relativeRect.left;\n+      // the same but against editor right side\n+      const beforeParentEnd = relativeRect.right - fromBeginningToMiddle;\n+\n+      // the selection is closer to parent beginning than half of the toolbar\n+      // +-----------------------------------------------+\n+      // |          vv toolbar                           |\n+      // | +------------------+                          |\n+      // | +------------------+                          |\n+      // |                                               |\n+      // |  +--+                                         |\n+      // |   ^^ selection                                |\n+      // +-----------------------------------------------+\n+      if (fromParentBeginning < toolbarHalfWidth) {\n+        metrics.ruleValue = toolbarHalfWidth;\n+        metrics.shift = 'left';\n+      } else if (beforeParentEnd < toolbarHalfWidth) {\n+        // the same, but relative to the parent end\n+        // +-----------------------------------------------+\n+        // |                                 vvv toolbar   |\n+        // |                            +---------------+  |\n+        // |                            +---------------+  |\n+        // |                                               |\n+        // |                                      +--+     |\n+        // |                             selection ^^      |\n+        // |                                               |\n+        // +-----------------------------------------------+\n+        metrics.ruleValue = -toolbarHalfWidth;\n+        metrics.rule = 'right';\n+        metrics.shift = 'right';\n+      } else {\n+        // selection somewhere in the middle within the parent and there is a\n+        // free place for toolbar\n+        metrics.ruleValue = (selectionRect.left - relativeRect.left)\n+          + (selectionRect.width / 2);\n+      }\n+\n+      // ok, why we have to use external style elements here? Because, we are\n+      // moving pointer position each time and it can be set via `before`,\n+      // `after` css-pseudo classes\n+      const pointerClassName = 'draft-js-inline-toolbar-pointer';\n+      const styleId = 'draft-js-inline-toolbar-pointer-pseudo';\n+\n+      if (this.toolbar.classList.contains(pointerClassName)) {\n+        this.toolbar.classList.remove(pointerClassName);\n+      }\n+      // We are recreating style element on every toolbar appearance. It is\n+      // better for us to use individual style element rather than join new\n+      // styles to some of the existent elements, because we can easily remove\n+      // it next time\n+      if (document.getElementById(`${styleId}-${this.state.nonce}`)) {\n+        document.head.removeChild(\n+          document.getElementById(`${styleId}-${this.state.nonce}`)\n+        );\n+      }\n+\n+      if (typeof metrics.shift === 'string') {\n+        const styleEl = document.createElement('style');\n+        styleEl.setAttribute('id', `${styleId}-${this.state.nonce}`);\n+        document.head.appendChild(styleEl);\n+        this.toolbar.classList.add(pointerClassName);","path":"draft-js-inline-toolbar-plugin/src/components/Toolbar/index.js","position":167,"original_position":167,"commit_id":"ea416494bced9039e4610e507f790de7ab68224c","original_commit_id":"ea416494bced9039e4610e507f790de7ab68224c","user":{"login":"juliankrispel","id":1188186,"avatar_url":"https://avatars1.githubusercontent.com/u/1188186?v=4","gravatar_id":"","url":"https://api.github.com/users/juliankrispel","html_url":"https://github.com/juliankrispel","followers_url":"https://api.github.com/users/juliankrispel/followers","following_url":"https://api.github.com/users/juliankrispel/following{/other_user}","gists_url":"https://api.github.com/users/juliankrispel/gists{/gist_id}","starred_url":"https://api.github.com/users/juliankrispel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/juliankrispel/subscriptions","organizations_url":"https://api.github.com/users/juliankrispel/orgs","repos_url":"https://api.github.com/users/juliankrispel/repos","events_url":"https://api.github.com/users/juliankrispel/events{/privacy}","received_events_url":"https://api.github.com/users/juliankrispel/received_events","type":"User","site_admin":false},"body":"this is a big no-no in react land. One should only use the react api to affect dom-changes, otherwise the virtual DOM and the actual DOM diverge and that almost certainly will cause exceptions or bugs.","created_at":"2018-04-25T00:34:37Z","updated_at":"2018-04-25T00:39:25Z","html_url":"https://github.com/draft-js-plugins/draft-js-plugins/pull/1018#discussion_r183917840","pull_request_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/1018","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/comments/183917840"},"html":{"href":"https://github.com/draft-js-plugins/draft-js-plugins/pull/1018#discussion_r183917840"},"pull_request":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/1018"}}},"pull_request":{"url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/1018","id":162823176,"html_url":"https://github.com/draft-js-plugins/draft-js-plugins/pull/1018","diff_url":"https://github.com/draft-js-plugins/draft-js-plugins/pull/1018.diff","patch_url":"https://github.com/draft-js-plugins/draft-js-plugins/pull/1018.patch","issue_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/issues/1018","number":1018,"state":"open","locked":false,"title":"Inline toolbar positioning fix","user":{"login":"newsiberian","id":11130487,"avatar_url":"https://avatars2.githubusercontent.com/u/11130487?v=4","gravatar_id":"","url":"https://api.github.com/users/newsiberian","html_url":"https://github.com/newsiberian","followers_url":"https://api.github.com/users/newsiberian/followers","following_url":"https://api.github.com/users/newsiberian/following{/other_user}","gists_url":"https://api.github.com/users/newsiberian/gists{/gist_id}","starred_url":"https://api.github.com/users/newsiberian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/newsiberian/subscriptions","organizations_url":"https://api.github.com/users/newsiberian/orgs","repos_url":"https://api.github.com/users/newsiberian/repos","events_url":"https://api.github.com/users/newsiberian/events{/privacy}","received_events_url":"https://api.github.com/users/newsiberian/received_events","type":"User","site_admin":false},"body":"## Checklist\r\n\r\n- [x] Fix any eslint errors that occur\r\n- [x] Update change-log for every plugin you touch\r\n- [ ] Add/Update tests if you add/change new functionality\r\n- [ ] Add/Update docs if you add/change functionality\r\n- [x] Enable \"Allow edits from maintainers\" for this PR\r\n\r\n## Use-case/Problem\r\nHi.\r\nThis PR tries to fix two things: outputting the toolbar beyond the relative parent (editor) and changing the size of the toolbar in some cases. These bugs will be demonstrated in demos.\r\n\r\n## Implementation\r\n\r\nFix introduce new logic that not allows toolbar to go beyond the editor block. To make it looks good we have to make pointer positioning floating. The way I used to do this is an external style elements for each toolbar (there may be several editors on the screen), because pointers are working via `before`, `after` preudo classes.\r\n\r\n## Demo\r\nHere how it was before:\r\n![before-1](https://user-images.githubusercontent.com/11130487/39175525-c91a9b8e-47d4-11e8-8c56-051b2b08a30f.gif)\r\nand on a small screens:\r\n![before-2](https://user-images.githubusercontent.com/11130487/39175545-d6b230f4-47d4-11e8-95bb-c52e96d698ea.gif)\r\n\r\nand after this implementation:\r\n![after-1](https://user-images.githubusercontent.com/11130487/39175563-e18e3748-47d4-11e8-8a4b-eecdabd6c25b.gif)\r\n![after-2](https://user-images.githubusercontent.com/11130487/39175576-e7786bb0-47d4-11e8-9707-81cbf02f5df9.gif)\r\n\r\n","created_at":"2018-01-14T12:36:54Z","updated_at":"2018-04-25T00:39:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"981a58bd7c3165f50349c25954560b2fa0130d91","assignee":{"login":"juliankrispel","id":1188186,"avatar_url":"https://avatars1.githubusercontent.com/u/1188186?v=4","gravatar_id":"","url":"https://api.github.com/users/juliankrispel","html_url":"https://github.com/juliankrispel","followers_url":"https://api.github.com/users/juliankrispel/followers","following_url":"https://api.github.com/users/juliankrispel/following{/other_user}","gists_url":"https://api.github.com/users/juliankrispel/gists{/gist_id}","starred_url":"https://api.github.com/users/juliankrispel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/juliankrispel/subscriptions","organizations_url":"https://api.github.com/users/juliankrispel/orgs","repos_url":"https://api.github.com/users/juliankrispel/repos","events_url":"https://api.github.com/users/juliankrispel/events{/privacy}","received_events_url":"https://api.github.com/users/juliankrispel/received_events","type":"User","site_admin":false},"assignees":[{"login":"juliankrispel","id":1188186,"avatar_url":"https://avatars1.githubusercontent.com/u/1188186?v=4","gravatar_id":"","url":"https://api.github.com/users/juliankrispel","html_url":"https://github.com/juliankrispel","followers_url":"https://api.github.com/users/juliankrispel/followers","following_url":"https://api.github.com/users/juliankrispel/following{/other_user}","gists_url":"https://api.github.com/users/juliankrispel/gists{/gist_id}","starred_url":"https://api.github.com/users/juliankrispel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/juliankrispel/subscriptions","organizations_url":"https://api.github.com/users/juliankrispel/orgs","repos_url":"https://api.github.com/users/juliankrispel/repos","events_url":"https://api.github.com/users/juliankrispel/events{/privacy}","received_events_url":"https://api.github.com/users/juliankrispel/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":912320407,"url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/labels/in%20review","name":"in review","color":"0e8a16","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/1018/commits","review_comments_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/1018/comments","review_comment_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/comments{/number}","comments_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/issues/1018/comments","statuses_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/statuses/ea416494bced9039e4610e507f790de7ab68224c","head":{"label":"newsiberian:fix-inline-toolbar-positioning","ref":"fix-inline-toolbar-positioning","sha":"ea416494bced9039e4610e507f790de7ab68224c","user":{"login":"newsiberian","id":11130487,"avatar_url":"https://avatars2.githubusercontent.com/u/11130487?v=4","gravatar_id":"","url":"https://api.github.com/users/newsiberian","html_url":"https://github.com/newsiberian","followers_url":"https://api.github.com/users/newsiberian/followers","following_url":"https://api.github.com/users/newsiberian/following{/other_user}","gists_url":"https://api.github.com/users/newsiberian/gists{/gist_id}","starred_url":"https://api.github.com/users/newsiberian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/newsiberian/subscriptions","organizations_url":"https://api.github.com/users/newsiberian/orgs","repos_url":"https://api.github.com/users/newsiberian/repos","events_url":"https://api.github.com/users/newsiberian/events{/privacy}","received_events_url":"https://api.github.com/users/newsiberian/received_events","type":"User","site_admin":false},"repo":{"id":117424733,"name":"draft-js-plugins","full_name":"newsiberian/draft-js-plugins","owner":{"login":"newsiberian","id":11130487,"avatar_url":"https://avatars2.githubusercontent.com/u/11130487?v=4","gravatar_id":"","url":"https://api.github.com/users/newsiberian","html_url":"https://github.com/newsiberian","followers_url":"https://api.github.com/users/newsiberian/followers","following_url":"https://api.github.com/users/newsiberian/following{/other_user}","gists_url":"https://api.github.com/users/newsiberian/gists{/gist_id}","starred_url":"https://api.github.com/users/newsiberian/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/newsiberian/subscriptions","organizations_url":"https://api.github.com/users/newsiberian/orgs","repos_url":"https://api.github.com/users/newsiberian/repos","events_url":"https://api.github.com/users/newsiberian/events{/privacy}","received_events_url":"https://api.github.com/users/newsiberian/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/newsiberian/draft-js-plugins","description":"React Plugin Architecture for Draft.js including Slack-Like Emojis, FB-Like Mentions and Stickers","fork":true,"url":"https://api.github.com/repos/newsiberian/draft-js-plugins","forks_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/forks","keys_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/keys{/key_id}","collaborators_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/teams","hooks_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/hooks","issue_events_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/issues/events{/number}","events_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/events","assignees_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/assignees{/user}","branches_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/branches{/branch}","tags_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/tags","blobs_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/git/refs{/sha}","trees_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/git/trees{/sha}","statuses_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/statuses/{sha}","languages_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/languages","stargazers_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/stargazers","contributors_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/contributors","subscribers_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/subscribers","subscription_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/subscription","commits_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/commits{/sha}","git_commits_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/git/commits{/sha}","comments_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/comments{/number}","issue_comment_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/issues/comments{/number}","contents_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/contents/{+path}","compare_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/compare/{base}...{head}","merges_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/merges","archive_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/downloads","issues_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/issues{/number}","pulls_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/pulls{/number}","milestones_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/milestones{/number}","notifications_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/labels{/name}","releases_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/releases{/id}","deployments_url":"https://api.github.com/repos/newsiberian/draft-js-plugins/deployments","created_at":"2018-01-14T11:35:53Z","updated_at":"2018-01-14T11:35:55Z","pushed_at":"2018-04-24T08:18:16Z","git_url":"git://github.com/newsiberian/draft-js-plugins.git","ssh_url":"git@github.com:newsiberian/draft-js-plugins.git","clone_url":"https://github.com/newsiberian/draft-js-plugins.git","svn_url":"https://github.com/newsiberian/draft-js-plugins","homepage":"https://www.draft-js-plugins.com/","size":7068,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"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":"draft-js-plugins:master","ref":"master","sha":"656079cf2bbda71930022013f6c3e521b12667d8","user":{"login":"draft-js-plugins","id":17958833,"avatar_url":"https://avatars1.githubusercontent.com/u/17958833?v=4","gravatar_id":"","url":"https://api.github.com/users/draft-js-plugins","html_url":"https://github.com/draft-js-plugins","followers_url":"https://api.github.com/users/draft-js-plugins/followers","following_url":"https://api.github.com/users/draft-js-plugins/following{/other_user}","gists_url":"https://api.github.com/users/draft-js-plugins/gists{/gist_id}","starred_url":"https://api.github.com/users/draft-js-plugins/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/draft-js-plugins/subscriptions","organizations_url":"https://api.github.com/users/draft-js-plugins/orgs","repos_url":"https://api.github.com/users/draft-js-plugins/repos","events_url":"https://api.github.com/users/draft-js-plugins/events{/privacy}","received_events_url":"https://api.github.com/users/draft-js-plugins/received_events","type":"Organization","site_admin":false},"repo":{"id":52595230,"name":"draft-js-plugins","full_name":"draft-js-plugins/draft-js-plugins","owner":{"login":"draft-js-plugins","id":17958833,"avatar_url":"https://avatars1.githubusercontent.com/u/17958833?v=4","gravatar_id":"","url":"https://api.github.com/users/draft-js-plugins","html_url":"https://github.com/draft-js-plugins","followers_url":"https://api.github.com/users/draft-js-plugins/followers","following_url":"https://api.github.com/users/draft-js-plugins/following{/other_user}","gists_url":"https://api.github.com/users/draft-js-plugins/gists{/gist_id}","starred_url":"https://api.github.com/users/draft-js-plugins/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/draft-js-plugins/subscriptions","organizations_url":"https://api.github.com/users/draft-js-plugins/orgs","repos_url":"https://api.github.com/users/draft-js-plugins/repos","events_url":"https://api.github.com/users/draft-js-plugins/events{/privacy}","received_events_url":"https://api.github.com/users/draft-js-plugins/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/draft-js-plugins/draft-js-plugins","description":"React Plugin Architecture for Draft.js including Slack-Like Emojis, FB-Like Mentions and Stickers","fork":false,"url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins","forks_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/forks","keys_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/keys{/key_id}","collaborators_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/teams","hooks_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/hooks","issue_events_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/issues/events{/number}","events_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/events","assignees_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/assignees{/user}","branches_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/branches{/branch}","tags_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/tags","blobs_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/git/refs{/sha}","trees_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/git/trees{/sha}","statuses_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/statuses/{sha}","languages_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/languages","stargazers_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/stargazers","contributors_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/contributors","subscribers_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/subscribers","subscription_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/subscription","commits_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/commits{/sha}","git_commits_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/git/commits{/sha}","comments_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/comments{/number}","issue_comment_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/issues/comments{/number}","contents_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/contents/{+path}","compare_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/compare/{base}...{head}","merges_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/merges","archive_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/downloads","issues_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/issues{/number}","pulls_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls{/number}","milestones_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/milestones{/number}","notifications_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/labels{/name}","releases_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/releases{/id}","deployments_url":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/deployments","created_at":"2016-02-26T09:54:56Z","updated_at":"2018-04-24T16:20:31Z","pushed_at":"2018-04-24T16:20:27Z","git_url":"git://github.com/draft-js-plugins/draft-js-plugins.git","ssh_url":"git@github.com:draft-js-plugins/draft-js-plugins.git","clone_url":"https://github.com/draft-js-plugins/draft-js-plugins.git","svn_url":"https://github.com/draft-js-plugins/draft-js-plugins","homepage":"https://www.draft-js-plugins.com/","size":7974,"stargazers_count":2671,"watchers_count":2671,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":539,"mirror_url":null,"archived":false,"open_issues_count":181,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":539,"open_issues":181,"watchers":2671,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/1018"},"html":{"href":"https://github.com/draft-js-plugins/draft-js-plugins/pull/1018"},"issue":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/issues/1018"},"comments":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/issues/1018/comments"},"review_comments":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/1018/comments"},"review_comment":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/pulls/1018/commits"},"statuses":{"href":"https://api.github.com/repos/draft-js-plugins/draft-js-plugins/statuses/ea416494bced9039e4610e507f790de7ab68224c"}},"author_association":"NONE"}}
{"actor":{"display_login":"juliankrispel"}}