@annotorious/core 3.0.0-rc.1 → 3.0.0-rc.10

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 (89) hide show
  1. package/dist/annotorious-core.es.js +767 -0
  2. package/dist/annotorious-core.es.js.map +1 -0
  3. package/{src/index.ts → dist/index.d.ts} +1 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/lifecycle/Lifecycle.d.ts +10 -0
  6. package/dist/lifecycle/Lifecycle.d.ts.map +1 -0
  7. package/dist/lifecycle/LifecycleEvents.d.ts +12 -0
  8. package/dist/lifecycle/LifecycleEvents.d.ts.map +1 -0
  9. package/dist/lifecycle/index.d.ts +3 -0
  10. package/dist/lifecycle/index.d.ts.map +1 -0
  11. package/dist/model/Annotation.d.ts +32 -0
  12. package/dist/model/Annotation.d.ts.map +1 -0
  13. package/dist/model/Annotator.d.ts +63 -0
  14. package/dist/model/Annotator.d.ts.map +1 -0
  15. package/{src/model/DrawingStyle.ts → dist/model/DrawingStyle.d.ts} +7 -14
  16. package/dist/model/DrawingStyle.d.ts.map +1 -0
  17. package/dist/model/Filter.d.ts +3 -0
  18. package/dist/model/Filter.d.ts.map +1 -0
  19. package/dist/model/FormatAdapter.d.ts +15 -0
  20. package/dist/model/FormatAdapter.d.ts.map +1 -0
  21. package/dist/model/User.d.ts +11 -0
  22. package/dist/model/User.d.ts.map +1 -0
  23. package/dist/model/W3CAnnotation.d.ts +38 -0
  24. package/dist/model/W3CAnnotation.d.ts.map +1 -0
  25. package/{src/model/index.ts → dist/model/index.d.ts} +3 -1
  26. package/dist/model/index.d.ts.map +1 -0
  27. package/dist/presence/Appearance.d.ts +6 -0
  28. package/dist/presence/Appearance.d.ts.map +1 -0
  29. package/dist/presence/AppearanceProvider.d.ts +16 -0
  30. package/dist/presence/AppearanceProvider.d.ts.map +1 -0
  31. package/dist/presence/ColorPalette.d.ts +3 -0
  32. package/dist/presence/ColorPalette.d.ts.map +1 -0
  33. package/dist/presence/PresenceEvents.d.ts +6 -0
  34. package/dist/presence/PresenceEvents.d.ts.map +1 -0
  35. package/dist/presence/PresenceProvider.d.ts +5 -0
  36. package/dist/presence/PresenceProvider.d.ts.map +1 -0
  37. package/dist/presence/PresenceState.d.ts +18 -0
  38. package/dist/presence/PresenceState.d.ts.map +1 -0
  39. package/dist/presence/PresentUser.d.ts +7 -0
  40. package/dist/presence/PresentUser.d.ts.map +1 -0
  41. package/{src/presence/index.ts → dist/presence/index.d.ts} +2 -1
  42. package/dist/presence/index.d.ts.map +1 -0
  43. package/dist/state/Hover.d.ts +34 -0
  44. package/dist/state/Hover.d.ts.map +1 -0
  45. package/dist/state/Selection.d.ts +55 -0
  46. package/dist/state/Selection.d.ts.map +1 -0
  47. package/dist/state/Store.d.ts +30 -0
  48. package/dist/state/Store.d.ts.map +1 -0
  49. package/dist/state/StoreObserver.d.ts +57 -0
  50. package/dist/state/StoreObserver.d.ts.map +1 -0
  51. package/dist/state/SvelteStore.d.ts +48 -0
  52. package/dist/state/SvelteStore.d.ts.map +1 -0
  53. package/dist/state/UndoStack.d.ts +44 -0
  54. package/dist/state/UndoStack.d.ts.map +1 -0
  55. package/dist/state/Viewport.d.ts +6 -0
  56. package/dist/state/Viewport.d.ts.map +1 -0
  57. package/{src/state/index.ts → dist/state/index.d.ts} +3 -1
  58. package/dist/state/index.d.ts.map +1 -0
  59. package/dist/utils/annotationUtils.d.ts +11 -0
  60. package/dist/utils/annotationUtils.d.ts.map +1 -0
  61. package/dist/utils/diffAnnotations.d.ts +4 -0
  62. package/dist/utils/diffAnnotations.d.ts.map +1 -0
  63. package/{src/utils/index.ts → dist/utils/index.d.ts} +1 -1
  64. package/dist/utils/index.d.ts.map +1 -0
  65. package/package.json +6 -5
  66. package/src/lifecycle/Lifecycle.ts +0 -197
  67. package/src/lifecycle/LifecycleEvents.ts +0 -21
  68. package/src/lifecycle/index.ts +0 -2
  69. package/src/model/Annotation.ts +0 -57
  70. package/src/model/Annotator.ts +0 -151
  71. package/src/model/FormatAdapter.ts +0 -36
  72. package/src/model/User.ts +0 -19
  73. package/src/model/W3CAnnotation.ts +0 -118
  74. package/src/presence/Appearance.ts +0 -9
  75. package/src/presence/AppearanceProvider.ts +0 -53
  76. package/src/presence/ColorPalette.ts +0 -14
  77. package/src/presence/PresenceEvents.ts +0 -9
  78. package/src/presence/PresenceProvider.ts +0 -7
  79. package/src/presence/PresenceState.ts +0 -145
  80. package/src/presence/PresentUser.ts +0 -10
  81. package/src/state/Hover.ts +0 -34
  82. package/src/state/Selection.ts +0 -113
  83. package/src/state/Store.ts +0 -327
  84. package/src/state/StoreObserver.ts +0 -149
  85. package/src/state/SvelteStore.ts +0 -54
  86. package/src/state/Viewport.ts +0 -14
  87. package/src/utils/annotationUtils.ts +0 -33
  88. package/src/utils/diffAnnotations.ts +0 -33
  89. package/src/vite-env.d.ts +0 -1
