{"_id":"@benportner/js_family_tree","_rev":"8-95e2e836662693f791c1cfd8b84ff1b5","name":"@benportner/js_family_tree","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@benportner/js_family_tree","version":"1.0.0","keywords":["typescript","family-tree","visualization","render","collapsible","interactive"],"author":{"name":"Benjamin W. Portner"},"license":"GPL-3.0","_id":"@benportner/js_family_tree@1.0.0","maintainers":[{"name":"benportner","email":"npm@benjamin-portner.de"}],"homepage":"https://github.com/BenPortner/js_family_tree#readme","bugs":{"url":"https://github.com/BenPortner/js_family_tree/issues"},"dist":{"shasum":"f23c9eed9e0a77fa91e8f32590340406b7dc1439","tarball":"https://registry.npmjs.org/@benportner/js_family_tree/-/js_family_tree-1.0.0.tgz","fileCount":53,"integrity":"sha512-VvhmmElQ3nP8c+VTjf9uO1BTOG2RARKz78czyJ8G+Sc5ZLTt6wXC7xiZNI2gdW3bdHOmuYUoRbqn+ocaPAOGDA==","signatures":[{"sig":"MEUCIQCmj8WRGPvnJXEZOFXsGBV3XLg+wtz9jffYPTYHog1yHgIgXTL7yDhWsGSsJgQaS6YOvZnYLELrTsFMVIoP0n3dkvw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1151029},"main":"src/index.ts","type":"module","types":"dist/types/index.d.ts","module":"dist/js_family_tree.esm.js","browser":"dist/js_family_tree.umd.js","gitHead":"ecff0cbe2b3aac56a3972c728133d70bc05308b0","scripts":{"test":"mocha","watch":"rollup -c -w","prettier":"prettier --write ./src"},"_npmUser":{"name":"benportner","email":"npm@benjamin-portner.de"},"repository":{"url":"git+https://github.com/BenPortner/js_family_tree.git","type":"git"},"_npmVersion":"10.9.2","description":"An interactive family tree visualization using d3-dag","directories":{"example":"examples"},"_nodeVersion":"22.14.0","dependencies":{"d3":"^7.9.0","tslib":"^2.8.1","d3-dag":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","chai":"^5.2.0","jsdom":"^26.1.0","mocha":"^11.2.2","rollup":"^4.40.1","prettier":"^3.6.2","@types/d3":"^7.4.3","typescript":"^5.8.3","@types/chai":"^5.2.1","@types/node":"^22.15.3","@types/jsdom":"^21.1.7","@types/mocha":"^10.0.10","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/js_family_tree_1.0.0_1758122464889_0.43479359286143904","host":"s3://npm-registry-packages-npm-production"}},"1.0.1-beta":{"name":"@benportner/js_family_tree","version":"1.0.1-beta","keywords":["typescript","family-tree","visualization","render","collapsible","interactive"],"author":{"name":"Benjamin W. Portner"},"license":"GPL-3.0","_id":"@benportner/js_family_tree@1.0.1-beta","maintainers":[{"name":"benportner","email":"npm@benjamin-portner.de"}],"homepage":"https://github.com/BenPortner/js_family_tree#readme","bugs":{"url":"https://github.com/BenPortner/js_family_tree/issues"},"dist":{"shasum":"94a575676397854b9a8aa57fce87220b7bb37d1a","tarball":"https://registry.npmjs.org/@benportner/js_family_tree/-/js_family_tree-1.0.1-beta.tgz","fileCount":58,"integrity":"sha512-6gtLEogKOzy2egd96KaNjPbeqR7AXexcDT0hJP+/K4D1UzmiVUpt4DIbppV9IMpstg+G8M+3Kjy7HicH/UzfNQ==","signatures":[{"sig":"MEQCIDoHAh1O8nm6lbb/A/k0Mpu6zce5BrA+SWeQ/67ofhrvAiAp2NAnuTDSkBpFLMVmw5Vcz3fyK0clC7AWsOIs6mVz7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1234929},"main":"src/index.ts","type":"module","types":"dist/types/index.d.ts","module":"dist/js_family_tree.esm.js","browser":"dist/js_family_tree.umd.js","gitHead":"262510e27e714396296a0ea5e97f340aa74b9429","scripts":{"docs":"typedoc","test":"mocha","build":"rollup -c","watch":"rollup -c -w","prettier":"prettier --write ./src"},"_npmUser":{"name":"benportner","email":"npm@benjamin-portner.de"},"repository":{"url":"git+https://github.com/BenPortner/js_family_tree.git","type":"git"},"_npmVersion":"10.9.2","description":"An interactive family tree visualization using d3-dag","directories":{"example":"examples"},"_nodeVersion":"22.14.0","dependencies":{"d3":"^7.9.0","tslib":"^2.8.1","d3-dag":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","chai":"^5.2.0","jsdom":"^26.1.0","mocha":"^11.2.2","rollup":"^4.40.1","typedoc":"^0.28.13","prettier":"^3.6.2","@types/d3":"^7.4.3","typescript":"^5.8.3","@types/chai":"^5.2.1","@types/node":"^22.15.3","@types/jsdom":"^21.1.7","@types/mocha":"^10.0.10","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1","typedoc-plugin-merge-modules":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_family_tree_1.0.1-beta_1762299044082_0.15845556067574873","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@benportner/js_family_tree","version":"1.0.2","keywords":["typescript","family-tree","visualization","render","collapsible","interactive"],"author":{"name":"Benjamin W. Portner"},"license":"GPL-3.0","_id":"@benportner/js_family_tree@1.0.2","maintainers":[{"name":"benportner","email":"npm@benjamin-portner.de"}],"homepage":"https://github.com/BenPortner/js_family_tree#readme","bugs":{"url":"https://github.com/BenPortner/js_family_tree/issues"},"dist":{"shasum":"b7e0b0b6ebc62937a32e5550f1f90c8a4740e71d","tarball":"https://registry.npmjs.org/@benportner/js_family_tree/-/js_family_tree-1.0.2.tgz","fileCount":59,"integrity":"sha512-gjbdQhrl44DhwsoP9aTE7FWJxuhVyzjrugvtRv8xXjJ1cilaN0TrCk5VEUFigtOGmPfflPT4281mODGG5ousHw==","signatures":[{"sig":"MEYCIQDVp2thWkUvLSjywRtpGCld1m4VlzqW5Z2DCxrjZeEO8QIhAMeclN4PTj4rcYjSNNsyvCvaWy8laSZ3F9P8UJQ02da+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1239647},"main":"src/index.ts","type":"module","types":"dist/types/index.d.ts","module":"dist/js_family_tree.esm.js","browser":"dist/js_family_tree.umd.js","gitHead":"a6ac55544af1b817e5336ff417ffefffe3150042","scripts":{"docs":"typedoc","test":"mocha","build":"rollup -c","watch":"rollup -c -w","prettier":"prettier --write ./src"},"_npmUser":{"name":"benportner","email":"npm@benjamin-portner.de"},"repository":{"url":"git+https://github.com/BenPortner/js_family_tree.git","type":"git"},"_npmVersion":"10.9.2","description":"An interactive family tree visualization using d3-dag","directories":{"example":"examples"},"_nodeVersion":"22.14.0","dependencies":{"d3":"^7.9.0","tslib":"^2.8.1","d3-dag":"^1.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","chai":"^5.2.0","jsdom":"^26.1.0","mocha":"^11.2.2","rollup":"^4.40.1","typedoc":"^0.28.13","prettier":"^3.6.2","@types/d3":"^7.4.3","typescript":"^5.8.3","@types/chai":"^5.2.1","@types/node":"^22.15.3","@types/jsdom":"^21.1.7","@types/mocha":"^10.0.10","@rollup/plugin-commonjs":"^28.0.3","@rollup/plugin-typescript":"^12.1.2","@rollup/plugin-node-resolve":"^16.0.1","typedoc-plugin-merge-modules":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/js_family_tree_1.0.2_1762550037461_0.7506148003105275","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@benportner/js_family_tree","version":"1.0.3","description":"An interactive family tree visualization using d3-dag","main":"src/index.ts","type":"module","module":"dist/js_family_tree.esm.js","browser":"dist/js_family_tree.umd.js","directories":{"example":"examples"},"scripts":{"test":"mocha","watch":"rollup -c -w","build":"rollup -c","prettier":"prettier --write ./src","docs":"typedoc"},"repository":{"type":"git","url":"git+https://github.com/BenPortner/js_family_tree.git"},"keywords":["typescript","family-tree","visualization","render","collapsible","interactive"],"author":{"name":"Benjamin W. Portner"},"license":"GPL-3.0","bugs":{"url":"https://github.com/BenPortner/js_family_tree/issues"},"homepage":"https://github.com/BenPortner/js_family_tree#readme","dependencies":{"d3":"^7.9.0","d3-dag":"^1.2.2","tslib":"^2.8.1"},"devDependencies":{"@rollup/plugin-commonjs":"^29.0.3","@rollup/plugin-node-resolve":"^16.0.3","@rollup/plugin-typescript":"^12.3.0","@types/chai":"^5.2.3","@types/d3":"^7.4.3","@types/jsdom":"^30.0.0","@types/mocha":"^10.0.10","@types/node":"^26.2.0","chai":"^6.2.2","jsdom":"^30.0.1","mocha":"^11.8.0","prettier":"^3.9.6","rollup":"^4.62.4","tsx":"^4.23.12","typedoc":"^0.28.20","typedoc-plugin-merge-modules":"^7.0.0","typescript":"^6.0.3"},"types":"dist/types/index.d.ts","overrides":{"serialize-javascript":"^7.0.5","diff":"^8.0.4"},"_id":"@benportner/js_family_tree@1.0.3","gitHead":"afc5a3b7faacdf23fe711d69c83d9a9fc3ea4027","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-th7O6Gxfh7Xq/VggAF3xoeVtF7qDnfTNQnYTPMLvYL/Wnkg5Q77Qnr8MPqAZyOcc4lR64RNxK80tP29OmgjELg==","shasum":"ba644de1df40fc9e40f9890a6d9646c52d858138","tarball":"https://registry.npmjs.org/@benportner/js_family_tree/-/js_family_tree-1.0.3.tgz","fileCount":60,"unpackedSize":1358066,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDSbi/XMVagCH++5549OV0Xuy50sMuQMMjuZIekdEqFIQIgOtIj2JGELkUG3+HgpXzI83Mx3nRZhypTiQO9gCHulOQ="}]},"_npmUser":{"name":"benportner","email":"npm@benjamin-portner.de"},"maintainers":[{"name":"benportner","email":"npm@benjamin-portner.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/js_family_tree_1.0.3_1786728619788_0.31324574601565636"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-17T15:21:04.773Z","modified":"2026-08-14T17:30:20.101Z","1.0.0":"2025-09-17T15:21:05.111Z","1.0.1":"2025-11-04T23:17:32.848Z","1.0.1-alpha":"2025-11-04T23:27:22.155Z","1.0.1-beta":"2025-11-04T23:30:44.334Z","1.0.2":"2025-11-07T21:13:57.710Z","1.0.3":"2026-08-14T17:30:19.958Z"},"bugs":{"url":"https://github.com/BenPortner/js_family_tree/issues"},"author":{"name":"Benjamin W. Portner"},"license":"GPL-3.0","homepage":"https://github.com/BenPortner/js_family_tree#readme","keywords":["typescript","family-tree","visualization","render","collapsible","interactive"],"repository":{"type":"git","url":"git+https://github.com/BenPortner/js_family_tree.git"},"description":"An interactive family tree visualization using d3-dag","maintainers":[{"name":"benportner","email":"npm@benjamin-portner.de"}],"readme":"# js_family_tree\r\n\r\nA simplistic app for displaying family trees in your browser.\r\n\r\nFeatures:\r\n- visualize family tree data in your browser\r\n- expand and collapse the tree by clicking on nodes\r\n- hover over nodes to display additional information in tooltips \r\n- move around the tree by zooming and panning\r\n- uses [d3-dag](https://github.com/erikbrinkman/d3-dag) for layout calculation and [d3](https://d3js.org/) for rendering\r\n\r\n[Live example here.](https://html-preview.github.io/?url=https://github.com/BenPortner/js_family_tree/blob/master/examples/simple-tree.html)\r\n\r\n[JSFiddle here.](https://jsfiddle.net/BenPortner/6mnt1wy4/)\r\n\r\n| :exclamation:  Note for developers |\r\n|----------------------------------------------|\r\n| v1.0.0 introduced significant changes to the codebase. Read more [here](CHANGELOG.md). |\r\n\r\n## Quickstart\r\n\r\n- Edit `data/data.js` to represent your family tree\r\n- Open `index.html`\r\n- Done!\r\n\r\n## Custom data format\r\n\r\nThe file `data/data.js` defines a single JavaScript object named `data` that represents your family tree. The structure is as follows:\r\n- `start`: The ID of the person who should be the starting point of the family tree. Only this person will be visible, initially. Further family members become visible when clicking on it.\r\n- `persons`: An object where each key is a unique person ID, and each value is an object with metadata about that person. It is recommended to at least add `name`, `birthyear`, `birthplace`, `deathyear` and `deathplace`, as these information are shown in the tooltip by default.\r\n- `unions`: An object where each key is a unique union ID, and each value is an object with metadata about the union. The object may be empty.\r\n- `links`: An array of pairs, each representing a connection (edge) between a person and a union. This list will be used to construct the tree.\r\n\r\n```javascript\r\ndata = {\r\n    \"start\":\"p2\",\r\n    \"persons\": {\r\n        \"p1\": { \"name\": \"Adam\", \"birthyear\": 1900, \"deathyear\": 1980, \"birthplace\": \"Alberta\", \"deathplace\":\"Austin\", \"other\": \"enter anything here\" },\r\n        \"p2\": { \"name\": \"Berta\", \"birthyear\": 1901, \"deathyear\": 1985, \"birthplace\": \"Berlin\", \"deathplace\": \"Bern\" },\r\n        \"p3\": { \"name\": \"Charlene\", \"birthyear\": 1930, \"deathyear\": 2010, \"birthplace\": \"Château\", \"deathplace\": \"Cuxhaven\" },\r\n        //...\r\n    },\r\n    \"unions\": {\r\n        \"u1\": { },\r\n        \"u2\": { \"foo\": \"bar\" },\r\n        //...\r\n    },\r\n    \"links\": [\r\n        [\"p1\", \"u1\"],\r\n        [\"p2\", \"u1\"],\r\n        [\"u1\", \"p3\"],\r\n        //...\r\n    ]\r\n}\r\n```\r\n\r\n## License\r\n\r\n[GPL-3.0](LICENSE)\r\n","readmeFilename":"README.md"}