@annotorious/core 3.0.0-rc.3 → 3.0.0-rc.30

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 (94) hide show
  1. package/dist/annotorious-core.es.js +784 -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 +11 -0
  6. package/dist/lifecycle/Lifecycle.d.ts.map +1 -0
  7. package/dist/lifecycle/LifecycleEvents.d.ts +13 -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 +34 -0
  12. package/dist/model/Annotation.d.ts.map +1 -0
  13. package/dist/model/AnnotationState.d.ts +8 -0
  14. package/dist/model/AnnotationState.d.ts.map +1 -0
  15. package/dist/model/Annotator.d.ts +65 -0
  16. package/dist/model/Annotator.d.ts.map +1 -0
  17. package/dist/model/DrawingStyle.d.ts +17 -0
  18. package/dist/model/DrawingStyle.d.ts.map +1 -0
  19. package/dist/model/Filter.d.ts +4 -0
  20. package/dist/model/Filter.d.ts.map +1 -0
  21. package/dist/model/FormatAdapter.d.ts +16 -0
  22. package/dist/model/FormatAdapter.d.ts.map +1 -0
  23. package/dist/model/User.d.ts +11 -0
  24. package/dist/model/User.d.ts.map +1 -0
  25. package/dist/model/W3CAnnotation.d.ts +43 -0
  26. package/dist/model/W3CAnnotation.d.ts.map +1 -0
  27. package/{src/model/index.ts → dist/model/index.d.ts} +3 -1
  28. package/dist/model/index.d.ts.map +1 -0
  29. package/dist/presence/Appearance.d.ts +6 -0
  30. package/dist/presence/Appearance.d.ts.map +1 -0
  31. package/dist/presence/AppearanceProvider.d.ts +17 -0
  32. package/dist/presence/AppearanceProvider.d.ts.map +1 -0
  33. package/dist/presence/ColorPalette.d.ts +3 -0
  34. package/dist/presence/ColorPalette.d.ts.map +1 -0
  35. package/dist/presence/PresenceEvents.d.ts +7 -0
  36. package/dist/presence/PresenceEvents.d.ts.map +1 -0
  37. package/dist/presence/PresenceProvider.d.ts +6 -0
  38. package/dist/presence/PresenceProvider.d.ts.map +1 -0
  39. package/dist/presence/PresenceState.d.ts +19 -0
  40. package/dist/presence/PresenceState.d.ts.map +1 -0
  41. package/dist/presence/PresentUser.d.ts +8 -0
  42. package/dist/presence/PresentUser.d.ts.map +1 -0
  43. package/{src/presence/index.ts → dist/presence/index.d.ts} +2 -1
  44. package/dist/presence/index.d.ts.map +1 -0
  45. package/dist/state/Hover.d.ts +10 -0
  46. package/dist/state/Hover.d.ts.map +1 -0
  47. package/dist/state/Selection.d.ts +31 -0
  48. package/dist/state/Selection.d.ts.map +1 -0
  49. package/dist/state/Store.d.ts +35 -0
  50. package/dist/state/Store.d.ts.map +1 -0
  51. package/dist/state/StoreObserver.d.ts +58 -0
  52. package/dist/state/StoreObserver.d.ts.map +1 -0
  53. package/dist/state/SvelteStore.d.ts +23 -0
  54. package/dist/state/SvelteStore.d.ts.map +1 -0
  55. package/dist/state/UndoStack.d.ts +19 -0
  56. package/dist/state/UndoStack.d.ts.map +1 -0
  57. package/dist/state/Viewport.d.ts +6 -0
  58. package/dist/state/Viewport.d.ts.map +1 -0
  59. package/{src/state/index.ts → dist/state/index.d.ts} +2 -1
  60. package/dist/state/index.d.ts.map +1 -0
  61. package/dist/utils/annotationUtils.d.ts +12 -0
  62. package/dist/utils/annotationUtils.d.ts.map +1 -0
  63. package/dist/utils/diffAnnotations.d.ts +5 -0
  64. package/dist/utils/diffAnnotations.d.ts.map +1 -0
  65. package/{src/utils/index.ts → dist/utils/index.d.ts} +1 -1
  66. package/dist/utils/index.d.ts.map +1 -0
  67. package/package.json +20 -17
  68. package/src/lifecycle/Lifecycle.ts +0 -197
  69. package/src/lifecycle/LifecycleEvents.ts +0 -21
  70. package/src/lifecycle/index.ts +0 -2
  71. package/src/model/Annotation.ts +0 -73
  72. package/src/model/Annotator.ts +0 -161
  73. package/src/model/DrawingStyle.ts +0 -19
  74. package/src/model/Filter.ts +0 -3
  75. package/src/model/FormatAdapter.ts +0 -36
  76. package/src/model/User.ts +0 -19
  77. package/src/model/W3CAnnotation.ts +0 -118
  78. package/src/presence/Appearance.ts +0 -9
  79. package/src/presence/AppearanceProvider.ts +0 -53
  80. package/src/presence/ColorPalette.ts +0 -14
  81. package/src/presence/PresenceEvents.ts +0 -9
  82. package/src/presence/PresenceProvider.ts +0 -7
  83. package/src/presence/PresenceState.ts +0 -145
  84. package/src/presence/PresentUser.ts +0 -10
  85. package/src/state/Hover.ts +0 -34
  86. package/src/state/Selection.ts +0 -113
  87. package/src/state/Store.ts +0 -344
  88. package/src/state/StoreObserver.ts +0 -194
  89. package/src/state/SvelteStore.ts +0 -54
  90. package/src/state/UndoStack.ts +0 -112
  91. package/src/state/Viewport.ts +0 -14
  92. package/src/utils/annotationUtils.ts +0 -33
  93. package/src/utils/diffAnnotations.ts +0 -39
  94. package/src/vite-env.d.ts +0 -1