@@ -0,0 +1,63 @@
1
+ import type { Annotation } from './Annotation';
2
+ import type { User } from './User';
3
+ import type { PresenceProvider } from '../presence/PresenceProvider';
4
+ import { type HoverState, type SelectionState, type Store, type UndoStack, type ViewportState } from '../state';
5
+ import type { LifecycleEvents } from '../lifecycle/LifecycleEvents';
6
+ import { type FormatAdapter } from './FormatAdapter';
7
+ import type { DrawingStyle } from './DrawingStyle';
8
+ import type { Filter } from './Filter';
9
+ /**
10
+ * Base annotator interface.
11
+ * I ... internal core data model
12
+ * E ... external adapted representation
13
+ */
14
+ export interface Annotator<I extends Annotation = Annotation, E extends unknown = Annotation> {
15
+ addAnnotation(annotation: E): void;
16
+ cancelSelected(): void;
17
+ canRedo(): boolean;
18
+ canUndo(): boolean;
19
+ clearAnnotations(): void;
20
+ destroy(): void;
21
+ getAnnotationById(id: string): E | undefined;
22
+ getAnnotations(): E[];
23
+ getSelected(): E[];
24
+ getUser(): User;
25
+ loadAnnotations(url: string): Promise<E[]>;
26
+ redo(): void;
27
+ removeAnnotation(arg: E | string): E;
28
+ setAnnotations(annotations: E[]): void;
29
+ setFilter(filter: Filter): void;
30
+ setPresenceProvider?(provider: PresenceProvider): void;
31
+ setSelected(arg?: string | string[]): void;
32
+ setStyle(arg: DrawingStyle | ((annotation: I) => DrawingStyle) | undefined): void;
33
+ setUser(user: User): void;
34
+ undo(): void;
35
+ updateAnnotation(annotation: E): E;
36
+ on<T extends keyof LifecycleEvents<E>>(event: T, callback: LifecycleEvents<E>[T]): void;
37
+ off<T extends keyof LifecycleEvents<E>>(event: T, callback: LifecycleEvents<E>[T]): void;
38
+ state: AnnotatorState<I>;
39
+ }
40
+ export interface AnnotatorState<A extends Annotation> {
41
+ store: Store<A>;
42
+ selection: SelectionState<A>;
43
+ hover: HoverState<A>;
44
+ viewport: ViewportState;
45
+ }
46
+ export declare const createBaseAnnotator: <I extends Annotation, E extends unknown>(state: AnnotatorState<I>, undoStack: UndoStack<I>, adapter?: FormatAdapter<I, E>) => {
47
+ addAnnotation: (annotation: E) => void;
48
+ cancelSelected: () => void;
49
+ canRedo: () => boolean;
50
+ canUndo: () => boolean;
51
+ clearAnnotations: () => void;
52
+ getAnnotationById: (id: string) => E;
53
+ getAnnotations: () => E[];
54
+ getSelected: () => E[];
55
+ loadAnnotations: (url: string) => Promise<any>;
56
+ redo: () => void;
57
+ removeAnnotation: (arg: string | E) => E;
58
+ setAnnotations: (annotations: E[]) => void;
59
+ setSelected: (arg?: string | string[]) => void;
60
+ undo: () => void;
61
+ updateAnnotation: (updated: E) => E;
62
+ };
63
+ //# sourceMappingURL=Annotator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Annotator.d.ts","sourceRoot":"","sources":["../../src/model/Annotator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAU,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACxH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;;GAIG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,EAAE,CAAC,SAAS,OAAO,GAAG,UAAU;IAE1F,aAAa,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC;IAEnC,cAAc,IAAI,IAAI,CAAC;IAEvB,OAAO,IAAI,OAAO,CAAC;IAEnB,OAAO,IAAI,OAAO,CAAC;IAEnB,gBAAgB,IAAI,IAAI,CAAC;IAEzB,OAAO,IAAI,IAAI,CAAC;IAEhB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAE7C,cAAc,IAAI,CAAC,EAAE,CAAC;IAEtB,WAAW,IAAI,CAAC,EAAE,CAAC;IAEnB,OAAO,IAAI,IAAI,CAAC;IAEhB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAE3C,IAAI,IAAI,IAAI,CAAC;IAEb,gBAAgB,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IAErC,cAAc,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;IAEvC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEvD,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAE3C,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,YAAY,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAElF,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAE1B,IAAI,IAAI,IAAI,CAAC;IAEb,gBAAgB,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;IAEnC,EAAE,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAExF,GAAG,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEzF,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CAE1B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU;IAElD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAEhB,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAE7B,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAErB,QAAQ,EAAE,aAAa,CAAC;CAEzB;AAED,eAAO,MAAM,mBAAmB;;;;;;4BAyBC,MAAM;;;2BAmBP,MAAM;;;;wBAkCT,MAAM,GAAG,MAAM,EAAE;;;CA0C7C,CAAA"}
@@ -1,19 +1,12 @@
1
1
  type RGB = `rgb(${number}, ${number}, ${number})`;
2
-
3
2
  type RGBA = `rgba(${number}, ${number}, ${number}, ${number})`;
4
-
5
3
  type HEX = `#${string}`;
6
-
7
4
  export type Color = RGB | RGBA | HEX;
