@recogito/text-annotator 3.0.0-rc.10 → 3.0.0-rc.12

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.
Files changed (45) hide show
  1. package/dist/src/SelectionHandler.d.ts +1 -2
  2. package/dist/src/TextAnnotatorOptions.d.ts +1 -0
  3. package/dist/src/api/scrollIntoView.d.ts +2 -2
  4. package/dist/src/highlight/HighlightPainter.d.ts +8 -19
  5. package/dist/src/highlight/HighlightStyle.d.ts +9 -0
  6. package/dist/src/highlight/canvas/highlightRenderer.d.ts +11 -0
  7. package/dist/src/highlight/canvas/index.d.ts +1 -0
  8. package/dist/src/highlight/css/highlightRenderer.d.ts +11 -0
  9. package/dist/src/highlight/css/highlights.d.ts +10 -0
  10. package/dist/src/highlight/css/index.d.ts +2 -0
  11. package/dist/src/highlight/index.d.ts +2 -2
  12. package/dist/src/highlight/viewport.d.ts +12 -0
  13. package/dist/src/index.d.ts +1 -0
  14. package/dist/src/model/{TextAnnotation.d.ts → core/TextAnnotation.d.ts} +1 -1
  15. package/dist/src/model/core/index.d.ts +1 -0
  16. package/dist/src/model/index.d.ts +2 -1
  17. package/dist/src/model/w3c/W3CTextAnnotation.d.ts +33 -0
  18. package/dist/src/model/w3c/W3CTextFormatAdapter.d.ts +12 -0
  19. package/dist/src/model/w3c/index.d.ts +2 -0
  20. package/dist/src/presence/index.d.ts +1 -1
  21. package/dist/src/presence/presencePainter.d.ts +4 -0
  22. package/dist/src/state/index.d.ts +0 -1
  23. package/dist/src/utils/debounce.d.ts +1 -0
  24. package/dist/src/utils/getAnnotatableFragment.d.ts +5 -0
  25. package/dist/src/utils/getQuoteContext.d.ts +4 -0
  26. package/dist/src/utils/index.d.ts +9 -0
  27. package/dist/src/utils/isRevived.d.ts +2 -0
  28. package/dist/src/utils/rangeToSelector.d.ts +2 -0
  29. package/dist/src/utils/reviveAnnotation.d.ts +2 -0
  30. package/dist/src/utils/reviveSelector.d.ts +2 -0
  31. package/dist/src/utils/reviveTarget.d.ts +2 -0
  32. package/dist/src/utils/splitAnnotatableRanges.d.ts +6 -0
  33. package/dist/test/model/w3c/W3CTextFormatAdapter.test.d.ts +1 -0
  34. package/dist/test/model/w3c/fixtures.d.ts +3 -0
  35. package/dist/text-annotator.css +1 -1
  36. package/dist/text-annotator.es.js +1404 -925
  37. package/dist/text-annotator.es.js.map +1 -1
  38. package/dist/text-annotator.umd.js +2 -1
  39. package/dist/text-annotator.umd.js.map +1 -1
  40. package/package.json +11 -6
  41. package/dist/src/highlight/highlightLayer.d.ts +0 -10
  42. package/dist/src/highlight/trackViewport.d.ts +0 -3
  43. package/dist/src/presence/PresencePainter.d.ts +0 -4
  44. package/dist/src/state/reviveTarget.d.ts +0 -9
  45. package/dist/src/utils/getContext.d.ts +0 -4
@@ -1,7 +1,6 @@
1
1
  import { type User } from '@annotorious/core';
2
2
  import type { TextAnnotatorState } from './state';
3
- import type { TextSelector } from './model';
4
- export declare const rangeToSelector: (range: Range, container: HTMLElement, offsetReferenceSelector?: string) => TextSelector;
5
3
  export declare const SelectionHandler: (container: HTMLElement, state: TextAnnotatorState, offsetReferenceSelector?: string) => {
4
+ destroy: () => void;
6
5
  setUser: (user: User) => User;
7
6
  };
@@ -3,6 +3,7 @@ import type { PresencePainterOptions } from './presence';
3
3
  import type { TextAnnotation } from './model';
