@konfuzio/document-validation-ui 0.1.5-styles-refactor → 0.1.6-multi-ann-set

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 (61) hide show
  1. package/dist/css/app.css +1 -1
  2. package/dist/index.html +1 -1
  3. package/dist/js/app.js +1 -1
  4. package/dist/js/app.js.map +1 -1
  5. package/package.json +1 -1
  6. package/src/assets/images/DraggableIcon.vue +14 -0
  7. package/src/assets/images/GridIcon.vue +16 -0
  8. package/src/assets/images/MagicWandIcon.vue +16 -0
  9. package/src/assets/images/NotFoundIcon.vue +16 -0
  10. package/src/assets/images/SettingsIcon.vue +14 -0
  11. package/src/assets/images/SplitZigZag.vue +47 -14
  12. package/src/assets/images/StarIcon.vue +16 -0
  13. package/src/assets/scss/ann_set_table_options.scss +26 -0
  14. package/src/assets/scss/annotation_details.scss +85 -73
  15. package/src/assets/scss/document_annotations.scss +54 -57
  16. package/src/assets/scss/document_category.scss +0 -1
  17. package/src/assets/scss/document_dashboard.scss +7 -2
  18. package/src/assets/scss/document_edit.scss +90 -46
  19. package/src/assets/scss/main.scss +108 -49
  20. package/src/assets/scss/multi_ann_table_overlay.scss +44 -0
  21. package/src/assets/scss/splitting_confirmation_modal.scss +41 -0
  22. package/src/assets/scss/variables.scss +2 -0
  23. package/src/components/DocumentAnnotations/AnnotationActionButtons.vue +153 -0
  24. package/src/components/DocumentAnnotations/AnnotationDetails.vue +28 -7
  25. package/src/components/DocumentAnnotations/AnnotationRow.vue +131 -40
  26. package/src/components/DocumentAnnotations/AnnotationSetActionButtons.vue +86 -0
  27. package/src/components/DocumentAnnotations/CategorizeModal.vue +24 -2
  28. package/src/components/DocumentAnnotations/DocumentAnnotations.vue +114 -82
  29. package/src/components/DocumentAnnotations/EmptyAnnotation.vue +16 -3
  30. package/src/components/DocumentAnnotations/ExtractingData.vue +3 -3
  31. package/src/components/DocumentAnnotations/index.js +0 -1
  32. package/src/components/DocumentCategory.vue +13 -5
  33. package/src/components/DocumentDashboard.vue +17 -6
  34. package/src/components/DocumentEdit/DocumentEdit.vue +208 -68
  35. package/src/components/DocumentEdit/EditConfirmationModal.vue +54 -0
  36. package/src/components/DocumentEdit/EditPages.vue +29 -18
  37. package/src/components/DocumentEdit/EditSidebar.vue +92 -45
  38. package/src/components/DocumentEdit/SidebarButtons.vue +53 -0
  39. package/src/components/DocumentEdit/SplitInfoBar.vue +19 -0
  40. package/src/components/DocumentEdit/SplitOverview.vue +4 -5
  41. package/src/components/{DocumentError.vue → DocumentModals/DocumentErrorModal.vue} +3 -4
  42. package/src/components/{NotOptimizedViewportModal.vue → DocumentModals/NotOptimizedViewportModal.vue} +2 -2
  43. package/src/components/DocumentModals/SplittingSuggestionsModal.vue +120 -0
  44. package/src/components/DocumentPage/ActionBar.vue +3 -3
  45. package/src/components/DocumentPage/AnnSetTableOptions.vue +107 -0
  46. package/src/components/DocumentPage/DocumentPage.vue +12 -2
  47. package/src/components/DocumentPage/MultiAnnSelection.vue +89 -1
  48. package/src/components/DocumentPage/MultiAnnotationTableOverlay.vue +274 -0
  49. package/src/components/DocumentPage/MultiAnnotationTablePopup.vue +19 -46
  50. package/src/components/DocumentPage/ScrollingDocument.vue +11 -2
  51. package/src/components/DocumentTopBar/DocumentTopBarButtons.vue +35 -30
  52. package/src/components/DocumentTopBar/KeyboardActionsDescription.vue +3 -1
  53. package/src/locales/de.json +23 -6
  54. package/src/locales/en.json +24 -6
  55. package/src/locales/es.json +23 -6
  56. package/src/store/display.js +44 -0
  57. package/src/store/document.js +171 -23
  58. package/src/store/edit.js +67 -48
  59. package/src/store/project.js +14 -14
  60. package/src/components/DocumentAnnotations/ActionButtons.vue +0 -257
  61. package/src/components/DocumentAnnotations/RejectedLabels.vue +0 -96