8
-
9
5
  export interface DrawingStyle {
10
-
11
- fill?: Color;
12
-
13
- fillOpacity?: number;
14
-
15
- stroke?: Color;
16
-
17
- strokeOpacity?: number;
18
-
19
- }
6
+ fill?: Color;
7
+ fillOpacity?: number;
8
+ stroke?: Color;
9
+ strokeOpacity?: number;
10
+ }
11
+ export {};
12
+ //# sourceMappingURL=DrawingStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrawingStyle.d.ts","sourceRoot":"","sources":["../../src/model/DrawingStyle.ts"],"names":[],"mappings":"AAAA,KAAK,GAAG,GAAG,OAAO,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC;AAElD,KAAK,IAAI,GAAG,QAAQ,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC;AAE/D,KAAK,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;AAExB,MAAM,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;AAErC,MAAM,WAAW,YAAY;IAE3B,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,MAAM,CAAC,EAAE,KAAK,CAAC;IAEf,aAAa,CAAC,EAAE,MAAM,CAAC;CAExB"}
@@ -0,0 +1,3 @@
1
+ import type { Annotation } from './Annotation';
2
+ export type Filter<T extends Annotation = Annotation> = (annotation: T) => boolean;
3
+ //# sourceMappingURL=Filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filter.d.ts","sourceRoot":"","sources":["../../src/model/Filter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,OAAO,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Annotation } from './Annotation';
2
+ export interface FormatAdapter<A extends Annotation, T extends unknown> {
3
+ parse(serialized: T): ParseResult<A>;
4
+ serialize(core: A): T;
5
+ }
6
+ export interface ParseResult<A extends Annotation> {
7
+ parsed?: A;
8
+ error?: Error;
9
+ }
10
+ export declare const serializeAll: <A extends Annotation, T extends unknown>(adapter: FormatAdapter<A, T>) => (annotations: A[]) => T[];
11
+ export declare const parseAll: <A extends Annotation, T extends unknown>(adapter: FormatAdapter<A, T>) => (serialized: T[]) => {
12
+ parsed: any[];
13
+ failed: any[];
14
+ };
15
+ //# sourceMappingURL=FormatAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormatAdapter.d.ts","sourceRoot":"","sources":["../../src/model/FormatAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,OAAO;IAEpE,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAErC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;CAEvB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU;IAE/C,MAAM,CAAC,EAAE,CAAC,CAAC;IAEX,KAAK,CAAC,EAAE,KAAK,CAAC;CAEf;AAED,eAAO,MAAM,YAAY,sGAE2C,CAAC;AAErE,eAAO,MAAM,QAAQ;;;CAYa,CAAC"}
@@ -0,0 +1,11 @@
1
+ export interface User {
2
+ id: string;
3
+ isGuest?: boolean;
4
+ name?: string;
5
+ avatar?: string;
6
+ }
7
+ export declare const createAnonymousGuest: () => {
8
+ isGuest: boolean;
9
+ id: string;
10
+ };
11
+ //# sourceMappingURL=User.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"User.d.ts","sourceRoot":"","sources":["../../src/model/User.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,IAAI;IAEnB,EAAE,EAAE,MAAM,CAAC;IAEX,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;CAEjB;AAED,eAAO,MAAM,oBAAoB;;;CAIhC,CAAA"}
@@ -0,0 +1,38 @@
1
+ import type { AnnotationBody } from './Annotation';
2
+ export interface W3CAnnotation {
3
+ '@context': 'http://www.w3.org/ns/anno.jsonld';
4
+ type: 'Annotation';
5
+ id: string;
6
+ body: W3CAnnotationBody | W3CAnnotationBody[];
7
+ target: W3CAnnotationTarget | W3CAnnotationTarget[];
8
+ [key: string]: any;
9
+ }
10
+ export interface W3CAnnotationBody {
11
+ id?: string;
12
+ type?: string;
13
+ purpose?: string;
14
+ value?: string;
15
+ source?: string;
16
+ created?: Date;
17
+ creator?: {
18
+ type?: string;
19
+ id: string;
20
+ name?: string;
21
+ };
22
+ }
23
+ export interface W3CAnnotationTarget {
24
+ source: string;
25
+ selector?: W3CSelector | W3CSelector[];
26
+ }
27
+ export interface W3CSelector {
28
+ type: string;
29
+ conformsTo?: string;
30
+ value: string;
31
+ }
32
+ /**
33
+ * Helper to crosswalk the W3C annotation body to a list of core AnnotationBody objects.
34
+ */
35
+ export declare const parseW3CBodies: (body: W3CAnnotationBody | W3CAnnotationBody[], annotationId: string) => AnnotationBody[];
36
+ /** Serialization helper to remove core-specific fields from the annotation body **/
37
+ export declare const serializeW3CBodies: (bodies: AnnotationBody[]) => W3CAnnotationBody[];
38
+ //# sourceMappingURL=W3CAnnotation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"W3CAnnotation.d.ts","sourceRoot":"","sources":["../../src/model/W3CAnnotation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,aAAa;IAE5B,UAAU,EAAE,kCAAkC,CAAC;IAE/C,IAAI,EAAE,YAAY,CAAC;IAEnB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAAA;IAE7C,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAAC;IAEpD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CAEpB;AAED,MAAM,WAAW,iBAAiB;IAEhC,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,OAAO,CAAC,EAAE;QAER,IAAI,CAAC,EAAE,MAAM,CAAC;QAEd,EAAE,EAAE,MAAM,CAAC;QAEX,IAAI,CAAC,EAAE,MAAM,CAAC;KAEf,CAAC;CAEH;AAED,MAAM,WAAW,mBAAmB;IAElC,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;CAExC;AAED,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,MAAM,CAAC;IAEb,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,KAAK,EAAE,MAAM,CAAC;CACf;AAiBD;;GAEG;AACH,eAAO,MAAM,cAAc,SACnB,iBAAiB,GAAG,iBAAiB,EAAE,gBAC/B,MAAM,KACnB,cAAc,EAuBf,CAAC;AAEH,oFAAoF;AACpF,eAAO,MAAM,kBAAkB,WAAY,cAAc,EAAE,KAAG,iBAAiB,EAS3E,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export * from './Annotation';
2
2
  export * from './Annotator';
