{"action":"created","issue":{"url":"https://api.github.com/repos/nteract/nteract/issues/1907","repository_url":"https://api.github.com/repos/nteract/nteract","labels_url":"https://api.github.com/repos/nteract/nteract/issues/1907/labels{/name}","comments_url":"https://api.github.com/repos/nteract/nteract/issues/1907/comments","events_url":"https://api.github.com/repos/nteract/nteract/issues/1907/events","html_url":"https://github.com/nteract/nteract/pull/1907","id":260098345,"number":1907,"title":"[WIP] VDOM + models","user":{"login":"rgbkrk","id":836375,"avatar_url":"https://avatars0.githubusercontent.com/u/836375?v=4","gravatar_id":"","url":"https://api.github.com/users/rgbkrk","html_url":"https://github.com/rgbkrk","followers_url":"https://api.github.com/users/rgbkrk/followers","following_url":"https://api.github.com/users/rgbkrk/following{/other_user}","gists_url":"https://api.github.com/users/rgbkrk/gists{/gist_id}","starred_url":"https://api.github.com/users/rgbkrk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgbkrk/subscriptions","organizations_url":"https://api.github.com/users/rgbkrk/orgs","repos_url":"https://api.github.com/users/rgbkrk/repos","events_url":"https://api.github.com/users/rgbkrk/events{/privacy}","received_events_url":"https://api.github.com/users/rgbkrk/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2017-09-24T16:45:44Z","updated_at":"2017-12-12T00:59:41Z","closed_at":"2017-12-12T00:59:41Z","author_association":"OWNER","pull_request":{"url":"https://api.github.com/repos/nteract/nteract/pulls/1907","html_url":"https://github.com/nteract/nteract/pull/1907","diff_url":"https://github.com/nteract/nteract/pull/1907.diff","patch_url":"https://github.com/nteract/nteract/pull/1907.patch"},"body":"I've been experimenting with something along with @mpacer and @willingc, just posting this PR to get something up. I'll fill this out to be more rigorous and tested since it's going to be a pretty impactful change, in terms of the supported API.\r\n\r\n# Goal\r\n\r\nCreate a simple way to create interactive forms and layouts that will work across all Jupyter frontends that is compatible with real-time (consistent serializable state tree + diffs that can be propagated).\r\n\r\n# Related PRs:\r\n\r\n* Models #1313\r\n\r\n# Core concepts\r\n\r\n* When a VDOM output contains `data-path-for-ATTRIBUTE`, it replaces the actual `ATTRIBUTE` with a value from a model (as in #1313)\r\n* When the value is bound, we can set an implicit `onChange` handler (need to spec this out a bit)\r\n\r\nThis is fairly similar to how [React's (deprecated) `LinkedStateMixin` worked](https://facebook.github.io/react/docs/two-way-binding-helpers.html)\r\n\r\n## Missing pieces\r\n\r\n### `onChange` implicit bindings\r\n\r\nStatus: 🤔 \r\n\r\nTo start things off, we're going to allow changing form fields that use `name` and `value`, working in tandem with the `setIn` based models from #1313.\r\n\r\nRough sketch is that when an `<input>` is changed, we bubble up the event as an action that will both set the local model as well as send it to the kernel (to change the \"server side\" model).\r\n\r\n### `onClick` implicit bindings\r\n\r\nNot scoped for this PR (or any :soon: release), I want only actions that can be viewed if there were more than one viewer at the same time.\r\n\r\nMy current thinking on this is that we possibly bubble the `onClick` event up for a given `name` (which means only supporting `<button>`s for the moment).\r\n\r\n### Specifying the model to use\r\n\r\nStatus: 🤔 \r\n\r\nPotential options:\r\n\r\n* Within the transient field of the vdom output, set a `model_id`\r\n"},"comment":{"url":"https://api.github.com/repos/nteract/nteract/issues/comments/350909946","html_url":"https://github.com/nteract/nteract/pull/1907#issuecomment-350909946","issue_url":"https://api.github.com/repos/nteract/nteract/issues/1907","id":350909946,"user":{"login":"rgbkrk","id":836375,"avatar_url":"https://avatars0.githubusercontent.com/u/836375?v=4","gravatar_id":"","url":"https://api.github.com/users/rgbkrk","html_url":"https://github.com/rgbkrk","followers_url":"https://api.github.com/users/rgbkrk/followers","following_url":"https://api.github.com/users/rgbkrk/following{/other_user}","gists_url":"https://api.github.com/users/rgbkrk/gists{/gist_id}","starred_url":"https://api.github.com/users/rgbkrk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgbkrk/subscriptions","organizations_url":"https://api.github.com/users/rgbkrk/orgs","repos_url":"https://api.github.com/users/rgbkrk/repos","events_url":"https://api.github.com/users/rgbkrk/events{/privacy}","received_events_url":"https://api.github.com/users/rgbkrk/received_events","type":"User","site_admin":false},"created_at":"2017-12-12T00:59:41Z","updated_at":"2017-12-12T00:59:41Z","author_association":"OWNER","body":"Closing for now, let's revisit this next week during the nteract winter sprint if we make time."}}
{"actor":{"display_login":"rgbkrk"}}