@embedpdf/plugin-annotation 2.2.0 → 2.4.0
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/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1232 -101
- package/dist/index.js.map +1 -1
- package/dist/lib/actions.d.ts +33 -3
- package/dist/lib/annotation-plugin.d.ts +178 -2
- package/dist/lib/handlers/types.d.ts +1 -1
- package/dist/lib/helpers.d.ts +8 -2
- package/dist/lib/selectors.d.ts +97 -8
- package/dist/lib/tools/default-tools.d.ts +39 -11
- package/dist/lib/tools/types.d.ts +22 -4
- package/dist/lib/types.d.ts +278 -1
- package/dist/preact/adapter.d.ts +3 -3
- package/dist/preact/index.cjs +1 -1
- package/dist/preact/index.cjs.map +1 -1
- package/dist/preact/index.js +1133 -403
- package/dist/preact/index.js.map +1 -1
- package/dist/react/adapter.d.ts +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +1132 -402
- package/dist/react/index.js.map +1 -1
- package/dist/shared/components/annotation-container.d.ts +13 -2
- package/dist/shared/components/annotation-layer.d.ts +6 -2
- package/dist/shared/components/annotations/ink.d.ts +3 -3
- package/dist/shared/components/annotations/link.d.ts +28 -0
- package/dist/shared/components/annotations.d.ts +4 -1
- package/dist/shared/components/group-selection-box.d.ts +32 -0
- package/dist/shared/components/index.d.ts +1 -0
- package/dist/shared/components/text-markup/highlight.d.ts +3 -2
- package/dist/shared/components/text-markup/squiggly.d.ts +3 -2
- package/dist/shared/components/text-markup/strikeout.d.ts +3 -2
- package/dist/shared/components/text-markup/underline.d.ts +3 -2
- package/dist/shared/components/types.d.ts +50 -1
- package/dist/shared/context/index.d.ts +1 -0
- package/dist/shared/context/renderer-registry.d.ts +21 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared-preact/components/annotation-container.d.ts +13 -2
- package/dist/shared-preact/components/annotation-layer.d.ts +6 -2
- package/dist/shared-preact/components/annotations/ink.d.ts +3 -3
- package/dist/shared-preact/components/annotations/link.d.ts +28 -0
- package/dist/shared-preact/components/annotations.d.ts +4 -1
- package/dist/shared-preact/components/group-selection-box.d.ts +32 -0
- package/dist/shared-preact/components/index.d.ts +1 -0
- package/dist/shared-preact/components/text-markup/highlight.d.ts +3 -2
- package/dist/shared-preact/components/text-markup/squiggly.d.ts +3 -2
- package/dist/shared-preact/components/text-markup/strikeout.d.ts +3 -2
- package/dist/shared-preact/components/text-markup/underline.d.ts +3 -2
- package/dist/shared-preact/components/types.d.ts +50 -1
- package/dist/shared-preact/context/index.d.ts +1 -0
- package/dist/shared-preact/context/renderer-registry.d.ts +21 -0
- package/dist/shared-preact/index.d.ts +2 -0
- package/dist/shared-react/components/annotation-container.d.ts +13 -2
- package/dist/shared-react/components/annotation-layer.d.ts +6 -2
- package/dist/shared-react/components/annotations/ink.d.ts +3 -3
- package/dist/shared-react/components/annotations/link.d.ts +28 -0
- package/dist/shared-react/components/annotations.d.ts +4 -1
- package/dist/shared-react/components/group-selection-box.d.ts +32 -0
- package/dist/shared-react/components/index.d.ts +1 -0
- package/dist/shared-react/components/text-markup/highlight.d.ts +3 -2
- package/dist/shared-react/components/text-markup/squiggly.d.ts +3 -2
- package/dist/shared-react/components/text-markup/strikeout.d.ts +3 -2
- package/dist/shared-react/components/text-markup/underline.d.ts +3 -2
- package/dist/shared-react/components/types.d.ts +50 -1
- package/dist/shared-react/context/index.d.ts +1 -0
- package/dist/shared-react/context/renderer-registry.d.ts +21 -0
- package/dist/shared-react/index.d.ts +2 -0
- package/dist/svelte/components/AnnotationLayer.svelte.d.ts +8 -1
- package/dist/svelte/components/Annotations.svelte.d.ts +8 -1
- package/dist/svelte/components/GroupSelectionBox.svelte.d.ts +32 -0
- package/dist/svelte/components/RendererRegistryProvider.svelte.d.ts +7 -0
- package/dist/svelte/components/annotations/Ink.svelte.d.ts +2 -1
- package/dist/svelte/components/annotations/Link.svelte.d.ts +24 -0
- package/dist/svelte/components/annotations/index.d.ts +1 -0
- package/dist/svelte/components/index.d.ts +2 -0
- package/dist/svelte/components/text-markup/Highlight.svelte.d.ts +2 -1
- package/dist/svelte/components/text-markup/Squiggly.svelte.d.ts +2 -1
- package/dist/svelte/components/text-markup/Strikeout.svelte.d.ts +2 -1
- package/dist/svelte/components/text-markup/Underline.svelte.d.ts +2 -1
- package/dist/svelte/components/types.d.ts +2 -0
- package/dist/svelte/context/index.d.ts +2 -0
- package/dist/svelte/context/renderer-registry.svelte.d.ts +20 -0
- package/dist/svelte/context/types.d.ts +33 -0
- package/dist/svelte/index.cjs +1 -1
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.d.ts +2 -0
- package/dist/svelte/index.js +1215 -394
- package/dist/svelte/index.js.map +1 -1
- package/dist/svelte/types.d.ts +7 -0
- package/dist/vue/components/annotation-container.vue.d.ts +3 -1
- package/dist/vue/components/annotation-layer.vue.d.ts +31 -5
- package/dist/vue/components/annotations/free-text.vue.d.ts +1 -1
- package/dist/vue/components/annotations/index.d.ts +1 -0
- package/dist/vue/components/annotations/ink.vue.d.ts +2 -2
- package/dist/vue/components/annotations/line.vue.d.ts +1 -1
- package/dist/vue/components/annotations/link.vue.d.ts +29 -0
- package/dist/vue/components/annotations/polygon.vue.d.ts +1 -1
- package/dist/vue/components/annotations/polyline.vue.d.ts +1 -1
- package/dist/vue/components/annotations/stamp.vue.d.ts +1 -1
- package/dist/vue/components/annotations.vue.d.ts +151 -53
- package/dist/vue/components/group-selection-box.vue.d.ts +73 -0
- package/dist/vue/components/index.d.ts +2 -0
- package/dist/vue/components/preview-renderer.vue.d.ts +1 -1
- package/dist/vue/components/renderer-registry-provider.vue.d.ts +13 -0
- package/dist/vue/components/text-markup/highlight.vue.d.ts +2 -2
- package/dist/vue/components/text-markup/squiggly.vue.d.ts +2 -2
- package/dist/vue/components/text-markup/strikeout.vue.d.ts +2 -2
- package/dist/vue/components/text-markup/underline.vue.d.ts +2 -2
- package/dist/vue/context/index.d.ts +2 -0
- package/dist/vue/context/renderer-registry.d.ts +26 -0
- package/dist/vue/context/types.d.ts +33 -0
- package/dist/vue/hooks/use-annotation.d.ts +7 -5
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.ts +3 -1
- package/dist/vue/index.js +1124 -459
- package/dist/vue/index.js.map +1 -1
- package/dist/vue/types.d.ts +8 -1
- package/package.json +10 -10
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PdfAnnotationObject } from '@embedpdf/models';
|
|
2
2
|
import { TrackedAnnotation } from '../../lib/index.ts';
|
|
3
3
|
import { HandleElementProps, SelectionMenuPropsBase, SelectionMenuRenderFn } from '../../preact/utils.ts';
|
|
4
|
-
import { JSX } from '../../preact/adapter.ts';
|
|
4
|
+
import { JSX, MouseEvent, TouchEvent } from '../../preact/adapter.ts';
|
|
5
5
|
export type ResizeDirection = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'none';
|
|
6
6
|
export interface AnnotationSelectionContext {
|
|
7
7
|
type: 'annotation';
|
|
@@ -10,6 +10,13 @@ export interface AnnotationSelectionContext {
|
|
|
10
10
|
}
|
|
11
11
|
export type AnnotationSelectionMenuProps = SelectionMenuPropsBase<AnnotationSelectionContext>;
|
|
12
12
|
export type AnnotationSelectionMenuRenderFn = SelectionMenuRenderFn<AnnotationSelectionContext>;
|
|
13
|
+
export interface GroupSelectionContext {
|
|
14
|
+
type: 'group';
|
|
15
|
+
annotations: TrackedAnnotation[];
|
|
16
|
+
pageIndex: number;
|
|
17
|
+
}
|
|
18
|
+
export type GroupSelectionMenuProps = SelectionMenuPropsBase<GroupSelectionContext>;
|
|
19
|
+
export type GroupSelectionMenuRenderFn = SelectionMenuRenderFn<GroupSelectionContext>;
|
|
13
20
|
export type HandleProps = HandleElementProps & {
|
|
14
21
|
backgroundColor?: string;
|
|
15
22
|
};
|
|
@@ -49,3 +56,45 @@ export interface CustomAnnotationRendererProps<T extends PdfAnnotationObject> {
|
|
|
49
56
|
* Custom renderer for an annotation
|
|
50
57
|
*/
|
|
51
58
|
export type CustomAnnotationRenderer<T extends PdfAnnotationObject> = (props: CustomAnnotationRendererProps<T>) => JSX.Element | null;
|
|
59
|
+
/**
|
|
60
|
+
* Props for an annotation renderer entry
|
|
61
|
+
*/
|
|
62
|
+
export interface AnnotationRendererProps<T extends PdfAnnotationObject> {
|
|
63
|
+
annotation: TrackedAnnotation<T>;
|
|
64
|
+
isSelected: boolean;
|
|
65
|
+
scale: number;
|
|
66
|
+
pageIndex: number;
|
|
67
|
+
onClick: (e: MouseEvent<Element> | TouchEvent<Element>) => void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Entry for a custom annotation renderer that handles specific annotation types.
|
|
71
|
+
* This allows external plugins to provide their own rendering for annotation subtypes.
|
|
72
|
+
* Used at definition time for type safety.
|
|
73
|
+
*/
|
|
74
|
+
export interface AnnotationRendererEntry<T extends PdfAnnotationObject = PdfAnnotationObject> {
|
|
75
|
+
/** Unique identifier for this renderer (usually matches tool id) */
|
|
76
|
+
id: string;
|
|
77
|
+
/** Returns true if this renderer should handle the annotation */
|
|
78
|
+
matches: (annotation: PdfAnnotationObject) => annotation is T;
|
|
79
|
+
/** The component to render the annotation */
|
|
80
|
+
render: (props: AnnotationRendererProps<T>) => JSX.Element;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Props passed to tryRender (everything except annotation which is passed separately)
|
|
84
|
+
*/
|
|
85
|
+
export type BoxedRendererProps = Omit<AnnotationRendererProps<PdfAnnotationObject>, 'annotation'>;
|
|
86
|
+
/**
|
|
87
|
+
* Boxed renderer that encapsulates type safety internally.
|
|
88
|
+
* The generic is erased - this is what the registry actually stores.
|
|
89
|
+
*/
|
|
90
|
+
export interface BoxedAnnotationRenderer {
|
|
91
|
+
/** Unique identifier for this renderer */
|
|
92
|
+
id: string;
|
|
93
|
+
/** Combined match + render: returns null if doesn't match, JSX.Element if it does */
|
|
94
|
+
tryRender: (annotation: TrackedAnnotation, props: BoxedRendererProps) => JSX.Element | null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Creates a boxed renderer from a typed entry.
|
|
98
|
+
* Type safety is enforced at definition time, then erased for storage.
|
|
99
|
+
*/
|
|
100
|
+
export declare function createRenderer<T extends PdfAnnotationObject>(entry: AnnotationRendererEntry<T>): BoxedAnnotationRenderer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './renderer-registry';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from '../../preact/adapter.ts';
|
|
2
|
+
import { BoxedAnnotationRenderer } from '../components/types';
|
|
3
|
+
type RegisterFn = (entries: BoxedAnnotationRenderer[]) => () => void;
|
|
4
|
+
export declare function AnnotationRendererProvider({ children }: {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}): import("preact").JSX.Element;
|
|
7
|
+
/**
|
|
8
|
+
* Hook to register annotation renderers. Handles all registration lifecycle internally.
|
|
9
|
+
* Plugin authors just call this with their renderers array.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useRegisterRenderers(renderers: BoxedAnnotationRenderer[]): void;
|
|
12
|
+
/**
|
|
13
|
+
* Hook to get all registered renderers (for rendering components).
|
|
14
|
+
*/
|
|
15
|
+
export declare function useRegisteredRenderers(): BoxedAnnotationRenderer[];
|
|
16
|
+
/**
|
|
17
|
+
* Low-level hook if someone needs direct access to register function.
|
|
18
|
+
* Most plugins should use useRegisterRenderers instead.
|
|
19
|
+
*/
|
|
20
|
+
export declare function useRendererRegistry(): RegisterFn | null;
|
|
21
|
+
export {};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './hooks';
|
|
2
2
|
export * from './components';
|
|
3
3
|
export * from './components/types';
|
|
4
|
+
export * from './context';
|
|
4
5
|
export * from '../lib/index.ts';
|
|
6
|
+
export declare const AnnotationPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').AnnotationPlugin, import('../lib/index.ts').AnnotationPluginConfig, import('../lib/index.ts').AnnotationState, import('../lib/actions').AnnotationAction>>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PdfAnnotationObject } from '@embedpdf/models';
|
|
2
2
|
import { TrackedAnnotation } from '../../lib/index.ts';
|
|
3
3
|
import { JSX, CSSProperties } from '../../react/adapter.ts';
|
|
4
|
-
import { CustomAnnotationRenderer, ResizeHandleUI, AnnotationSelectionMenuRenderFn, VertexHandleUI } from './types';
|
|
4
|
+
import { CustomAnnotationRenderer, ResizeHandleUI, AnnotationSelectionMenuRenderFn, VertexHandleUI, GroupSelectionMenuRenderFn, BoxedAnnotationRenderer } from './types';
|
|
5
5
|
import { VertexConfig } from '../types';
|
|
6
6
|
interface AnnotationContainerProps<T extends PdfAnnotationObject> {
|
|
7
7
|
scale: number;
|
|
@@ -13,6 +13,8 @@ interface AnnotationContainerProps<T extends PdfAnnotationObject> {
|
|
|
13
13
|
trackedAnnotation: TrackedAnnotation<T>;
|
|
14
14
|
children: JSX.Element | ((annotation: T) => JSX.Element);
|
|
15
15
|
isSelected: boolean;
|
|
16
|
+
/** Whether multiple annotations are selected (container becomes passive) */
|
|
17
|
+
isMultiSelected?: boolean;
|
|
16
18
|
isDraggable: boolean;
|
|
17
19
|
isResizable: boolean;
|
|
18
20
|
lockAspectRatio?: boolean;
|
|
@@ -27,6 +29,15 @@ interface AnnotationContainerProps<T extends PdfAnnotationObject> {
|
|
|
27
29
|
vertexUI?: VertexHandleUI;
|
|
28
30
|
selectionOutlineColor?: string;
|
|
29
31
|
customAnnotationRenderer?: CustomAnnotationRenderer<T>;
|
|
32
|
+
/** Passed from parent but not used - destructured to prevent DOM spread */
|
|
33
|
+
groupSelectionMenu?: GroupSelectionMenuRenderFn;
|
|
34
|
+
/** Passed from parent but not used - destructured to prevent DOM spread */
|
|
35
|
+
annotationRenderers?: BoxedAnnotationRenderer[];
|
|
30
36
|
}
|
|
31
|
-
|
|
37
|
+
/**
|
|
38
|
+
* AnnotationContainer wraps individual annotations with interaction handles.
|
|
39
|
+
* When isMultiSelected is true, the container becomes passive - drag/resize
|
|
40
|
+
* is handled by the GroupSelectionBox instead.
|
|
41
|
+
*/
|
|
42
|
+
export declare function AnnotationContainer<T extends PdfAnnotationObject>({ scale, documentId, pageIndex, rotation, pageWidth, pageHeight, trackedAnnotation, children, isSelected, isMultiSelected, isDraggable, isResizable, lockAspectRatio, style, vertexConfig, selectionMenu, outlineOffset, onDoubleClick, onSelect, zIndex, resizeUI, vertexUI, selectionOutlineColor, customAnnotationRenderer, groupSelectionMenu: _groupSelectionMenu, annotationRenderers: _annotationRenderers, ...props }: AnnotationContainerProps<T>): JSX.Element;
|
|
32
43
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HTMLAttributes, CSSProperties } from '../../react/adapter.ts';
|
|
2
|
-
import { ResizeHandleUI, VertexHandleUI, CustomAnnotationRenderer, AnnotationSelectionMenuRenderFn } from './types';
|
|
2
|
+
import { ResizeHandleUI, VertexHandleUI, CustomAnnotationRenderer, AnnotationSelectionMenuRenderFn, GroupSelectionMenuRenderFn, BoxedAnnotationRenderer } from './types';
|
|
3
3
|
import { PdfAnnotationObject } from '@embedpdf/models';
|
|
4
4
|
type AnnotationLayerProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {
|
|
5
5
|
/** The ID of the document that this layer displays annotations for */
|
|
@@ -9,6 +9,8 @@ type AnnotationLayerProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {
|
|
|
9
9
|
rotation?: number;
|
|
10
10
|
/** Customize selection menu across all annotations on this layer */
|
|
11
11
|
selectionMenu?: AnnotationSelectionMenuRenderFn;
|
|
12
|
+
/** Customize group selection menu across all annotations on this layer */
|
|
13
|
+
groupSelectionMenu?: GroupSelectionMenuRenderFn;
|
|
12
14
|
style?: CSSProperties;
|
|
13
15
|
/** Customize resize handles */
|
|
14
16
|
resizeUI?: ResizeHandleUI;
|
|
@@ -18,6 +20,8 @@ type AnnotationLayerProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {
|
|
|
18
20
|
selectionOutlineColor?: string;
|
|
19
21
|
/** Customize annotation renderer */
|
|
20
22
|
customAnnotationRenderer?: CustomAnnotationRenderer<PdfAnnotationObject>;
|
|
23
|
+
/** Custom renderers for specific annotation types (provided by external plugins) */
|
|
24
|
+
annotationRenderers?: BoxedAnnotationRenderer[];
|
|
21
25
|
};
|
|
22
|
-
export declare function AnnotationLayer({ style, documentId, pageIndex, scale: overrideScale, rotation: overrideRotation, selectionMenu, resizeUI, vertexUI, selectionOutlineColor, customAnnotationRenderer, ...props }: AnnotationLayerProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export declare function AnnotationLayer({ style, documentId, pageIndex, scale: overrideScale, rotation: overrideRotation, selectionMenu, groupSelectionMenu, resizeUI, vertexUI, selectionOutlineColor, customAnnotationRenderer, annotationRenderers, ...props }: AnnotationLayerProps): import("react/jsx-runtime").JSX.Element;
|
|
23
27
|
export {};
|
|
@@ -3,8 +3,8 @@ import { PdfInkListObject, Rect } from '@embedpdf/models';
|
|
|
3
3
|
interface InkProps {
|
|
4
4
|
/** Whether the annotation is selected */
|
|
5
5
|
isSelected: boolean;
|
|
6
|
-
/** Stroke
|
|
7
|
-
|
|
6
|
+
/** Stroke color */
|
|
7
|
+
strokeColor?: string;
|
|
8
8
|
/** 0 – 1 */
|
|
9
9
|
opacity?: number;
|
|
10
10
|
/** Line width in PDF units */
|
|
@@ -21,5 +21,5 @@ interface InkProps {
|
|
|
21
21
|
/**
|
|
22
22
|
* Renders a PDF Ink annotation (free-hand drawing) as SVG.
|
|
23
23
|
*/
|
|
24
|
-
export declare function Ink({ isSelected,
|
|
24
|
+
export declare function Ink({ isSelected, strokeColor, opacity, strokeWidth, inkList, rect, scale, onClick, }: InkProps): JSX.Element;
|
|
25
25
|
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { MouseEvent, TouchEvent } from '../../../react/adapter.ts';
|
|
2
|
+
import { PdfAnnotationBorderStyle, Rect } from '@embedpdf/models';
|
|
3
|
+
interface LinkProps {
|
|
4
|
+
/** Whether the annotation is selected */
|
|
5
|
+
isSelected: boolean;
|
|
6
|
+
/** Stroke colour – defaults to blue when omitted */
|
|
7
|
+
strokeColor?: string;
|
|
8
|
+
/** Stroke width in PDF units */
|
|
9
|
+
strokeWidth?: number;
|
|
10
|
+
/** Stroke type – defaults to underline when omitted */
|
|
11
|
+
strokeStyle?: PdfAnnotationBorderStyle;
|
|
12
|
+
/** Stroke dash array – for dashed style */
|
|
13
|
+
strokeDashArray?: number[];
|
|
14
|
+
/** Bounding box of the annotation (PDF units) */
|
|
15
|
+
rect: Rect;
|
|
16
|
+
/** Current page zoom factor */
|
|
17
|
+
scale: number;
|
|
18
|
+
/** Click handler (used for selection) */
|
|
19
|
+
onClick?: (e: MouseEvent<SVGElement> | TouchEvent<SVGElement>) => void;
|
|
20
|
+
/** Whether this link has an IRT (In Reply To) reference - disables direct interaction */
|
|
21
|
+
hasIRT?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Renders a PDF Link annotation as SVG.
|
|
25
|
+
* Supports underline (default), solid, and dashed border styles.
|
|
26
|
+
*/
|
|
27
|
+
export declare function Link({ isSelected, strokeColor, strokeWidth, strokeStyle, strokeDashArray, rect, scale, onClick, hasIRT, }: LinkProps): JSX.Element;
|
|
28
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PdfAnnotationObject } from '@embedpdf/models';
|
|
2
|
-
import { CustomAnnotationRenderer, ResizeHandleUI, AnnotationSelectionMenuRenderFn, VertexHandleUI } from './types';
|
|
2
|
+
import { CustomAnnotationRenderer, ResizeHandleUI, AnnotationSelectionMenuRenderFn, GroupSelectionMenuRenderFn, VertexHandleUI, BoxedAnnotationRenderer } from './types';
|
|
3
3
|
interface AnnotationsProps {
|
|
4
4
|
documentId: string;
|
|
5
5
|
pageIndex: number;
|
|
@@ -8,10 +8,13 @@ interface AnnotationsProps {
|
|
|
8
8
|
pageWidth: number;
|
|
9
9
|
pageHeight: number;
|
|
10
10
|
selectionMenu?: AnnotationSelectionMenuRenderFn;
|
|
11
|
+
groupSelectionMenu?: GroupSelectionMenuRenderFn;
|
|
11
12
|
resizeUI?: ResizeHandleUI;
|
|
12
13
|
vertexUI?: VertexHandleUI;
|
|
13
14
|
selectionOutlineColor?: string;
|
|
14
15
|
customAnnotationRenderer?: CustomAnnotationRenderer<PdfAnnotationObject>;
|
|
16
|
+
/** Custom renderers for specific annotation types (provided by external plugins) */
|
|
17
|
+
annotationRenderers?: BoxedAnnotationRenderer[];
|
|
15
18
|
}
|
|
16
19
|
export declare function Annotations(annotationsProps: AnnotationsProps): import("react/jsx-runtime").JSX.Element;
|
|
17
20
|
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TrackedAnnotation } from '../../lib/index.ts';
|
|
2
|
+
import { ResizeHandleUI, GroupSelectionMenuRenderFn } from './types';
|
|
3
|
+
interface GroupSelectionBoxProps {
|
|
4
|
+
documentId: string;
|
|
5
|
+
pageIndex: number;
|
|
6
|
+
scale: number;
|
|
7
|
+
rotation: number;
|
|
8
|
+
pageWidth: number;
|
|
9
|
+
pageHeight: number;
|
|
10
|
+
/** All selected annotations on this page */
|
|
11
|
+
selectedAnnotations: TrackedAnnotation[];
|
|
12
|
+
/** Whether the group is draggable (all annotations must be group-draggable) */
|
|
13
|
+
isDraggable: boolean;
|
|
14
|
+
/** Whether the group is resizable (all annotations must be group-resizable) */
|
|
15
|
+
isResizable: boolean;
|
|
16
|
+
/** Resize handle UI customization */
|
|
17
|
+
resizeUI?: ResizeHandleUI;
|
|
18
|
+
/** Selection outline color */
|
|
19
|
+
selectionOutlineColor?: string;
|
|
20
|
+
/** Outline offset */
|
|
21
|
+
outlineOffset?: number;
|
|
22
|
+
/** Z-index for the group box */
|
|
23
|
+
zIndex?: number;
|
|
24
|
+
/** Group selection menu render function */
|
|
25
|
+
groupSelectionMenu?: GroupSelectionMenuRenderFn;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* GroupSelectionBox renders a bounding box around all selected annotations
|
|
29
|
+
* with drag and resize handles for group manipulation.
|
|
30
|
+
*/
|
|
31
|
+
export declare function GroupSelectionBox({ documentId, pageIndex, scale, rotation, pageWidth, pageHeight, selectedAnnotations, isDraggable, isResizable, resizeUI, selectionOutlineColor, outlineOffset, zIndex, groupSelectionMenu, }: GroupSelectionBoxProps): JSX.Element | null;
|
|
32
|
+
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CSSProperties, MouseEvent, TouchEvent } from '../../../react/adapter.ts';
|
|
2
2
|
import { Rect } from '@embedpdf/models';
|
|
3
3
|
type HighlightProps = {
|
|
4
|
-
color
|
|
4
|
+
/** Stroke/markup color */
|
|
5
|
+
strokeColor?: string;
|
|
5
6
|
opacity?: number;
|
|
6
7
|
segmentRects: Rect[];
|
|
7
8
|
rect?: Rect;
|
|
@@ -9,5 +10,5 @@ type HighlightProps = {
|
|
|
9
10
|
onClick?: (e: MouseEvent<HTMLDivElement> | TouchEvent<HTMLDivElement>) => void;
|
|
10
11
|
style?: CSSProperties;
|
|
11
12
|
};
|
|
12
|
-
export declare function Highlight({
|
|
13
|
+
export declare function Highlight({ strokeColor, opacity, segmentRects, rect, scale, onClick, style, }: HighlightProps): import("react/jsx-runtime").JSX.Element;
|
|
13
14
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CSSProperties, MouseEvent, TouchEvent } from '../../../react/adapter.ts';
|
|
2
2
|
import { Rect } from '@embedpdf/models';
|
|
3
3
|
type SquigglyProps = {
|
|
4
|
-
color
|
|
4
|
+
/** Stroke/markup color */
|
|
5
|
+
strokeColor?: string;
|
|
5
6
|
opacity?: number;
|
|
6
7
|
segmentRects: Rect[];
|
|
7
8
|
rect?: Rect;
|
|
@@ -9,5 +10,5 @@ type SquigglyProps = {
|
|
|
9
10
|
onClick?: (e: MouseEvent<HTMLDivElement> | TouchEvent<HTMLDivElement>) => void;
|
|
10
11
|
style?: CSSProperties;
|
|
11
12
|
};
|
|
12
|
-
export declare function Squiggly({
|
|
13
|
+
export declare function Squiggly({ strokeColor, opacity, segmentRects, rect, scale, onClick, style, }: SquigglyProps): import("react/jsx-runtime").JSX.Element;
|
|
13
14
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CSSProperties, MouseEvent, TouchEvent } from '../../../react/adapter.ts';
|
|
2
2
|
import { Rect } from '@embedpdf/models';
|
|
3
3
|
type StrikeoutProps = {
|
|
4
|
-
color
|
|
4
|
+
/** Stroke/markup color */
|
|
5
|
+
strokeColor?: string;
|
|
5
6
|
opacity?: number;
|
|
6
7
|
segmentRects: Rect[];
|
|
7
8
|
rect?: Rect;
|
|
@@ -9,5 +10,5 @@ type StrikeoutProps = {
|
|
|
9
10
|
onClick?: (e: MouseEvent<HTMLDivElement> | TouchEvent<HTMLDivElement>) => void;
|
|
10
11
|
style?: CSSProperties;
|
|
11
12
|
};
|
|
12
|
-
export declare function Strikeout({
|
|
13
|
+
export declare function Strikeout({ strokeColor, opacity, segmentRects, rect, scale, onClick, style, }: StrikeoutProps): import("react/jsx-runtime").JSX.Element;
|
|
13
14
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { CSSProperties, MouseEvent, TouchEvent } from '../../../react/adapter.ts';
|
|
2
2
|
import { Rect } from '@embedpdf/models';
|
|
3
3
|
type UnderlineProps = {
|
|
4
|
-
color
|
|
4
|
+
/** Stroke/markup color */
|
|
5
|
+
strokeColor?: string;
|
|
5
6
|
opacity?: number;
|
|
6
7
|
segmentRects: Rect[];
|
|
7
8
|
rect?: Rect;
|
|
@@ -9,5 +10,5 @@ type UnderlineProps = {
|
|
|
9
10
|
onClick?: (e: MouseEvent<HTMLDivElement> | TouchEvent<HTMLDivElement>) => void;
|
|
10
11
|
style?: CSSProperties;
|
|
11
12
|
};
|
|
12
|
-
export declare function Underline({
|
|
13
|
+
export declare function Underline({ strokeColor, opacity, segmentRects, rect, scale, onClick, style, }: UnderlineProps): import("react/jsx-runtime").JSX.Element;
|
|
13
14
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PdfAnnotationObject } from '@embedpdf/models';
|
|
2
2
|
import { TrackedAnnotation } from '../../lib/index.ts';
|
|
3
3
|
import { HandleElementProps, SelectionMenuPropsBase, SelectionMenuRenderFn } from '../../react/utils.ts';
|
|
4
|
-
import { JSX } from '../../react/adapter.ts';
|
|
4
|
+
import { JSX, MouseEvent, TouchEvent } from '../../react/adapter.ts';
|
|
5
5
|
export type ResizeDirection = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'none';
|
|
6
6
|
export interface AnnotationSelectionContext {
|
|
7
7
|
type: 'annotation';
|
|
@@ -10,6 +10,13 @@ export interface AnnotationSelectionContext {
|
|
|
10
10
|
}
|
|
11
11
|
export type AnnotationSelectionMenuProps = SelectionMenuPropsBase<AnnotationSelectionContext>;
|
|
12
12
|
export type AnnotationSelectionMenuRenderFn = SelectionMenuRenderFn<AnnotationSelectionContext>;
|
|
13
|
+
export interface GroupSelectionContext {
|
|
14
|
+
type: 'group';
|
|
15
|
+
annotations: TrackedAnnotation[];
|
|
16
|
+
pageIndex: number;
|
|
17
|
+
}
|
|
18
|
+
export type GroupSelectionMenuProps = SelectionMenuPropsBase<GroupSelectionContext>;
|
|
19
|
+
export type GroupSelectionMenuRenderFn = SelectionMenuRenderFn<GroupSelectionContext>;
|
|
13
20
|
export type HandleProps = HandleElementProps & {
|
|
14
21
|
backgroundColor?: string;
|
|
15
22
|
};
|
|
@@ -49,3 +56,45 @@ export interface CustomAnnotationRendererProps<T extends PdfAnnotationObject> {
|
|
|
49
56
|
* Custom renderer for an annotation
|
|
50
57
|
*/
|
|
51
58
|
export type CustomAnnotationRenderer<T extends PdfAnnotationObject> = (props: CustomAnnotationRendererProps<T>) => JSX.Element | null;
|
|
59
|
+
/**
|
|
60
|
+
* Props for an annotation renderer entry
|
|
61
|
+
*/
|
|
62
|
+
export interface AnnotationRendererProps<T extends PdfAnnotationObject> {
|
|
63
|
+
annotation: TrackedAnnotation<T>;
|
|
64
|
+
isSelected: boolean;
|
|
65
|
+
scale: number;
|
|
66
|
+
pageIndex: number;
|
|
67
|
+
onClick: (e: MouseEvent<Element> | TouchEvent<Element>) => void;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Entry for a custom annotation renderer that handles specific annotation types.
|
|
71
|
+
* This allows external plugins to provide their own rendering for annotation subtypes.
|
|
72
|
+
* Used at definition time for type safety.
|
|
73
|
+
*/
|
|
74
|
+
export interface AnnotationRendererEntry<T extends PdfAnnotationObject = PdfAnnotationObject> {
|
|
75
|
+
/** Unique identifier for this renderer (usually matches tool id) */
|
|
76
|
+
id: string;
|
|
77
|
+
/** Returns true if this renderer should handle the annotation */
|
|
78
|
+
matches: (annotation: PdfAnnotationObject) => annotation is T;
|
|
79
|
+
/** The component to render the annotation */
|
|
80
|
+
render: (props: AnnotationRendererProps<T>) => JSX.Element;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Props passed to tryRender (everything except annotation which is passed separately)
|
|
84
|
+
*/
|
|
85
|
+
export type BoxedRendererProps = Omit<AnnotationRendererProps<PdfAnnotationObject>, 'annotation'>;
|
|
86
|
+
/**
|
|
87
|
+
* Boxed renderer that encapsulates type safety internally.
|
|
88
|
+
* The generic is erased - this is what the registry actually stores.
|
|
89
|
+
*/
|
|
90
|
+
export interface BoxedAnnotationRenderer {
|
|
91
|
+
/** Unique identifier for this renderer */
|
|
92
|
+
id: string;
|
|
93
|
+
/** Combined match + render: returns null if doesn't match, JSX.Element if it does */
|
|
94
|
+
tryRender: (annotation: TrackedAnnotation, props: BoxedRendererProps) => JSX.Element | null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Creates a boxed renderer from a typed entry.
|
|
98
|
+
* Type safety is enforced at definition time, then erased for storage.
|
|
99
|
+
*/
|
|
100
|
+
export declare function createRenderer<T extends PdfAnnotationObject>(entry: AnnotationRendererEntry<T>): BoxedAnnotationRenderer;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './renderer-registry';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ReactNode } from '../../react/adapter.ts';
|
|
2
|
+
import { BoxedAnnotationRenderer } from '../components/types';
|
|
3
|
+
type RegisterFn = (entries: BoxedAnnotationRenderer[]) => () => void;
|
|
4
|
+
export declare function AnnotationRendererProvider({ children }: {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
/**
|
|
8
|
+
* Hook to register annotation renderers. Handles all registration lifecycle internally.
|
|
9
|
+
* Plugin authors just call this with their renderers array.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useRegisterRenderers(renderers: BoxedAnnotationRenderer[]): void;
|
|
12
|
+
/**
|
|
13
|
+
* Hook to get all registered renderers (for rendering components).
|
|
14
|
+
*/
|
|
15
|
+
export declare function useRegisteredRenderers(): BoxedAnnotationRenderer[];
|
|
16
|
+
/**
|
|
17
|
+
* Low-level hook if someone needs direct access to register function.
|
|
18
|
+
* Most plugins should use useRegisterRenderers instead.
|
|
19
|
+
*/
|
|
20
|
+
export declare function useRendererRegistry(): RegisterFn | null;
|
|
21
|
+
export {};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './hooks';
|
|
2
2
|
export * from './components';
|
|
3
3
|
export * from './components/types';
|
|
4
|
+
export * from './context';
|
|
4
5
|
export * from '../lib/index.ts';
|
|
6
|
+
export declare const AnnotationPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').AnnotationPlugin, import('../lib/index.ts').AnnotationPluginConfig, import('../lib/index.ts').AnnotationState, import('../lib/actions').AnnotationAction>>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { PdfAnnotationObject } from '@embedpdf/models';
|
|
2
2
|
import { HTMLAttributes } from 'svelte/elements';
|
|
3
|
-
import { AnnotationSelectionMenuProps, AnnotationSelectionMenuRenderFn, CustomAnnotationRenderer, ResizeHandleUI, VertexHandleUI } from '../types';
|
|
3
|
+
import { AnnotationSelectionMenuProps, AnnotationSelectionMenuRenderFn, GroupSelectionMenuProps, GroupSelectionMenuRenderFn, CustomAnnotationRenderer, ResizeHandleUI, VertexHandleUI } from '../types';
|
|
4
|
+
import { BoxedAnnotationRenderer } from '../context';
|
|
4
5
|
import { Snippet } from 'svelte';
|
|
5
6
|
type AnnotationLayerProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {
|
|
6
7
|
/** The ID of the document that this layer displays annotations for */
|
|
@@ -12,6 +13,10 @@ type AnnotationLayerProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {
|
|
|
12
13
|
selectionMenu?: AnnotationSelectionMenuRenderFn;
|
|
13
14
|
/** Snippet for custom selection menu (slot-based approach) */
|
|
14
15
|
selectionMenuSnippet?: Snippet<[AnnotationSelectionMenuProps]>;
|
|
16
|
+
/** Render function for group selection menu (schema-driven approach) */
|
|
17
|
+
groupSelectionMenu?: GroupSelectionMenuRenderFn;
|
|
18
|
+
/** Snippet for custom group selection menu (slot-based approach) */
|
|
19
|
+
groupSelectionMenuSnippet?: Snippet<[GroupSelectionMenuProps]>;
|
|
15
20
|
style?: Record<string, string | number | undefined>;
|
|
16
21
|
/** Customize resize handles */
|
|
17
22
|
resizeUI?: ResizeHandleUI;
|
|
@@ -21,6 +26,8 @@ type AnnotationLayerProps = Omit<HTMLAttributes<HTMLDivElement>, 'style'> & {
|
|
|
21
26
|
selectionOutlineColor?: string;
|
|
22
27
|
/** Customize annotation renderer */
|
|
23
28
|
customAnnotationRenderer?: CustomAnnotationRenderer<PdfAnnotationObject>;
|
|
29
|
+
/** Custom annotation renderers from props */
|
|
30
|
+
annotationRenderers?: BoxedAnnotationRenderer[];
|
|
24
31
|
};
|
|
25
32
|
declare const AnnotationLayer: import('svelte', { with: { "resolution-mode": "import" } }).Component<AnnotationLayerProps, {}, "">;
|
|
26
33
|
type AnnotationLayer = ReturnType<typeof AnnotationLayer>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { PdfAnnotationObject } from '@embedpdf/models';
|
|
2
|
-
import {
|
|
2
|
+
import { BoxedAnnotationRenderer } from '../context';
|
|
3
|
+
import { AnnotationSelectionMenuProps, AnnotationSelectionMenuRenderFn, GroupSelectionMenuProps, GroupSelectionMenuRenderFn, CustomAnnotationRenderer, ResizeHandleUI, VertexHandleUI } from '../types';
|
|
3
4
|
import { Snippet } from 'svelte';
|
|
4
5
|
interface AnnotationsProps {
|
|
5
6
|
documentId: string;
|
|
@@ -12,10 +13,16 @@ interface AnnotationsProps {
|
|
|
12
13
|
selectionMenu?: AnnotationSelectionMenuRenderFn;
|
|
13
14
|
/** Snippet for custom selection menu (slot-based approach) */
|
|
14
15
|
selectionMenuSnippet?: Snippet<[AnnotationSelectionMenuProps]>;
|
|
16
|
+
/** Render function for group selection menu (schema-driven approach) */
|
|
17
|
+
groupSelectionMenu?: GroupSelectionMenuRenderFn;
|
|
18
|
+
/** Snippet for custom group selection menu (slot-based approach) */
|
|
19
|
+
groupSelectionMenuSnippet?: Snippet<[GroupSelectionMenuProps]>;
|
|
15
20
|
resizeUI?: ResizeHandleUI;
|
|
16
21
|
vertexUI?: VertexHandleUI;
|
|
17
22
|
selectionOutlineColor?: string;
|
|
18
23
|
customAnnotationRenderer?: CustomAnnotationRenderer<PdfAnnotationObject>;
|
|
24
|
+
/** Custom annotation renderers from registry/props */
|
|
25
|
+
annotationRenderers?: BoxedAnnotationRenderer[];
|
|
19
26
|
}
|
|
20
27
|
declare const Annotations: import('svelte', { with: { "resolution-mode": "import" } }).Component<AnnotationsProps, {}, "">;
|
|
21
28
|
type Annotations = ReturnType<typeof Annotations>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TrackedAnnotation } from '../../lib/index.ts';
|
|
2
|
+
import { GroupSelectionMenuProps, GroupSelectionMenuRenderFn, ResizeHandleUI } from '../types';
|
|
3
|
+
import { Snippet } from 'svelte';
|
|
4
|
+
interface GroupSelectionBoxProps {
|
|
5
|
+
documentId: string;
|
|
6
|
+
pageIndex: number;
|
|
7
|
+
scale: number;
|
|
8
|
+
rotation: number;
|
|
9
|
+
pageWidth: number;
|
|
10
|
+
pageHeight: number;
|
|
11
|
+
/** All selected annotations on this page */
|
|
12
|
+
selectedAnnotations: TrackedAnnotation[];
|
|
13
|
+
/** Whether the group is draggable (all annotations must be group-draggable) */
|
|
14
|
+
isDraggable: boolean;
|
|
15
|
+
/** Whether the group is resizable (all annotations must be group-resizable) */
|
|
16
|
+
isResizable: boolean;
|
|
17
|
+
/** Resize handle UI customization */
|
|
18
|
+
resizeUI?: ResizeHandleUI;
|
|
19
|
+
/** Selection outline color */
|
|
20
|
+
selectionOutlineColor?: string;
|
|
21
|
+
/** Outline offset */
|
|
22
|
+
outlineOffset?: number;
|
|
23
|
+
/** Z-index for the group box */
|
|
24
|
+
zIndex?: number;
|
|
25
|
+
/** Group selection menu render function */
|
|
26
|
+
groupSelectionMenu?: GroupSelectionMenuRenderFn;
|
|
27
|
+
/** Snippet for custom group selection menu (slot-based approach) */
|
|
28
|
+
groupSelectionMenuSnippet?: Snippet<[GroupSelectionMenuProps]>;
|
|
29
|
+
}
|
|
30
|
+
declare const GroupSelectionBox: import('svelte', { with: { "resolution-mode": "import" } }).Component<GroupSelectionBoxProps, {}, "">;
|
|
31
|
+
type GroupSelectionBox = ReturnType<typeof GroupSelectionBox>;
|
|
32
|
+
export default GroupSelectionBox;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
children: Snippet;
|
|
4
|
+
};
|
|
5
|
+
declare const RendererRegistryProvider: import('svelte', { with: { "resolution-mode": "import" } }).Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type RendererRegistryProvider = ReturnType<typeof RendererRegistryProvider>;
|
|
7
|
+
export default RendererRegistryProvider;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PdfAnnotationBorderStyle, Rect } from '@embedpdf/models';
|
|
2
|
+
interface LinkProps {
|
|
3
|
+
/** Whether the annotation is selected */
|
|
4
|
+
isSelected: boolean;
|
|
5
|
+
/** Stroke colour – defaults to blue when omitted */
|
|
6
|
+
strokeColor?: string;
|
|
7
|
+
/** Stroke width in PDF units */
|
|
8
|
+
strokeWidth?: number;
|
|
9
|
+
/** Stroke type – defaults to underline when omitted */
|
|
10
|
+
strokeStyle?: PdfAnnotationBorderStyle;
|
|
11
|
+
/** Stroke dash array – for dashed style */
|
|
12
|
+
strokeDashArray?: number[];
|
|
13
|
+
/** Bounding box of the annotation (PDF units) */
|
|
14
|
+
rect: Rect;
|
|
15
|
+
/** Current page zoom factor */
|
|
16
|
+
scale: number;
|
|
17
|
+
/** Click handler (used for selection) */
|
|
18
|
+
onClick?: (e: MouseEvent | TouchEvent) => void;
|
|
19
|
+
/** Whether this link has an IRT (In Reply To) reference - disables direct interaction */
|
|
20
|
+
hasIRT?: boolean;
|
|
21
|
+
}
|
|
22
|
+
declare const Link: import('svelte', { with: { "resolution-mode": "import" } }).Component<LinkProps, {}, "">;
|
|
23
|
+
type Link = ReturnType<typeof Link>;
|
|
24
|
+
export default Link;
|
|
@@ -2,6 +2,7 @@ export { default as Circle } from './Circle.svelte';
|
|
|
2
2
|
export { default as FreeText } from './FreeText.svelte';
|
|
3
3
|
export { default as Ink } from './Ink.svelte';
|
|
4
4
|
export { default as Line } from './Line.svelte';
|
|
5
|
+
export { default as Link } from './Link.svelte';
|
|
5
6
|
export { default as Polygon } from './Polygon.svelte';
|
|
6
7
|
export { default as Polyline } from './Polyline.svelte';
|
|
7
8
|
export { default as Square } from './Square.svelte';
|
|
@@ -2,8 +2,10 @@ export { default as AnnotationContainer } from './AnnotationContainer.svelte';
|
|
|
2
2
|
export { default as AnnotationLayer } from './AnnotationLayer.svelte';
|
|
3
3
|
export { default as AnnotationPaintLayer } from './AnnotationPaintLayer.svelte';
|
|
4
4
|
export { default as Annotations } from './Annotations.svelte';
|
|
5
|
+
export { default as GroupSelectionBox } from './GroupSelectionBox.svelte';
|
|
5
6
|
export { default as PreviewRenderer } from './PreviewRenderer.svelte';
|
|
6
7
|
export { default as RenderAnnotation } from './RenderAnnotation.svelte';
|
|
8
|
+
export { default as RendererRegistryProvider } from './RendererRegistryProvider.svelte';
|
|
7
9
|
export { default as TextMarkup } from './TextMarkup.svelte';
|
|
8
10
|
export * from './annotations';
|
|
9
11
|
export * from './text-markup';
|