Skip to content

React Architecture Map

Scope: React viewer toolkit (@scaryterry/pdfium/react, @scaryterry/pdfium/react/headless, @scaryterry/pdfium/react/editor).

This index maps major React modules to the intended layers.

LayerPurposeRepresentative modules
headless/session/**, headless/viewer/**, headless/editor/**Framework-agnostic ownership of document, viewer, and editor runtime statesrc/headless/session/pdfium-session.ts, src/headless/viewer/use-viewer-setup.ts, src/headless/viewer/use-pdf-viewer-controller.ts, src/headless/editor/use-editor-provider-runtime.ts
react/headless/**Public React bindings and composition primitives over the headless ownership modelsrc/react/headless/session.ts, src/react/headless/viewer.ts, src/react/headless/viewer-layers.ts, src/react/headless/editor.ts, src/react/headless/editor-layers.ts
components/**Public, thin composition/wrapper entry pointssrc/react/components/activity-bar.tsx, src/react/components/bookmark-panel.tsx, src/react/components/default-toolbar.tsx, src/react/components/pdf-document-view.tsx, src/react/components/search-panel.tsx, src/react/components/thumbnail-strip.tsx, src/react/components/panels/forms-panel.tsx, src/react/components/panels/links-panel.tsx, src/react/components/panels/objects-panel.tsx, src/react/components/panels/text-panel.tsx, src/react/components/panels/annotations-panel.tsx, src/react/components/panels/structure-panel.tsx
hooks/**Stateful orchestration and effect lifecyclesrc/react/hooks/use-controlled-scroll.ts, src/react/hooks/use-interaction-mode.ts, src/react/hooks/use-print.ts, src/headless/viewer/use-visible-pages.ts
internal/*-root-view.tsx / internal/*-view.tsxUI rendering and panel-local compositionsrc/react/internal/links-panel-view.tsx, src/react/internal/objects-panel-root-view.tsx, src/react/internal/text-panel-root-view.tsx, src/react/internal/annotations-panel-root-view.tsx, src/react/internal/forms-panel-view.tsx
internal/*-model.ts / internal/*-pipeline.tsPure transforms and deterministic flow helperssrc/react/internal/controlled-scroll-model.ts, src/react/internal/interaction-mode-model.ts, src/react/internal/print-pipeline.ts, src/react/internal/visible-pages-model.ts, src/react/internal/structure-panel-model.ts
internal/use-*-controller.tsView-facing state assembly for complex panelssrc/react/internal/use-forms-panel-controller.ts, src/react/internal/use-bookmark-panel-controller.ts, src/headless/viewer/use-pdf-viewer-controller.ts
FeaturePublic entryController/orchestrationViewModel/pipeline
Headless sessionsrc/react/headless/session.tssrc/react/context.tsxn/asrc/headless/session/pdfium-session.ts
Headless viewersrc/react/headless/viewer.tssrc/headless/viewer/use-pdf-viewer-controller.tssrc/react/headless/pdf-viewer-root.tsxsrc/headless/viewer/use-viewer-setup.ts
Headless viewer layerssrc/react/headless/viewer-layers.tsn/asrc/react/components/pdf-document-view.tsx, src/react/components/pdf-page-view.tsxsrc/react/internal/pdf-document-view-controller.ts
Headless editorsrc/react/headless/editor.tssrc/headless/editor/use-editor-provider-runtime.tssrc/react/headless/pdf-editor-context.tsxsrc/react/editor/internal/editor-reducer.ts
Headless editor layerssrc/react/headless/editor-layers.tssrc/react/editor/components/editor-overlay.tsxsrc/react/editor/components/editor-overlay.tsxeditor overlay geometry + hook modules
Activity barsrc/react/components/activity-bar.tsxsrc/react/internal/activity-bar-root-view.tsxsrc/react/internal/activity-bar-view.tsxsrc/react/internal/activity-bar-model.ts
Bookmark panelsrc/react/components/bookmark-panel.tsxsrc/react/internal/bookmark-panel-root-view.tsxsrc/react/internal/bookmark-panel-view.tsxsrc/react/internal/bookmark-*
Default toolbarsrc/react/components/default-toolbar.tsxsrc/react/internal/default-toolbar-root-view.tsxsrc/react/internal/default-toolbar-groups.tsxsrc/react/internal/default-toolbar-state.ts
Document viewsrc/react/components/pdf-document-view.tsxsrc/react/internal/pdf-document-view-root.tsxsrc/react/internal/pdf-document-view-renderers.tsxsrc/react/internal/pdf-document-view-controller.ts
Search panelsrc/react/components/search-panel.tsxsrc/react/internal/search-panel-view.tsxsrc/react/internal/search-panel-view.tsxsrc/react/internal/search-panel-copy.ts
Thumbnail stripsrc/react/components/thumbnail-strip.tsxsrc/react/internal/thumbnail-strip-root-view.tsxsrc/react/internal/thumbnail-strip-root-view.tsxsrc/react/internal/thumbnail-strip-model.ts
Forms panelsrc/react/components/panels/forms-panel.tsxsrc/react/internal/use-forms-panel-controller.tssrc/react/internal/forms-panel-view.tsxsrc/react/internal/forms-panel-helpers.ts
Links panelsrc/react/components/panels/links-panel.tsxsrc/react/internal/links-panel-view.tsxsrc/react/internal/links-panel-view.tsxsrc/react/internal/links-panel-helpers.ts
Objects panelsrc/react/components/panels/objects-panel.tsxsrc/react/internal/objects-panel-root-view.tsxsrc/react/internal/objects-panel-view.tsxsrc/react/internal/objects-panel-helpers.ts
Text panelsrc/react/components/panels/text-panel.tsxsrc/react/internal/text-panel-root-view.tsxsrc/react/internal/text-panel-view.tsxsrc/react/internal/text-panel-helpers.ts
Annotations panelsrc/react/components/panels/annotations-panel.tsxsrc/react/internal/annotations-panel-root-view.tsxsrc/react/internal/annotations-panel-view.tsxsrc/react/internal/annotations-panel-helpers.ts
Controlled scrollingsrc/react/hooks/use-controlled-scroll.tssrc/react/hooks/use-controlled-scroll.tsn/asrc/react/internal/controlled-scroll-model.ts
Interaction modesrc/react/hooks/use-interaction-mode.tssrc/react/hooks/use-interaction-mode.tsn/asrc/react/internal/interaction-mode-model.ts
Printingsrc/react/hooks/use-print.tssrc/react/hooks/use-print.tsn/asrc/react/internal/print-pipeline.ts
  • Wrapper contract tests: test/unit/react/components/panels/panel-wrapper-contract.test.ts
  • Controller/view wrapper contract: test/unit/react/components/panels/forms-panel-wrapper.test.tsx
  • Component wrapper contracts: test/unit/react/components/component-wrapper-contract.test.ts
  • Layer boundary guardrails: test/unit/react/layer-boundary.test.ts