4
4
  export interface TextAnnotatorOptions<T extends unknown = TextAnnotation> {
5
5
  adapter?: FormatAdapter<TextAnnotation, T> | null;
6
+ experimentalCSSRenderer?: boolean;
6
7
  offsetReferenceSelector?: string;
7
8
  pointerAction?: PointerSelectAction | ((annotation: TextAnnotation) => PointerSelectAction);
8
9
  presence?: PresencePainterOptions;
@@ -1,3 +1,3 @@
1
- import { type TextAnnotationStore } from '../state';
2
- import type { TextAnnotation } from '../model/TextAnnotation';
1
+ import type { TextAnnotationStore } from '../state';
2
+ import type { TextAnnotation } from '../model';
3
3
  export declare const scrollIntoView: (container: HTMLElement, store: TextAnnotationStore) => (annotation: TextAnnotation) => boolean;
@@ -1,20 +1,9 @@
1
- import type { DrawingStyle } from '@annotorious/core';
2
- import type { TextAnnotation } from '../model';
3
- import type { Rect } from '../state';
4
- /**
5
- * A painter implements the actual CANVAS highlight drawing logic.
6
- */
7
- export type HighlightPainter = {
8
- paint(annotation: TextAnnotation, rects: Rect[], bg: CanvasRenderingContext2D, fg: CanvasRenderingContext2D, isSelected?: boolean, style?: DrawingStyle | ((annotation: TextAnnotation, selected?: boolean) => DrawingStyle)): void;
9
- };
10
- /**
11
- * The default painter.
12
- */
13
- export declare const defaultPainter: HighlightPainter;
14
- export interface HighlightStyle {
15
- fill?: string;
16
- fillOpacity?: number;
17
- underline?: string;
18
- underlineOpacity?: number;
19
- underlineWidth?: number;
1
+ import type { AnnotationRects } from '../state';
2
+ import type { HighlightStyle } from './HighlightStyle';
3
+ import type { ViewportBounds } from './viewport';
4
+ export interface HighlightPainter {
5
+ clear(): void;
6
+ destroy(): void;
7
+ paint(annotation: AnnotationRects, viewportBounds: ViewportBounds, isSelected?: boolean): HighlightStyle;
8
+ reset(): void;
20
9
  }
@@ -0,0 +1,9 @@
1
+ import type { DrawingStyle } from '@annotorious/core';
2
+ export declare const DEFAULT_STYLE: DrawingStyle;
3
+ export declare const DEFAULT_SELECTED_STYLE: DrawingStyle;
4
+ export interface HighlightStyle extends Pick<DrawingStyle, 'fill' | 'fillOpacity'> {
5
+ underlineStyle?: string;
6
+ underlineColor?: number;
7
+ underlineOffset?: number;
8
+ underlineThickness?: number;
9
+ }
@@ -0,0 +1,11 @@
1
+ import type { DrawingStyle, Filter, ViewportState } from '@annotorious/core';
2
+ import type { TextAnnotation } from '../../model';
3
+ import type { TextAnnotatorState } from '../../state';
4
+ import type { HighlightPainter } from '../HighlightPainter';
5
+ export declare const createCanvasHighlightRenderer: (container: HTMLElement, state: TextAnnotatorState, viewport: ViewportState) => {
6
+ destroy: () => void;
7
+ refresh: () => number;
8
+ setDrawingStyle: (style: DrawingStyle | ((a: TextAnnotation, selected?: boolean) => DrawingStyle)) => void;
9
+ setFilter: (filter?: Filter) => void;
10
+ setPainter: (painter: HighlightPainter) => HighlightPainter;
11
+ };
@@ -0,0 +1 @@
1
+ export * from './highlightRenderer';
@@ -0,0 +1,11 @@
1
+ import type { DrawingStyle, Filter, ViewportState } from '@annotorious/core';
2
+ import type { TextAnnotatorState } from '../../state';
3
+ import type { TextAnnotation } from '../../model';
4
+ import type { HighlightPainter } from '../HighlightPainter';
5
+ export declare const createCSSHighlightRenderer: (container: HTMLElement, state: TextAnnotatorState, viewport: ViewportState) => {
6
+ destroy: () => void;
7
+ refresh: () => void;
8
+ setDrawingStyle: (style: DrawingStyle | ((a: TextAnnotation, selected?: boolean) => DrawingStyle)) => void;
9
+ setFilter: (filter?: Filter) => void;
10
+ setPainter: (painter: HighlightPainter) => void;
11
+ };
@@ -0,0 +1,10 @@
1
+ import type { DrawingStyle } from '@annotorious/core';
2
+ import type { TextAnnotation } from '../../model';
3
+ import type { HighlightPainter } from '../HighlightPainter';
4
+ import type { AnnotationRects } from 'src/state';
5
+ import type { ViewportBounds } from '../viewport';
6
+ export declare const createHighlights: () => {
7
+ destroy: () => void;
8
+ refresh: (highlights: AnnotationRects[], viewportBounds: ViewportBounds, selected: string[], currentStyle: DrawingStyle | ((annotation: TextAnnotation, selected: boolean) => DrawingStyle)) => void;
9
+ setPainter: (painter: HighlightPainter) => HighlightPainter;
10
+ };
@@ -0,0 +1,2 @@
1
+ export * from './highlightRenderer';
2
+ export * from '../../presence/presencePainter';
@@ -1,2 +1,2 @@
1
- export * from './highlightLayer';
2
- export * from './HighlightPainter';
1
+ export * from './canvas';
2
+ export * from './css';
@@ -0,0 +1,12 @@
1
+ import type { ViewportState } from '@annotorious/core';
2
+ import type { TextAnnotation } from '../model';
3
+ export interface ViewportBounds {
4
+ top: number;
5
+ left: number;
6
+ minX: number;
7
+ minY: number;
8
+ maxX: number;
9
+ maxY: number;
10
+ }
11
+ export declare const getViewportBounds: (container: HTMLElement) => ViewportBounds;
12
+ export declare const trackViewport: (viewport: ViewportState) => (annotations: TextAnnotation[]) => void;
@@ -1,6 +1,7 @@
1
1
  export * from './highlight';
2
2
  export * from './model';
3
3
  export * from './state';
4
+ export * from './utils';
4
5
  export * from './presence/PresencePainterOptions';
5
6
  export * from './TextAnnotator';
6
7
  export * from './TextAnnotatorOptions';
@@ -3,7 +3,7 @@ export interface TextAnnotation extends Annotation {
3
3
  target: TextAnnotationTarget;
4
4
  }
5
5
  export interface TextAnnotationTarget extends AnnotationTarget {
6
- selector: TextSelector;
6
+ selector: TextSelector[];
7
7
  }
8
8
  export interface TextSelector {
9
9
  quote: string;
@@ -0,0 +1 @@
1
+ export * from './TextAnnotation';
@@ -1 +1,2 @@
1
- export * from './TextAnnotation';
1
+ export * from './core';
2
+ export * from './w3c';
@@ -0,0 +1,33 @@
1
+ import type { W3CAnnotation, W3CAnnotationTarget } from '@annotorious/core';
2
+ export interface W3CTextAnnotation extends W3CAnnotation {
3
+ target: W3CTextAnnotationTarget | W3CTextAnnotationTarget[];
4
+ stylesheet?: W3CAnnotationStylesheet;
5
+ }
6
+ export interface W3CTextAnnotationTarget extends W3CAnnotationTarget {
7
+ selector: W3CTextSelector | W3CTextSelector[];
8
+ styleClass?: string;
9
+ }
10
+ /**
11
+ * Matches the `Text Quote Selector` spec
12
+ * @see https://www.w3.org/TR/annotation-model/#text-quote-selector
13
+ */
14
+ export interface W3CTextQuoteSelector {
15
+ type: 'TextQuoteSelector';
16
+ exact: string;
17
+ prefix?: string;
18
+ suffix?: string;
19
+ }
20
+ /**
21
+ * Matches the `Text Position Selector` spec
22
+ * @see https://www.w3.org/TR/annotation-model/#text-position-selector
23
+ */
24
+ export interface W3CTextPositionSelector {
25
+ type: 'TextPositionSelector';
26
+ start: number;
27
+ end: number;
28
+ }
29
+ export type W3CTextSelector = W3CTextQuoteSelector | W3CTextPositionSelector;
30
+ export type W3CAnnotationStylesheet = string | {
31
+ type: 'CssStylesheet';
32
+ value: string;
33
+ };
@@ -0,0 +1,12 @@
1
+ import { type FormatAdapter, ParseResult } from '@annotorious/core';
2
+ import type { TextAnnotation } from '../core';
3
+ import type { W3CTextAnnotation } from '../w3c';
4
+ export type W3CTextFormatAdapter = FormatAdapter<TextAnnotation, W3CTextAnnotation>;
5
+ /**
6
+ * @param source - the IRI of the annotated content
7
+ * @param container - the HTML container of the annotated content,
8
+ * Required to locate the content's `range` within the DOM
9
+ */
10
+ export declare const W3CTextFormat: (source: string, container: HTMLElement) => W3CTextFormatAdapter;
11
+ export declare const parseW3CTextAnnotation: (annotation: W3CTextAnnotation, container: HTMLElement) => ParseResult<TextAnnotation>;
12
+ export declare const serializeW3CTextAnnotation: (annotation: TextAnnotation, source: string, container: HTMLElement) => W3CTextAnnotation;
@@ -0,0 +1,2 @@
1
+ export * from './W3CTextAnnotation';
2
+ export * from './W3CTextFormatAdapter';
@@ -1,2 +1,2 @@
1
- export * from './PresencePainter';
1
+ export * from './presencePainter';
2
2
  export * from './PresencePainterOptions';
@@ -0,0 +1,4 @@
1
+ import type { PresenceProvider } from '@annotorious/core';
2
+ import type { HighlightPainter } from '../highlight/HighlightPainter';
3
+ import type { PresencePainterOptions } from 'src/presence';
4
+ export declare const createPresencePainter: (container: HTMLElement, provider: PresenceProvider, opts?: PresencePainterOptions) => HighlightPainter;
@@ -1,3 +1,2 @@
1
- export * from './reviveTarget';
2
1
  export * from './TextAnnotationStore';
3
2
  export * from './TextAnnotatorState';
@@ -0,0 +1 @@
1
+ export declare const debounce: <T extends (...args: any[]) => void>(func: T, delay?: number) => T;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Returns a DocumentFragment consisting of ONLY the annotatable content
3
+ * in the given DOM Range.
4
+ */
5
+ export declare const getAnnotatableFragment: (range: Range) => DocumentFragment;
@@ -0,0 +1,4 @@
1
+ export declare const getQuoteContext: (range: Range, container: HTMLElement, length?: number, offsetReferenceSelector?: string) => {
2
+ prefix: string;
3
+ suffix: string;
4
+ };
@@ -1,3 +1,12 @@
1
+ export * from './debounce';
2
+ export * from './getAnnotatableFragment';
1
3
  export * from './getClientRectsPonyfill';
4
+ export * from './getQuoteContext';
5
+ export * from './isRevived';
2
6
  export * from './mergeClientRects';
7
+ export * from './rangeToSelector';
8
+ export * from './reviveAnnotation';
9
+ export * from './reviveSelector';
10
+ export * from './reviveTarget';
11
+ export * from './splitAnnotatableRanges';
3
12
  export * from './trimRange';
@@ -0,0 +1,2 @@
1
+ import type { TextSelector } from '../model';
2
+ export declare const isRevived: (selector: TextSelector[]) => boolean;
@@ -0,0 +1,2 @@
1
+ import type { TextSelector } from '../model';
2
+ export declare const rangeToSelector: (range: Range, container: HTMLElement, offsetReferenceSelector?: string) => TextSelector;
@@ -0,0 +1,2 @@
1
+ import type { TextAnnotation } from '../model';
2
+ export declare const reviveAnnotation: (annotation: TextAnnotation, container: HTMLElement) => TextAnnotation;
@@ -0,0 +1,2 @@
1
+ import type { TextSelector } from '../model';
2
+ export declare const reviveSelector: (selector: TextSelector, container: HTMLElement) => TextSelector;
@@ -0,0 +1,2 @@
1
+ import type { TextAnnotationTarget } from '../model';
2
+ export declare const reviveTarget: (target: TextAnnotationTarget, container: HTMLElement) => TextAnnotationTarget;
@@ -0,0 +1,6 @@
1
+ export declare const NOT_ANNTOTATABLE_SELECTOR = ".not-annotatable";
2
+ /**
3
+ * Splits a DOM Range into one or more ranges that span annotatable content only.
4
+ */
5
+ export declare const splitAnnotatableRanges: (range: Range) => Range[];
6
+ export declare const getRangeAnnotatableContents: (range: Range) => DocumentFragment;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { W3CTextAnnotation } from '../../../src';
2
+ export declare const textAnnotation: W3CTextAnnotation;
3
+ export declare const incompleteTextAnnotation: W3CTextAnnotation;
@@ -1 +1 @@
1
- html,body{overscroll-behavior-y:none}.r6o-annotatable{-webkit-tap-highlight-color:transparent}.r6o-annotatable,.r6o-annotatable *{position:relative}.r6o-annotatable.hovered{cursor:pointer}.r6o-highlight-layer{left:0;position:fixed;top:0;bottom:0;width:100vw;pointer-events:none}*::selection,::selection{background:#0080ff2e}::-moz-selection{background:#0080ff2e}
1
+ html,body{overscroll-behavior-y:none}.r6o-annotatable{-webkit-tap-highlight-color:transparent}.r6o-annotatable,.r6o-annotatable *{position:relative}.hovered *{cursor:pointer}.r6o-highlight-layer{left:0;position:fixed;top:0;bottom:0;width:100vw;pointer-events:none}*::selection,::selection{background:#0080ff2e}::-moz-selection{background:#0080ff2e}