- Foldable left panel (user profile) and right panel (task details) - Clicking a task in the list or graph node selects it and shows details - Both views (task list + graph) always mounted via absolute inset-0 for correct canvas dimensions; tabs toggle visibility with opacity - Graph node selection animation: other nodes repel outward (charge -600), then selected node smoothly slides to center (500ms cubic ease-out), then charge restores to -120 and graph stabilizes - Graph re-fits on tab switch and panel resize via ResizeObserver - Fix UUID string IDs throughout (backend returns UUIDs, not integers) - Add TaskDetailPanel, UserPanel components - Add CLAUDE.md project documentation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
85 lines
2.0 KiB
JSON
85 lines
2.0 KiB
JSON
{
|
|
"name": "force-graph",
|
|
"version": "1.51.2",
|
|
"description": "2D force-directed graph rendered on HTML5 canvas",
|
|
"type": "module",
|
|
"unpkg": "dist/force-graph.min.js",
|
|
"jsdelivr": "dist/force-graph.min.js",
|
|
"main": "dist/force-graph.mjs",
|
|
"module": "dist/force-graph.mjs",
|
|
"types": "src/index.d.ts",
|
|
"exports": {
|
|
"types": "./dist/force-graph.d.ts",
|
|
"umd": "./dist/force-graph.min.js",
|
|
"default": "./dist/force-graph.mjs"
|
|
},
|
|
"sideEffects": [
|
|
"./src/*.css"
|
|
],
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/vasturiano/force-graph.git"
|
|
},
|
|
"homepage": "https://github.com/vasturiano/force-graph",
|
|
"keywords": [
|
|
"2d",
|
|
"force",
|
|
"simulation",
|
|
"graph",
|
|
"canvas",
|
|
"d3"
|
|
],
|
|
"author": {
|
|
"name": "Vasco Asturiano",
|
|
"url": "https://github.com/vasturiano"
|
|
},
|
|
"license": "MIT",
|
|
"bugs": {
|
|
"url": "https://github.com/vasturiano/force-graph/issues"
|
|
},
|
|
"scripts": {
|
|
"build": "rimraf dist && rollup -c",
|
|
"dev": "rollup -w -c rollup.config.dev.js",
|
|
"prepare": "npm run build"
|
|
},
|
|
"files": [
|
|
"dist/**/*",
|
|
"example/**/*",
|
|
"src/**/*"
|
|
],
|
|
"dependencies": {
|
|
"@tweenjs/tween.js": "18 - 25",
|
|
"accessor-fn": "1",
|
|
"bezier-js": "3 - 6",
|
|
"canvas-color-tracker": "^1.3",
|
|
"d3-array": "1 - 3",
|
|
"d3-drag": "2 - 3",
|
|
"d3-force-3d": "2 - 3",
|
|
"d3-scale": "1 - 4",
|
|
"d3-scale-chromatic": "1 - 3",
|
|
"d3-selection": "2 - 3",
|
|
"d3-zoom": "2 - 3",
|
|
"float-tooltip": "^1.7",
|
|
"index-array-by": "1",
|
|
"kapsule": "^1.16",
|
|
"lodash-es": "4"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "^7.29.0",
|
|
"@babel/preset-env": "^7.29.0",
|
|
"@rollup/plugin-babel": "^7.0.0",
|
|
"@rollup/plugin-commonjs": "^29.0.2",
|
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
"@rollup/plugin-terser": "^1.0.0",
|
|
"postcss": "^8.5.8",
|
|
"rimraf": "^6.1.3",
|
|
"rollup": "^4.59.0",
|
|
"rollup-plugin-dts": "^6.4.0",
|
|
"rollup-plugin-postcss": "^4.0.2",
|
|
"typescript": "^5.9.3"
|
|
},
|
|
"engines": {
|
|
"node": ">=12"
|
|
}
|
|
}
|