{"_id":"@appcues/snabbdom-virtualize","_rev":"63-00434813cc4a75f6dee4a1131fcd6f98","name":"@appcues/snabbdom-virtualize","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0-beta.0":{"name":"@appcues/snabbdom-virtualize","version":"1.0.0-beta.0","author":{"name":"Ray Di Ciaccio","email":"ray@appcues.com"},"license":"MIT","_id":"@appcues/snabbdom-virtualize@1.0.0-beta.0","maintainers":[{"name":"ezeql","email":"ezeqle@gmail.com"},{"name":"gamache","email":"pete@gamache.org"},{"name":"marcotgs04","email":"marco@appcues.com"},{"name":"allieatappcues","email":"alexandra@appcues.com"},{"name":"benmalcom_appcues","email":"benjamin.ikeji@appcues.com"},{"name":"stephano_appcues","email":"stephano@appcues.com"},{"name":"appcues_dev","email":"dev@appcues.com"},{"name":"pete_appcues","email":"pete@appcues.com"},{"name":"evandavis","email":"davis.evan.m@gmail.com"},{"name":"rayd","email":"ray@appcues.com"},{"name":"geekjuice","email":"nick.joosung.hwang@gmail.com"},{"name":"ntenczar","email":"nate@appcues.com"},{"name":"nckjrdn","email":"nick.jordan@appcues.com"},{"name":"johntabone","email":"tabone@appcues.com"},{"name":"bcrowell","email":"brettcrowell@gmail.com"},{"name":"andyleclair","email":"andy@appcues.com"},{"name":"seanatappcues","email":"sean@appcues.com"},{"name":"fer-appcues","email":"fernando@appcues.com"},{"name":"amack87","email":"andy.mackenzie@appcues.com"},{"name":"humbercues","email":"humberto@appcues.com"},{"name":"dielappcues","email":"magdiel@appcues.com"},{"name":"nicomihalich","email":"nico@appcues.com"},{"name":"carlos.appcues","email":"carlos@appcues.com"},{"name":"kingrocfella","email":"kingsley@appcues.com"},{"name":"charles_depaula","email":"charles@appcues.com"},{"name":"misikir-appcues","email":"misikir@appcues.com"}],"homepage":"https://github.com/appcues/snabbdom-virtualize#readme","bugs":{"url":"https://github.com/appcues/snabbdom-virtualize/issues"},"dist":{"shasum":"7061989de136c32dc33072a742fcbcf963b0bac6","tarball":"https://registry.npmjs.org/@appcues/snabbdom-virtualize/-/snabbdom-virtualize-1.0.0-beta.0.tgz","fileCount":5,"integrity":"sha512-8hYxb+y+wLvt5fcxzl5R0d/MQm9bqrY8SzZjhNhWnxSDsII3AKr/pQ5jWPS9PyJF8KQIcpvkyfqdqiEQoaeWug==","signatures":[{"sig":"MEYCIQDTbhJnMmyoZ6Q45gSA/S4J5mZVc+CB2mLIfW+d8N1vvAIhANGHzz3NEqWKTzDJF5hujgZUWR+8T3gRxxbDMqPEH974","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ432CRA9TVsSAnZWagAAUC8P/jiHPEJXxM5Mte9Dju/l\nhnLGkwxftf1b6+qUHkYfQs/GnrFd3LR0SRzMwaP2Pdr1nTS0ABmGSJ6ByIuO\nWx1bglWSRPrt6FL7NARqCwrAWEcMBYsAxPiUdjvB8EdNWTeHIKjrK0TAIQy6\nczOmkMAbQIKPXlF51SJ7JjlnCQpV/IWn1LsdiTdoz0rgHcojMxUGUpA4XLoL\nfYRadHKI8lCw5DD3uTzzXpk6ycOk0cvM+c3q69EEUV6owhLQ7GIKQk6qZRbR\nGHcVax3jzLS1S4q8CZfN3mOevy3mjGB40LvQqps6ky6xCaEDCsyCErWDIBQe\nkLkoNSdc3dIU+pItwL/TdYcH2SVoPZfbyetf+YUTE6TJ469vYrHDwWXW/kBV\nLRFRIbiR2yXm7WGWiSrQ83SJmUxHPUIwZLVujMlSe3Dt7nhfq6C5D8C0yndj\nTcDC4pR3Zqg2U+/Ilso5usNlBlkg+23zu7TRxZX8dg3hCgnOW0tJAjhPnHIx\nTrTxzh/b6e620aYVmWIpcMwbIKTFKAn/oyF56+8r/59qtT1LMGDGaP7pqINU\nzp20CFU5zcL7R67fSUq7pJAizAfCav4eE4ADcz9FnuobFe6CW2mMIbJDdchH\nGuymGzqpkkMvWTjaHIbz2al4gWV6TT72pmPf4MZCAXIEd1i5AV9o7C16Kd4C\nVifo\r\n=vfSR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"d35d3b1fa97e3ae52474f247338d0118e8294c58","scripts":{"test":"npm run build && mocha test/nodejs_tests.js && karma start test/karma.conf.js","build":"babel src -d lib","watch":"npm run build -- --watch","prepublish":"npm run build"},"_npmUser":{"name":"dielappcues","email":"magdiel@appcues.com"},"repository":{"url":"git+https://github.com/appcues/snabbdom-virtualize.git","type":"git"},"_npmVersion":"7.6.0","description":"Library for turning strings and DOM nodes into virtual DOM nodes compatible with snabbdom.","directories":{},"_nodeVersion":"15.11.0","dependencies":{"html-parse-stringify2":"^2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","jsdom":"^9.4.2","karma":"^0.13.19","mocha":"^2.4.5","sinon":"^1.17.3","webpack":"^1.12.12","snabbdom":"3.1.0","babel-cli":"^6.3.17","socket.io":"1.4.6","karma-chai":"^0.1.0","sinon-chai":"^2.8.0","karma-mocha":"^0.2.1","karma-sinon":"^1.0.4","babel-loader":"^6.2.2","karma-webpack":"^1.7.0","karma-chai-sinon":"^0.1.5","babel-preset-es2015":"^6.3.13","karma-sauce-launcher":"^0.3.0","karma-chrome-launcher":"^0.2.2","karma-firefox-launcher":"^0.1.7","karma-sourcemap-loader":"^0.3.7"},"peerDependencies":{"snabbdom":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/snabbdom-virtualize_1.0.0-beta.0_1631817205911_0.5549382717610838","host":"s3://npm-registry-packages"}},"1.0.0-beta.1":{"name":"@appcues/snabbdom-virtualize","version":"1.0.0-beta.1","author":{"name":"Ray Di Ciaccio","email":"ray@appcues.com"},"license":"MIT","_id":"@appcues/snabbdom-virtualize@1.0.0-beta.1","maintainers":[{"name":"ezeql","email":"ezeqle@gmail.com"},{"name":"gamache","email":"pete@gamache.org"},{"name":"marcotgs04","email":"marco@appcues.com"},{"name":"allieatappcues","email":"alexandra@appcues.com"},{"name":"benmalcom_appcues","email":"benjamin.ikeji@appcues.com"},{"name":"stephano_appcues","email":"stephano@appcues.com"},{"name":"appcues_dev","email":"dev@appcues.com"},{"name":"pete_appcues","email":"pete@appcues.com"},{"name":"evandavis","email":"davis.evan.m@gmail.com"},{"name":"rayd","email":"ray@appcues.com"},{"name":"geekjuice","email":"nick.joosung.hwang@gmail.com"},{"name":"ntenczar","email":"nate@appcues.com"},{"name":"nckjrdn","email":"nick.jordan@appcues.com"},{"name":"johntabone","email":"tabone@appcues.com"},{"name":"bcrowell","email":"brettcrowell@gmail.com"},{"name":"andyleclair","email":"andy@appcues.com"},{"name":"seanatappcues","email":"sean@appcues.com"},{"name":"fer-appcues","email":"fernando@appcues.com"},{"name":"amack87","email":"andy.mackenzie@appcues.com"},{"name":"humbercues","email":"humberto@appcues.com"},{"name":"dielappcues","email":"magdiel@appcues.com"},{"name":"nicomihalich","email":"nico@appcues.com"},{"name":"carlos.appcues","email":"carlos@appcues.com"},{"name":"kingrocfella","email":"kingsley@appcues.com"},{"name":"charles_depaula","email":"charles@appcues.com"},{"name":"misikir-appcues","email":"misikir@appcues.com"}],"homepage":"https://github.com/appcues/snabbdom-virtualize#readme","bugs":{"url":"https://github.com/appcues/snabbdom-virtualize/issues"},"dist":{"shasum":"59271234284c731981f2a8d0f372461d95b8af19","tarball":"https://registry.npmjs.org/@appcues/snabbdom-virtualize/-/snabbdom-virtualize-1.0.0-beta.1.tgz","fileCount":10,"integrity":"sha512-FyuGq1iEwlz2gABwtLsbeezqScsTdUBWo1ODEC54Qq9gKhdodDghteSQMKauSFLBqZF6VbVHaA8/3OMwoH7QPA==","signatures":[{"sig":"MEUCIQCYnZKw0qliEaSyg4+HjtpSxlVOmS46O53NWWbvkqeYMwIgLld81nLs9IFuPfjrSmjW104L8h+carDzSz6Tw4/J5Bs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ5HHCRA9TVsSAnZWagAAzrIP/jZZuXYBeB6Tf1YrDOMJ\n9sHF9cEN3ZD6e6GwXSaJLZHqSA1DA01K8uhD43Ryr3xjRGDLDRnt5xIww4de\nrtN6zL71BiPiXq9WmOdUKHTEK1Y0zfaKpA+5EkA3cqGvzV5WMAH+qtp3Xp0a\ne+OtPzpCIiFB3aB+afY9G3TtiY9HQ1wrI8VW6/gVUy4GDY/ViQKW+PUQJwD3\nHOqKspxcMrF6Vsxv71O/gla1DKPtCmC8Z+NsguNAN3m6Tu3MQtQh9htALxdQ\nzlYBSO4rXI2lQkYDXIWe6bBqIFtituyT2tclzJzGbiBC8GqIcKRN16B7ZpDJ\nvFVQkdGexRe4DphKNJNrLRGviM5YscxdzTtjQAyiQDTXUJCLrZdgirUCXnzl\nkWE/0XXOpwC2LEjaT0R+/H2+CSADnCeM69lBioh6jCCFTjVbSM7ggwpo/yQE\nphc9GJVVVyIVyeoqTsxPcmG95rFiqjbDGKydavRpBskHgZXIrrV7cYK64VjD\nQ2qclM6llEZ2Kgwgz4z74IsAuobHVCiAyMq+5ZD8O0+DF/hjUQt82OBGT4pv\nVTj/aqFbJnScJNlmluwFUqaFGbGuYUZ8RRps3cGeGS40yDvIj9csO/JBM2RE\ntPadP9iFtQ/33AzJPLX07cSNYsWyoncJLRGzVV4+xNFWUPCbs/J742R90wNa\nOG6c\r\n=PmcE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"66f1f008bde5252d266e385efc903b5fe1f5f4d0","scripts":{"test":"npm run build && mocha test/nodejs_tests.js && karma start test/karma.conf.js","build":"babel src -d lib","watch":"npm run build -- --watch","prepublish":"npm run build"},"_npmUser":{"name":"dielappcues","email":"magdiel@appcues.com"},"repository":{"url":"git+https://github.com/appcues/snabbdom-virtualize.git","type":"git"},"_npmVersion":"7.6.0","description":"Library for turning strings and DOM nodes into virtual DOM nodes compatible with snabbdom.","directories":{},"_nodeVersion":"15.11.0","dependencies":{"html-parse-stringify2":"^2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","jsdom":"^9.4.2","karma":"^0.13.19","mocha":"^2.4.5","sinon":"^1.17.3","webpack":"^1.12.12","snabbdom":"3.1.0","babel-cli":"^6.3.17","socket.io":"1.4.6","karma-chai":"^0.1.0","sinon-chai":"^2.8.0","karma-mocha":"^0.2.1","karma-sinon":"^1.0.4","babel-loader":"^6.2.2","karma-webpack":"^1.7.0","karma-chai-sinon":"^0.1.5","babel-preset-es2015":"^6.3.13","karma-sauce-launcher":"^0.3.0","karma-chrome-launcher":"^0.2.2","karma-firefox-launcher":"^0.1.7","karma-sourcemap-loader":"^0.3.7"},"peerDependencies":{"snabbdom":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/snabbdom-virtualize_1.0.0-beta.1_1631818183187_0.9489464400155645","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@appcues/snabbdom-virtualize","version":"1.1.0","author":{"name":"Ray Di Ciaccio","email":"ray@appcues.com"},"license":"MIT","_id":"@appcues/snabbdom-virtualize@1.1.0","maintainers":[{"name":"james.mcdonell","email":"james.mcdonell@appcues.com"},{"name":"appcues_dev","email":"dev@appcues.com"},{"name":"rayd","email":"ray@appcues.com"},{"name":"ntenczar","email":"nate@appcues.com"},{"name":"bcrowell","email":"brettcrowell@gmail.com"},{"name":"andyleclair","email":"andy@appcues.com"},{"name":"amack87","email":"andy.mackenzie@appcues.com"},{"name":"humbercues","email":"humberto@appcues.com"},{"name":"dielappcues","email":"magdiel@appcues.com"},{"name":"nicomihalich","email":"nico@appcues.com"},{"name":"charles_depaula","email":"charles@appcues.com"},{"name":"sescobb27","email":"sescobb27@gmail.com"},{"name":"cristianmartinez","email":"dev.cmartinez@gmail.com"},{"name":"juan-appcues","email":"juan@appcues.com"},{"name":"rubemnakamura","email":"rubem.nakamura@gmail.com"},{"name":"sagunkaranjit","email":"karanjit.sagun01@gmail.com"},{"name":"fredvieira","email":"fredops1@hotmail.com"},{"name":"iujames","email":"james@appcues.com"},{"name":"cabol","email":"carlos.bolanos@appcues.com"},{"name":"nlkassad","email":"lewis.benf@gmail.com"},{"name":"mmaatttt","email":"matt.hayashida@appcues.com"},{"name":"marylnsky","email":"Mary@appcues.com"},{"name":"ckolos","email":"chris.kolosiwsky@appcues.com"},{"name":"gabrieluizramos","email":"gabriel.luiz.ramos@gmail.com"},{"name":"elijah_appcues","email":"elijah@appcues.com"},{"name":"johndarmstrong","email":"john.armstrong@appcues.com"},{"name":"nckjrdn","email":"nick.jordan@appcues.com"}],"homepage":"https://github.com/appcues/snabbdom-virtualize#readme","bugs":{"url":"https://github.com/appcues/snabbdom-virtualize/issues"},"dist":{"shasum":"90cb86f2da9eb382f0e7a5d131ad5ec289a3fd00","tarball":"https://registry.npmjs.org/@appcues/snabbdom-virtualize/-/snabbdom-virtualize-1.1.0.tgz","fileCount":10,"integrity":"sha512-DDfTLW+byVutG6SupPqZInCQkzmTlfFIE6teYtKjAI38MaN2z2/u8VzZEupP+bB/mIZN6AzUeI63vAtWdyWqCQ==","signatures":[{"sig":"MEYCIQCxBdxaIXvhfs1vJVieOMiGKqspBQ1/ORvwIQjbif9wtgIhANVmbvAqx1TnQ9IUjlV+Kx+1Kk9jQcWHhNyZQVHzYw6E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17192},"main":"lib/index.js","gitHead":"4157d0c671312e08fc1f48a318f0ce2a25ab9048","scripts":{"test":"npm run build && mocha test/nodejs_tests.js && karma start test/karma.conf.js","build":"babel src -d lib","watch":"npm run build -- --watch","prepublish":"npm run build"},"_npmUser":{"name":"dielappcues","email":"magdiel@appcues.com"},"repository":{"url":"git+https://github.com/appcues/snabbdom-virtualize.git","type":"git"},"_npmVersion":"10.9.2","description":"Library for turning strings and DOM nodes into virtual DOM nodes compatible with snabbdom.","directories":{},"_nodeVersion":"23.6.0","dependencies":{"html-parse-stringify2":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^3.5.0","jsdom":"^9.4.2","karma":"^0.13.19","mocha":"^2.4.5","sinon":"^1.17.3","webpack":"^1.12.12","snabbdom":"3.1.0","babel-cli":"^6.3.17","socket.io":"1.4.6","karma-chai":"^0.1.0","sinon-chai":"^2.8.0","karma-mocha":"^0.2.1","karma-sinon":"^1.0.4","babel-loader":"^6.2.2","karma-webpack":"^1.7.0","karma-chai-sinon":"^0.1.5","babel-preset-es2015":"^6.3.13","karma-sauce-launcher":"^0.3.0","karma-chrome-launcher":"^0.2.2","karma-firefox-launcher":"^0.1.7","karma-sourcemap-loader":"^0.3.7"},"peerDependencies":{"snabbdom":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/snabbdom-virtualize_1.1.0_1763741196255_0.14075768367332886","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2021-09-16T18:33:25.910Z","modified":"2026-09-30T20:27:22.196Z","1.0.0-beta.0":"2021-09-16T18:33:26.179Z","1.0.0-beta.1":"2021-09-16T18:49:43.470Z","1.1.0":"2025-11-21T16:06:36.462Z"},"bugs":{"url":"https://github.com/appcues/snabbdom-virtualize/issues"},"author":{"name":"Ray Di Ciaccio","email":"ray@appcues.com"},"license":"MIT","homepage":"https://github.com/appcues/snabbdom-virtualize#readme","repository":{"url":"git+https://github.com/appcues/snabbdom-virtualize.git","type":"git"},"description":"Library for turning strings and DOM nodes into virtual DOM nodes compatible with snabbdom.","maintainers":[{"email":"james.mcdonell@appcues.com","name":"james.mcdonell"},{"email":"dev@appcues.com","name":"appcues_dev"},{"email":"humberto@appcues.com","name":"humbercues"},{"email":"sescobb27@gmail.com","name":"sescobb27"},{"email":"rubem.nakamura@gmail.com","name":"rubemnakamura"},{"email":"karanjit.sagun01@gmail.com","name":"sagunkaranjit"},{"email":"james@appcues.com","name":"iujames"},{"email":"lewis.benf@gmail.com","name":"nlkassad"},{"email":"matt.hayashida@appcues.com","name":"mmaatttt"},{"email":"chris.kolosiwsky@appcues.com","name":"ckolos"},{"email":"joey@appcues.com","name":"jmuething"},{"email":"gabriel.luiz.ramos@gmail.com","name":"gabrieluizramos"},{"email":"elijah@appcues.com","name":"elijah_appcues"},{"email":"john.armstrong@appcues.com","name":"johndarmstrong"},{"email":"nick.jordan@appcues.com","name":"nckjrdn"}],"readme":"# snabbdom-virtualize [![Build Status](https://travis-ci.org/appcues/snabbdom-virtualize.svg?branch=master)](https://travis-ci.org/appcues/snabbdom-virtualize)\n\nLibrary for turning strings and DOM nodes into virtual DOM nodes compatible with [Snabbdom](https://github.com/paldepind/snabbdom).\n\n## API\n\n### `virtualize(nodes, options)`\n* `nodes: Element|String` - Either a DOM `Element` or a string of HTML to turn into a set of virtual DOM nodes.\n* `options: Object` - A hash of options to pass into the virtualize call. Available options are currently:\n  * `context: Document` - An alternative DOM document to use (default is `window.document`).\n  * `hooks: Object` -  An object specifying hooks to call during the virtualization process. See the [hooks](#hooks) section below.\n\n## Usage\n\nAdd it to your application with\n\n```\nnpm install --save snabbdom-virtualize\n```\n\nRequire/import it.\n```javascript\n// ES6\nimport virtualize from 'snabbdom-virtualize';\n\n// Require.\nlet virtualize = require('snabbdom-virtualize').default;\n```\n\nPass it a set of DOM nodes or a string representing DOM nodes with one root node.\n\n```javascript\n// Actual DOM nodes\nlet topNode = document.createElement('div');\nlet textNode = document.createTextNode('Click ');\nlet linkNode = document.createElement('a');\nlinkNode.setAttribute('href', 'http://example.com');\nlinkNode.textContent = 'here';\ntopNode.appendChild(textNode);\ntopNode.appendChild(linkNode);\nlet vnode = virtualize(topNode);\n\n\n// String\nlet vnode = virtualize('<div>Click <a href=\"http://example.com\">here</a></div>');\n```\n\n#### Specifying a different document\n\nYou can specify a different DOM document (other than the default `window.document` in a browser) by passing a `context` option into your calls to `virtualize`. This will allow for usage in a server-side setting, where there is no browser. One option is to use `jsdom` to create a DOM document that can be used:\n\n```javascript\nconst virtualize = require('snabbdom-virtualize').default;\nconst jsdom = require('jsdom').jsdom;\nvirtualizeString('<div>Click <a href=\"http://example.com\">here</a></div>', {\n  context: jsdom('<html></html>')\n});\n```\n\n#### Using modules à la carte\n\nIf you'd prefer to import just the function for virtualizing DOM nodes or just\nthe function for virtualizing HTML strings, you're in luck. Just import\n`snabbdom-virtualize/nodes` or `snabbdom-virtualize/strings` and use in the\nsame way:\n\n```javascript\n// DOM nodes.\nimport virtualize from 'snabbdom-virtualize/nodes';\n\nlet topNode = document.createElement('div');\nlet textNode = document.createTextNode('Click ');\nlet linkNode = document.createElement('a');\nlinkNode.setAttribute('href', 'http://example.com');\nlinkNode.textContent = 'here';\ntopNode.appendChild(textNode);\ntopNode.appendChild(linkNode);\nlet vnode = virtualize(topNode);\n\n\n// HTML strings.\nimport virtualize from 'snabbdom-virtualize/strings';\n\nlet vnode = virtualize('<div>Click <a href=\"http://example.com\">here</a></div>');\n\n```\n\n#### Hooks\n\nYou can register a `create` hook with any of the `virtualize` functions. This will be called once for each vnode that was created. It's called after the virtualization process is completed. The function receives one argument - the `VNode` that was created.\n\n```javascript\n// The function passed as the 'create' hook is called 3 times: once for the\n// <div>, once for the <span> and once for the text node inside the <span>.\nvirtualize(\"<div><span>Hi!</span></div>\", {\n    hooks: {\n        create: function(vnode) { ... }\n    }\n});\n```\n\nHooks allow you to perform some operations on your VNodes after virtualization but before patching with snabbdom.\n\n### Project setup\n\nWritten in ES6, compiled using Babel. To get started:\n\n```\nnpm install\nnpm run build\n```\n\nThis will output compiled files in the `lib` directory.\n\n### Tests\n\nTests can be run with `npm test`.\n","readmeFilename":"README.md"}