{"action":"created","comment":{"url":"https://api.github.com/repos/LLK/scratch-blocks/pulls/comments/181476041","pull_request_review_id":112117467,"id":181476041,"diff_hunk":"@@ -466,7 +482,22 @@ Blockly.Flyout.prototype.show = function(xmlList) {\n       var tagName = xml.tagName.toUpperCase();\n       var default_gap = this.horizontalLayout_ ? this.GAP_X : this.GAP_Y;\n       if (tagName == 'BLOCK') {\n-        var curBlock = Blockly.Xml.domToBlock(xml, this.workspace_);\n+\n+        // We assume that in a flyout, the same block id/type means\n+        // the same output SVG nodes.  Check for a recycled element.","path":"core/flyout_base.js","position":37,"original_position":37,"commit_id":"d9436f34877d8765b707b52963141a088031599d","original_commit_id":"d9436f34877d8765b707b52963141a088031599d","user":{"login":"rachel-fenichel","id":13686399,"avatar_url":"https://avatars2.githubusercontent.com/u/13686399?v=4","gravatar_id":"","url":"https://api.github.com/users/rachel-fenichel","html_url":"https://github.com/rachel-fenichel","followers_url":"https://api.github.com/users/rachel-fenichel/followers","following_url":"https://api.github.com/users/rachel-fenichel/following{/other_user}","gists_url":"https://api.github.com/users/rachel-fenichel/gists{/gist_id}","starred_url":"https://api.github.com/users/rachel-fenichel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rachel-fenichel/subscriptions","organizations_url":"https://api.github.com/users/rachel-fenichel/orgs","repos_url":"https://api.github.com/users/rachel-fenichel/repos","events_url":"https://api.github.com/users/rachel-fenichel/events{/privacy}","received_events_url":"https://api.github.com/users/rachel-fenichel/received_events","type":"User","site_admin":false},"body":"You're assuming that the same id/type means the same output `Blockly.BlockSvg` object, not just the same SVG nodes.  Please update the comment.","created_at":"2018-04-13T18:38:42Z","updated_at":"2018-04-13T18:58:52Z","html_url":"https://github.com/LLK/scratch-blocks/pull/1442#discussion_r181476041","pull_request_url":"https://api.github.com/repos/LLK/scratch-blocks/pulls/1442","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/LLK/scratch-blocks/pulls/comments/181476041"},"html":{"href":"https://github.com/LLK/scratch-blocks/pull/1442#discussion_r181476041"},"pull_request":{"href":"https://api.github.com/repos/LLK/scratch-blocks/pulls/1442"}}},"pull_request":{"url":"https://api.github.com/repos/LLK/scratch-blocks/pulls/1442","id":181521379,"html_url":"https://github.com/LLK/scratch-blocks/pull/1442","diff_url":"https://github.com/LLK/scratch-blocks/pull/1442.diff","patch_url":"https://github.com/LLK/scratch-blocks/pull/1442.patch","issue_url":"https://api.github.com/repos/LLK/scratch-blocks/issues/1442","number":1442,"state":"open","locked":false,"title":"Recycle flyout blocks","user":{"login":"gnarf","id":549355,"avatar_url":"https://avatars2.githubusercontent.com/u/549355?v=4","gravatar_id":"","url":"https://api.github.com/users/gnarf","html_url":"https://github.com/gnarf","followers_url":"https://api.github.com/users/gnarf/followers","following_url":"https://api.github.com/users/gnarf/following{/other_user}","gists_url":"https://api.github.com/users/gnarf/gists{/gist_id}","starred_url":"https://api.github.com/users/gnarf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnarf/subscriptions","organizations_url":"https://api.github.com/users/gnarf/orgs","repos_url":"https://api.github.com/users/gnarf/repos","events_url":"https://api.github.com/users/gnarf/events{/privacy}","received_events_url":"https://api.github.com/users/gnarf/received_events","type":"User","site_admin":false},"body":"### Proposed Changes\r\n\r\n* Flyout stores a \"recycle bin\" of the svg nodes it's about to throw out and reuses them when recreating a flyout\r\n\r\n### Reason for Changes\r\n\r\n* Avoids a bunch of DOM GC and trash for every sprite swap with swapping toolbars.\r\n","created_at":"2018-04-13T15:26:13Z","updated_at":"2018-04-13T18:58:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0df20ccdc6033a16b92ff5f03861e726c855686f","assignee":{"login":"rachel-fenichel","id":13686399,"avatar_url":"https://avatars2.githubusercontent.com/u/13686399?v=4","gravatar_id":"","url":"https://api.github.com/users/rachel-fenichel","html_url":"https://github.com/rachel-fenichel","followers_url":"https://api.github.com/users/rachel-fenichel/followers","following_url":"https://api.github.com/users/rachel-fenichel/following{/other_user}","gists_url":"https://api.github.com/users/rachel-fenichel/gists{/gist_id}","starred_url":"https://api.github.com/users/rachel-fenichel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rachel-fenichel/subscriptions","organizations_url":"https://api.github.com/users/rachel-fenichel/orgs","repos_url":"https://api.github.com/users/rachel-fenichel/repos","events_url":"https://api.github.com/users/rachel-fenichel/events{/privacy}","received_events_url":"https://api.github.com/users/rachel-fenichel/received_events","type":"User","site_admin":false},"assignees":[{"login":"rachel-fenichel","id":13686399,"avatar_url":"https://avatars2.githubusercontent.com/u/13686399?v=4","gravatar_id":"","url":"https://api.github.com/users/rachel-fenichel","html_url":"https://github.com/rachel-fenichel","followers_url":"https://api.github.com/users/rachel-fenichel/followers","following_url":"https://api.github.com/users/rachel-fenichel/following{/other_user}","gists_url":"https://api.github.com/users/rachel-fenichel/gists{/gist_id}","starred_url":"https://api.github.com/users/rachel-fenichel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rachel-fenichel/subscriptions","organizations_url":"https://api.github.com/users/rachel-fenichel/orgs","repos_url":"https://api.github.com/users/rachel-fenichel/repos","events_url":"https://api.github.com/users/rachel-fenichel/events{/privacy}","received_events_url":"https://api.github.com/users/rachel-fenichel/received_events","type":"User","site_admin":false},{"login":"picklesrus","id":15675877,"avatar_url":"https://avatars0.githubusercontent.com/u/15675877?v=4","gravatar_id":"","url":"https://api.github.com/users/picklesrus","html_url":"https://github.com/picklesrus","followers_url":"https://api.github.com/users/picklesrus/followers","following_url":"https://api.github.com/users/picklesrus/following{/other_user}","gists_url":"https://api.github.com/users/picklesrus/gists{/gist_id}","starred_url":"https://api.github.com/users/picklesrus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/picklesrus/subscriptions","organizations_url":"https://api.github.com/users/picklesrus/orgs","repos_url":"https://api.github.com/users/picklesrus/repos","events_url":"https://api.github.com/users/picklesrus/events{/privacy}","received_events_url":"https://api.github.com/users/picklesrus/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"ericrosenbaum","id":567844,"avatar_url":"https://avatars1.githubusercontent.com/u/567844?v=4","gravatar_id":"","url":"https://api.github.com/users/ericrosenbaum","html_url":"https://github.com/ericrosenbaum","followers_url":"https://api.github.com/users/ericrosenbaum/followers","following_url":"https://api.github.com/users/ericrosenbaum/following{/other_user}","gists_url":"https://api.github.com/users/ericrosenbaum/gists{/gist_id}","starred_url":"https://api.github.com/users/ericrosenbaum/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ericrosenbaum/subscriptions","organizations_url":"https://api.github.com/users/ericrosenbaum/orgs","repos_url":"https://api.github.com/users/ericrosenbaum/repos","events_url":"https://api.github.com/users/ericrosenbaum/events{/privacy}","received_events_url":"https://api.github.com/users/ericrosenbaum/received_events","type":"User","site_admin":false},{"login":"picklesrus","id":15675877,"avatar_url":"https://avatars0.githubusercontent.com/u/15675877?v=4","gravatar_id":"","url":"https://api.github.com/users/picklesrus","html_url":"https://github.com/picklesrus","followers_url":"https://api.github.com/users/picklesrus/followers","following_url":"https://api.github.com/users/picklesrus/following{/other_user}","gists_url":"https://api.github.com/users/picklesrus/gists{/gist_id}","starred_url":"https://api.github.com/users/picklesrus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/picklesrus/subscriptions","organizations_url":"https://api.github.com/users/picklesrus/orgs","repos_url":"https://api.github.com/users/picklesrus/repos","events_url":"https://api.github.com/users/picklesrus/events{/privacy}","received_events_url":"https://api.github.com/users/picklesrus/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":356477428,"url":"https://api.github.com/repos/LLK/scratch-blocks/labels/performance","name":"performance","color":"fbca04","default":false},{"id":310492138,"url":"https://api.github.com/repos/LLK/scratch-blocks/labels/pr%20-%20needs%20work","name":"pr - needs work","color":"fc2929","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/LLK/scratch-blocks/pulls/1442/commits","review_comments_url":"https://api.github.com/repos/LLK/scratch-blocks/pulls/1442/comments","review_comment_url":"https://api.github.com/repos/LLK/scratch-blocks/pulls/comments{/number}","comments_url":"https://api.github.com/repos/LLK/scratch-blocks/issues/1442/comments","statuses_url":"https://api.github.com/repos/LLK/scratch-blocks/statuses/d9436f34877d8765b707b52963141a088031599d","head":{"label":"gnarf:flyout-recycle","ref":"flyout-recycle","sha":"d9436f34877d8765b707b52963141a088031599d","user":{"login":"gnarf","id":549355,"avatar_url":"https://avatars2.githubusercontent.com/u/549355?v=4","gravatar_id":"","url":"https://api.github.com/users/gnarf","html_url":"https://github.com/gnarf","followers_url":"https://api.github.com/users/gnarf/followers","following_url":"https://api.github.com/users/gnarf/following{/other_user}","gists_url":"https://api.github.com/users/gnarf/gists{/gist_id}","starred_url":"https://api.github.com/users/gnarf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnarf/subscriptions","organizations_url":"https://api.github.com/users/gnarf/orgs","repos_url":"https://api.github.com/users/gnarf/repos","events_url":"https://api.github.com/users/gnarf/events{/privacy}","received_events_url":"https://api.github.com/users/gnarf/received_events","type":"User","site_admin":false},"repo":{"id":128986876,"name":"scratch-blocks","full_name":"gnarf/scratch-blocks","owner":{"login":"gnarf","id":549355,"avatar_url":"https://avatars2.githubusercontent.com/u/549355?v=4","gravatar_id":"","url":"https://api.github.com/users/gnarf","html_url":"https://github.com/gnarf","followers_url":"https://api.github.com/users/gnarf/followers","following_url":"https://api.github.com/users/gnarf/following{/other_user}","gists_url":"https://api.github.com/users/gnarf/gists{/gist_id}","starred_url":"https://api.github.com/users/gnarf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gnarf/subscriptions","organizations_url":"https://api.github.com/users/gnarf/orgs","repos_url":"https://api.github.com/users/gnarf/repos","events_url":"https://api.github.com/users/gnarf/events{/privacy}","received_events_url":"https://api.github.com/users/gnarf/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gnarf/scratch-blocks","description":"Scratch Blocks is a library for building creative computing interfaces.","fork":true,"url":"https://api.github.com/repos/gnarf/scratch-blocks","forks_url":"https://api.github.com/repos/gnarf/scratch-blocks/forks","keys_url":"https://api.github.com/repos/gnarf/scratch-blocks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gnarf/scratch-blocks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gnarf/scratch-blocks/teams","hooks_url":"https://api.github.com/repos/gnarf/scratch-blocks/hooks","issue_events_url":"https://api.github.com/repos/gnarf/scratch-blocks/issues/events{/number}","events_url":"https://api.github.com/repos/gnarf/scratch-blocks/events","assignees_url":"https://api.github.com/repos/gnarf/scratch-blocks/assignees{/user}","branches_url":"https://api.github.com/repos/gnarf/scratch-blocks/branches{/branch}","tags_url":"https://api.github.com/repos/gnarf/scratch-blocks/tags","blobs_url":"https://api.github.com/repos/gnarf/scratch-blocks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gnarf/scratch-blocks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gnarf/scratch-blocks/git/refs{/sha}","trees_url":"https://api.github.com/repos/gnarf/scratch-blocks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gnarf/scratch-blocks/statuses/{sha}","languages_url":"https://api.github.com/repos/gnarf/scratch-blocks/languages","stargazers_url":"https://api.github.com/repos/gnarf/scratch-blocks/stargazers","contributors_url":"https://api.github.com/repos/gnarf/scratch-blocks/contributors","subscribers_url":"https://api.github.com/repos/gnarf/scratch-blocks/subscribers","subscription_url":"https://api.github.com/repos/gnarf/scratch-blocks/subscription","commits_url":"https://api.github.com/repos/gnarf/scratch-blocks/commits{/sha}","git_commits_url":"https://api.github.com/repos/gnarf/scratch-blocks/git/commits{/sha}","comments_url":"https://api.github.com/repos/gnarf/scratch-blocks/comments{/number}","issue_comment_url":"https://api.github.com/repos/gnarf/scratch-blocks/issues/comments{/number}","contents_url":"https://api.github.com/repos/gnarf/scratch-blocks/contents/{+path}","compare_url":"https://api.github.com/repos/gnarf/scratch-blocks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gnarf/scratch-blocks/merges","archive_url":"https://api.github.com/repos/gnarf/scratch-blocks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gnarf/scratch-blocks/downloads","issues_url":"https://api.github.com/repos/gnarf/scratch-blocks/issues{/number}","pulls_url":"https://api.github.com/repos/gnarf/scratch-blocks/pulls{/number}","milestones_url":"https://api.github.com/repos/gnarf/scratch-blocks/milestones{/number}","notifications_url":"https://api.github.com/repos/gnarf/scratch-blocks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gnarf/scratch-blocks/labels{/name}","releases_url":"https://api.github.com/repos/gnarf/scratch-blocks/releases{/id}","deployments_url":"https://api.github.com/repos/gnarf/scratch-blocks/deployments","created_at":"2018-04-10T19:47:17Z","updated_at":"2018-04-10T19:47:19Z","pushed_at":"2018-04-13T17:57:29Z","git_url":"git://github.com/gnarf/scratch-blocks.git","ssh_url":"git@github.com:gnarf/scratch-blocks.git","clone_url":"https://github.com/gnarf/scratch-blocks.git","svn_url":"https://github.com/gnarf/scratch-blocks","homepage":"https://scratch.mit.edu/developers","size":73682,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","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":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"LLK:develop","ref":"develop","sha":"c5631b02c037a64a1f8ba95bb6cdbd18a3241cc7","user":{"login":"LLK","id":3420800,"avatar_url":"https://avatars1.githubusercontent.com/u/3420800?v=4","gravatar_id":"","url":"https://api.github.com/users/LLK","html_url":"https://github.com/LLK","followers_url":"https://api.github.com/users/LLK/followers","following_url":"https://api.github.com/users/LLK/following{/other_user}","gists_url":"https://api.github.com/users/LLK/gists{/gist_id}","starred_url":"https://api.github.com/users/LLK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LLK/subscriptions","organizations_url":"https://api.github.com/users/LLK/orgs","repos_url":"https://api.github.com/users/LLK/repos","events_url":"https://api.github.com/users/LLK/events{/privacy}","received_events_url":"https://api.github.com/users/LLK/received_events","type":"Organization","site_admin":false},"repo":{"id":49213884,"name":"scratch-blocks","full_name":"LLK/scratch-blocks","owner":{"login":"LLK","id":3420800,"avatar_url":"https://avatars1.githubusercontent.com/u/3420800?v=4","gravatar_id":"","url":"https://api.github.com/users/LLK","html_url":"https://github.com/LLK","followers_url":"https://api.github.com/users/LLK/followers","following_url":"https://api.github.com/users/LLK/following{/other_user}","gists_url":"https://api.github.com/users/LLK/gists{/gist_id}","starred_url":"https://api.github.com/users/LLK/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LLK/subscriptions","organizations_url":"https://api.github.com/users/LLK/orgs","repos_url":"https://api.github.com/users/LLK/repos","events_url":"https://api.github.com/users/LLK/events{/privacy}","received_events_url":"https://api.github.com/users/LLK/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LLK/scratch-blocks","description":"Scratch Blocks is a library for building creative computing interfaces.","fork":false,"url":"https://api.github.com/repos/LLK/scratch-blocks","forks_url":"https://api.github.com/repos/LLK/scratch-blocks/forks","keys_url":"https://api.github.com/repos/LLK/scratch-blocks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LLK/scratch-blocks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LLK/scratch-blocks/teams","hooks_url":"https://api.github.com/repos/LLK/scratch-blocks/hooks","issue_events_url":"https://api.github.com/repos/LLK/scratch-blocks/issues/events{/number}","events_url":"https://api.github.com/repos/LLK/scratch-blocks/events","assignees_url":"https://api.github.com/repos/LLK/scratch-blocks/assignees{/user}","branches_url":"https://api.github.com/repos/LLK/scratch-blocks/branches{/branch}","tags_url":"https://api.github.com/repos/LLK/scratch-blocks/tags","blobs_url":"https://api.github.com/repos/LLK/scratch-blocks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LLK/scratch-blocks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LLK/scratch-blocks/git/refs{/sha}","trees_url":"https://api.github.com/repos/LLK/scratch-blocks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LLK/scratch-blocks/statuses/{sha}","languages_url":"https://api.github.com/repos/LLK/scratch-blocks/languages","stargazers_url":"https://api.github.com/repos/LLK/scratch-blocks/stargazers","contributors_url":"https://api.github.com/repos/LLK/scratch-blocks/contributors","subscribers_url":"https://api.github.com/repos/LLK/scratch-blocks/subscribers","subscription_url":"https://api.github.com/repos/LLK/scratch-blocks/subscription","commits_url":"https://api.github.com/repos/LLK/scratch-blocks/commits{/sha}","git_commits_url":"https://api.github.com/repos/LLK/scratch-blocks/git/commits{/sha}","comments_url":"https://api.github.com/repos/LLK/scratch-blocks/comments{/number}","issue_comment_url":"https://api.github.com/repos/LLK/scratch-blocks/issues/comments{/number}","contents_url":"https://api.github.com/repos/LLK/scratch-blocks/contents/{+path}","compare_url":"https://api.github.com/repos/LLK/scratch-blocks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LLK/scratch-blocks/merges","archive_url":"https://api.github.com/repos/LLK/scratch-blocks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LLK/scratch-blocks/downloads","issues_url":"https://api.github.com/repos/LLK/scratch-blocks/issues{/number}","pulls_url":"https://api.github.com/repos/LLK/scratch-blocks/pulls{/number}","milestones_url":"https://api.github.com/repos/LLK/scratch-blocks/milestones{/number}","notifications_url":"https://api.github.com/repos/LLK/scratch-blocks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LLK/scratch-blocks/labels{/name}","releases_url":"https://api.github.com/repos/LLK/scratch-blocks/releases{/id}","deployments_url":"https://api.github.com/repos/LLK/scratch-blocks/deployments","created_at":"2016-01-07T15:49:10Z","updated_at":"2018-04-13T07:04:52Z","pushed_at":"2018-04-13T17:57:30Z","git_url":"git://github.com/LLK/scratch-blocks.git","ssh_url":"git@github.com:LLK/scratch-blocks.git","clone_url":"https://github.com/LLK/scratch-blocks.git","svn_url":"https://github.com/LLK/scratch-blocks","homepage":"https://scratch.mit.edu/developers","size":74105,"stargazers_count":804,"watchers_count":804,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":342,"mirror_url":null,"archived":false,"open_issues_count":164,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":342,"open_issues":164,"watchers":804,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/LLK/scratch-blocks/pulls/1442"},"html":{"href":"https://github.com/LLK/scratch-blocks/pull/1442"},"issue":{"href":"https://api.github.com/repos/LLK/scratch-blocks/issues/1442"},"comments":{"href":"https://api.github.com/repos/LLK/scratch-blocks/issues/1442/comments"},"review_comments":{"href":"https://api.github.com/repos/LLK/scratch-blocks/pulls/1442/comments"},"review_comment":{"href":"https://api.github.com/repos/LLK/scratch-blocks/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/LLK/scratch-blocks/pulls/1442/commits"},"statuses":{"href":"https://api.github.com/repos/LLK/scratch-blocks/statuses/d9436f34877d8765b707b52963141a088031599d"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"rachel-fenichel"}}