@@ -1,54 +0,0 @@
1
- import type { Annotation, Annotator, AnnotatorState } from '../model';
2
- import type { Store } from './Store';
3
- import type { StoreChangeEvent } from './StoreObserver';
4
-
5
- type Subscriber<T extends Annotation> = (annotation: T[]) => void;
6
-
7
- export interface SvelteStore<T extends Annotation> extends Store<T> {
8
-
9
- subscribe(onChange: Subscriber<T>): void;
10
-
11
- }
12
-
13
- export interface SvelteAnnotatorState<T extends Annotation> extends AnnotatorState<T> {
14
-
15
- store: SvelteStore<T>
16
-
17
- }
18
-
19
- export interface SvelteAnnotator<T extends Annotation> extends Annotator<T> {
20
-
21
- state: SvelteAnnotatorState<T>
22
-
23
- }
24
-
25
- /**
26
- * A simple wrapper around the event-based store implementation
27
- * that adds a Svelte shim, for use with the reactive '$' notation.
28
- * Other frameworks might not actually need this. But it's pretty
29
- * convenient for everyone using Svelte, as well as for the
30
- * basic (Svelte-based) Annotorious standard implementation.
31
- */
32
- export const toSvelteStore = <T extends Annotation>(store: Store<T>): SvelteStore<T> => {
33
-
34
- const subscribe = (onChange: Subscriber<T>) => {
35
-
36
- // Register a store observer on behalf of the subscriber
37
- const shim = (event: StoreChangeEvent<T>) => onChange(event.state);
38
- store.observe(shim);
39
-
40
- // Immediately call the subscriber function with the
41
- // current store value, according to the Svelte contract.
42
- // https://stackoverflow.com/questions/68220955/how-does-svelte-unsubscribe-actually-work
43
- onChange(store.all());
44
-
45
- // Return the unsubscribe function
46
- return () => store.unobserve(shim);
47
- }
48
-
49
- return {
50
- ...store,
51
- subscribe
52
- }
53
-
54
- }
@@ -1,112 +0,0 @@
1
- import type { Annotation } from '../model';
2
- import type { Store } from './Store';
3
- import { Origin } from './StoreObserver';
4
- import { mergeChanges, type ChangeSet, type StoreChangeEvent, type Update } from './StoreObserver';
5
-
6
- // Duration with fast successive changes get merged
7
- // with the last event in the stack, rather than getting stacked
8
- // as a new undo/redo step.
9
- const DEBOUNCE = 250;
10
-
11
- export interface UndoStack {
12
-
13
- destroy(): void;
14
-
15
- undo(): void;
16
-
17
- redo(): void;
18
-
19
- }
20
-
21
- export const createUndoStack = <T extends Annotation>(store: Store<T>): UndoStack => {
22
-
23
- const changeStack: ChangeSet<T>[] = [];
24
-
25
- let pointer = -1;
26
-
27
- let muteEvents = false;
28
-
29
- let lastEvent = 0;
30
-
31
- const onChange = (event: StoreChangeEvent<T>) => {
32
- if (!muteEvents) {
33
- const { changes } = event;
34
-
35
- const now = performance.now();
36
-
37
- if (now - lastEvent > DEBOUNCE) {
38
- // Put this change on the stack...
39
- changeStack.splice(pointer + 1);
40
- changeStack.push(changes);
41
-
42
- // ...and update the pointer
43
- pointer = changeStack.length - 1;
44
- } else {
45
- // Merge this change with the last in the stack
46
- const last = changeStack.length - 1;
47
- changeStack[last] = mergeChanges(changeStack[last], changes);
48
- }
49
-
50
- lastEvent = now;
51
- }
52
-
53
- muteEvents = false;
54
- }
55
-
56
- store.observe(onChange, { origin: Origin.LOCAL });
57
-
58
- const undoCreated = (created: T[]) =>
59
- created?.length > 0 && store.bulkDeleteAnnotation(created);
60
-
61
- const redoCreated = (created: T[]) =>
62
- created?.length > 0 && store.bulkAddAnnotation(created, false);
63
-
64
- const undoUpdated = (updated: Update<T>[]) =>
65
- updated?.length > 0 && store.bulkUpdateAnnotation(updated.map(({ oldValue }) => oldValue));
66
-
67
- const redoUpdated = (updated: Update<T>[]) =>
68
- updated?.length > 0 && store.bulkUpdateAnnotation(updated.map(({ newValue }) => newValue));
69
-
70
- const undoDeleted = (deleted: T[]) =>
71
- deleted?.length > 0 && store.bulkAddAnnotation(deleted, false);
72
-
73
- const redoDeleted = (deleted: T[]) =>
74
- deleted?.length > 0 && store.bulkDeleteAnnotation(deleted);
75
-
76
- const undo = () => {
77
- if (pointer > -1) {
78
- muteEvents = true;
79
-
80
- const { created, updated, deleted} = changeStack[pointer];
81
-
82
- undoCreated(created);
83
- undoUpdated(updated);
84
- undoDeleted(deleted);
85
-
86
- pointer -= 1;
87
- }
88
- }
89
-
90
- const redo = () => {
91
- if (changeStack.length - 1 > pointer) {
92
- muteEvents = true;
93
-
94
- const { created, updated, deleted } = changeStack[pointer + 1];
95
-
96
- redoCreated(created);
97
- redoUpdated(updated);
98
- redoDeleted(deleted);
99
-
100
- pointer += 1;
101
- }
102
- }
103
-
104
- const destroy = () => store.unobserve(onChange);
105
-
106
- return {
107
- destroy,
108
- redo,
109
- undo
110
- }
111
-
112
- }
@@ -1,14 +0,0 @@
1
- import { writable } from 'svelte/store';
2
-
3
- export type ViewportState = ReturnType<typeof createViewportState>;
4
-
5
- export const createViewportState = () => {
6
-
7
- const { subscribe, set } = writable<string[]>([]);
8
-
9
- return {
10
- subscribe,
11
- set
12
- };
13
-
14
- }
@@ -1,33 +0,0 @@
1
- import { v4 as uuidv4 } from 'uuid';
2
- import type { Annotation, AnnotationBody, User } from '../model';
3
-
4
- /**
5
- * Returns all users listed as creators or updaters in any parts of this
6
- * annotation.
7
- */
8
- export const getContributors = (annotation: Annotation): User[] => {
9
- const { creator, updatedBy } = annotation.target;
10
-
11
- const bodyCollaborators = annotation.bodies.reduce((users, body) => (
12
- [...users, body.creator, body.updatedBy]
13
- ), [] as User[]);
14
-
15
- return [
16
- creator,
17
- updatedBy,
18
- ...bodyCollaborators
19
- ].filter(u => u); // Remove undefined
20
- }
21
-
22
- export const createBody = (
23
- annotation: Annotation,
24
- payload: { [key: string]: any },
25
- created?: Date,
26
- creator?: User
27
- ): AnnotationBody => ({
28
- id: uuidv4(),
29
- annotation: annotation.id,
30
- created: created || new Date(),
31
- creator,
32
- ...payload
33
- });
@@ -1,39 +0,0 @@
1
- import { dequal } from 'dequal/lite';
2
- import type { Update } from '../state';
3
- import type { Annotation } from '../model';
4
-
5
- const getAddedBodies = (oldValue: Annotation, newValue: Annotation) => {
6
- const oldBodyIds = new Set(oldValue.bodies.map(b => b.id));
7
- return newValue.bodies.filter(b => !oldBodyIds.has(b.id));
8
- }
9
-
10
- const getRemovedBodies = (oldValue: Annotation, newValue: Annotation) => {
11
- const newBodyIds = new Set(newValue.bodies.map(b => b.id));
12
- return oldValue.bodies.filter(b => !newBodyIds.has(b.id));
13
- }
14
-
15
- const getChangedBodies = (oldValue: Annotation, newValue: Annotation) =>
16
- newValue.bodies
17
- .map(newBody => {
18
- const oldBody = oldValue.bodies.find(b => b.id === newBody.id);
19
- return { newBody, oldBody: oldBody && !dequal(oldBody, newBody) ? oldBody : undefined }
20
- })
21
- .filter(({ oldBody }) => oldBody);
22
-
23
- const hasTargetChanged = (oldValue: Annotation, newValue: Annotation) =>
24
- !dequal(oldValue.target, newValue.target);
25
-
26
- export const diffAnnotations = <T extends Annotation = Annotation>(oldValue: T, newValue: T): Update<T> => {
27
- const bodiesCreated = getAddedBodies(oldValue, newValue);
28
- const bodiesDeleted = getRemovedBodies(oldValue, newValue);
29
- const bodiesUpdated = getChangedBodies(oldValue, newValue);
30
-
31
- return {
32
- oldValue,
33
- newValue,
34
- bodiesCreated: bodiesCreated.length > 0 ? bodiesCreated : undefined,
35
- bodiesDeleted: bodiesDeleted.length > 0 ? bodiesDeleted : undefined,
36
- bodiesUpdated: bodiesUpdated.length > 0 ? bodiesUpdated : undefined,
37
- targetUpdated: hasTargetChanged(oldValue, newValue) ? { oldTarget: oldValue.target, newTarget: newValue.target } : undefined
38
- }
39
- }
package/src/vite-env.d.ts DELETED
@@ -1 +0,0 @@
1
- /// <reference types="vite/client" />