{"id":15497515,"url":"https://github.com/bcomnes/nanomap","last_synced_at":"2025-04-22T22:25:01.258Z","repository":{"id":57307982,"uuid":"100151382","full_name":"bcomnes/nanomap","owner":"bcomnes","description":"Functionally map data into stateful nanocomponents","archived":false,"fork":false,"pushed_at":"2017-09-12T01:46:40.000Z","size":324,"stargazers_count":13,"open_issues_count":2,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T19:22:59.958Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://nanomap.netlify.com/","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/bcomnes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-13T03:27:15.000Z","updated_at":"2020-04-21T07:32:23.000Z","dependencies_parsed_at":"2022-09-09T01:00:50.446Z","dependency_job_id":null,"html_url":"https://github.com/bcomnes/nanomap","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fnanomap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fnanomap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fnanomap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fnanomap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bcomnes","download_url":"https://codeload.github.com/bcomnes/nanomap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250332853,"owners_count":21413288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-10-02T08:39:11.691Z","updated_at":"2025-04-22T22:25:01.214Z","avatar_url":"https://github.com/bcomnes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nanomap [![stability][0]][1]\n[![npm version][2]][3] [![build status][4]][5]\n[![downloads][8]][9] [![js-standard-style][10]][11]\n\nFunctionally map data into stateful [nanocomponents][nc].\n\n![](screenshot.png)\n\n## Usage\n\n```js\nvar Nanomap = require('nanocomponent/map')\nvar YoutubeComponent = require('youtube-component')\nvar TwitterComponent = require('twitter-component')\nvar OEmbedComponent = require('oembed-component')\nvar simpleMapper = new Nanomap(opts, TwitterComponent)\n// OR\nvar complexMapper = new Nanomap(opts, {\n  'video': YoutubeComponent,\n  'tweet': TwitterComponent,\n  ...,\n  default: OEmbedComponent\n})\n\n[{\n  id: 'foo123',\n  opts: { color: 'blue' },\n  arguments: {an: 'arg'} // Non-array types passed in as the first argument\n}].map(simpleMapper) // Array of rendered DOM nodes from homogeneous components\n\n[{\n  id: 'foo123',\n  type: 'tweet',\n  arguments: ['tweet-url'] // component.render.apply(component, arguments)\n}].map(complexMapper) // Array of rendered DOM nodes from a heterogeneous set of components\n```\n\n## Installation\n```sh\n$ npm install nanomap\n```\n## API\n### `Nanomap = require('nanomap`)\nImport `Nanomap` component class.\n\n### `mapper = new Nanomap([opts], Component)`\n### `mapper = Nanomap([opts], { type: Component, [default: Component]})`\nCreate a new mapper instance that will render data into component instances.\n\n`opts` include:\n\n```js\n{\n  gc: true // clean up unused instances when mapped over\n}\n```\n\nSee examples for more details.\n\n## License\n[MIT](https://tldrlegal.com/license/mit-license)\n\n[0]: https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square\n[1]: https://nodejs.org/api/documentation.html#documentation_stability_index\n[2]: https://img.shields.io/npm/v/nanomap.svg?style=flat-square\n[3]: https://npmjs.org/package/nanomap\n[4]: https://img.shields.io/travis/bcomnes/nanomap/master.svg?style=flat-square\n[5]: https://travis-ci.org/bcomnes/nanomap\n[8]: http://img.shields.io/npm/dm/nanomap.svg?style=flat-square\n[9]: https://npmjs.org/package/nanomap\n[10]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square\n[11]: https://github.com/feross/standard\n[bel]: https://github.com/shama/bel\n[yoyoify]: https://github.com/shama/yo-yoify\n[md]: https://github.com/patrick-steele-idem/morphdom\n[210]: https://github.com/patrick-steele-idem/morphdom/pull/81\n[nm]: https://github.com/yoshuawuyts/nanomorph\n[ce]: https://github.com/yoshuawuyts/cache-element\n[class]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes\n[isSameNode]: https://github.com/choojs/nanomorph#caching-dom-elements\n[onload]: https://github.com/shama/on-load\n[choo]: https://github.com/choojs/choo\n[nca]: https://github.com/choojs/nanocomponent-adapters\n[nc]: https://github.com/choojs/nanocomponent\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcomnes%2Fnanomap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbcomnes%2Fnanomap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcomnes%2Fnanomap/lists"}