Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/thatstupidcomputer / apps/web/src/animation/desktop/DesktopGestures.tsx |
| Date | Not specified in source |
| Repository | Janady13/thatstupidcomputer |
| Revision | 57555cde46910102dd25d6c1c1fb2c359e9655bd |
| Branch | main |
| Path or archive member | apps/web/src/animation/desktop/DesktopGestures.tsx |
| Original SHA-256 | a80656e41337f18fd9499ab344949502926283c704bffed01dbfc3cd21be0480 |
| Git blob SHA | dcd39aa54df1de5a4806d566183d9dc54d0d3047 |
| Reading-copy SHA-256 | a80656e41337f18fd9499ab344949502926283c704bffed01dbfc3cd21be0480 |
Recovered source transcript
Download complete source text ↓19 lines · 0.9 KB
import { createElement, memo } from 'react';
import type { ReactElement } from 'react';
import type { ArtProps } from '../office/types';
import { createGestureGeometry } from './gesture-geometry.mjs';
import type { GestureLayer, GestureNode } from './gesture-geometry.mjs';
/** Same DOM-free geometry tree used by the standalone SVG proof renderer. */
export const DesktopGestures = memo(function DesktopGestures({ idPrefix, palette, layer = 'arms' }: Pick<ArtProps, 'idPrefix' | 'palette'> & {layer?:GestureLayer}) {
function render(node:GestureNode):ReactElement {
const attrs = {...node.attrs};
if ('pointer-events' in attrs) {
attrs.pointerEvents = attrs['pointer-events'];
delete attrs['pointer-events'];
}
return createElement(node.tag, {...attrs,id:`${idPrefix}--${node.id}`,'data-rig-id':node.id,key:node.id}, ...node.children.map(render));
}
return render(createGestureGeometry(palette,layer));
});