Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
a2ba679
Fix lockfile
jpggvilaca Sep 17, 2025
5fa9093
Enable SAM tool
jpggvilaca Sep 17, 2025
383e5dd
Add SAM files
jpggvilaca Sep 17, 2025
1f707e3
Replace mocked media item
jpggvilaca Sep 18, 2025
5e61d5f
Add missing headers for webworker support
jpggvilaca Sep 18, 2025
a60540c
Update lock after rebase
jpggvilaca Sep 19, 2025
4c2ca9a
Consolidate hooks into one file and fix image data
jpggvilaca Sep 19, 2025
08c47c8
Fix tool render without annotations
jpggvilaca Sep 19, 2025
ad796aa
Fix TODO; Remove unused secondary toolbar
jpggvilaca Sep 19, 2025
19148ed
Replace mocked roi for media item one
jpggvilaca Sep 19, 2025
264fe25
Add ModelLoading
jpggvilaca Sep 19, 2025
e4e27ec
Add svgtoolcanvas; Add imageData utils; Replace black square with act…
jpggvilaca Sep 19, 2025
644658a
More fixes
jpggvilaca Sep 19, 2025
8b10f69
Fix CSP headers & image url
jpggvilaca Sep 19, 2025
9fb1f47
Update loading logic; Expose loading from annotator
jpggvilaca Sep 19, 2025
aedae3a
Add missing icons
jpggvilaca Sep 19, 2025
037a772
Address comment
jpggvilaca Sep 22, 2025
8963509
Fix lock
jpggvilaca Sep 22, 2025
8aa0640
Update interface
jpggvilaca Sep 22, 2025
781b9f6
Extract point rouding util
jpggvilaca Sep 22, 2025
ded5d71
Move loading to the tool itself
jpggvilaca Sep 22, 2025
9a4c19f
Move svg wrapper to children
jpggvilaca Sep 22, 2025
a8be08b
Minor fixes
jpggvilaca Sep 22, 2025
e63ad91
Remove duplication
jpggvilaca Sep 22, 2025
04d83a1
Fix loading states
jpggvilaca Sep 22, 2025
ed482fa
zoom-level > zoom-scale
jpggvilaca Sep 22, 2025
2b0fb17
Remove interactiveMode files
jpggvilaca Sep 23, 2025
48441d5
Address comments
jpggvilaca Sep 23, 2025
395f6ce
Minor fix
jpggvilaca Sep 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ interface InteractiveSegmentationPointProps extends InteractiveAnnotationPoint {
export const InteractiveSegmentationPoint = ({ x, y, positive, isLoading }: InteractiveSegmentationPointProps) => {
const { scale } = useZoom();
const fill = positive ? 'var(--brand-moss)' : 'var(--brand-coral-cobalt)';
const animationScale = `calc(1 / var(--zoom-scale))`;
const animationScale = 1 / scale;
const pointRadius = 5 / scale;

return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export const SegmentAnythingStateProvider = ({ children }: { children: ReactNode
const { addAnnotation } = useAnnotator();

const queryClient = useQueryClient();
const { encodingQuery, decodingQueryFn, isLoading } = useSegmentAnythingModel();
const { encodingQuery, decodingQueryFn, isLoading, isProcessing: isEncodingProcessing } = useSegmentAnythingModel();
const throttledDecodingQueryFn = useSingleStackFn(decodingQueryFn);
const decodingQueryOptions = useDecodingQueryOptions(state.points, throttledDecodingQueryFn);
const decodingQuery = useDecodingQuery(state.points, throttledDecodingQueryFn);
Expand Down Expand Up @@ -74,7 +74,7 @@ export const SegmentAnythingStateProvider = ({ children }: { children: ReactNode
return () => setIsDrawing(false);
}, [setIsDrawing]);

const isProcessing = decodingQuery.isFetching;
const isProcessing = isEncodingProcessing || decodingQuery.isFetching;

const hasResults = decodingQuery.data && !isEmpty(decodingQuery.data) && !isEmpty(state.points);
const outputShapes = decodingQuery.data ?? [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,11 @@ export const SegmentAnythingTool = () => {

const ref = useRef<SVGRectElement>(null);

const { result, points, addPoint } = useSegmentAnything();
const { result, points, addPoint, isProcessing, isLoading } = useSegmentAnything();
const [mousePosition, setMousePosition] = useState<InteractiveAnnotationPoint>();

const [previewShapes, setPreviewShapes] = useState<Shape[]>([]);
const { decodingQueryFn, isLoading } = useSegmentAnything();
const { decodingQueryFn } = useSegmentAnything();
const throttledDecodingQueryFn = useSingleStackFn(decodingQueryFn);

const throttleSetMousePosition = useThrottledCallback((point: InteractiveAnnotationPoint) => {
Expand Down Expand Up @@ -219,7 +219,7 @@ export const SegmentAnythingTool = () => {
x={point.x}
y={point.y}
positive={point.positive}
isLoading={false}
isLoading={isProcessing}
/>
))}
</SvgToolCanvas>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,19 @@ const useDecodingFn = (model: Remote<SegmentAnythingModel> | undefined, encoding
export const useSegmentAnythingModel = () => {
const encoderModel = useSegmentAnythingWorker('SEGMENT_ANYTHING_ENCODER');
const decoderModel = useSegmentAnythingWorker('SEGMENT_ANYTHING_DECODER');
const isLoading = encoderModel === undefined || decoderModel === undefined;
const isLoadingWorkers = encoderModel === undefined || decoderModel === undefined;

const { mediaItem, image } = useAnnotator();
const encodingQuery = useEncodingQuery(encoderModel, mediaItem, image);
const decodingQueryFn = useDecodingFn(decoderModel, encodingQuery.data);

return { isLoading, encodingQuery, decodingQueryFn };
const isLoading = isLoadingWorkers || encodingQuery.isLoading;
const isProcessing = encodingQuery.isFetching;

return {
isLoading,
isProcessing,
encodingQuery,
decodingQueryFn,
};
};
Loading