3
3
  export * from './DrawingStyle';
4
+ export * from './Filter';
4
5
  export * from './FormatAdapter';
5
6
  export * from './User';
6
- export * from './W3CAnnotation';
7
+ export * from './W3CAnnotation';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface Appearance {
2
+ label: string;
3
+ color: string;
4
+ avatar?: string;
5
+ }
6
+ //# sourceMappingURL=Appearance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Appearance.d.ts","sourceRoot":"","sources":["../../src/presence/Appearance.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IAEzB,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;CAEjB"}
@@ -0,0 +1,16 @@
1
+ import type { User } from '../model/User';
2
+ import type { Appearance } from './Appearance';
3
+ import type { PresentUser } from './PresentUser';
4
+ export interface AppearanceProvider {
5
+ addUser(presenceKey: string, user: User): Appearance;
6
+ removeUser(user: PresentUser): void;
7
+ }
8
+ export declare const defaultColorProvider: () => {
9
+ assignRandomColor: () => string;
10
+ releaseColor: (color: string) => number;
11
+ };
12
+ export declare const createDefaultAppearenceProvider: () => {
13
+ addUser: (presenceKey: string, user: User) => Appearance;
14
+ removeUser: (user: PresentUser) => number;
15
+ };
16
+ //# sourceMappingURL=AppearanceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppearanceProvider.d.ts","sourceRoot":"","sources":["../../src/presence/AppearanceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,WAAW,kBAAkB;IAEjC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,UAAU,CAAC;IAErD,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;CAErC;AAED,eAAO,MAAM,oBAAoB;;0BAaF,MAAM;CAKpC,CAAA;AAED,eAAO,MAAM,+BAA+B;2BAIZ,MAAM,QAAQ,IAAI,KAAG,UAAU;uBAUnC,WAAW;CAKtC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const DEFAULT_PALETTE: Palette;
2
+ export type Palette = string[];
3
+ //# sourceMappingURL=ColorPalette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorPalette.d.ts","sourceRoot":"","sources":["../../src/presence/ColorPalette.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,EAAE,OAU7B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { PresentUser } from './PresentUser';
2
+ export interface PresenceEvents {
3
+ presence: (users: PresentUser[]) => void;
4
+ selectionChange: (from: PresentUser, selection: string[] | null) => void;
5
+ }
6
+ //# sourceMappingURL=PresenceEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresenceEvents.d.ts","sourceRoot":"","sources":["../../src/presence/PresenceEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,cAAc;IAE7B,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAEzC,eAAe,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;CAE1E"}
@@ -0,0 +1,5 @@
1
+ import type { PresenceEvents } from './PresenceEvents';
2
+ export interface PresenceProvider {
3
+ on<E extends keyof PresenceEvents>(event: E, callback: PresenceEvents[E]): void;
4
+ }
5
+ //# sourceMappingURL=PresenceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresenceProvider.d.ts","sourceRoot":"","sources":["../../src/presence/PresenceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAE/B,EAAE,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAEjF"}
@@ -0,0 +1,18 @@
1
+ import { type Unsubscribe } from 'nanoevents';
2
+ import type { User } from '../model/User';
3
+ import type { PresentUser } from './PresentUser';
4
+ import type { PresenceEvents } from './PresenceEvents';
5
+ import type { AppearanceProvider } from './AppearanceProvider';
6
+ export interface PresenceState {
7
+ getPresentUsers(): PresentUser[];
8
+ notifyActivity(presenceKey: string, annotationIds: string[]): void;
9
+ on<E extends keyof PresenceEvents>(event: E, callback: PresenceEvents[E]): Unsubscribe;
10
+ syncUsers(state: {
11
+ presenceKey: string;
12
+ user: User;
13
+ }[]): void;
14
+ updateSelection(presenceKey: string, selection: string[] | null): void;
15
+ }
16
+ export declare const PRESENCE_KEY: string;
17
+ export declare const createPresenceState: (appearanceProvider?: AppearanceProvider) => PresenceState;
18
+ //# sourceMappingURL=PresenceState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresenceState.d.ts","sourceRoot":"","sources":["../../src/presence/PresenceState.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,aAAa;IAG5B,eAAe,IAAI,WAAW,EAAE,CAAC;IAGjC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAGnE,EAAE,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;IAGvF,SAAS,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IAG9D,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;CAExE;AAMD,eAAO,MAAM,YAAY,QAAW,CAAC;AAErC,eAAO,MAAM,mBAAmB,wBACV,kBAAkB,KACrC,aA6GF,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { User } from '../model/User';
2
+ import type { Appearance } from './Appearance';
3
+ export interface PresentUser extends User {
4
+ presenceKey: string;
5
+ appearance: Appearance;
6
+ }
7
+ //# sourceMappingURL=PresentUser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PresentUser.d.ts","sourceRoot":"","sources":["../../src/presence/PresentUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,WAAY,SAAQ,IAAI;IAEvC,WAAW,EAAE,MAAM,CAAC;IAEpB,UAAU,EAAE,UAAU,CAAA;CAEvB"}
@@ -3,4 +3,5 @@ export * from './AppearanceProvider';
3
3
  export * from './PresenceEvents';
