@anaralabs/lector 3.5.6 → 3.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_tsup-dts-rollup.d.ts +2 -1
- package/dist/index.js +35 -24
- package/package.json +1 -1
|
@@ -384,12 +384,13 @@ declare const useAnnotations: UseBoundStore<StoreApi<AnnotationState>>;
|
|
|
384
384
|
export { useAnnotations }
|
|
385
385
|
export { useAnnotations as useAnnotations_alias_1 }
|
|
386
386
|
|
|
387
|
-
export declare const useAnnotationTooltip: ({ annotation, onOpenChange, position, }: UseAnnotationTooltipProps) => UseAnnotationTooltipReturn;
|
|
387
|
+
export declare const useAnnotationTooltip: ({ annotation, onOpenChange, position, isOpen: controlledIsOpen, }: UseAnnotationTooltipProps) => UseAnnotationTooltipReturn;
|
|
388
388
|
|
|
389
389
|
declare interface UseAnnotationTooltipProps {
|
|
390
390
|
annotation: Annotation;
|
|
391
391
|
onOpenChange?: (open: boolean) => void;
|
|
392
392
|
position?: "top" | "bottom" | "left" | "right";
|
|
393
|
+
isOpen?: boolean;
|
|
393
394
|
}
|
|
394
395
|
|
|
395
396
|
declare interface UseAnnotationTooltipReturn {
|
package/dist/index.js
CHANGED
|
@@ -134,32 +134,25 @@ var PDFStore = createZustandContext(
|
|
|
134
134
|
var usePdf = (selector) => useStore(PDFStore.useContext(), selector);
|
|
135
135
|
|
|
136
136
|
// src/hooks/useAnnotationTooltip.ts
|
|
137
|
-
var defaultRect = {
|
|
138
|
-
width: 0,
|
|
139
|
-
height: 0,
|
|
140
|
-
x: 0,
|
|
141
|
-
y: 0,
|
|
142
|
-
top: 0,
|
|
143
|
-
right: 0,
|
|
144
|
-
bottom: 0,
|
|
145
|
-
left: 0
|
|
146
|
-
};
|
|
147
137
|
var useAnnotationTooltip = ({
|
|
148
138
|
annotation,
|
|
149
139
|
onOpenChange,
|
|
150
|
-
position = "top"
|
|
140
|
+
position = "top",
|
|
141
|
+
isOpen: controlledIsOpen
|
|
151
142
|
}) => {
|
|
152
143
|
const isNewAnnotation = Date.now() - new Date(annotation.createdAt).getTime() < 1e3;
|
|
153
|
-
const [
|
|
144
|
+
const [isPositionCalculated, setIsPositionCalculated] = useState(false);
|
|
145
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
154
146
|
const viewportRef = usePdf((state) => state.viewportRef);
|
|
155
147
|
const scale = usePdf((state) => state.zoom);
|
|
148
|
+
const effectiveIsOpen = (isOpen && isPositionCalculated || controlledIsOpen) ?? false;
|
|
156
149
|
const {
|
|
157
150
|
refs,
|
|
158
151
|
floatingStyles,
|
|
159
152
|
context
|
|
160
153
|
} = useFloating({
|
|
161
154
|
placement: position,
|
|
162
|
-
open:
|
|
155
|
+
open: effectiveIsOpen,
|
|
163
156
|
onOpenChange: (open) => {
|
|
164
157
|
setIsOpen(open);
|
|
165
158
|
onOpenChange?.(open);
|
|
@@ -178,18 +171,27 @@ var useAnnotationTooltip = ({
|
|
|
178
171
|
const dismiss = useDismiss(context);
|
|
179
172
|
const { getReferenceProps, getFloatingProps } = useInteractions([dismiss]);
|
|
180
173
|
const updateTooltipPosition = useCallback(() => {
|
|
181
|
-
if (!annotation.highlights.length)
|
|
174
|
+
if (!annotation.highlights.length) {
|
|
175
|
+
setIsPositionCalculated(false);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
182
178
|
const highlightRects = annotation.highlights;
|
|
183
179
|
let minLeft = Infinity;
|
|
184
180
|
let maxRight = -Infinity;
|
|
185
181
|
let minTop = Infinity;
|
|
186
182
|
let maxBottom = -Infinity;
|
|
183
|
+
const viewportElement = viewportRef.current;
|
|
184
|
+
if (!viewportElement) {
|
|
185
|
+
setIsPositionCalculated(false);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const pageElement = viewportElement.querySelector(`[data-page-number="${annotation.pageNumber}"]`);
|
|
189
|
+
if (!pageElement) {
|
|
190
|
+
setIsPositionCalculated(false);
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
187
193
|
refs.setReference({
|
|
188
194
|
getBoundingClientRect() {
|
|
189
|
-
const viewportElement = viewportRef.current;
|
|
190
|
-
if (!viewportElement) return defaultRect;
|
|
191
|
-
const pageElement = viewportElement.querySelector(`[data-page-number="${annotation.pageNumber}"]`);
|
|
192
|
-
if (!pageElement) return defaultRect;
|
|
193
195
|
const pageRect = pageElement.getBoundingClientRect();
|
|
194
196
|
highlightRects.forEach((highlight) => {
|
|
195
197
|
const scaledLeft = highlight.left * scale;
|
|
@@ -226,10 +228,17 @@ var useAnnotationTooltip = ({
|
|
|
226
228
|
},
|
|
227
229
|
contextElement: viewportRef.current || void 0
|
|
228
230
|
});
|
|
229
|
-
|
|
231
|
+
setIsPositionCalculated(true);
|
|
232
|
+
if (isNewAnnotation) {
|
|
233
|
+
setIsOpen(true);
|
|
234
|
+
}
|
|
235
|
+
}, [annotation.highlights, annotation.pageNumber, refs, viewportRef, scale, isNewAnnotation]);
|
|
230
236
|
useEffect(() => {
|
|
231
237
|
const viewport = viewportRef.current;
|
|
232
|
-
|
|
238
|
+
setIsPositionCalculated(false);
|
|
239
|
+
requestAnimationFrame(() => {
|
|
240
|
+
updateTooltipPosition();
|
|
241
|
+
});
|
|
233
242
|
const handleScroll = () => {
|
|
234
243
|
requestAnimationFrame(updateTooltipPosition);
|
|
235
244
|
};
|
|
@@ -248,9 +257,9 @@ var useAnnotationTooltip = ({
|
|
|
248
257
|
}
|
|
249
258
|
window.removeEventListener("resize", handleResize);
|
|
250
259
|
};
|
|
251
|
-
}, [updateTooltipPosition, viewportRef]);
|
|
260
|
+
}, [updateTooltipPosition, viewportRef, scale, controlledIsOpen]);
|
|
252
261
|
return {
|
|
253
|
-
isOpen,
|
|
262
|
+
isOpen: effectiveIsOpen,
|
|
254
263
|
setIsOpen,
|
|
255
264
|
refs,
|
|
256
265
|
floatingStyles,
|
|
@@ -282,7 +291,8 @@ var AnnotationTooltip = ({
|
|
|
282
291
|
getReferenceProps
|
|
283
292
|
} = useAnnotationTooltip({
|
|
284
293
|
annotation,
|
|
285
|
-
onOpenChange
|
|
294
|
+
onOpenChange,
|
|
295
|
+
isOpen: controlledIsOpen
|
|
286
296
|
});
|
|
287
297
|
const {
|
|
288
298
|
isOpen: uncontrolledHoverIsOpen,
|
|
@@ -293,7 +303,8 @@ var AnnotationTooltip = ({
|
|
|
293
303
|
getReferenceProps: getHoverReferenceProps
|
|
294
304
|
} = useAnnotationTooltip({
|
|
295
305
|
position: "bottom",
|
|
296
|
-
annotation
|
|
306
|
+
annotation,
|
|
307
|
+
isOpen: controlledHoverIsOpen
|
|
297
308
|
});
|
|
298
309
|
const isOpen = controlledIsOpen ?? uncontrolledIsOpen;
|
|
299
310
|
const hoverIsOpen = controlledHoverIsOpen || uncontrolledHoverIsOpen;
|