{"id":17695023,"url":"https://github.com/asg017/atom-observable","last_synced_at":"2026-03-04T04:02:32.288Z","repository":{"id":47969966,"uuid":"203530691","full_name":"asg017/atom-observable","owner":"asg017","description":"Render Observable notebooks in Atom! ","archived":false,"fork":false,"pushed_at":"2021-08-11T11:33:35.000Z","size":7427,"stargazers_count":11,"open_issues_count":8,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-02-11T01:08:43.386Z","etag":null,"topics":["atom","atom-package","javascript","observable-notebook","observablehq"],"latest_commit_sha":null,"homepage":"https://atom.io/packages/atom-observable","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/asg017.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-08-21T07:29:05.000Z","updated_at":"2021-05-14T11:37:26.000Z","dependencies_parsed_at":"2022-08-12T15:31:21.757Z","dependency_job_id":null,"html_url":"https://github.com/asg017/atom-observable","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/asg017/atom-observable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asg017%2Fatom-observable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asg017%2Fatom-observable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asg017%2Fatom-observable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asg017%2Fatom-observable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/asg017","download_url":"https://codeload.github.com/asg017/atom-observable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/asg017%2Fatom-observable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30071670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T03:25:38.285Z","status":"ssl_error","status_checked_at":"2026-03-04T03:25:05.086Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atom","atom-package","javascript","observable-notebook","observablehq"],"created_at":"2024-10-24T13:50:50.686Z","updated_at":"2026-03-04T04:02:32.274Z","avatar_url":"https://github.com/asg017.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# atom-observable package\n\nRender full Observable notebooks in Atom!\n\n![](./example.gif)\n\n## Installing\n\n[Package here](https://atom.io/packages/atom-observable). You can `apm install atom-observable` or just look up `atom-observable` in the Atom package installer.\n\n## Usage\n\nWhen you have a \"notebook\" file open, just press `Alt+Ctrl+O` (or `Packages` -\u003e `atom-observable` -\u003e `Toggle`), and a preview will popup, with the rendered notebook.\n\nOnce the preview is open, whenever you save the file, the entire preview will reload. It's not as cool of a dev experience as observablehq.com is, but it's something!\n\nAll [`stdlib`](https://github.com/observablehq/stdlib) should work - `DOM`, `require`, `html`, `md`, all that. `import` cells will resolve from observablehq.com by default.\n\n### What is a \"notebook\"?\n\nIt's basically just a regular notebook you would write on observablehq.com, but in a file. It can be made of several top-level cell definitions - with import support!\n\nFor example:\n\n```javascript\n\na = 1\n\nb = 2\n\nc = a + b\n\nviewof name = DOM.input()\n\nmd`Hello ${name}!`\n\nimport {chart} from \"@d3/bar-chart\"\n```\n\nKeep in mind - not all javascript files are valid Observable syntax. [`example_notebooks`](./example_notebooks) has a few examples of what could work.\n\n## How it works\n\nMost of the magic happens with [`@alex.garcia/unofficial-observablehq-compiler`](https://github.com/asg017/unofficial-observablehq-compiler) - an unofficial compiler for Observable notebook syntax. All this package does is basically send the file contents to an iframe, and a script in the iframe uses the compiler to compile it to an element.\n\n## Contributing\n\nPlease do! There's a ton of potential here - access to node.js, custom libraries, better local development. Take a look at these [issues](https://github.com/asg017/atom-observable/issues) to find something to work on. Just please follow the [Contributor Covenant](https://www.contributor-covenant.org/) in all your interactions 😄\n\n## Acknowledgement\n\nThis was built with libraries like [@observablehq/runtime](https://github.com/observablehq/runtime) and [@observablehq/parser](https://github.com/observablehq/parser) which are licensed under ISC.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasg017%2Fatom-observable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fasg017%2Fatom-observable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fasg017%2Fatom-observable/lists"}