@recogito/metaphor-annotation-plugin 0.0.0-stage → 0.0.11-beta.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/README.md +102 -2
- package/dist/extensions/GoToMetaphorAnnotationView.d.ts +3 -0
- package/dist/extensions/GoToMetaphorAnnotationView.d.ts.map +1 -0
- package/dist/extensions/GoToMetaphorAnnotationView.js +14 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/pages/_components/ImageMetaphorView/ImageMetaphorView.css +22 -0
- package/dist/pages/_components/ImageMetaphorView/ImageMetaphorView.d.ts +10 -0
- package/dist/pages/_components/ImageMetaphorView/ImageMetaphorView.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/ImageMetaphorView.js +136 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/AnnotationPanel.d.ts +9 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/AnnotationPanel.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/AnnotationPanel.js +12 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/ImageListCard.d.ts +11 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/ImageListCard.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/ImageListCard.js +37 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/ListTab.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/ListTab.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/ListTab.js +70 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/ListTab/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedArrowAnnotation.d.ts +8 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedArrowAnnotation.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedArrowAnnotation.js +20 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedImageAnnotation.d.ts +9 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedImageAnnotation.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedImageAnnotation.js +25 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedTab.d.ts +6 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedTab.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/SelectedTab.js +16 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SelectedTab/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SettingsTab/SettingsTab.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SettingsTab/SettingsTab.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SettingsTab/SettingsTab.js +10 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SettingsTab/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SettingsTab/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/SettingsTab/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/AnnotationPanel/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ArrowToolbar/ArrowToolbar.d.ts +3 -0
- package/dist/pages/_components/ImageMetaphorView/components/ArrowToolbar/ArrowToolbar.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ArrowToolbar/ArrowToolbar.js +27 -0
- package/dist/pages/_components/ImageMetaphorView/components/ArrowToolbar/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/ArrowToolbar/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ArrowToolbar/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/FilterAdapter/FilterAdapter.d.ts +9 -0
- package/dist/pages/_components/ImageMetaphorView/components/FilterAdapter/FilterAdapter.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/FilterAdapter/FilterAdapter.js +23 -0
- package/dist/pages/_components/ImageMetaphorView/components/FilterAdapter/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/FilterAdapter/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/FilterAdapter/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/HoverTooltip/HoverTooltip.d.ts +11 -0
- package/dist/pages/_components/ImageMetaphorView/components/HoverTooltip/HoverTooltip.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/HoverTooltip/HoverTooltip.js +16 -0
- package/dist/pages/_components/ImageMetaphorView/components/HoverTooltip/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/HoverTooltip/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/HoverTooltip/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageArrows/ImageArrows.d.ts +13 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageArrows/ImageArrows.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageArrows/ImageArrows.js +42 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageArrows/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageArrows/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageArrows/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageUndoStack/ImageUndoStack.d.ts +7 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageUndoStack/ImageUndoStack.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageUndoStack/ImageUndoStack.js +22 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageUndoStack/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageUndoStack/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ImageUndoStack/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/Contents.d.ts +14 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/Contents.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/Contents.js +36 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/Info.d.ts +9 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/Info.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/Info.js +35 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/MetadataPanel.css +96 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/MetadataPanel.d.ts +18 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/MetadataPanel.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/MetadataPanel.js +33 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/MetadataPanel/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ShapeToolbar/ShapeToolbar.d.ts +9 -0
- package/dist/pages/_components/ImageMetaphorView/components/ShapeToolbar/ShapeToolbar.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ShapeToolbar/ShapeToolbar.js +20 -0
- package/dist/pages/_components/ImageMetaphorView/components/ShapeToolbar/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/ShapeToolbar/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/ShapeToolbar/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/ImageMoreTools.d.ts +11 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/ImageMoreTools.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/ImageMoreTools.js +15 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/Toolbar.css +105 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/Toolbar.d.ts +22 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/Toolbar.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/Toolbar.js +61 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/index.d.ts +3 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/Toolbar/index.js +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/image-panel.css +347 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/AddProperty.d.ts +6 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/AddProperty.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/AddProperty.js +21 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/RelationPreview.d.ts +12 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/RelationPreview.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/RelationPreview.js +34 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/SetCategory.d.ts +8 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/SetCategory.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/SetCategory.js +20 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/colors.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/colors.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/colors.js +17 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/index.d.ts +6 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/index.js +5 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/useRelations.d.ts +8 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/useRelations.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/components/shared/useRelations.js +13 -0
- package/dist/pages/_components/ImageMetaphorView/hooks/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/hooks/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/hooks/index.js +1 -0
- package/dist/pages/_components/ImageMetaphorView/hooks/useMultiPagePresence.d.ts +17 -0
- package/dist/pages/_components/ImageMetaphorView/hooks/useMultiPagePresence.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/hooks/useMultiPagePresence.js +43 -0
- package/dist/pages/_components/ImageMetaphorView/index.d.ts +2 -0
- package/dist/pages/_components/ImageMetaphorView/index.d.ts.map +1 -0
- package/dist/pages/_components/ImageMetaphorView/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/TeiMetaphorView.css +2055 -0
- package/dist/pages/_components/TeiMetaphorView/TeiMetaphorView.d.ts +10 -0
- package/dist/pages/_components/TeiMetaphorView/TeiMetaphorView.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/TeiMetaphorView.js +41 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotatableTEI/AnnotatableTEI.d.ts +14 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotatableTEI/AnnotatableTEI.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotatableTEI/AnnotatableTEI.js +35 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotatableTEI/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotatableTEI/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotatableTEI/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/AnnotationPanel.css +67 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/AnnotationPanel.d.ts +10 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/AnnotationPanel.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/AnnotationPanel.js +15 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/ListCard.d.ts +13 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/ListCard.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/ListCard.js +32 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/ListTab.css +230 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/ListTab.d.ts +7 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/ListTab.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/ListTab.js +100 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/ListTab/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/SelectedTab.css +449 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/SelectedTab.d.ts +10 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/SelectedTab.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/SelectedTab.js +81 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/LinkedWordItem.d.ts +11 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/LinkedWordItem.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/LinkedWordItem.js +11 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorLinkedWords.d.ts +9 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorLinkedWords.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorLinkedWords.js +45 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorPreview.d.ts +8 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorPreview.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorPreview.js +27 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorTags.d.ts +10 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorTags.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/MetaphorTags.js +39 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/SpanTools.d.ts +8 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/SpanTools.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/SpanTools.js +9 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/Tag.d.ts +7 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/Tag.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/Tag.js +7 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/TypeSelector.d.ts +9 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/TypeSelector.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/TypeSelector.js +8 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/WordTags.d.ts +10 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/WordTags.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/WordTags.js +32 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/WordUplink.d.ts +7 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/WordUplink.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/components/WordUplink.js +17 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SelectedTab/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/SettingsTab.css +157 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/SettingsTab.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/SettingsTab.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/SettingsTab.js +12 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/components/AnnotationStyle.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/components/AnnotationStyle.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/components/AnnotationStyle.js +19 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/SettingsTab/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/AnnotationPanel/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/ColorCodingState/ColorCodingState.d.ts +31 -0
- package/dist/pages/_components/TeiMetaphorView/components/ColorCodingState/ColorCodingState.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/ColorCodingState/ColorCodingState.js +64 -0
- package/dist/pages/_components/TeiMetaphorView/components/ColorCodingState/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/ColorCodingState/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/ColorCodingState/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/InlineToolbar.css +189 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/InlineToolbar.d.ts +7 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/InlineToolbar.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/InlineToolbar.js +24 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/ToolbarStateChoice.d.ts +8 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/ToolbarStateChoice.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/ToolbarStateChoice.js +26 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/ToolbarStateSelected.d.ts +7 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/ToolbarStateSelected.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/ToolbarStateSelected.js +71 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/InlineToolbar/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/Info.d.ts +8 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/Info.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/Info.js +41 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/getTeiMetadata.d.ts +9 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/getTeiMetadata.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/getTeiMetadata.js +33 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Info/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/MetadataPanel.css +159 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/MetadataPanel.d.ts +9 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/MetadataPanel.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/MetadataPanel.js +47 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/Toc.d.ts +6 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/Toc.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/Toc.js +15 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/TocLevel.d.ts +7 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/TocLevel.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/TocLevel.js +13 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/buildTableOfContents.d.ts +12 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/buildTableOfContents.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/buildTableOfContents.js +97 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/index.d.ts +6 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/index.js +5 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useAnnotationsStyle.d.ts +3 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useAnnotationsStyle.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useAnnotationsStyle.js +138 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useIntersectingAnnotations.d.ts +5 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useIntersectingAnnotations.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useIntersectingAnnotations.js +35 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useLinkedMetaphors.d.ts +5 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useLinkedMetaphors.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useLinkedMetaphors.js +14 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useMrwOptions.d.ts +6 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useMrwOptions.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useMrwOptions.js +24 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useSuggestAnnotationType.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useSuggestAnnotationType.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useSuggestAnnotationType.js +35 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useTagVocabulary.d.ts +3 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useTagVocabulary.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/hooks/useTagVocabulary.js +46 -0
- package/dist/pages/_components/TeiMetaphorView/index.d.ts +2 -0
- package/dist/pages/_components/TeiMetaphorView/index.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/index.js +1 -0
- package/dist/pages/_components/TeiMetaphorView/utils.d.ts +15 -0
- package/dist/pages/_components/TeiMetaphorView/utils.d.ts.map +1 -0
- package/dist/pages/_components/TeiMetaphorView/utils.js +146 -0
- package/dist/pages/_components/shared/components/Accordion/Accordion.css +55 -0
- package/dist/pages/_components/shared/components/Accordion/Accordion.d.ts +6 -0
- package/dist/pages/_components/shared/components/Accordion/Accordion.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Accordion/Accordion.js +7 -0
- package/dist/pages/_components/shared/components/Accordion/index.d.ts +2 -0
- package/dist/pages/_components/shared/components/Accordion/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Accordion/index.js +1 -0
- package/dist/pages/_components/shared/components/AccountActions/AccountActions.css +49 -0
- package/dist/pages/_components/shared/components/AccountActions/AccountActions.d.ts +2 -0
- package/dist/pages/_components/shared/components/AccountActions/AccountActions.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/AccountActions/AccountActions.js +33 -0
- package/dist/pages/_components/shared/components/AccountActions/index.d.ts +2 -0
- package/dist/pages/_components/shared/components/AccountActions/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/AccountActions/index.js +1 -0
- package/dist/pages/_components/shared/components/Conversation/Comment.d.ts +6 -0
- package/dist/pages/_components/shared/components/Conversation/Comment.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Conversation/Comment.js +12 -0
- package/dist/pages/_components/shared/components/Conversation/Conversation.css +93 -0
- package/dist/pages/_components/shared/components/Conversation/Conversation.d.ts +8 -0
- package/dist/pages/_components/shared/components/Conversation/Conversation.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Conversation/Conversation.js +55 -0
- package/dist/pages/_components/shared/components/Conversation/index.d.ts +2 -0
- package/dist/pages/_components/shared/components/Conversation/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Conversation/index.js +1 -0
- package/dist/pages/_components/shared/components/EditorToolbar/EditorToolbar.css +218 -0
- package/dist/pages/_components/shared/components/EditorToolbar/EditorToolbar.d.ts +23 -0
- package/dist/pages/_components/shared/components/EditorToolbar/EditorToolbar.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/EditorToolbar/EditorToolbar.js +13 -0
- package/dist/pages/_components/shared/components/EditorToolbar/PrivacySelector.d.ts +8 -0
- package/dist/pages/_components/shared/components/EditorToolbar/PrivacySelector.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/EditorToolbar/PrivacySelector.js +9 -0
- package/dist/pages/_components/shared/components/EditorToolbar/UndoRedo.d.ts +2 -0
- package/dist/pages/_components/shared/components/EditorToolbar/UndoRedo.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/EditorToolbar/UndoRedo.js +42 -0
- package/dist/pages/_components/shared/components/EditorToolbar/index.d.ts +3 -0
- package/dist/pages/_components/shared/components/EditorToolbar/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/EditorToolbar/index.js +2 -0
- package/dist/pages/_components/shared/components/Filters/Filters.d.ts +6 -0
- package/dist/pages/_components/shared/components/Filters/Filters.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Filters/Filters.js +61 -0
- package/dist/pages/_components/shared/components/Filters/VisibilityFilter.d.ts +2 -0
- package/dist/pages/_components/shared/components/Filters/VisibilityFilter.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Filters/VisibilityFilter.js +23 -0
- package/dist/pages/_components/shared/components/Filters/index.d.ts +3 -0
- package/dist/pages/_components/shared/components/Filters/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Filters/index.js +2 -0
- package/dist/pages/_components/shared/components/HideAllState/HideAllState.d.ts +12 -0
- package/dist/pages/_components/shared/components/HideAllState/HideAllState.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/HideAllState/HideAllState.js +9 -0
- package/dist/pages/_components/shared/components/HideAllState/index.d.ts +2 -0
- package/dist/pages/_components/shared/components/HideAllState/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/HideAllState/index.js +1 -0
- package/dist/pages/_components/shared/components/Metadata/MetadataList.d.ts +10 -0
- package/dist/pages/_components/shared/components/Metadata/MetadataList.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Metadata/MetadataList.js +11 -0
- package/dist/pages/_components/shared/components/Metadata/index.d.ts +3 -0
- package/dist/pages/_components/shared/components/Metadata/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Metadata/index.js +2 -0
- package/dist/pages/_components/shared/components/Metadata/sanitize.d.ts +3 -0
- package/dist/pages/_components/shared/components/Metadata/sanitize.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Metadata/sanitize.js +53 -0
- package/dist/pages/_components/shared/components/StorageAdapter.d.ts +8 -0
- package/dist/pages/_components/shared/components/StorageAdapter.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/StorageAdapter.js +12 -0
- package/dist/pages/_components/shared/components/SupabaseStorageAdapter.d.ts +23 -0
- package/dist/pages/_components/shared/components/SupabaseStorageAdapter.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/SupabaseStorageAdapter.js +46 -0
- package/dist/pages/_components/shared/components/Tabs/Tabs.css +90 -0
- package/dist/pages/_components/shared/components/Tabs/Tabs.d.ts +6 -0
- package/dist/pages/_components/shared/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Tabs/Tabs.js +6 -0
- package/dist/pages/_components/shared/components/Tabs/index.d.ts +2 -0
- package/dist/pages/_components/shared/components/Tabs/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/Tabs/index.js +1 -0
- package/dist/pages/_components/shared/components/index.d.ts +9 -0
- package/dist/pages/_components/shared/components/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/components/index.js +8 -0
- package/dist/pages/_components/shared/hooks/index.d.ts +2 -0
- package/dist/pages/_components/shared/hooks/index.d.ts.map +1 -0
- package/dist/pages/_components/shared/hooks/index.js +1 -0
- package/dist/pages/_components/shared/hooks/useDocument.d.ts +3 -0
- package/dist/pages/_components/shared/hooks/useDocument.d.ts.map +1 -0
- package/dist/pages/_components/shared/hooks/useDocument.js +14 -0
- package/dist/pages/_components/shared/hooks/useDocumentLayers.d.ts +6 -0
- package/dist/pages/_components/shared/hooks/useDocumentLayers.d.ts.map +1 -0
- package/dist/pages/_components/shared/hooks/useDocumentLayers.js +18 -0
- package/dist/pages/_components/shared/hooks/useLayerPolicies.d.ts +3 -0
- package/dist/pages/_components/shared/hooks/useLayerPolicies.d.ts.map +1 -0
- package/dist/pages/_components/shared/hooks/useLayerPolicies.js +16 -0
- package/dist/pages/_components/shared/hooks/useSelectAction.d.ts +18 -0
- package/dist/pages/_components/shared/hooks/useSelectAction.d.ts.map +1 -0
- package/dist/pages/_components/shared/hooks/useSelectAction.js +26 -0
- package/dist/pages/_components/shared/hooks/useStoredFileDocument.d.ts +5 -0
- package/dist/pages/_components/shared/hooks/useStoredFileDocument.d.ts.map +1 -0
- package/dist/pages/_components/shared/hooks/useStoredFileDocument.js +22 -0
- package/dist/pages/_components/shared/i18n.d.ts +4 -0
- package/dist/pages/_components/shared/i18n.d.ts.map +1 -0
- package/dist/pages/_components/shared/i18n.js +31 -0
- package/dist/pages/_components/shared/supabase.d.ts +7 -0
- package/dist/pages/_components/shared/supabase.d.ts.map +1 -0
- package/dist/pages/_components/shared/supabase.js +7 -0
- package/dist/pages/_components/shared/types.d.ts +16 -0
- package/dist/pages/_components/shared/types.d.ts.map +1 -0
- package/dist/pages/_components/shared/types.js +1 -0
- package/dist/pages/metaphor-annotation-view.astro +122 -0
- package/package.json +69 -4
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import { XIcon, ListBulletsIcon, CodeIcon } from '@phosphor-icons/react';
|
|
5
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent, } from '../../../shared/components';
|
|
6
|
+
import { Toc } from './Toc';
|
|
7
|
+
import { Info } from './Info';
|
|
8
|
+
export const MetadataPanel = (props) => {
|
|
9
|
+
const { t } = useTranslation();
|
|
10
|
+
const [tab, setTab] = useState('contents');
|
|
11
|
+
const headingRef = useRef(null);
|
|
12
|
+
const wasOpen = useRef(props.open);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
// return focus to panel heading on re-open for accessibility
|
|
15
|
+
if (props.open && !wasOpen.current) {
|
|
16
|
+
headingRef.current?.focus();
|
|
17
|
+
}
|
|
18
|
+
wasOpen.current = props.open;
|
|
19
|
+
}, [props.open]);
|
|
20
|
+
// TEI is rendered async by CETEIcean into `.tei-container`. Grab first
|
|
21
|
+
// tei-div, or the container, as the root for the TOC when ready.
|
|
22
|
+
const [teiRoot, setTeiRoot] = useState();
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const find = () => {
|
|
25
|
+
const container = document.querySelector('.tei-container');
|
|
26
|
+
if (!container || container.childElementCount === 0)
|
|
27
|
+
return undefined;
|
|
28
|
+
return container.querySelector('tei-div') ?? container;
|
|
29
|
+
};
|
|
30
|
+
const existing = find();
|
|
31
|
+
if (existing) {
|
|
32
|
+
setTeiRoot(existing);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const target = document.getElementById('main') ?? document.body;
|
|
36
|
+
const observer = new MutationObserver(() => {
|
|
37
|
+
const el = find();
|
|
38
|
+
if (el) {
|
|
39
|
+
setTeiRoot(el);
|
|
40
|
+
observer.disconnect();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
observer.observe(target, { childList: true, subtree: true });
|
|
44
|
+
return () => observer.disconnect();
|
|
45
|
+
}, []);
|
|
46
|
+
return (_jsxs("aside", { id: 'metadata-panel', inert: !props.open, "data-open": props.open, children: [_jsx("h2", { className: 'sr-only', children: t('Document navigation and metadata') }), _jsxs("div", { className: 'header', children: [_jsx("h3", { ref: headingRef, tabIndex: -1, children: props.document.name }), _jsx("button", { "aria-label": t('Close navigation/metadata panel'), "aria-expanded": props.open, "aria-controls": 'metadata-panel', className: 'unstyled icon-only', onClick: () => props.onOpenChange(false), type: 'button', children: _jsx(XIcon, { size: 16 }) })] }), _jsxs(Tabs, { value: tab, onValueChange: (val) => setTab(val), className: 'metadata-tabs-root', children: [_jsxs(TabsList, { children: [_jsxs(TabsTrigger, { value: 'contents', children: [_jsx(ListBulletsIcon, { weight: 'bold', "aria-hidden": 'true' }), _jsx("span", { className: 'tab-label', children: t('Contents') })] }), _jsxs(TabsTrigger, { value: 'info', children: [_jsx(CodeIcon, { weight: 'bold', "aria-hidden": 'true' }), _jsx("span", { className: 'tab-label', children: t('Info') })] })] }), _jsx(TabsContent, { value: 'contents', className: 'metadata-tab-content', children: _jsx("nav", { className: 'metadata-panel-body', "aria-label": t('Contents'), children: _jsx(Toc, { tei: teiRoot }) }) }), _jsx(TabsContent, { value: 'info', className: 'metadata-tab-content', children: _jsx("div", { className: 'metadata-panel-body', children: _jsx(Info, { document: props.document, teiRoot: teiRoot }) }) })] })] }));
|
|
47
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toc.d.ts","sourceRoot":"","sources":["../../../../../../../src/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/Toc.tsx"],"names":[],"mappings":"AAIA,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,eAAO,MAAM,GAAG,GAAI,OAAO,QAAQ,uCAgBlC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { buildTableOfContents } from './buildTableOfContents';
|
|
4
|
+
import { TocLevel } from './TocLevel';
|
|
5
|
+
export const Toc = (props) => {
|
|
6
|
+
const [toc, setToc] = useState();
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
if (!props.tei)
|
|
9
|
+
return;
|
|
10
|
+
setToc(buildTableOfContents(props.tei));
|
|
11
|
+
}, [props.tei]);
|
|
12
|
+
if (!toc)
|
|
13
|
+
return null;
|
|
14
|
+
return (_jsxs("div", { className: 'toc', children: [toc.title && _jsx("h3", { className: 'toc-title', children: toc.title }), _jsx(TocLevel, { nodes: toc.nodes })] }));
|
|
15
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { TableOfContentsNode } from './buildTableOfContents';
|
|
2
|
+
interface TocLevelProps {
|
|
3
|
+
nodes: TableOfContentsNode[];
|
|
4
|
+
}
|
|
5
|
+
export declare const TocLevel: (props: TocLevelProps) => import("react").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=TocLevel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TocLevel.d.ts","sourceRoot":"","sources":["../../../../../../../src/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/TocLevel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,UAAU,aAAa;IACrB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,aAAa,gCA4B5C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export const TocLevel = (props) => {
|
|
3
|
+
return (_jsx("ul", { className: 'toc-list', children: props.nodes.map((node, index) => {
|
|
4
|
+
const id = node.element.getAttribute('id');
|
|
5
|
+
return (_jsxs("li", { className: 'toc-item', children: [_jsxs("a", { className: 'toc-link', href: id ? `#${id}` : '#', onClick: (evt) => {
|
|
6
|
+
evt.preventDefault();
|
|
7
|
+
node.element.scrollIntoView({
|
|
8
|
+
behavior: 'smooth',
|
|
9
|
+
block: 'start',
|
|
10
|
+
});
|
|
11
|
+
}, children: [node.prefix && _jsx("span", { className: 'toc-prefix', children: node.prefix }), node.label] }), node.childNodes.length > 0 && _jsx(TocLevel, { nodes: node.childNodes })] }, id || `${node.label}::${index}`));
|
|
12
|
+
}) }));
|
|
13
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface TableOfContents {
|
|
2
|
+
title?: string;
|
|
3
|
+
nodes: TableOfContentsNode[];
|
|
4
|
+
}
|
|
5
|
+
export interface TableOfContentsNode {
|
|
6
|
+
prefix?: string;
|
|
7
|
+
label: string;
|
|
8
|
+
element: Element;
|
|
9
|
+
childNodes: TableOfContentsNode[];
|
|
10
|
+
}
|
|
11
|
+
export declare const buildTableOfContents: (div: Element) => TableOfContents;
|
|
12
|
+
//# sourceMappingURL=buildTableOfContents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildTableOfContents.d.ts","sourceRoot":"","sources":["../../../../../../../src/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/buildTableOfContents.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,EAAE,OAAO,CAAC;IAEjB,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AA4GD,eAAO,MAAM,oBAAoB,GAAI,KAAK,OAAO,KAAG,eAmBnD,CAAC"}
|
package/dist/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/buildTableOfContents.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
const SNIPPET_WORDS = 8;
|
|
2
|
+
const directChildren = (parent, name, type) => Array.from(parent.children).filter((e) => e.nodeName.toLowerCase() === name &&
|
|
3
|
+
(type === undefined || e.getAttribute('type') === type));
|
|
4
|
+
// First few words of an element's text
|
|
5
|
+
const snippet = (el) => {
|
|
6
|
+
const allWords = (el?.textContent || '')
|
|
7
|
+
.replace(/\s+/g, ' ')
|
|
8
|
+
.trim()
|
|
9
|
+
.split(' ')
|
|
10
|
+
.filter(Boolean);
|
|
11
|
+
if (allWords.length === 0)
|
|
12
|
+
return '';
|
|
13
|
+
const words = allWords.slice(0, SNIPPET_WORDS);
|
|
14
|
+
const ellipsis = allWords.length > SNIPPET_WORDS ? '…' : '';
|
|
15
|
+
return `${words.join(' ')}${ellipsis}`;
|
|
16
|
+
};
|
|
17
|
+
// As a fallback, use the teiHeader title, or the first <head>, in the TOC
|
|
18
|
+
const headingText = (el) => {
|
|
19
|
+
const root = el.closest('.tei-container') ?? el;
|
|
20
|
+
const heading = root.querySelector('tei-teiheader tei-titlestmt tei-title') ??
|
|
21
|
+
root.querySelector('tei-teiheader tei-title') ??
|
|
22
|
+
root.querySelector('tei-head');
|
|
23
|
+
return heading?.textContent?.replace(/\s+/g, ' ').trim() || undefined;
|
|
24
|
+
};
|
|
25
|
+
// The structural label from the XML: a div's @type, or the (de-namespaced)
|
|
26
|
+
// element name for everything else.
|
|
27
|
+
const typeLabel = (el) => {
|
|
28
|
+
const name = el.nodeName.toLowerCase();
|
|
29
|
+
if (name === 'tei-div')
|
|
30
|
+
return el.getAttribute('type') || 'section';
|
|
31
|
+
return name.replace(/^tei-/, '');
|
|
32
|
+
};
|
|
33
|
+
// Structured documents: nested div[type] with @n + @xml:id
|
|
34
|
+
const walkChildren = (parent) => directChildren(parent, 'tei-div')
|
|
35
|
+
.filter((e) => e.getAttribute('type'))
|
|
36
|
+
.map((teiDiv) => ({
|
|
37
|
+
label: `${teiDiv.getAttribute('type')} ${teiDiv.getAttribute('n') || ''}`.trim(),
|
|
38
|
+
element: teiDiv,
|
|
39
|
+
childNodes: walkChildren(teiDiv),
|
|
40
|
+
}));
|
|
41
|
+
// Reddit documents: <div type="replies"> with nested <post> and <div type="thread">.
|
|
42
|
+
// Label posts by snippet of text or author
|
|
43
|
+
const labelForPost = (post) => {
|
|
44
|
+
const text = snippet(post.querySelector('tei-ab') ?? post);
|
|
45
|
+
if (text)
|
|
46
|
+
return text;
|
|
47
|
+
return post.getAttribute('who') || '';
|
|
48
|
+
};
|
|
49
|
+
// Reddit node types
|
|
50
|
+
const postNode = (post) => ({
|
|
51
|
+
prefix: typeLabel(post),
|
|
52
|
+
label: labelForPost(post),
|
|
53
|
+
element: post,
|
|
54
|
+
childNodes: [],
|
|
55
|
+
});
|
|
56
|
+
const repliesNode = (replies) => ({
|
|
57
|
+
prefix: typeLabel(replies),
|
|
58
|
+
label: '',
|
|
59
|
+
element: replies,
|
|
60
|
+
childNodes: walkReplies(replies),
|
|
61
|
+
});
|
|
62
|
+
const threadNode = (thread) => {
|
|
63
|
+
const post = directChildren(thread, 'tei-post')[0];
|
|
64
|
+
const replies = directChildren(thread, 'tei-div', 'replies')[0];
|
|
65
|
+
return {
|
|
66
|
+
prefix: typeLabel(thread),
|
|
67
|
+
label: post ? labelForPost(post) : '',
|
|
68
|
+
element: post ?? thread,
|
|
69
|
+
childNodes: replies ? [repliesNode(replies)] : [],
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
// Redddit replies structure
|
|
73
|
+
const walkReplies = (replies) => Array.from(replies.children).flatMap((child) => {
|
|
74
|
+
const name = child.nodeName.toLowerCase();
|
|
75
|
+
if (name === 'tei-post')
|
|
76
|
+
return [postNode(child)];
|
|
77
|
+
if (name === 'tei-div' && child.getAttribute('type') === 'thread')
|
|
78
|
+
return [threadNode(child)];
|
|
79
|
+
return [];
|
|
80
|
+
});
|
|
81
|
+
export const buildTableOfContents = (div) => {
|
|
82
|
+
// treat reddit threads differently than typical hierarchical docs
|
|
83
|
+
if (div.getAttribute('type') === 'thread') {
|
|
84
|
+
const post = directChildren(div, 'tei-post')[0];
|
|
85
|
+
const head = post ? directChildren(post, 'tei-head')[0] : undefined;
|
|
86
|
+
const title = head?.textContent?.replace(/\s+/g, ' ').trim();
|
|
87
|
+
return { title, nodes: [threadNode(div)] };
|
|
88
|
+
}
|
|
89
|
+
const type = div.getAttribute('type');
|
|
90
|
+
const title = type
|
|
91
|
+
? `${type} ${div.getAttribute('n') || ''}`.trim()
|
|
92
|
+
: undefined;
|
|
93
|
+
return {
|
|
94
|
+
title: title || headingText(div),
|
|
95
|
+
nodes: walkChildren(div),
|
|
96
|
+
};
|
|
97
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/pages/_components/TeiMetaphorView/components/MetadataPanel/Toc/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Toc';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/pages/_components/TeiMetaphorView/components/MetadataPanel/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './MetadataPanel';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/pages/_components/TeiMetaphorView/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnnotationsStyle.d.ts","sourceRoot":"","sources":["../../../../../src/pages/_components/TeiMetaphorView/hooks/useAnnotationsStyle.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,wBAAwB,EAExB,aAAa,EACd,MAAM,gCAAgC,CAAC;AA2IxC,eAAO,MAAM,mBAAmB,GAC9B,gBAAgB,MAAM,KACrB,wBAAwB,CAAC,aAAa,CAgDxC,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { useAnnotationStore, useSelection, } from '@annotorious/react';
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { getAnnotationType } from '../utils';
|
|
4
|
+
import { THEMES, useColorCoding, } from '../components/ColorCodingState';
|
|
5
|
+
// dimmed underline for when another annotation is selected
|
|
6
|
+
const DIMMED_UNDERLINE = '#e2e2ff';
|
|
7
|
+
// 'by-type': single-hue themes, with fill for mrw, underline for metaphor
|
|
8
|
+
const themeNoSelection = (theme) => (annotation, _state, z) => {
|
|
9
|
+
const type = getAnnotationType(annotation);
|
|
10
|
+
const underlineOffset = z ? 4 * z : 0;
|
|
11
|
+
if (type === 'mrw') {
|
|
12
|
+
return {
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
fill: theme.FILL_COLOR_OPAQUE,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
return {
|
|
19
|
+
fillOpacity: 0,
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
underlineColor: theme.UNDERLINE_COLOR_OPAQUE,
|
|
22
|
+
underlineThickness: 2,
|
|
23
|
+
underlineOffset,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const themeWithSelection = (theme, emphasized) => (annotation, state, z) => {
|
|
28
|
+
const type = getAnnotationType(annotation);
|
|
29
|
+
const isEmphasized = emphasized.includes(annotation.id) || state.selected;
|
|
30
|
+
const underlineOffset = z ? 4 * z : 0;
|
|
31
|
+
if (type === 'mrw') {
|
|
32
|
+
return {
|
|
33
|
+
// @ts-ignore
|
|
34
|
+
fill: isEmphasized ? theme.FILL_COLOR_OPAQUE : '#1a1a1a',
|
|
35
|
+
fillOpacity: isEmphasized ? undefined : 0.12,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
return {
|
|
40
|
+
// @ts-ignore
|
|
41
|
+
fill: isEmphasized ? theme.FILL_COLOR_SEMITRANSPARENT : undefined,
|
|
42
|
+
fillOpacity: isEmphasized ? undefined : 0,
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
underlineColor: isEmphasized
|
|
45
|
+
? theme.UNDERLINE_COLOR_OPAQUE
|
|
46
|
+
: DIMMED_UNDERLINE,
|
|
47
|
+
underlineThickness: 2,
|
|
48
|
+
underlineOffset,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
// 'by-tag': color by first tag, underline or fill determined by type (mrw/metaphor)
|
|
53
|
+
const byTagStyle = (getColor, hasSelection, emphasized) => (annotation, state, z) => {
|
|
54
|
+
const type = getAnnotationType(annotation);
|
|
55
|
+
const color = getColor(annotation);
|
|
56
|
+
const underlineOffset = z ? 4 * z : 0;
|
|
57
|
+
const isEmphasized = !hasSelection || emphasized.includes(annotation.id) || state.selected;
|
|
58
|
+
if (type === 'mrw') {
|
|
59
|
+
return {
|
|
60
|
+
// @ts-ignore
|
|
61
|
+
fill: color,
|
|
62
|
+
fillOpacity: isEmphasized ? 0.45 : 0.12,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return {
|
|
67
|
+
fillOpacity: 0,
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
underlineColor: isEmphasized ? color : DIMMED_UNDERLINE,
|
|
70
|
+
underlineThickness: 2,
|
|
71
|
+
underlineOffset,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
// Annotations on inactive (read-only) layers: neutral grey regardless of color
|
|
76
|
+
// coding, but keeping the type distinction (fill for MRWs, underline for
|
|
77
|
+
// metaphors). Darker when selected.
|
|
78
|
+
const READ_ONLY_COLOR = '#6b7280';
|
|
79
|
+
const READ_ONLY_COLOR_SELECTED = '#374151';
|
|
80
|
+
const readOnlyStyle = (annotation, state, z) => {
|
|
81
|
+
const color = state?.selected ? READ_ONLY_COLOR_SELECTED : READ_ONLY_COLOR;
|
|
82
|
+
if (getAnnotationType(annotation) === 'mrw') {
|
|
83
|
+
return {
|
|
84
|
+
// @ts-ignore
|
|
85
|
+
fill: color,
|
|
86
|
+
fillOpacity: state?.selected ? 0.35 : 0.2,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
return {
|
|
91
|
+
// @ts-ignore
|
|
92
|
+
fill: state?.selected ? color : undefined,
|
|
93
|
+
fillOpacity: state?.selected ? 0.08 : 0,
|
|
94
|
+
// @ts-ignore
|
|
95
|
+
underlineColor: color,
|
|
96
|
+
underlineThickness: 2,
|
|
97
|
+
underlineOffset: z ? 4 * z : 0,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
export const useAnnotationsStyle = (activeLayerId) => {
|
|
102
|
+
const { coding, theme, getColor } = useColorCoding();
|
|
103
|
+
const selection = useSelection();
|
|
104
|
+
const hasSelection = selection.selected.length > 0;
|
|
105
|
+
const store = useAnnotationStore();
|
|
106
|
+
const emphasizedIds = useMemo(() => {
|
|
107
|
+
if (!store || selection.selected.length === 0)
|
|
108
|
+
return [];
|
|
109
|
+
const ids = new Set();
|
|
110
|
+
selection.selected.forEach(({ annotation }) => {
|
|
111
|
+
ids.add(annotation.id); // Emphasize the selected annotation itself
|
|
112
|
+
const type = getAnnotationType(annotation);
|
|
113
|
+
if (type !== 'mrw') {
|
|
114
|
+
// If it's a metaphor, emphasize any linked MRWs
|
|
115
|
+
annotation.bodies.forEach((b) => {
|
|
116
|
+
if (b.purpose === 'linking' && b.value) {
|
|
117
|
+
ids.add(b.value);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
return Array.from(ids);
|
|
123
|
+
}, [selection.selected, store]);
|
|
124
|
+
return useMemo(() => {
|
|
125
|
+
const activeLayerStyle = coding === 'by-type'
|
|
126
|
+
? hasSelection
|
|
127
|
+
? themeWithSelection(THEMES[theme], emphasizedIds)
|
|
128
|
+
: themeNoSelection(THEMES[theme])
|
|
129
|
+
: byTagStyle(getColor, hasSelection, emphasizedIds);
|
|
130
|
+
return (annotation, state, z) => {
|
|
131
|
+
const layerId = annotation
|
|
132
|
+
.layer_id;
|
|
133
|
+
return activeLayerId && layerId && layerId !== activeLayerId
|
|
134
|
+
? readOnlyStyle(annotation, state, z)
|
|
135
|
+
: activeLayerStyle(annotation, state, z);
|
|
136
|
+
};
|
|
137
|
+
}, [coding, theme, getColor, hasSelection, emphasizedIds, activeLayerId]);
|
|
138
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIntersectingAnnotations.d.ts","sourceRoot":"","sources":["../../../../../src/pages/_components/TeiMetaphorView/hooks/useIntersectingAnnotations.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAEd,MAAM,gCAAgC,CAAC;AAExC,eAAO,MAAM,0BAA0B;kCAiBA,aAAa;CAyBnD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useAnnotationStore } from '@annotorious/react';
|
|
2
|
+
export const useIntersectingAnnotations = () => {
|
|
3
|
+
const store = useAnnotationStore();
|
|
4
|
+
const rectOverlaps = (a, b) => a.x < b.x + b.width &&
|
|
5
|
+
a.x + a.width > b.x &&
|
|
6
|
+
a.y < b.y + b.height &&
|
|
7
|
+
a.y + a.height > b.y;
|
|
8
|
+
const hasIntersectingRect = (sourceRects, otherId) => {
|
|
9
|
+
const candidateRects = store.getAnnotationRects(otherId);
|
|
10
|
+
if (!candidateRects || candidateRects.length === 0)
|
|
11
|
+
return false;
|
|
12
|
+
// True intersection only if at least one rect pair overlaps
|
|
13
|
+
return sourceRects.some(sr => candidateRects.some(cr => rectOverlaps(sr, cr)));
|
|
14
|
+
};
|
|
15
|
+
const getIntersecting = (annotation) => {
|
|
16
|
+
if (!store)
|
|
17
|
+
return [];
|
|
18
|
+
// Outer bounds - use this to find intersection candidates
|
|
19
|
+
const bounds = store.getAnnotationBounds(annotation.id);
|
|
20
|
+
if (!bounds)
|
|
21
|
+
return []; // Should never happen
|
|
22
|
+
const { x, y, width, height } = bounds;
|
|
23
|
+
// Individual rects per span - use this to check the actual intersection
|
|
24
|
+
const sourceRects = store.getAnnotationRects(annotation.id);
|
|
25
|
+
if (!sourceRects || sourceRects.length === 0)
|
|
26
|
+
return []; // Should never happen
|
|
27
|
+
const intersecting = store.getIntersecting(x, y, x + width, y + height)
|
|
28
|
+
.filter((rects) => rects.annotation.id !== annotation.id)
|
|
29
|
+
.filter((rects) => hasIntersectingRect(sourceRects, rects.annotation.id))
|
|
30
|
+
.map((rects) => rects.annotation);
|
|
31
|
+
// order by document position via the TEI selector position property
|
|
32
|
+
return intersecting.sort((a, b) => a.target.selector[0].position.localeCompare(b.target.selector[0].position));
|
|
33
|
+
};
|
|
34
|
+
return { getIntersecting };
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLinkedMetaphors.d.ts","sourceRoot":"","sources":["../../../../../src/pages/_components/TeiMetaphorView/hooks/useLinkedMetaphors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,eAAO,MAAM,kBAAkB;6BAGG,aAAa;CAc9C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useAnnotationStore } from '@annotorious/react';
|
|
2
|
+
export const useLinkedMetaphors = () => {
|
|
3
|
+
const store = useAnnotationStore();
|
|
4
|
+
const isLinkedBy = (annotation) => {
|
|
5
|
+
if (!store)
|
|
6
|
+
return [];
|
|
7
|
+
return store
|
|
8
|
+
.all()
|
|
9
|
+
.filter((a) => a.bodies.some((b) => b.purpose === 'linking' && b.value === annotation.id));
|
|
10
|
+
};
|
|
11
|
+
return {
|
|
12
|
+
isLinkedBy,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMrwOptions.d.ts","sourceRoot":"","sources":["../../../../../src/pages/_components/TeiMetaphorView/hooks/useMrwOptions.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,mBAyBzB,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
export const useMrwOptions = () => {
|
|
3
|
+
const [mrwOptions, setMrwOptions] = useState([]);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
const fetchOptions = async () => {
|
|
6
|
+
try {
|
|
7
|
+
const base = import.meta.env.PUBLIC_VOCABULARY_API_BASE_URL?.endsWith('/')
|
|
8
|
+
? import.meta.env.PUBLIC_VOCABULARY_API_BASE_URL
|
|
9
|
+
: import.meta.env.PUBLIC_VOCABULARY_API_BASE_URL + '/';
|
|
10
|
+
const url = new URL('narrower', base);
|
|
11
|
+
url.searchParams.set('uri', import.meta.env.PUBLIC_MRW_PARENT_URI);
|
|
12
|
+
const data = await fetch(url).then((res) => (res.json()));
|
|
13
|
+
if (data?.narrower) {
|
|
14
|
+
setMrwOptions(data.narrower);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.log(error);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
fetchOptions();
|
|
22
|
+
}, []);
|
|
23
|
+
return mrwOptions;
|
|
24
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSuggestAnnotationType.d.ts","sourceRoot":"","sources":["../../../../../src/pages/_components/TeiMetaphorView/hooks/useSuggestAnnotationType.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,wBAAwB,YA6BpC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { useAnnotationStore, useAnnotator } from '@annotorious/react';
|
|
3
|
+
import { getAnnotationType, getQuote, setAnnotationType } from '../utils';
|
|
4
|
+
// Trivial heuristic for "suggesting" the initial annotation type:
|
|
5
|
+
// multi-word selections are metaphors, single words are MRWs.
|
|
6
|
+
const suggestType = (annotation) => getQuote(annotation).includes(' ') ? 'metaphor' : 'mrw';
|
|
7
|
+
// Track annotation IDs we've already auto-typed
|
|
8
|
+
const autoTyped = new Set();
|
|
9
|
+
// Assign a suggested type to each newly created annotation, as part of
|
|
10
|
+
// a createAnnotation event listener
|
|
11
|
+
export const useSuggestAnnotationType = () => {
|
|
12
|
+
const anno = useAnnotator();
|
|
13
|
+
const store = useAnnotationStore();
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (!anno || !store)
|
|
16
|
+
return;
|
|
17
|
+
const onCreate = (annotation) => {
|
|
18
|
+
const { id } = annotation;
|
|
19
|
+
// Deduplication
|
|
20
|
+
if (autoTyped.has(id))
|
|
21
|
+
return;
|
|
22
|
+
autoTyped.add(id);
|
|
23
|
+
setTimeout(() => {
|
|
24
|
+
// Re-read from the store: the annotation may have been revived/updated/
|
|
25
|
+
// deleted since creation
|
|
26
|
+
const current = store.getAnnotation(id);
|
|
27
|
+
if (!current || getAnnotationType(current))
|
|
28
|
+
return;
|
|
29
|
+
store.updateAnnotation(setAnnotationType(current, suggestType(current)));
|
|
30
|
+
}, 0);
|
|
31
|
+
};
|
|
32
|
+
anno.on('createAnnotation', onCreate);
|
|
33
|
+
return () => anno.off('createAnnotation', onCreate);
|
|
34
|
+
}, [anno, store]);
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTagVocabulary.d.ts","sourceRoot":"","sources":["../../../../../src/pages/_components/TeiMetaphorView/hooks/useTagVocabulary.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKpE,eAAO,MAAM,gBAAgB,GAAI,WAAW,MAAM,qBAsDjD,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
import { useAnnotationStore } from '@annotorious/react';
|
|
3
|
+
import { getTags } from '@recogito/studio-sdk';
|
|
4
|
+
import { sdk } from '../../shared/supabase';
|
|
5
|
+
// Hook to load the project tag vocabulary via the SDK, kept up to date with any
|
|
6
|
+
// tags users create during the session
|
|
7
|
+
export const useTagVocabulary = (projectId) => {
|
|
8
|
+
const [vocabulary, setVocabulary] = useState([]);
|
|
9
|
+
const store = useAnnotationStore();
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
sdk.tags.getProjectTagVocabulary(projectId).then(({ error, data }) => {
|
|
12
|
+
if (error)
|
|
13
|
+
console.error(error);
|
|
14
|
+
else
|
|
15
|
+
setVocabulary(data);
|
|
16
|
+
});
|
|
17
|
+
}, [projectId]);
|
|
18
|
+
const getUniqueTags = (annotations) => {
|
|
19
|
+
const labels = annotations.reduce((all, annotation) => [...all, ...getTags(annotation).map((t) => t.label)], []);
|
|
20
|
+
return Array.from(new Set(labels));
|
|
21
|
+
};
|
|
22
|
+
const addToVocabulary = (labels) => setVocabulary((current) => {
|
|
23
|
+
const toAdd = labels.filter((label) => !current.some((t) => t.label === label));
|
|
24
|
+
return [...current, ...toAdd.map((label) => ({ label }))];
|
|
25
|
+
});
|
|
26
|
+
// Ensure tags users create during the session become part of the vocabulary
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (!store)
|
|
29
|
+
return;
|
|
30
|
+
const onChange = (event) => {
|
|
31
|
+
const { created, updated } = event.changes;
|
|
32
|
+
let labels = [];
|
|
33
|
+
if (created)
|
|
34
|
+
labels = getUniqueTags(created);
|
|
35
|
+
if (updated)
|
|
36
|
+
labels = [...labels, ...getUniqueTags(updated.map((u) => u.newValue))];
|
|
37
|
+
if (labels.length > 0)
|
|
38
|
+
addToVocabulary(labels);
|
|
39
|
+
};
|
|
40
|
+
store.observe(onChange);
|
|
41
|
+
return () => {
|
|
42
|
+
store.unobserve(onChange);
|
|
43
|
+
};
|
|
44
|
+
}, [store]);
|
|
45
|
+
return vocabulary;
|
|
46
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/pages/_components/TeiMetaphorView/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './TeiMetaphorView';
|