- 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>
23 lines
821 B
JavaScript
23 lines
821 B
JavaScript
/* @minVersion 7.22.0 */
|
|
|
|
export function _using(stack, value, isAwait) {
|
|
if (value === null || value === void 0) return value;
|
|
if (Object(value) !== value) {
|
|
throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
|
|
}
|
|
// core-js-pure uses Symbol.for for polyfilling well-known symbols
|
|
if (isAwait) {
|
|
var dispose = value[Symbol.asyncDispose || Symbol.for("Symbol.asyncDispose")];
|
|
}
|
|
if (dispose === null || dispose === void 0) {
|
|
dispose = value[Symbol.dispose || Symbol.for("Symbol.dispose")];
|
|
}
|
|
if (typeof dispose !== "function") {
|
|
throw new TypeError(`Property [Symbol.dispose] is not a function.`);
|
|
}
|
|
stack.push({ v: value, d: dispose, a: isAwait });
|
|
return value;
|
|
}
|
|
|
|
export { _using as _ };
|