triiiceratops 0.9.13 → 0.10.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.
Files changed (131) hide show
  1. package/dist/ArrowCounterClockwise-aFffCOKw.js +136 -0
  2. package/dist/X-DZEgXrJ8.js +877 -0
  3. package/dist/annotation_tool_point-CZKsj4Nk.js +290 -0
  4. package/dist/components/AnnotationOverlay.svelte +179 -86
  5. package/dist/components/LeftFab.svelte +21 -9
  6. package/dist/components/OSDViewer.svelte +20 -3
  7. package/dist/components/TriiiceratopsViewer.svelte +96 -43
  8. package/dist/components/TriiiceratopsViewer.svelte.d.ts +5 -5
  9. package/dist/components/TriiiceratopsViewerElement.svelte +2 -2
  10. package/dist/components/TriiiceratopsViewerElement.svelte.d.ts +2 -2
  11. package/dist/custom-element.d.ts +10 -0
  12. package/dist/custom-element.js +13 -0
  13. package/dist/image_filters_reset-BEIf-_QA.js +108 -0
  14. package/dist/index.d.ts +1 -2
  15. package/dist/index.js +0 -1
  16. package/dist/paraglide/messages/_index.d.ts +30 -0
  17. package/dist/paraglide/messages/_index.js +31 -1
  18. package/dist/paraglide/messages/annotation_editor_add_content.d.ts +4 -0
  19. package/dist/paraglide/messages/annotation_editor_add_content.js +34 -0
  20. package/dist/paraglide/messages/annotation_editor_cancel.d.ts +4 -0
  21. package/dist/paraglide/messages/annotation_editor_cancel.js +34 -0
  22. package/dist/paraglide/messages/annotation_editor_create_mode.d.ts +4 -0
  23. package/dist/paraglide/messages/annotation_editor_create_mode.js +34 -0
  24. package/dist/paraglide/messages/annotation_editor_delete.d.ts +4 -0
  25. package/dist/paraglide/messages/annotation_editor_delete.js +34 -0
  26. package/dist/paraglide/messages/annotation_editor_delete_message.d.ts +4 -0
  27. package/dist/paraglide/messages/annotation_editor_delete_message.js +34 -0
  28. package/dist/paraglide/messages/annotation_editor_delete_title.d.ts +4 -0
  29. package/dist/paraglide/messages/annotation_editor_delete_title.js +34 -0
  30. package/dist/paraglide/messages/annotation_editor_delete_tooltip.d.ts +4 -0
  31. package/dist/paraglide/messages/annotation_editor_delete_tooltip.js +34 -0
  32. package/dist/paraglide/messages/annotation_editor_edit_mode.d.ts +4 -0
  33. package/dist/paraglide/messages/annotation_editor_edit_mode.js +34 -0
  34. package/dist/paraglide/messages/annotation_editor_edit_section.d.ts +4 -0
  35. package/dist/paraglide/messages/annotation_editor_edit_section.js +34 -0
  36. package/dist/paraglide/messages/annotation_editor_instruction_create.d.ts +4 -0
  37. package/dist/paraglide/messages/annotation_editor_instruction_create.js +34 -0
  38. package/dist/paraglide/messages/annotation_editor_instruction_edit.d.ts +4 -0
  39. package/dist/paraglide/messages/annotation_editor_instruction_edit.js +34 -0
  40. package/dist/paraglide/messages/annotation_editor_link_placeholder.d.ts +4 -0
  41. package/dist/paraglide/messages/annotation_editor_link_placeholder.js +34 -0
  42. package/dist/paraglide/messages/annotation_editor_redo.d.ts +4 -0
  43. package/dist/paraglide/messages/annotation_editor_redo.js +34 -0
  44. package/dist/paraglide/messages/annotation_editor_save.d.ts +4 -0
  45. package/dist/paraglide/messages/annotation_editor_save.js +34 -0
  46. package/dist/paraglide/messages/annotation_editor_tag_placeholder.d.ts +4 -0
  47. package/dist/paraglide/messages/annotation_editor_tag_placeholder.js +34 -0
  48. package/dist/paraglide/messages/annotation_editor_text_placeholder.d.ts +4 -0
  49. package/dist/paraglide/messages/annotation_editor_text_placeholder.js +34 -0
  50. package/dist/paraglide/messages/annotation_editor_title.d.ts +4 -0
  51. package/dist/paraglide/messages/annotation_editor_title.js +34 -0
  52. package/dist/paraglide/messages/annotation_editor_tool_label.d.ts +4 -0
  53. package/dist/paraglide/messages/annotation_editor_tool_label.js +34 -0
  54. package/dist/paraglide/messages/annotation_editor_undo.d.ts +4 -0
  55. package/dist/paraglide/messages/annotation_editor_undo.js +34 -0
  56. package/dist/paraglide/messages/annotation_tool_point.d.ts +4 -0
  57. package/dist/paraglide/messages/annotation_tool_point.js +34 -0
  58. package/dist/paraglide/messages/annotation_tool_polygon.d.ts +4 -0
  59. package/dist/paraglide/messages/annotation_tool_polygon.js +34 -0
  60. package/dist/paraglide/messages/annotation_tool_rectangle.d.ts +4 -0
  61. package/dist/paraglide/messages/annotation_tool_rectangle.js +34 -0
  62. package/dist/paraglide/messages/image_adjustments_title.d.ts +4 -0
  63. package/dist/paraglide/messages/image_adjustments_title.js +34 -0
  64. package/dist/paraglide/messages/image_filters_brightness.d.ts +4 -0
  65. package/dist/paraglide/messages/image_filters_brightness.js +34 -0
  66. package/dist/paraglide/messages/image_filters_contrast.d.ts +4 -0
  67. package/dist/paraglide/messages/image_filters_contrast.js +34 -0
  68. package/dist/paraglide/messages/image_filters_effects.d.ts +4 -0
  69. package/dist/paraglide/messages/image_filters_effects.js +34 -0
  70. package/dist/paraglide/messages/image_filters_grayscale.d.ts +4 -0
  71. package/dist/paraglide/messages/image_filters_grayscale.js +34 -0
  72. package/dist/paraglide/messages/image_filters_invert.d.ts +4 -0
  73. package/dist/paraglide/messages/image_filters_invert.js +34 -0
  74. package/dist/paraglide/messages/image_filters_reset.d.ts +4 -0
  75. package/dist/paraglide/messages/image_filters_reset.js +34 -0
  76. package/dist/paraglide/messages/image_filters_saturation.d.ts +4 -0
  77. package/dist/paraglide/messages/image_filters_saturation.js +34 -0
  78. package/dist/paraglide/messages/plugins_tooltip.js +1 -1
  79. package/dist/plugins/annotation-editor/AnnotationEditorController.svelte +166 -0
  80. package/dist/plugins/annotation-editor/AnnotationEditorController.svelte.d.ts +9 -0
  81. package/dist/plugins/annotation-editor/AnnotationEditorPanel.svelte +315 -0
  82. package/dist/plugins/annotation-editor/AnnotationEditorPanel.svelte.d.ts +24 -0
  83. package/dist/plugins/annotation-editor/AnnotationManager.svelte.d.ts +39 -0
  84. package/dist/plugins/annotation-editor/AnnotationManager.svelte.js +433 -0
  85. package/dist/plugins/annotation-editor/adapters/LocalStorageAdapter.d.ts +20 -0
  86. package/dist/plugins/annotation-editor/adapters/LocalStorageAdapter.js +67 -0
  87. package/dist/plugins/annotation-editor/adapters/index.d.ts +2 -0
  88. package/dist/plugins/annotation-editor/adapters/index.js +1 -0
  89. package/dist/plugins/annotation-editor/adapters/types.d.ts +23 -0
  90. package/dist/plugins/annotation-editor/adapters/types.js +1 -0
  91. package/dist/plugins/annotation-editor/iife-entry.d.ts +15 -0
  92. package/dist/plugins/annotation-editor/iife-entry.js +35 -0
  93. package/dist/plugins/annotation-editor/index.d.ts +41 -0
  94. package/dist/plugins/annotation-editor/index.js +57 -0
  95. package/dist/plugins/annotation-editor/loader.svelte.d.ts +7 -0
  96. package/dist/plugins/annotation-editor/loader.svelte.js +32 -0
  97. package/dist/plugins/annotation-editor/types.d.ts +41 -0
  98. package/dist/plugins/annotation-editor/types.js +13 -0
  99. package/dist/plugins/annotation-editor.js +32824 -0
  100. package/dist/plugins/image-manipulation/ImageManipulationController.svelte +54 -0
  101. package/dist/plugins/image-manipulation/ImageManipulationController.svelte.d.ts +6 -0
  102. package/dist/plugins/image-manipulation/ImageManipulationPanel.svelte +19 -9
  103. package/dist/plugins/image-manipulation/ImageManipulationPanel.svelte.d.ts +1 -0
  104. package/dist/plugins/image-manipulation/iife-entry.d.ts +13 -0
  105. package/dist/plugins/image-manipulation/iife-entry.js +17 -0
  106. package/dist/plugins/image-manipulation/index.d.ts +15 -1
  107. package/dist/plugins/image-manipulation/index.js +21 -1
  108. package/dist/plugins/image-manipulation.js +265 -0
  109. package/dist/state/i18n.svelte.js +4 -2
  110. package/dist/state/manifests.svelte.d.ts +5 -0
  111. package/dist/state/manifests.svelte.js +42 -13
  112. package/dist/state/viewer.svelte.d.ts +14 -13
  113. package/dist/state/viewer.svelte.js +63 -74
  114. package/dist/triiiceratops-bundle.js +3208 -3126
  115. package/dist/triiiceratops-element.iife.js +99 -0
  116. package/dist/triiiceratops.css +1 -1
  117. package/dist/types/plugin.d.ts +21 -62
  118. package/dist/types/plugin.js +1 -23
  119. package/dist/utils/annotationAdapter.d.ts +12 -1
  120. package/dist/utils/annotationAdapter.js +98 -39
  121. package/package.json +13 -6
  122. package/dist/chunks/TriiiceratopsViewer-EViTQO_n.js +0 -10437
  123. package/dist/chunks/openseadragon-CHvATAD9.js +0 -12427
  124. package/dist/components/TriiiceratopsViewerElementImage.svelte +0 -143
  125. package/dist/components/TriiiceratopsViewerElementImage.svelte.d.ts +0 -27
  126. package/dist/custom-element-image.d.ts +0 -1
  127. package/dist/custom-element-image.js +0 -2
  128. package/dist/plugins/image-manipulation/ImageManipulationPlugin.svelte.d.ts +0 -19
  129. package/dist/plugins/image-manipulation/ImageManipulationPlugin.svelte.js +0 -87
  130. package/dist/triiiceratops-element-image.js +0 -555
  131. package/dist/triiiceratops-element.js +0 -114
