{"action":"created","issue":{"url":"https://api.github.com/repos/palantir/blueprint/issues/131","repository_url":"https://api.github.com/repos/palantir/blueprint","labels_url":"https://api.github.com/repos/palantir/blueprint/issues/131/labels{/name}","comments_url":"https://api.github.com/repos/palantir/blueprint/issues/131/comments","events_url":"https://api.github.com/repos/palantir/blueprint/issues/131/events","html_url":"https://github.com/palantir/blueprint/issues/131","id":188977362,"number":131,"title":"SSR with blueprint","user":{"login":"RobAWilkinson","id":1959628,"avatar_url":"https://avatars.githubusercontent.com/u/1959628?v=3","gravatar_id":"","url":"https://api.github.com/users/RobAWilkinson","html_url":"https://github.com/RobAWilkinson","followers_url":"https://api.github.com/users/RobAWilkinson/followers","following_url":"https://api.github.com/users/RobAWilkinson/following{/other_user}","gists_url":"https://api.github.com/users/RobAWilkinson/gists{/gist_id}","starred_url":"https://api.github.com/users/RobAWilkinson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RobAWilkinson/subscriptions","organizations_url":"https://api.github.com/users/RobAWilkinson/orgs","repos_url":"https://api.github.com/users/RobAWilkinson/repos","events_url":"https://api.github.com/users/RobAWilkinson/events{/privacy}","received_events_url":"https://api.github.com/users/RobAWilkinson/received_events","type":"User","site_admin":false},"labels":[{"id":478396842,"url":"https://api.github.com/repos/palantir/blueprint/labels/!P1","name":"!P1","color":"d4792f","default":false},{"id":480887469,"url":"https://api.github.com/repos/palantir/blueprint/labels/Package:%20core","name":"Package: core","color":"394B59","default":false},{"id":478396761,"url":"https://api.github.com/repos/palantir/blueprint/labels/Status:%20needs%20proposal","name":"Status: needs proposal","color":"ffad6a","default":false},{"id":478396701,"url":"https://api.github.com/repos/palantir/blueprint/labels/Type:%20feature%20request","name":"Type: feature request","color":"CED9E0","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2016-11-13T15:54:05Z","updated_at":"2016-11-21T18:48:18Z","closed_at":null,"body":"Server side rendering with blueprint breaks, `dom4.max.js` is requiring tons of things."},"comment":{"url":"https://api.github.com/repos/palantir/blueprint/issues/comments/262030004","html_url":"https://github.com/palantir/blueprint/issues/131#issuecomment-262030004","issue_url":"https://api.github.com/repos/palantir/blueprint/issues/131","id":262030004,"user":{"login":"justingreenberg","id":1539088,"avatar_url":"https://avatars.githubusercontent.com/u/1539088?v=3","gravatar_id":"","url":"https://api.github.com/users/justingreenberg","html_url":"https://github.com/justingreenberg","followers_url":"https://api.github.com/users/justingreenberg/followers","following_url":"https://api.github.com/users/justingreenberg/following{/other_user}","gists_url":"https://api.github.com/users/justingreenberg/gists{/gist_id}","starred_url":"https://api.github.com/users/justingreenberg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/justingreenberg/subscriptions","organizations_url":"https://api.github.com/users/justingreenberg/orgs","repos_url":"https://api.github.com/users/justingreenberg/repos","events_url":"https://api.github.com/users/justingreenberg/events{/privacy}","received_events_url":"https://api.github.com/users/justingreenberg/received_events","type":"User","site_admin":false},"created_at":"2016-11-21T18:48:18Z","updated_at":"2016-11-21T18:48:18Z","body":"you can see a diff here of some of my SSR research over the weekend applied to core:\r\nhttps://github.com/palantir/blueprint/compare/master...justingreenberg:jg/server-rendering\r\n\r\nsummary...\r\n\r\n1. **utils/isBrowser** - simple guard for detecting execution context\r\n![image](https://cloud.githubusercontent.com/assets/1539088/20495866/de4bae8a-aff0-11e6-81df-eb5301092785.png)\r\n\r\n1. **dom4** - used for shimming dom:\r\n![image](https://cloud.githubusercontent.com/assets/1539088/20495899/f711f366-aff0-11e6-8068-3ef5e36aa521.png)\r\n\r\n2. **InteractionModeEngine** - also used for settings up sink for browser events in node...\r\n![image](https://cloud.githubusercontent.com/assets/1539088/20495915/03c7cd7e-aff1-11e6-84e2-c23b7fec3a70.png)\r\n\r\n3. **hotkeyParser** - simple fix\r\n![image](https://cloud.githubusercontent.com/assets/1539088/20495883/ec450cfc-aff0-11e6-84ca-8c83fa58f9d9.png)\r\n\r\n\r\n\r\nthese fixes will effectively render the markup, but anything relying on popover/portal will trigger a re-render on client (checksum mismatch) and will break event handlers due to direct dom manipulation related to `Tether` integration:\r\n![image](https://cloud.githubusercontent.com/assets/1539088/20495589/c16ec884-afef-11e6-88ad-e7d2c51b3965.png)\r\n\r\ni didn't have time to look into a full migration, but these issues would likely be mitigated by replacing ad hoc portal solution with [react-portal](https://github.com/tajo/react-portal) or [react-tether](https://github.com/souporserious/react-tether), both of which seem to have addressed these issues using controlled component state\r\n"}}
{"actor":{"display_login":"justingreenberg"}}