@@ -1,75 +1,104 @@
1
1
  <template>
2
2
  <div class="edit-sidebar">
3
- <div class="sidebar-header">
4
- <h3 class="sidebar-title">
5
- {{ $t("edit_document") }}
6
- </h3>
7
- <p class="description">
8
- {{ $t("edit_early_access") }}
9
- </p>
10
- <p class="description">
11
- {{ $t("select_pages") }}
12
- </p>
13
- </div>
14
-
15
3
  <div class="buttons-container">
16
- <div class="rotate-selected rotate">
4
+ <div class="rotate-selected edit-buttons">
5
+ <SidebarButtons
6
+ :show-rotate-button="true"
7
+ :button-disabled="buttonDisabled"
8
+ :button-text="$t('rotate_selected')"
9
+ :icon="'arrow-rotate-left'"
10
+ @rotate="rotateLeft"
11
+ />
12
+
13
+ <SidebarButtons
14
+ :show-rotate-button="true"
15
+ :button-disabled="buttonDisabled"
16
+ :button-text="$t('rotate_selected')"
17
+ :icon="'arrow-rotate-right'"
18
+ @rotate="rotateRight"
19
+ />
20
+
17
21
  <p :class="['pages-selected', buttonDisabled && 'disabled']">
18
22
  {{ selectedPages.length }} {{ $t("selected") }}
19
23
  </p>
20
- <b-button
21
- class="rotate-button primary-button"
22
- :disabled="buttonDisabled"
23
- @click="rotateLeft"
24
- >
25
- <div class="button-content">
26
- <b-icon icon="arrow-rotate-left" class="is-small" />
27
- <span class="button-text">{{ $t("rotate_selected") }}</span>
28
- </div>
29
- </b-button>
30
- <b-button
31
- class="rotate-button primary-button"
32
- :disabled="buttonDisabled"
33
- @click="rotateRight"
34
- >
35
- <div class="button-content">
36
- <b-icon icon="arrow-rotate-right" class="is-small" />
37
- <span class="button-text">{{ $t("rotate_selected") }}</span>
38
- </div>
39
- </b-button>
40
24
  </div>
41
25
 
42
- <div class="rotate-all rotate">
43
- <b-button class="rotate-button primary-button" @click="rotateAllLeft">
44
- <b-icon icon="arrow-rotate-left" class="is-small" />
45
- <span class="button-text">{{ $t("rotate_all") }}</span>
46
- </b-button>
47
- <b-button class="rotate-button primary-button" @click="rotateAllRight">
48
- <b-icon icon="arrow-rotate-right" class="is-small" />
49
- <span class="button-text">{{ $t("rotate_all") }}</span>
50
- </b-button>
26
+ <div class="rotate-all edit-buttons">
27
+ <SidebarButtons
28
+ :show-rotate-button="true"
29
+ :button-disabled="false"
30
+ :button-text="$t('rotate_all')"
31
+ :icon="'arrow-rotate-left'"
32
+ @rotate="rotateAllLeft"
33
+ />
34
+
35
+ <SidebarButtons
36
+ :show-rotate-button="true"
37
+ :button-disabled="false"
38
+ :button-text="$t('rotate_all')"
39
+ :icon="'arrow-rotate-right'"
40
+ @rotate="rotateAllRight"
41
+ />
51
42
  </div>
52
43
  </div>
44
+ <div class="split smart-split">
45
+ <b-tooltip
46
+ multilined
47
+ :active="!documentHasProposedSplit(selectedDocument)"
48
+ position="is-bottom"
49
+ class="bottom-aligned"
50
+ :label="tooltipInfo"
51
+ >
52
+ <b-field>
53
+ <b-switch
54
+ v-model="switchStatus"
55
+ :value="true"
56
+ size="is-small"
57
+ :disabled="!documentHasProposedSplit(selectedDocument)"
58
+ >
59
+ <span class="switch-text">{{ $t("smart_split") }}</span>
60
+ <span
61
+ v-if="documentHasProposedSplit(selectedDocument)"
62
+ class="new-badge"
63
+ >{{ newText }}</span
64
+ >
65
+ </b-switch>
66
+ </b-field>
67
+ </b-tooltip>
68
+ </div>
53
69
  </div>
