docs/ 아래에 "examples" 페이지를 추가해서, src/index.ts 기준 공개 API를 사용자가 빠르게 이해할 수 있게 만든다.
핵심 목표는 아래 3가지다.
open-plant를 처음 쓰는 사람이WsiViewer조합 방식을 바로 복붙해서 시작할 수 있어야 한다.- 공개 API를 "기능별로" 찾을 수 있어야 하고, 각 API마다 무엇을 하는지 / 언제 쓰는지 / 최소 코드 예제가 보여야 한다.
- API가 많아도 문서가 난잡해지지 않도록, 실행 가능한 예제 중심 + 타입/보조 export 연결 방식으로 정리한다.
- 문서 사이트는 정적 HTML이며
docs/를 GitHub Pages로 직접 배포한다. - 문서 구조는
docs/en/*.html,docs/ko/*.html, 그리고 루트 redirect 페이지로 구성되어 있다. - 네비게이션은 각 HTML 파일에 하드코딩되어 있으므로, 새 페이지를 넣으면 기존 페이지들의 topnav/sidebar도 같이 수정해야 한다.
- 공개 API 기준점은
src/index.ts이다. - 현재
src/index.tsexport는 총 151개이며, 컴포넌트/유틸/타입/worker protocol까지 포함한다. - 기존 샘플 코드는
example/src/App.tsx,example/src/hooks/useImageLoader.ts,example/src/hooks/usePointLoader.ts,README.md,docs/migration-1.4.0.md에 이미 일부 존재한다.
이번 작업의 결과물은 아래로 잡는다.
docs/examples.htmlko/examples.html로 redirect
docs/ko/examples.htmldocs/en/examples.html- 기존 docs 페이지의 navigation 갱신
indexgetting-starteddraw-and-roiapi-referencemigration-guidecontributingarchitecturedeploy-github-pages
docs/README.mdsync checklist 업데이트
필요하면 landing 페이지의 "추천 문서 흐름"에도 examples 링크를 추가한다.
이 페이지는 단순 API reference 복제가 아니라 **"어떻게 쓰는지 보여주는 사용 가이드"**로 구성한다.
각 섹션의 기본 포맷:
What it doesWhen to use itMinimal exampleRelated exportsCommon pitfalls또는Notes
각 예제는 가능하면 아래 기준을 지킨다.
- 복붙 가능한 짧은 TypeScript/React 예제
- 실제 export 이름을 그대로 사용
- 가능하면 예제 앱 코드와 동일한 패턴 사용
- 타입만 export되는 항목도 예제 객체/함수 시그니처 안에서 등장시키기
src/index.ts export 151개를 모두 동일한 깊이로 설명하면 문서가 무거워진다. 그래서 아래처럼 나눈다.
사용자가 직접 호출하거나 JSX에 바로 쓰는 런타임 API.
예:
WsiViewerPointLayerHeatmapLayerRegionLayerDrawingLayerPatchLayerOverlayLayerOverviewMapuseViewerContextnormalizeImageInfonormalizeImageClassesbuildClassPalettefilterPointDataByPolygonsfilterPointDataByPolygonsInWorkerfilterPointDataByPolygonsHybridbuildPointSpatialIndexAsynccomputeRoiPointGroupscreateSpatialIndexparseWkttoRoiGeometrygetWebGpuCapabilitiesWsiTileRendererTileSchedulerTileViewerCanvasDrawLayercreateRectanglecreateCirclecloseRing
이 그룹은 각각 최소 1개 이상의 코드 블록을 가진다.
주요 예제를 이해할 때 같이 봐야 하는 타입/이벤트/설정 객체.
예:
WsiViewerPropsWsiImageSourceWsiViewStateWsiImageColorSettingsPointLayerPropsPointSizeByZoomPointHoverEventPointClickEventRegionLayerPropsDrawResultPatchDrawResultStampOptionsBrushOptionsOverviewMapOptionsTileSchedulerOptionsWsiTileRendererOptions
이 그룹은 단독 장문 설명 대신, 관련 Primary Example 바로 아래에서 함께 설명한다.
직접 호출 빈도는 낮지만 공개 API인 항목.
예:
- worker protocol 타입들
- spatial index 타입들
- WKT result 타입들
- raw payload 타입들
lookupCellIndexterminateRoiClipWorkerterminatePointHitIndexWorkerprefilterPointsByBoundsWebGpuM1TileRendererDEFAULT_POINT_COLOR__heatmapLayerInternals
이 그룹은 페이지 하단에 "Advanced exports" 또는 **"Export coverage index"**로 모아 둔다.
__heatmapLayerInternals는 내부 성격이 강하므로, examples 본문에서는 적극 권장하지 않고 "internal/debug only"로 표시한다.
examples 페이지는 아래 순서가 적절하다.
가장 먼저 보여줄 복붙용 예제.
WsiViewerPointLayerRegionLayerDrawingLayerOverlayLayerPatchLayer
목표:
- 사용자가 라이브러리의 기본 composition 모델을 30초 안에 이해하게 한다.
이미지 메타데이터와 인증 처리.
normalizeImageInfonormalizeImageClassestoTileUrltoBearerToken- 관련 타입:
RawImagePayload,RawImsInfo,RawWsiClass,WsiImageSource,WsiClass
포인트 로딩과 렌더링.
PointLayerbuildClassPaletteDEFAULT_POINT_COLORPointQueryHandle- 이벤트 타입들
PointSizeByZoomWsiPointData
RegionLayerWsiRegionWsiRegionCoordinatesRegionStrokeStyleRegionLabelStyleRegionHoverEventRegionClickEvent
DrawingLayerDrawLayercreateRectanglecreateCirclecloseRingBrushOptionsStampOptionsDrawToolDrawIntentDrawResultPatchDrawResult
HeatmapLayerHeatmapPointDataHeatmapLayerStatsHeatmapKernelScaleMode
OverlayLayeruseViewerContextViewerContextValueOverviewMapOverviewMapOptionsOverviewMapPositionViewportBorderStyle
filterPointDataByPolygonsfilterPointIndicesByPolygonsfilterPointDataByPolygonsInWorkerfilterPointIndicesByPolygonsInWorkerfilterPointDataByPolygonsHybridterminateRoiClipWorkerPointClipMode- 결과/메타 타입들
- worker protocol 타입들
이 섹션은 sync / worker / hybrid-webgpu 차이를 표로 같이 정리한다.
buildPointSpatialIndexAsynclookupCellIndexterminatePointHitIndexWorkerFlatPointSpatialIndex- worker protocol 타입들
toRoiGeometrycomputeRoiPointGroupsparseWktcreateSpatialIndex- 관련 타입들
상위 React API가 아니라 직접 엔진 레벨로 붙고 싶은 사용자를 위한 섹션.
WsiTileRendererTileSchedulerTileViewerCanvasM1TileRenderergetWebGpuCapabilitiesprefilterPointsByBoundsWebGpu
src/index.ts export 이름을 전부 표로 나열하고, 각각 아래를 붙인다.
- category
- 문서 섹션 anchor
- status:
example,companion,advanced
이 표가 있어야 "하나하나 다 적혀 있냐?"에 대해 문서 수준에서 명확히 답할 수 있다.
src/index.tsexport 전체 목록을 기준으로 문서 대상 표를 만든다.- export를
component / function / hook / type / internal / advanced로 분류한다. - 각 export가 어느 examples 섹션에 들어갈지 매핑한다.
산출물:
- examples 페이지 작성용 내부 checklist
- 최종 문서 하단의 export coverage index
docs/examples.htmlredirect 생성docs/ko/examples.html작성docs/en/examples.html작성data-page="examples"기준 active nav 동작 확인
참고:
docs/assets/site.js는data-page값만 맞으면 active nav 처리가 가능하다.
- 모든 EN/KO 문서 상단 nav에
Examples추가 - sidebar에도 examples 링크 추가
- landing 페이지 추천 문서 흐름에 examples 삽입
목표:
- examples 페이지가 문서 흐름 안에 자연스럽게 들어가게 한다.
우선순위는 아래 순서.
WsiViewercomposition- image source normalization
- point rendering + palette
- region + drawing
- heatmap
- overlay/context/overview map
- clipping / worker / webgpu
- low-level runtime
각 예제는 가능한 한 기존 샘플 앱에서 검증된 패턴을 재사용한다.
- 모든 타입 export를 관련 섹션에 연결
- low-level/internal export는 하단 appendix에 명시
- 누락 export가 없도록
src/index.ts와 대조
docs/README.mdchecklist에 examples 페이지 추가- EN/KO 정보량 동등성 확인
- 로컬 preview로 링크/복사 버튼/anchor 확인
예제는 아래 스타일을 유지한다.
- "작동 개념"보다 "바로 쓸 수 있는 코드"를 우선한다.
- 긴 예제 1개보다, 짧은 예제 여러 개로 나눈다.
- props 나열만 하지 말고, 왜 그 값을 쓰는지 한 줄로 설명한다.
- 이벤트 payload는 실제 타입 이름을 같이 써 준다.
- advanced 기능은 "언제 쓰지 말아야 하는지"도 적는다.
우선 재사용 후보:
example/src/App.tsxWsiViewercompositionPointLayer,HeatmapLayer,RegionLayer,DrawingLayer,OverlayLayer,PatchLayer,OverviewMap
example/src/hooks/useImageLoader.tsnormalizeImageInfo,normalizeImageClasses
example/src/hooks/usePointLoader.tsbuildClassPalette,WsiPointData
README.md- 빠른 시작 코드와 기능 설명
docs/migration-1.4.0.md- 레거시 → composition API 변환 예제
대응:
- examples 본문은 workflow 중심으로 유지
- 타입 상세는 companion 방식으로 접기
- 하단 coverage index로 completeness를 확보
대응:
src/index.ts기준으로 checklist 유지docs/README.mdsync checklist에 examples 추가- 가능하면 export coverage index를 마지막 검수 기준으로 사용
대응:
__heatmapLayerInternals같은 항목은internal/debug only라벨 명시- 추천 경로와 비추천 경로를 구분
아래 조건을 만족하면 examples 문서 작업 완료로 본다.
docs/examples.html,docs/ko/examples.html,docs/en/examples.html가 존재한다.- 기존 문서 네비게이션에서 examples 페이지로 이동할 수 있다.
src/index.tsexport 전체가 examples 본문 또는 coverage index에서 최소 1회 이상 언급된다.- 핵심 런타임 API는 모두 최소 코드 예제를 가진다.
- EN/KO 페이지가 같은 구조와 같은 의미를 유지한다.
docs/README.md에 examples 동기화 규칙이 반영된다.
실제 작업은 아래 순서로 진행하는 것이 가장 안전하다.
- export coverage 표 초안 생성
- KO examples 페이지 먼저 작성
- EN examples 페이지 동등 변환
- redirect + nav 반영
- checklist 업데이트
- 링크/anchor/문구 검수
이 문서의 기준점은 "예제 페이지 1개로 공개 API 전체를 직관적으로 이해시키는 것"이다.
즉, 단순히 API reference를 더 길게 쓰는 게 아니라:
- 먼저 복붙 가능한 사용 예제를 보여 주고
- 그 예제 아래에서 관련 타입과 보조 함수를 묶어서 설명하고
- 마지막에 export coverage index로 완전성을 보장하는 방향으로 간다.