- 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>
63 lines
1.1 KiB
Markdown
63 lines
1.1 KiB
Markdown
concat-map
|
|
==========
|
|
|
|
Concatenative mapdashery.
|
|
|
|
[](http://ci.testling.com/substack/node-concat-map)
|
|
|
|
[](http://travis-ci.org/substack/node-concat-map)
|
|
|
|
example
|
|
=======
|
|
|
|
``` js
|
|
var concatMap = require('concat-map');
|
|
var xs = [ 1, 2, 3, 4, 5, 6 ];
|
|
var ys = concatMap(xs, function (x) {
|
|
return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
|
|
});
|
|
console.dir(ys);
|
|
```
|
|
|
|
***
|
|
|
|
```
|
|
[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]
|
|
```
|
|
|
|
methods
|
|
=======
|
|
|
|
``` js
|
|
var concatMap = require('concat-map')
|
|
```
|
|
|
|
concatMap(xs, fn)
|
|
-----------------
|
|
|
|
Return an array of concatenated elements by calling `fn(x, i)` for each element
|
|
`x` and each index `i` in the array `xs`.
|
|
|
|
When `fn(x, i)` returns an array, its result will be concatenated with the
|
|
result array. If `fn(x, i)` returns anything else, that value will be pushed
|
|
onto the end of the result array.
|
|
|
|
install
|
|
=======
|
|
|
|
With [npm](http://npmjs.org) do:
|
|
|
|
```
|
|
npm install concat-map
|
|
```
|
|
|
|
license
|
|
=======
|
|
|
|
MIT
|
|
|
|
notes
|
|
=====
|
|
|
|
This module was written while sitting high above the ground in a tree.
|