54
70
  </template>
55
71
 
56
72
  <script>
73
+ import { mapState, mapGetters } from "vuex";
74
+ import SidebarButtons from "./SidebarButtons";
75
+
57
76
  /**
58
77
  * This component renders buttons to rotate single pages or all pages
59
78
  * in edit mode
60
79
  * */
61
-
62
- import { mapState } from "vuex";
63
-
64
80
  export default {
65
81
  name: "EditSidebar",
82
+ components: {
83
+ SidebarButtons,
84
+ },
85
+ props: {
86
+ splitSuggestionsEnabled: {
87
+ type: Boolean,
88
+ },
89
+ },
66
90
  data() {
67
91
  return {
68
92
  buttonDisabled: true,
93
+ tooltipInfo: null,
94
+ newText: this.$t("new"),
95
+ switchStatus: true,
69
96
  };
70
97
  },
71
98
  computed: {
72
99
  ...mapState("edit", ["selectedPages"]),
100
+ ...mapState("document", ["splittingSuggestions", "selectedDocument"]),
101
+ ...mapGetters("document", ["documentHasProposedSplit"]),
73
102
  },
74
103
  watch: {
75
104
  selectedPages(newValue) {
@@ -79,6 +108,24 @@ export default {
79
108
  this.buttonDisabled = true;
80
109
  }
81
110
  },
111
+ switchStatus(newValue) {
112
+ if (this.splittingSuggestions && this.splittingSuggestions.length > 0)
113
+ this.$emit("handle-splitting-suggestions", newValue);
114
+ },
115
+ splitSuggestionsEnabled(newValue) {
116
+ if (!newValue) {
117
+ this.switchStatus = false;
118
+ }
119
+ },
120
+ },
121
+ mounted() {
122
+ this.$nextTick(() => {
123
+ this.switchStatus = this.splitSuggestionsEnabled;
124
+ this.tooltipInfo = this.$t("no_splitting_suggestions");
125
+ if (this.newText) {
126
+ this.newText = this.$t("new").toUpperCase();
127
+ }
128
+ });
82
129
  },
83
130
  methods: {
84
131
  rotateLeft() {
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <div class="sidebar-buttons">
3
+ <!-- Rotate buttons -->
4
+ <div v-if="showRotateButton" class="rotate-button-container">
5
+ <b-button
6
+ class="rotate-button edit-mode-btn primary-button"
7
+ :disabled="buttonDisabled"
8
+ @click="rotateButton"
9
+ >
10
+ <div class="button-content">
11
+ <b-icon :icon="icon" class="is-small" />
12
+ <span class="button-text">{{ buttonText }}</span>
13
+ </div>
14
+ </b-button>
15
+ </div>
16
+ </div>
17
+ </template>
18
+
19
+ <script>
20
+ export default {
21
+ name: "SidebarButtons",
22
+ props: {
23
+ showRotateButton: {
24
+ type: Boolean,
25
+ default: false,
26
+ },
27
+ buttonDisabled: {
28
+ type: Boolean,
29
+ default: true,
30
+ },
31
+ buttonText: {
32
+ type: String,
33
+ default: null,
34
+ },
35
+ icon: {
36
+ type: String,
37
+ default: null,
38
+ },
39
+ tooltipInfo: {
40
+ type: String,
41
+ default: null,
42
+ },
43
+ },
44
+
45
+ methods: {
46
+ rotateButton() {
47
+ this.$emit("rotate");
48
+ },
49
+ },
50
+ };
51
+ </script>
52
+
53
+ <style scoped lang="scss" src="../../assets/scss/document_edit.scss"></style>
@@ -0,0 +1,19 @@
1
+ <template>
2
+ <div class="split-info-bar">
3
+ <StarIcon />
4
+ <span> {{ $t("smart_split_suggestions") }}</span>
5
+ </div>
6
+ </template>
7
+
8
+ <script>
9
+ import StarIcon from "../../assets/images/StarIcon";
10
+
11
+ export default {
12
+ name: "SplitInfoBar",
13
+ components: {
14
+ StarIcon,
15
+ },
16
+ };
17
+ </script>
18
+
19
+ <style scoped lang="scss" src="../../assets/scss/document_edit.scss"></style>
@@ -112,7 +112,7 @@ export default {
112
112
  },
113
113
  computed: {
114
114
  ...mapState("document", ["selectedDocument", "pages"]),
115
- ...mapState("edit", ["updatedDocument", "documentPagesListForEditMode"]),
115
+ ...mapState("edit", ["updatedDocument", "pagesForPostprocess"]),
116
116
  },
117
117
  methods: {
118
118
  handleBackButton() {
@@ -162,11 +162,11 @@ export default {
162
162
  return name.split(".").slice(0, -1).join(".");
163
163
  },
164
164
  getImageUrl(page) {
165
- if (!this.documentPagesListForEditMode || !this.pages || !page) return;
165
+ if (!this.pagesForPostprocess || !this.pages || !page) return;
166
166
 
167
167
  // returns the first thumbnail in the pages array
168
168
  // for each new document
169
- const image = this.documentPagesListForEditMode.find(
169
+ const image = this.pagesForPostprocess.find(
170
170
  (p) => p.number === page.pages[0].number
171
171
  );
172
172
 
@@ -174,8 +174,7 @@ export default {
174
174
  },
175
175
  getRotation(pageId) {
176
176
  // rotate page
177
- return this.documentPagesListForEditMode?.find((p) => p.id === pageId)
178
- ?.angle;
177
+ return this.pagesForPostprocess?.find((p) => p.id === pageId)?.angle;
179
178
  },
180
179
  },
181
180
  };
@@ -29,11 +29,10 @@
29
29
  </template>
30
30
 
31
31
  <script>
32
- import { mapState } from "vuex";
33
- import ErrorIcon from "../assets/images/ErrorIcon";
32
+ import ErrorIcon from "../../assets/images/ErrorIcon";
34
33
 
35
34
  export default {
36
- name: "DocumentError",
35
+ name: "DocumentErrorModal",
37
36
  components: {
38
37
  ErrorIcon,
39
38
  },
@@ -54,4 +53,4 @@ export default {
54
53
  };
55
54
  </script>
56
55
 
57
- <style scoped lang="scss" src="../assets/scss/document_error.scss"></style>
56
+ <style scoped lang="scss" src="../../assets/scss/document_error.scss"></style>
@@ -24,7 +24,7 @@
24
24
  </template>
25
25
 
26
26
  <script>
27
- import Illustration from "../assets/images/NotOptimizedIllustration";
27
+ import Illustration from "../../assets/images/NotOptimizedIllustration";
28
28
 
29
29
  export default {
30
30
  name: "NotOptimizedViewportModal",
@@ -47,5 +47,5 @@ export default {
47
47
  <style
48
48
  scoped
49
49
  lang="scss"
50
- src="../assets/scss/document_viewport_modal.scss"
50
+ src="../../assets/scss/document_viewport_modal.scss"
51
51
  ></style>
@@ -0,0 +1,120 @@
1
+ <template>
2
+ <section ref="splittingModal" class="splitting-confirmation-modal">
3
+ <b-modal
4
+ v-model="isModalActive"
5
+ class="modal-400"
6
+ :width="500"
7
+ :can-cancel="[]"
8
+ >
9
+ <section class="modal-card-body split-modal">
10
+ <div class="header">
11
+ <StarIcon />
12
+ <p class="modal-title">
13
+ {{
14
+ splittingSuggestions && splittingSuggestions.length > 0
15
+ ? $t("split_modal_title")
16
+ : $t("prepare_document")
17
+ }}
18
+ </p>
19
+ </div>
20
+ <div ref="bodyText" class="content"></div>
21
+ </section>
22
+ <footer class="modal-card-foot">
23
+ <b-button @click="closeModal">
24
+ {{ $t("do_it_later") }}
25
+ </b-button>
26
+ <b-button type="is-primary" @click="handleReviewNow">
27
+ {{ $t("review_now") }}
28
+ <span class="recommended">{{ recommended }}</span>
29
+ </b-button>
30
+ </footer>
31
+ </b-modal>
32
+ </section>
33
+ </template>
34
+
35
+ <script>
36
+ import { mapGetters, mapState } from "vuex";
37
+ import StarIcon from "../../assets/images/StarIcon";
38
+
39
+ /**
40
+ * This component shows a modal to inform the user about auto-splitting suggestions
41
+ */
42
+ export default {
43
+ name: "SplittingSuggestionsModal",
44
+ components: {
45
+ StarIcon,
46
+ },
47
+ data() {
48
+ return {
49
+ isModalActive: false,
50
+ recommended: this.$t("recommended"),
51
+ };
52
+ },
53
+ computed: {
54
+ ...mapState("document", ["splittingSuggestions", "selectedDocument"]),
55
+ ...mapGetters("document", ["waitingForSplittingConfirmation"]),
56
+ },
57
+ watch: {
58
+ splittingSuggestions(newValue) {
59
+ if (newValue) {
60
+ this.isModalActive = true;
61
+ }
62
+ },
63
+ isModalActive(newValue) {
64
+ if (newValue) {
65
+ this.$nextTick(() => {
66
+ if (
67
+ this.splittingSuggestions &&
68
+ this.splittingSuggestions.length > 0
69
+ ) {
70
+ this.$refs.bodyText.innerHTML = this.$t("split_modal_body", {
71
+ number_of_split_documents: this.splittingSuggestions.length,
72
+ });
73
+ } else {
74
+ this.$refs.bodyText.innerHTML = this.$t(
75
+ "split_modal_no_suggestions"
76
+ );
77
+ }
78
+ });
79
+ }
80
+ },
81
+ },
82
+ mounted() {
83
+ if (this.splittingSuggestions) {
84
+ this.isModalActive = true;
85
+ }
86
+
87
+ this.$nextTick(() => {
88
+ if (this.recommended) {
89
+ this.recommended = this.recommended.toUpperCase();
90
+ }
91
+ });
92
+ },
93
+ methods: {
94
+ closeModal() {
95
+ const updatedDocument = [
96
+ {
97
+ name: this.selectedDocument.data_file_name,
98
+ category: this.selectedDocument.category,
99
+ pages: this.selectedDocument.pages,
100
+ },
101
+ ];
102
+
103
+ this.$store.dispatch("edit/editDocument", updatedDocument);
104
+
105
+ this.$store.dispatch("display/setCategorizeModalIsActive", false);
106
+ this.isModalActive = false;
107
+ },
108
+ handleReviewNow() {
109
+ this.$store.dispatch("edit/enableEditMode");
110
+ this.isModalActive = false;
111
+ },
112
+ },
113
+ };
114
+ </script>
115
+
116
+ <style
117
+ scoped
118
+ lang="scss"
119
+ src="../../assets/scss/splitting_confirmation_modal.scss"
120
+ ></style>
@@ -8,7 +8,7 @@
8
8
  {{ documentActionBar.text }}
9
9
  </div>
10
10
  <div v-if="documentActionBar.action" class="action-button">
11
- <ActionButtons
11
+ <AnnotationActionButtons
12
12
  :save-btn="documentActionBar.action !== null"
13
13
  :is-loading="documentActionBar.loading"
14
14
  :action-bar="true"
@@ -21,14 +21,14 @@
21
21
 
22
22
  <script>
23
23
  import { mapState } from "vuex";
24
- import ActionButtons from "../DocumentAnnotations/ActionButtons";
24
+ import AnnotationActionButtons from "../DocumentAnnotations/AnnotationActionButtons";
25
25
  import ActionIcon from "../../assets/images/ActionIcon";
26
26
 
27
27
  export default {
28
28
  name: "ActionBar",
29
29
  components: {
30
30
  ActionIcon,
31
- ActionButtons,
31
+ AnnotationActionButtons,
32
32
  },
33
33
  computed: {
34
34
  ...mapState("display", ["documentActionBar"]),
@@ -0,0 +1,107 @@
1
+ <template>
2
+ <div
3
+ class="ann-set-table-header"
4
+ :style="{ left: `${coordinates.x}px`, top: `${coordinates.y}px` }"
5
+ >
6
+ <b-dropdown
7
+ aria-role="list"
8
+ class="ann-set-table-header-dropdown"
9
+ position="is-top-right"
10
+ >
11
+ <template #trigger>
12
+ <span class="ann-set-label-set-name">{{ labelSetName }}</span>
13
+ <SettingsIcon />
14
+ </template>
15
+ <b-dropdown-item
16
+ aria-role="listitem"
17
+ class="delete-action"
18
+ @click="handleDelete()"
19
+ >
20
+ <span>{{ $t("delete_table") }}</span></b-dropdown-item
21
+ >
22
+ </b-dropdown>
23
+ </div>
24
+ </template>
25
+
26
+ <script>
27
+ import { mapGetters, mapState } from "vuex";
28
+ import SettingsIcon from "../../assets/images/SettingsIcon";
29
+
30
+ export default {
31
+ name: "AnnSetTableOptions",
32
+ components: {
33
+ SettingsIcon,
34
+ },
35
+ props: {
36
+ page: {
37
+ type: Object,
38
+ required: true,
39
+ },
40
+ },
41
+ computed: {
42
+ ...mapGetters("document", [
43
+ "annotationSetsInTable",
44
+ "annotationsInAnnotationsSets",
45
+ ]),
46
+ ...mapGetters("display", ["bboxToPoint"]),
47
+ ...mapState("display", ["showAnnSetTable"]),
48
+ labelSetName() {
49
+ return this.showAnnSetTable[0].label_set.name;
50
+ },
51
+ coordinates() {
52
+ let x = 0;
53
+ let y = 0;
54
+ const paddingTop = 55;
55
+
56
+ this.showAnnSetTable.forEach((annotationSet) => {
57
+ if (
58
+ annotationSet.labels &&
59
+ annotationSet.labels.length > 0 &&
60
+ annotationSet.labels[0].annotations
61
+ ) {
62
+ annotationSet.labels[0].annotations.forEach((annotation) => {
63
+ annotation.span.forEach((span) => {
64
+ if (x === 0 || span.x0 < x) {
65
+ x = span.x0;
66
+ }
67
+ if (y === 0 || span.y0 < y) {
68
+ y = span.y0 + paddingTop;
69
+ }
70
+ });
71
+ });
72
+ }
73
+ });
74
+ return this.bboxToPoint(this.page, { x, y });
75
+ },
76
+ },
77
+ methods: {
78
+ handleDelete() {
79
+ const annotationsToDelete = this.annotationsInAnnotationsSets(
80
+ this.showAnnSetTable
81
+ );
82
+
83
+ for (let i = 0; i < annotationsToDelete.length; i++) {
84
+ const annotationToDelete = annotationsToDelete[i];
85
+ this.$store
86
+ .dispatch("document/deleteAnnotation", {
87
+ annotationId: annotationToDelete.id,
88
+ })
89
+ .catch((error) => {
90
+ this.$store.dispatch("document/createErrorMessage", {
91
+ error,
92
+ serverErrorMessage: this.$t("server_error"),
93
+ defaultErrorMessage: this.$t("edit_error"),
94
+ });
95
+ });
96
+ }
97
+ this.$store.dispatch("display/showAnnSetTable", null);
98
+ },
99
+ },
100
+ };
101
+ </script>
102
+
103
+ <style
104
+ scoped
105
+ lang="scss"
106
+ src="../../assets/scss/ann_set_table_options.scss"
107
+ ></style>
@@ -23,6 +23,8 @@
23
23
  @close="closePopups"
24
24
  />
25
25
 
26
+ <AnnSetTableOptions v-if="showAnnSetTable" :page="page" />
27
+
26
28
  <v-stage
27
29
  v-if="image && scale"
28
30
  ref="stage"
@@ -70,7 +72,13 @@
70
72
  </template>
71
73
  </template>
72
74
  </v-layer>
73
- <v-layer v-if="showFocusedAnnotation && !isSelecting">
75
+ <v-layer
76
+ v-if="
77
+ showFocusedAnnotation &&
78
+ !isSelecting &&
79
+ documentAnnotationSelected.labelName !== ''
80
+ "
81
+ >
74
82
  <v-label
75
83
  :key="`label${documentAnnotationSelected.id}`"
76
84
  :config="{
@@ -125,6 +133,7 @@ import BoxSelection from "./BoxSelection";
125
133
  import MultiAnnSelection from "./MultiAnnSelection";
126
134
  import NewAnnotation from "./NewAnnotation";
127
135
  import MultiAnnotationTablePopup from "./MultiAnnotationTablePopup";
136
+ import AnnSetTableOptions from "./AnnSetTableOptions";
128
137
 
129
138
  export default {
130
139
  name: "DocumentPage",
@@ -133,6 +142,7 @@ export default {
133
142
  MultiAnnSelection,
134
143
  NewAnnotation,
135
144
  MultiAnnotationTablePopup,
145
+ AnnSetTableOptions,
136
146
  },
137
147
 
138
148
  props: {
@@ -151,7 +161,7 @@ export default {
151
161
  },
152
162
 
153
163
  computed: {
154
- ...mapState("display", ["currentPage"]),
164
+ ...mapState("display", ["currentPage", "showAnnSetTable"]),
155
165
 
156
166
  showFocusedAnnotation() {
157
167
  return (