Files
taskpile/frontend/node_modules/next/dist/esm/client/components/headers.js
Alvis f1d51b8cc8 Add side panels, task selection, graph animation, and project docs
- 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>
2026-04-08 11:23:06 +00:00

58 lines
3.2 KiB
JavaScript

import { RequestCookiesAdapter } from "../../server/web/spec-extension/adapters/request-cookies";
import { HeadersAdapter } from "../../server/web/spec-extension/adapters/headers";
import { RequestCookies } from "../../server/web/spec-extension/cookies";
import { actionAsyncStorage } from "./action-async-storage.external";
import { DraftMode } from "./draft-mode";
import { trackDynamicDataAccessed } from "../../server/app-render/dynamic-rendering";
import { staticGenerationAsyncStorage } from "./static-generation-async-storage.external";
import { getExpectedRequestStore } from "./request-async-storage.external";
/**
* This function allows you to read the HTTP incoming request headers in
* [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),
* [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations),
* [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers) and
* [Middleware](https://nextjs.org/docs/app/building-your-application/routing/middleware).
*
* Read more: [Next.js Docs: `headers`](https://nextjs.org/docs/app/api-reference/functions/headers)
*/ export function headers() {
const callingExpression = "headers";
const staticGenerationStore = staticGenerationAsyncStorage.getStore();
if (staticGenerationStore) {
if (staticGenerationStore.forceStatic) {
// When we are forcing static we don't mark this as a Dynamic read and we return an empty headers object
return HeadersAdapter.seal(new Headers({}));
} else {
// We will return a real headers object below so we mark this call as reading from a dynamic data source
trackDynamicDataAccessed(staticGenerationStore, callingExpression);
}
}
return getExpectedRequestStore(callingExpression).headers;
}
export function cookies() {
const callingExpression = "cookies";
const staticGenerationStore = staticGenerationAsyncStorage.getStore();
if (staticGenerationStore) {
if (staticGenerationStore.forceStatic) {
// When we are forcing static we don't mark this as a Dynamic read and we return an empty cookies object
return RequestCookiesAdapter.seal(new RequestCookies(new Headers({})));
} else {
// We will return a real headers object below so we mark this call as reading from a dynamic data source
trackDynamicDataAccessed(staticGenerationStore, callingExpression);
}
}
const requestStore = getExpectedRequestStore(callingExpression);
const asyncActionStore = actionAsyncStorage.getStore();
if ((asyncActionStore == null ? void 0 : asyncActionStore.isAction) || (asyncActionStore == null ? void 0 : asyncActionStore.isAppRoute)) {
// We can't conditionally return different types here based on the context.
// To avoid confusion, we always return the readonly type here.
return requestStore.mutableCookies;
}
return requestStore.cookies;
}
export function draftMode() {
const callingExpression = "draftMode";
const requestStore = getExpectedRequestStore(callingExpression);
return new DraftMode(requestStore.draftMode);
}
//# sourceMappingURL=headers.js.map