@@ -0,0 +1,57 @@
1
+ import AnnotationEditorController from './AnnotationEditorController.svelte';
2
+ import PencilSimple from 'phosphor-svelte/lib/PencilSimple';
3
+ import { LocalStorageAdapter } from './adapters/LocalStorageAdapter';
4
+ import { createLoader } from './loader.svelte';
5
+ /**
6
+ * Create an Annotation Editor plugin with custom configuration.
7
+ *
8
+ * @example
9
+ * ```svelte
10
+ * <script>
11
+ * import { createAnnotationEditorPlugin, LocalStorageAdapter } from 'triiiceratops/plugins/annotation-editor';
12
+ *
13
+ * const annotationPlugin = createAnnotationEditorPlugin({
14
+ * adapter: new LocalStorageAdapter(),
15
+ * user: { id: 'user-123', name: 'Jane Doe' },
16
+ * });
17
+ * </script>
18
+ *
19
+ * <TriiiceratopsViewer plugins={[annotationPlugin]} />
20
+ * ```
21
+ */
22
+ export function createAnnotationEditorPlugin(config = {}) {
23
+ const adapter = config.adapter || new LocalStorageAdapter();
24
+ const fullConfig = { ...config, adapter };
25
+ return {
26
+ id: 'annotation-editor',
27
+ name: 'annotation_editor_title',
28
+ icon: PencilSimple,
29
+ panel: AnnotationEditorController,
30
+ position: 'left',
31
+ props: { config: fullConfig },
32
+ onInit: createLoader(adapter),
33
+ };
34
+ }
35
+ /**
36
+ * Pre-configured Annotation Editor plugin with localStorage adapter.
37
+ * For advanced configuration, use createAnnotationEditorPlugin().
38
+ *
39
+ * @example
40
+ * ```svelte
41
+ * <script>
42
+ * import { AnnotationEditorPlugin } from 'triiiceratops/plugins/annotation-editor';
43
+ * </script>
44
+ *
45
+ * <TriiiceratopsViewer plugins={[AnnotationEditorPlugin]} />
46
+ * ```
47
+ */
48
+ export const AnnotationEditorPlugin = createAnnotationEditorPlugin({
49
+ adapter: new LocalStorageAdapter(),
50
+ tools: ['rectangle', 'polygon', 'point'],
51
+ defaultTool: 'rectangle',
52
+ });
53
+ // Individual exports for customization
54
+ export { AnnotationEditorController };
55
+ export { default as AnnotationEditorIcon } from 'phosphor-svelte/lib/PencilSimple';
56
+ export { W3C_PURPOSES } from './types';
57
+ export { LocalStorageAdapter } from './adapters/LocalStorageAdapter';
@@ -0,0 +1,7 @@
1
+ import type { ViewerState } from '../../state/viewer.svelte';
2
+ import type { AnnotationStorageAdapter } from './types';
3
+ /**
4
+ * Creates a reactive loader that syncs annotations from the adapter to the viewer state.
5
+ * This runs independently of the Annotation Editor UI component.
6
+ */
7
+ export declare function createLoader(adapter: AnnotationStorageAdapter): (viewerState: ViewerState) => void;
@@ -0,0 +1,32 @@
1
+ import { manifestsState } from '../../state/manifests.svelte';
2
+ /**
3
+ * Creates a reactive loader that syncs annotations from the adapter to the viewer state.
4
+ * This runs independently of the Annotation Editor UI component.
5
+ */
6
+ export function createLoader(adapter) {
7
+ return (viewerState) => {
8
+ // Track the last loaded combination to prevent duplicate loads
9
+ // Although the adapter generally handles idempotency, this is a good optimization
10
+ let lastLoadedId = null;
11
+ $effect(() => {
12
+ const manifestId = viewerState.manifestId;
13
+ const canvasId = viewerState.canvasId;
14
+ if (!manifestId || !canvasId)
15
+ return;
16
+ const comboId = `${manifestId}::${canvasId}`;
17
+ if (comboId === lastLoadedId)
18
+ return;
19
+ // Update IMMEDIATELY to prevent re-entrant calls or rapid-fire effects
20
+ lastLoadedId = comboId;
21
+ // Load annotations for this canvas
22
+ adapter
23
+ .load(manifestId, canvasId)
24
+ .then((annotations) => {
25
+ // Success handling
26
+ })
27
+ .catch((err) => {
28
+ console.error('[AnnotationLoader] Failed to load annotations', err);
29
+ });
30
+ });
31
+ };
32
+ }
@@ -0,0 +1,41 @@
1
+ import type { User, DrawingStyle } from '@annotorious/openseadragon';
2
+ /** Forward reference to avoid circular imports - full definition in adapters/types.ts */
3
+ export interface AnnotationStorageAdapter {
4
+ readonly id: string;
5
+ readonly name: string;
6
+ load(manifestId: string, canvasId: string): Promise<any[]>;
7
+ create(manifestId: string, canvasId: string, annotation: any): Promise<void>;
8
+ update(manifestId: string, canvasId: string, annotation: any): Promise<void>;
9
+ delete(manifestId: string, canvasId: string, annotationId: string): Promise<void>;
10
+ destroy?(): void;
11
+ }
12
+ export interface AnnotationEditorConfig {
13
+ /** Storage adapter for persistence */
14
+ adapter?: AnnotationStorageAdapter;
15
+ /** Current user for attribution */
16
+ user?: User;
17
+ /** Drawing style for annotations while editing */
18
+ drawingStyle?: DrawingStyle;
19
+ /** Available drawing tools */
20
+ tools?: DrawingTool[];
21
+ /** Default drawing tool */
22
+ defaultTool?: DrawingTool;
23
+ }
24
+ export type DrawingTool = 'rectangle' | 'polygon' | 'point';
25
+ /** W3C Annotation Body */
26
+ export interface W3CAnnotationBody {
27
+ type?: string;
28
+ purpose?: string;
29
+ value?: string;
30
+ format?: string;
31
+ language?: string;
32
+ creator?: {
33
+ id?: string;
34
+ name?: string;
35
+ };
36
+ created?: string;
37
+ modified?: string;
38
+ }
39
+ /** Standard W3C purposes for autocomplete */
40
+ export declare const W3C_PURPOSES: readonly ["commenting", "tagging", "describing", "classifying", "identifying", "linking", "bookmarking", "highlighting", "questioning", "replying"];
41
+ export type W3CPurpose = (typeof W3C_PURPOSES)[number];
@@ -0,0 +1,13 @@
1
+ /** Standard W3C purposes for autocomplete */
2
+ export const W3C_PURPOSES = [
3
+ 'commenting',
4
+ 'tagging',
5
+ 'describing',
6
+ 'classifying',
7
+ 'identifying',
8
+ 'linking',
9
+ 'bookmarking',
10
+ 'highlighting',
11
+ 'questioning',
12
+ 'replying',
13
+ ];