4
4
  export * from './PresenceProvider';
5
5
  export * from './PresenceState';
6
- export * from './PresentUser';
6
+ export * from './PresentUser';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presence/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Annotation } from '../model';
2
+ import type { Store } from './Store';
3
+ export type HoverState<T extends Annotation> = ReturnType<typeof createHoverState<T>>;
4
+ export declare const createHoverState: <T extends Annotation>(store: {
5
+ addAnnotation: (annotation: T, origin?: import("./StoreObserver").Origin) => void;
6
+ addBody: (body: import("../model").AnnotationBody, origin?: import("./StoreObserver").Origin) => void;
7
+ all: () => T[];
8
+ bulkAddAnnotation: (annotations: T[], replace?: boolean, origin?: import("./StoreObserver").Origin) => void;
9
+ bulkDeleteAnnotation: (annotationsOrIds: (string | T)[], origin?: import("./StoreObserver").Origin) => void;
10
+ bulkUpdateAnnotation: (annotations: T[], origin?: import("./StoreObserver").Origin) => void;
11
+ bulkUpdateBodies: (bodies: import("../model").AnnotationBody[], origin?: import("./StoreObserver").Origin) => void;
12
+ bulkUpdateTargets: (targets: import("../model").AnnotationTarget[], origin?: import("./StoreObserver").Origin) => void;
13
+ clear: (origin?: import("./StoreObserver").Origin) => void;
14
+ deleteAnnotation: (annotationOrId: string | T, origin?: import("./StoreObserver").Origin) => void;
15
+ deleteBody: (body: {
16
+ id: string;
17
+ annotation: string;
18
+ }, origin?: import("./StoreObserver").Origin) => void;
19
+ getAnnotation: (id: string) => T;
20
+ getBody: (id: string) => import("../model").AnnotationBody;
21
+ observe: (onChange: (event: import("./StoreObserver").StoreChangeEvent<T>) => void, options?: import("./StoreObserver").StoreObserveOptions) => number;
22
+ unobserve: (onChange: (event: import("./StoreObserver").StoreChangeEvent<T>) => void) => void;
23
+ updateAnnotation: (arg1: string | T, arg2?: import("./StoreObserver").Origin | T, arg3?: import("./StoreObserver").Origin) => void;
24
+ updateBody: (oldBodyId: {
25
+ id: string;
26
+ annotation: string;
27
+ }, newBody: import("../model").AnnotationBody, origin?: import("./StoreObserver").Origin) => void;
28
+ updateTarget: (target: import("../model").AnnotationTarget, origin?: import("./StoreObserver").Origin) => void;
29
+ }) => {
30
+ readonly current: string;
31
+ subscribe: (this: void, run: import("svelte/store").Subscriber<string>, invalidate?: (value?: string) => void) => import("svelte/store").Unsubscriber;
32
+ set: (this: void, value: string) => void;
33
+ };
34
+ //# sourceMappingURL=Hover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hover.d.ts","sourceRoot":"","sources":["../../src/state/Hover.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,UAAU,IAAI,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B5B,CAAA"}
@@ -0,0 +1,55 @@
1
+ import type { Annotation } from '../model';
2
+ import type { Store } from './Store';
3
+ export type Selection = {
4
+ selected: {
5
+ id: string;
6
+ editable?: boolean;
7
+ }[];
8
+ pointerEvent?: PointerEvent;
9
+ };
10
+ export type SelectionState<T extends Annotation> = ReturnType<typeof createSelectionState<T>>;
11
+ export declare enum PointerSelectAction {
12
+ EDIT = "EDIT",
13
+ SELECT = "SELECT",
14
+ NONE = "NONE"
15
+ }
16
+ export declare const createSelectionState: <T extends Annotation>(store: {
17
+ addAnnotation: (annotation: T, origin?: import("./StoreObserver").Origin) => void;
18
+ addBody: (body: import("../model").AnnotationBody, origin?: import("./StoreObserver").Origin) => void;
19
+ all: () => T[];
20
+ bulkAddAnnotation: (annotations: T[], replace?: boolean, origin?: import("./StoreObserver").Origin) => void;
21
+ bulkDeleteAnnotation: (annotationsOrIds: (string | T)[], origin?: import("./StoreObserver").Origin) => void;
22
+ bulkUpdateAnnotation: (annotations: T[], origin?: import("./StoreObserver").Origin) => void;
23
+ bulkUpdateBodies: (bodies: import("../model").AnnotationBody[], origin?: import("./StoreObserver").Origin) => void;
24
+ bulkUpdateTargets: (targets: import("../model").AnnotationTarget[], origin?: import("./StoreObserver").Origin) => void;
25
+ clear: (origin?: import("./StoreObserver").Origin) => void;
26
+ deleteAnnotation: (annotationOrId: string | T, origin?: import("./StoreObserver").Origin) => void;
27
+ deleteBody: (body: {
28
+ id: string;
29
+ annotation: string;
30
+ }, origin?: import("./StoreObserver").Origin) => void;
31
+ getAnnotation: (id: string) => T;
32
+ getBody: (id: string) => import("../model").AnnotationBody;
33
+ observe: (onChange: (event: import("./StoreObserver").StoreChangeEvent<T>) => void, options?: import("./StoreObserver").StoreObserveOptions) => number;
34
+ unobserve: (onChange: (event: import("./StoreObserver").StoreChangeEvent<T>) => void) => void;
35
+ updateAnnotation: (arg1: string | T, arg2?: import("./StoreObserver").Origin | T, arg3?: import("./StoreObserver").Origin) => void;
36
+ updateBody: (oldBodyId: {
37
+ id: string;
38
+ annotation: string;
39
+ }, newBody: import("../model").AnnotationBody, origin?: import("./StoreObserver").Origin) => void;
40
+ updateTarget: (target: import("../model").AnnotationTarget, origin?: import("./StoreObserver").Origin) => void;
41
+ }, selectAction?: PointerSelectAction | ((a: Annotation) => PointerSelectAction)) => {
42
+ clear: () => void;
43
+ clickSelect: (id: string, pointerEvent: PointerEvent) => void;
44
+ readonly selected: {
45
+ id: string;
46
+ editable?: boolean;
47
+ }[];
48
+ readonly pointerEvent: PointerEvent;
49
+ isEmpty: () => boolean;
50
+ isSelected: (annotationOrId: string | T) => boolean;
51
+ setSelected: (idOrIds: string | string[], editable?: boolean) => void;
52
+ subscribe: (this: void, run: import("svelte/store").Subscriber<Selection>, invalidate?: (value?: Selection) => void) => import("svelte/store").Unsubscriber;
53
+ };
54
+ export declare const onPointerSelect: (annotation: Annotation, action?: PointerSelectAction | ((a: Annotation) => PointerSelectAction)) => PointerSelectAction;
55
+ //# sourceMappingURL=Selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Selection.d.ts","sourceRoot":"","sources":["../../src/state/Selection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAG,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,MAAM,SAAS,GAAG;IAEtB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAE/C,YAAY,CAAC,EAAE,YAAY,CAAC;CAE7B,CAAA;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,UAAU,IAAI,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9F,oBAAY,mBAAmB;IAE7B,IAAI,SAAS;IAEb,MAAM,WAAW;IAEjB,IAAI,SAAS;CAEd;AAID,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;6CAEU,UAAU,KAAK,mBAAmB;;sBAqBlD,MAAM,gBAAgB,YAAY;;YA3C3C,MAAM;mBAAa,OAAO;;;;;2BA0DZ,MAAM,GAAG,MAAM,EAAE,aAAY,OAAO;;CAyCnE,CAAA;AAED,eAAO,MAAM,eAAe,eACd,UAAU,sCACc,UAAU,KAAK,mBAAmB,MACrE,mBAEqC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { Annotation, AnnotationBody, AnnotationTarget } from '../model';
2
+ import { Origin } from './StoreObserver';
3
+ import type { StoreChangeEvent, StoreObserveOptions } from './StoreObserver';
4
+ type AnnotationBodyIdentifier = {
5
+ id: string;
6
+ annotation: string;
7
+ };
8
+ export type Store<T extends Annotation> = ReturnType<typeof createStore<T>>;
9
+ export declare const createStore: <T extends Annotation>() => {
10
+ addAnnotation: (annotation: T, origin?: Origin) => void;
11
+ addBody: (body: AnnotationBody, origin?: Origin) => void;
12
+ all: () => T[];
13
+ bulkAddAnnotation: (annotations: T[], replace?: boolean, origin?: Origin) => void;
14
+ bulkDeleteAnnotation: (annotationsOrIds: (string | T)[], origin?: Origin) => void;
15
+ bulkUpdateAnnotation: (annotations: T[], origin?: Origin) => void;
16
+ bulkUpdateBodies: (bodies: AnnotationBody[], origin?: Origin) => void;
17
+ bulkUpdateTargets: (targets: AnnotationTarget[], origin?: Origin) => void;
18
+ clear: (origin?: Origin) => void;
19
+ deleteAnnotation: (annotationOrId: string | T, origin?: Origin) => void;
20
+ deleteBody: (body: AnnotationBodyIdentifier, origin?: Origin) => void;
21
+ getAnnotation: (id: string) => T;
22
+ getBody: (id: string) => AnnotationBody | undefined;
23
+ observe: (onChange: (event: StoreChangeEvent<T>) => void, options?: StoreObserveOptions) => number;
24
+ unobserve: (onChange: (event: StoreChangeEvent<T>) => void) => void;
25
+ updateAnnotation: (arg1: string | T, arg2?: Origin | T, arg3?: Origin) => void;
26
+ updateBody: (oldBodyId: AnnotationBodyIdentifier, newBody: AnnotationBody, origin?: Origin) => void;
27
+ updateTarget: (target: AnnotationTarget, origin?: Origin) => void;
28
+ };
29
+ export {};
30
+ //# sourceMappingURL=Store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../src/state/Store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,EAAE,MAAM,EAA6C,MAAM,iBAAiB,CAAC;AACpF,OAAO,KAAK,EAAiB,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAG5F,KAAK,wBAAwB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,UAAU,IAAI,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAI5E,eAAO,MAAM,WAAW;;oBA0FC,cAAc;;;;;+BAkLH,cAAc,EAAE;iCAoCd,gBAAgB,EAAE;;;uBAxH5B,wBAAwB;wBA6BvB,MAAM;kBAKZ,MAAM,KAAG,cAAc,GAAG,SAAS;wDAlNG,IAAI,YAAa,mBAAmB;0DAGlC,IAAI;;4BA4PlC,wBAAwB,WAAW,cAAc;2BAmClD,gBAAgB;CAiC/C,CAAA"}
@@ -0,0 +1,57 @@
1
+ import type { Annotation, AnnotationBody, AnnotationTarget } from '../model/Annotation';
2
+ /** Interface for listening to changes in the annotation store **/
3
+ export interface StoreObserver<T extends Annotation> {
4
+ onChange: {
5
+ (event: StoreChangeEvent<T>): void;
6
+ };
7
+ options: StoreObserveOptions;
8
+ }
9
+ /** A change event fired when the store state changes **/
10
+ export interface StoreChangeEvent<T extends Annotation> {
11
+ origin: Origin;
12
+ changes: ChangeSet<T>;
13
+ state: T[];
14
+ }
15
+ export interface ChangeSet<T extends Annotation> {
16
+ created?: T[];
17
+ deleted?: T[];
18
+ updated?: Update<T>[];
19
+ }
20
+ export interface Update<T extends Annotation> {
21
+ oldValue: T;
22
+ newValue: T;
23
+ bodiesCreated?: AnnotationBody[];
24
+ bodiesDeleted?: AnnotationBody[];
25
+ bodiesUpdated?: Array<{
26
+ oldBody: AnnotationBody;
27
+ newBody: AnnotationBody;
28
+ }>;
29
+ targetUpdated?: {
30
+ oldTarget: AnnotationTarget;
31
+ newTarget: AnnotationTarget;
32
+ };
33
+ }
34
+ /** Options to control which events the observer wants to get notified about **/
35
+ export interface StoreObserveOptions {
36
+ ignore?: Ignore;
37
+ annotations?: string | string[];
38
+ origin?: Origin;
39
+ }
40
+ /** Allows the observer to ignore certain event types **/
41
+ export declare enum Ignore {
42
+ BODY_ONLY = "BODY_ONLY",
43
+ TARGET_ONLY = "TARGET_ONLY"
44
+ }
45
+ /** Allows the observer to listen only for events that originated locally or from a remote source **/
46
+ export declare enum Origin {
47
+ LOCAL = "LOCAL",
48
+ REMOTE = "REMOTE"
49
+ }
50
+ /** Tests if this observer should be notified about this event **/
51
+ export declare const shouldNotify: <T extends Annotation>(observer: StoreObserver<T>, event: StoreChangeEvent<T>) => boolean;
52
+ export declare const mergeChanges: <T extends Annotation>(changes: ChangeSet<T>, toMerge: ChangeSet<T>) => {
53
+ created: T[];
54
+ deleted: T[];
55
+ updated: Update<T>[];
56
+ };
57
+ //# sourceMappingURL=StoreObserver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreObserver.d.ts","sourceRoot":"","sources":["../../src/state/StoreObserver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGxF,kEAAkE;AAClE,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,UAAU;IAEjD,QAAQ,EAAE;QAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;IAEjD,OAAO,EAAE,mBAAmB,CAAC;CAE9B;AAED,yDAAyD;AACzD,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,UAAU;IAEpD,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtB,KAAK,EAAE,CAAC,EAAE,CAAC;CAEZ;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,UAAU;IAE7C,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IAEd,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IAEd,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;CAEvB;AAED,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,UAAU;IAE1C,QAAQ,EAAE,CAAC,CAAC;IAEZ,QAAQ,EAAE,CAAC,CAAC;IAEZ,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IAEjC,aAAa,CAAC,EAAE,cAAc,EAAE,CAAC;IAEjC,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAE5E,aAAa,CAAC,EAAE;QAAE,SAAS,EAAE,gBAAgB,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAC,CAAC;CAE7E;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAGlC,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAGhC,MAAM,CAAC,EAAE,MAAM,CAAA;CAEhB;AAED,yDAAyD;AACzD,oBAAY,MAAM;IAGhB,SAAS,cAAc;IAGvB,WAAW,gBAAgB;CAE5B;AAED,qGAAqG;AACrG,oBAAY,MAAM;IAEhB,KAAK,UAAU;IAEf,MAAM,WAAW;CAElB;AAED,kEAAkE;AAClE,eAAO,MAAM,YAAY,2FAiDxB,CAAA;AAED,eAAO,MAAM,YAAY;;;;CA0DxB,CAAA"}
@@ -0,0 +1,48 @@
1
+ import type { Annotation, Annotator, AnnotatorState } from '../model';
2
+ import type { Store } from './Store';
3
+ import type { StoreChangeEvent } from './StoreObserver';
4
+ type Subscriber<T extends Annotation> = (annotation: T[]) => void;
5
+ export interface SvelteStore<T extends Annotation> extends Store<T> {
6
+ subscribe(onChange: Subscriber<T>): void;
7
+ }
8
+ export interface SvelteAnnotatorState<T extends Annotation> extends AnnotatorState<T> {
9
+ store: SvelteStore<T>;
10
+ }
11
+ export interface SvelteAnnotator<T extends Annotation> extends Annotator<T> {
12
+ state: SvelteAnnotatorState<T>;
13
+ }
14
+ /**
15
+ * A simple wrapper around the event-based store implementation
16
+ * that adds a Svelte shim, for use with the reactive '$' notation.
17
+ * Other frameworks might not actually need this. But it's pretty
18
+ * convenient for everyone using Svelte, as well as for the
19
+ * basic (Svelte-based) Annotorious standard implementation.
20
+ */
21
+ export declare const toSvelteStore: <T extends Annotation>(store: {
22
+ addAnnotation: (annotation: T, origin?: import("./StoreObserver").Origin) => void;
23
+ addBody: (body: import("../model").AnnotationBody, origin?: import("./StoreObserver").Origin) => void;
24
+ all: () => T[];
25
+ bulkAddAnnotation: (annotations: T[], replace?: boolean, origin?: import("./StoreObserver").Origin) => void;
26
+ bulkDeleteAnnotation: (annotationsOrIds: (string | T)[], origin?: import("./StoreObserver").Origin) => void;
27
+ bulkUpdateAnnotation: (annotations: T[], origin?: import("./StoreObserver").Origin) => void;
28
+ bulkUpdateBodies: (bodies: import("../model").AnnotationBody[], origin?: import("./StoreObserver").Origin) => void;
29
+ bulkUpdateTargets: (targets: import("../model").AnnotationTarget[], origin?: import("./StoreObserver").Origin) => void;
30
+ clear: (origin?: import("./StoreObserver").Origin) => void;
31
+ deleteAnnotation: (annotationOrId: string | T, origin?: import("./StoreObserver").Origin) => void;
32
+ deleteBody: (body: {
33
+ id: string;
34
+ annotation: string;
35
+ }, origin?: import("./StoreObserver").Origin) => void;
36
+ getAnnotation: (id: string) => T;
37
+ getBody: (id: string) => import("../model").AnnotationBody;
38
+ observe: (onChange: (event: StoreChangeEvent<T>) => void, options?: import("./StoreObserver").StoreObserveOptions) => number;
39
+ unobserve: (onChange: (event: StoreChangeEvent<T>) => void) => void;
40
+ updateAnnotation: (arg1: string | T, arg2?: import("./StoreObserver").Origin | T, arg3?: import("./StoreObserver").Origin) => void;
41
+ updateBody: (oldBodyId: {
42
+ id: string;
43
+ annotation: string;
44
+ }, newBody: import("../model").AnnotationBody, origin?: import("./StoreObserver").Origin) => void;
45
+ updateTarget: (target: import("../model").AnnotationTarget, origin?: import("./StoreObserver").Origin) => void;
46
+ }) => SvelteStore<T>;
47
+ export {};
48
+ //# sourceMappingURL=SvelteStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SvelteStore.d.ts","sourceRoot":"","sources":["../../src/state/SvelteStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,KAAK,UAAU,CAAC,CAAC,SAAS,UAAU,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;AAElE,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,KAAK,CAAC,CAAC,CAAC;IAEjE,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAE1C;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAEnF,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;CAEtB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAEzE,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAA;CAE/B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;oBAsBzB,CAAA"}
@@ -0,0 +1,44 @@
1
+ import { type Unsubscribe } from 'nanoevents';
2
+ import type { Annotation } from '../model';
3
+ import type { Store } from './Store';
4
+ import { Origin } from './StoreObserver';
5
+ import { type ChangeSet, type StoreChangeEvent } from './StoreObserver';
6
+ export interface UndoStack<T extends Annotation> {
7
+ canRedo(): boolean;
8
+ canUndo(): boolean;
9
+ destroy(): void;
10
+ on<E extends keyof UndoStackEvents<T>>(event: E, callback: UndoStackEvents<T>[E]): Unsubscribe;
11
+ undo(): void;
12
+ redo(): void;
13
+ }
14
+ export interface UndoStackEvents<T extends Annotation> {
15
+ redo(change: ChangeSet<T>): void;
16
+ undo(change: ChangeSet<T>): void;
17
+ }
18
+ export declare const createUndoStack: <T extends Annotation>(store: {
19
+ addAnnotation: (annotation: T, origin?: Origin) => void;
20
+ addBody: (body: import("../model").AnnotationBody, origin?: Origin) => void;
21
+ all: () => T[];
22
+ bulkAddAnnotation: (annotations: T[], replace?: boolean, origin?: Origin) => void;
23
+ bulkDeleteAnnotation: (annotationsOrIds: (string | T)[], origin?: Origin) => void;
24
+ bulkUpdateAnnotation: (annotations: T[], origin?: Origin) => void;
25
+ bulkUpdateBodies: (bodies: import("../model").AnnotationBody[], origin?: Origin) => void;
26
+ bulkUpdateTargets: (targets: import("../model").AnnotationTarget[], origin?: Origin) => void;
27
+ clear: (origin?: Origin) => void;
28
+ deleteAnnotation: (annotationOrId: string | T, origin?: Origin) => void;
29
+ deleteBody: (body: {
30
+ id: string;
31
+ annotation: string;
32
+ }, origin?: Origin) => void;
33
+ getAnnotation: (id: string) => T;
34
+ getBody: (id: string) => import("../model").AnnotationBody;
35
+ observe: (onChange: (event: StoreChangeEvent<T>) => void, options?: import("./StoreObserver").StoreObserveOptions) => number;
36
+ unobserve: (onChange: (event: StoreChangeEvent<T>) => void) => void;
37
+ updateAnnotation: (arg1: string | T, arg2?: Origin | T, arg3?: Origin) => void;
38
+ updateBody: (oldBodyId: {
39
+ id: string;
40
+ annotation: string;
41
+ }, newBody: import("../model").AnnotationBody, origin?: Origin) => void;
42
+ updateTarget: (target: import("../model").AnnotationTarget, origin?: Origin) => void;
43
+ }) => UndoStack<T>;
44
+ //# sourceMappingURL=UndoStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UndoStack.d.ts","sourceRoot":"","sources":["../../src/state/UndoStack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAgB,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAe,MAAM,iBAAiB,CAAC;AAOnG,MAAM,WAAW,SAAS,CAAE,CAAC,SAAS,UAAU;IAE9C,OAAO,IAAI,OAAO,CAAC;IAEnB,OAAO,IAAI,OAAO,CAAC;IAEnB,OAAO,IAAI,IAAI,CAAC;IAEhB,EAAE,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;IAE/F,IAAI,IAAI,IAAI,CAAC;IAEb,IAAI,IAAI,IAAI,CAAC;CAEd;AAED,MAAM,WAAW,eAAe,CAAE,CAAC,SAAS,UAAU;IAEpD,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEjC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAElC;AAED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;kBA2G3B,CAAA"}