Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/thatstupidcomputer / apps/web/src/animation/office/RoomObject.tsx |
| Date | Not specified in source |
| Repository | Janady13/thatstupidcomputer |
| Revision | 57555cde46910102dd25d6c1c1fb2c359e9655bd |
| Branch | main |
| Path or archive member | apps/web/src/animation/office/RoomObject.tsx |
| Original SHA-256 | e4bd6be7120b4b2dcd0ce8d2b5351cb66549581e5a2fbd150810c51bf44dba68 |
| Git blob SHA | 237f940d3d0586535fd27584de80b3ef520ca513 |
| Reading-copy SHA-256 | e4bd6be7120b4b2dcd0ce8d2b5351cb66549581e5a2fbd150810c51bf44dba68 |
Recovered source transcript
Download complete source text ↓31 lines · 1.2 KB
import { memo } from 'react';
import type { ReactNode } from 'react';
import { ART } from './registry';
import { placement } from './model';
import type { RoomItem, RoomPalette } from './types';
interface Props {
item: RoomItem;
items: readonly RoomItem[];
idPrefix: string;
palette: RoomPalette;
slot: (parent: string) => ReactNode;
}
export const RoomObject = memo(function RoomObject({ item, items, idPrefix, palette, slot }: Props) {
if (!item.visible) return null;
const Art = ART[item.kind];
const children = items.filter(child => child.parent === item.id);
const render = (child: RoomItem) => <RoomObject key={child.id} item={child} items={items} idPrefix={idPrefix} palette={palette} slot={slot} />;
return (
<g id={`${idPrefix}--object-${item.id}`} data-object={item.id} data-kind={item.kind} transform={placement(item)}>
{children.filter(child => child.stack === 'under').map(render)}
<Art idPrefix={`${idPrefix}--${item.id}`} palette={palette} hiddenParts={item.hiddenParts} />
<g id={`${idPrefix}--${item.id}-attachments`} data-attachments={item.id}>
{children.filter(child => child.stack !== 'under').map(render)}
{slot(item.id)}
</g>
</g>
);
});