@abi-software/mapintegratedvuer 1.9.2 → 1.9.3-beta.1

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 (31) hide show
  1. package/dist/{ContentMixin-DO6jlHIh.js → ContentMixin-DXXhWj3L.js} +172 -161
  2. package/dist/{Flatmap-CY9MPW7I.js → Flatmap-DTJJHOZJ.js} +67 -40
  3. package/dist/{Iframe-XTSWvVQw.js → Iframe-BvIYJdxM.js} +2 -2
  4. package/dist/{MultiFlatmap-B7e2d6WK.js → MultiFlatmap-DYUAs7aa.js} +87 -59
  5. package/dist/{Plot-D3lEgm6I.js → Plot-B3waT3eW.js} +2 -2
  6. package/dist/Scaffold-D1SvYdhM.js +194 -0
  7. package/dist/{Simulation-CrPJ4_pw.js → Simulation-DEcCnsZ0.js} +2 -2
  8. package/dist/{index-BcpVBq1h.js → index-_BTFPzpV.js} +19889 -19974
  9. package/dist/mapintegratedvuer.js +1 -1
  10. package/dist/mapintegratedvuer.umd.cjs +226 -6059
  11. package/dist/style-DqJAtv3f.js +66 -0
  12. package/dist/style.css +1 -1
  13. package/package.json +7 -6
  14. package/src/App.vue +2 -0
  15. package/src/assets/header-icon.scss +2 -2
  16. package/src/components/ContentBar.vue +3 -0
  17. package/src/components/DialogToolbarContent.vue +434 -18
  18. package/src/components/MapContent.vue +24 -2
  19. package/src/components/SplitDialog.vue +71 -31
  20. package/src/components/SplitFlow.vue +140 -60
  21. package/src/components/viewers/Flatmap.vue +58 -16
  22. package/src/components/viewers/MultiFlatmap.vue +62 -8
  23. package/src/components/viewers/Scaffold.vue +24 -1
  24. package/src/components.d.ts +9 -0
  25. package/src/mixins/ContentMixin.js +58 -32
  26. package/src/stores/connectivities.js +59 -11
  27. package/src/stores/settings.js +15 -4
  28. package/src/stores/splitFlow.js +6 -6
  29. package/vite.bundle-build.js +5 -2
  30. package/dist/Scaffold-2Zg19azr.js +0 -43337
  31. package/dist/style-CIceSTeY.js +0 -104700
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abi-software/mapintegratedvuer",
3
- "version": "1.9.2",
3
+ "version": "1.9.3-beta.1",
4
4
  "license": "Apache-2.0",
5
5
  "scripts": {
6
6
  "serve": "vite --host --force",
@@ -50,12 +50,12 @@
50
50
  "*.js"
51
51
  ],
52
52
  "dependencies": {
53
- "@abi-software/flatmapvuer": "^1.9.2",
54
- "@abi-software/map-side-bar": "^2.8.2",
55
- "@abi-software/map-utilities": "^1.5.0",
53
+ "@abi-software/flatmapvuer": "^1.9.3-beta.7",
54
+ "@abi-software/map-side-bar": "^2.8.3-beta.6",
55
+ "@abi-software/map-utilities": "^1.6.0-beta.0",
56
56
  "@abi-software/plotvuer": "1.0.4",
57
- "@abi-software/scaffoldvuer": "^1.9.0",
58
- "@abi-software/simulationvuer": "1.0.2",
57
+ "@abi-software/scaffoldvuer": "^1.9.1-beta.3",
58
+ "@abi-software/simulationvuer": "^2.0.11-beta.0",
59
59
  "@abi-software/sparc-annotation": "0.3.2",
60
60
  "@abi-software/svg-sprite": "^1.0.1",
61
61
  "@element-plus/icons-vue": "^2.3.1",
@@ -66,6 +66,7 @@
66
66
  "mitt": "^3.0.1",
67
67
  "pinia": "^2.1.7",
68
68
  "splitpanes": "^3.1.5",
69
+ "unplugin-vue-components": "^0.26.0",
69
70
  "vue": "^3.4.21",
70
71
  "xss": "^1.0.14"
71
72
  },
package/src/App.vue CHANGED
@@ -42,6 +42,8 @@
42
42
  :useHelpModeDialog="true"
43
43
  :connectivityInfoSidebar="true"
44
44
  :allClosable="false"
45
+ :showGlobalSettings="true"
46
+ :showOpenMapButton="true"
45
47
  @updateShareLinkRequested="updateUUID"
46
48
  @isReady="viewerIsReady"
47
49
  @mapLoaded="mapIsLoaded"
@@ -16,7 +16,8 @@
16
16
  flex-direction: row;
17
17
  justify-content: center;
18
18
  top: 4px;
19
- right:12px;
19
+ right: 12px;
20
+ gap: 10px;
20
21
  }
21
22
 
22
23
  .icon-group {
@@ -32,7 +33,6 @@
32
33
  .header-icon {
33
34
  height: 24px!important;
34
35
  width: 24px!important;
35
- margin-right:10px;
36
36
  cursor: pointer;
37
37
  :deep(.el-popper__arrow) {
38
38
  &:before {
@@ -190,6 +190,9 @@ export default {
190
190
  closeAndRemove: function() {
191
191
  this.splitFlowStore.closeSlot({ id: this.entry.id, entries: this.entries});
192
192
  EventBus.emit("RemoveEntryRequest", this.entry.id);
193
+ this.$nextTick(() => {
194
+ this.splitFlowStore.updateSplitPanels();
195
+ });
193
196
  },
194
197
  getEntryTitle: function(entry) {
195
198
  if (entry) {
@@ -38,6 +38,95 @@
38
38
  </div>
39
39
 
40
40
  <el-row class="icon-group">
41
+ <div class="viewing-mode-selector">
42
+ Viewing Mode:
43
+ <el-dropdown
44
+ :teleported="false"
45
+ trigger="hover"
46
+ class="toolbar-dropdown"
47
+ popper-class="toolbar-dropdown-dropdown"
48
+ :hide-on-click="false"
49
+ :disabled="!mapLoaded"
50
+ >
51
+ <span class="el-dropdown-link">
52
+ <el-icon class="el-icon--left" v-if="globalSettings.viewingMode === 'Exploration'">
53
+ <el-icon-compass />
54
+ </el-icon>
55
+ <el-icon class="el-icon--left" v-if="globalSettings.viewingMode === 'Neuron Connection'">
56
+ <el-icon-share />
57
+ </el-icon>
58
+ <el-icon class="el-icon--left" v-if="globalSettings.viewingMode === 'Annotation'">
59
+ <el-icon-edit-pen />
60
+ </el-icon>
61
+ {{ globalSettings.viewingMode }}
62
+ <el-icon class="el-icon--right">
63
+ <el-icon-arrow-down />
64
+ </el-icon>
65
+ </span>
66
+ <template #dropdown>
67
+ <el-dropdown-menu>
68
+ <el-dropdown-item v-for="(value, key, index) in viewingModes"
69
+ :key="key"
70
+ @click="updateViewingMode($event, key)"
71
+ :class="{'is-selected': globalSettings.viewingMode === key }"
72
+ >
73
+ <span>
74
+ <el-icon class="el-icon--left" v-if="key === 'Exploration'">
75
+ <el-icon-compass />
76
+ </el-icon>
77
+ <el-icon class="el-icon--left" v-if="key === 'Neuron Connection'">
78
+ <el-icon-share />
79
+ </el-icon>
80
+ <el-icon class="el-icon--left" v-if="key === 'Annotation'">
81
+ <el-icon-edit-pen />
82
+ </el-icon>
83
+ {{ key }}
84
+ </span>
85
+ <small class="el-option__description">
86
+ <template v-if="key === 'Annotation'">
87
+ <template v-if="authorisedUser">
88
+ {{ value[1] }}
89
+ </template>
90
+ <template v-else>
91
+ {{ value[0] }}
92
+ </template>
93
+ <template v-if="offlineAnnotationEnabled">
94
+ (Anonymous annotate)
95
+ </template>
96
+ </template>
97
+ <template v-else>
98
+ {{ value }}
99
+ </template>
100
+ </small>
101
+ <!-- <template v-if="key === 'Exploration'">
102
+ <div class="setting-popover-block" v-if="'displayMarkers' in globalSettings">
103
+ <el-popover
104
+ class="tooltip"
105
+ content="Switch to Exploration mode to enable."
106
+ :teleported="false"
107
+ popper-class="header-popper"
108
+ :offset="4"
109
+ :disabled="globalSettings.viewingMode === 'Exploration'"
110
+ >
111
+ <template #reference>
112
+ <el-checkbox
113
+ v-model="globalSettings.displayMarkers"
114
+ @change="updateGlobalSettings"
115
+ size="small"
116
+ :disabled="globalSettings.viewingMode !== 'Exploration'"
117
+ >
118
+ Display Map Markers
119
+ </el-checkbox>
120
+ </template>
121
+ </el-popover>
122
+ </div>
123
+ </template> -->
124
+ </el-dropdown-item>
125
+ </el-dropdown-menu>
126
+ </template>
127
+ </el-dropdown>
128
+ </div>
129
+
41
130
  <el-popover
42
131
  v-if="activeViewRef"
43
132
  :virtual-ref="activeViewRef"
@@ -74,7 +163,7 @@
74
163
  <map-svg-icon :icon="activeView"
75
164
  ref="activeViewRef"
76
165
  :class="[{'disabled': (1 >= numberOfEntries)},
77
- 'header-icon']"
166
+ 'header-icon', 'splitscreen-icon']"
78
167
  />
79
168
  </template>
80
169
  </el-popover>
@@ -195,7 +284,7 @@
195
284
  <map-svg-icon icon="close" class="header-icon" @click="close" v-show="showIcons"/>
196
285
  </template>
197
286
  </el-popover>
198
- <!--
287
+
199
288
  <el-popover
200
289
  v-if="globalSettingRef"
201
290
  :virtual-ref="globalSettingRef"
@@ -206,29 +295,36 @@
206
295
  trigger="click"
207
296
  popper-class="setting-popover"
208
297
  virtual-triggering
298
+ :disabled="!mapLoaded"
209
299
  >
210
- <el-row :gutter="20">
211
- <el-col :span="20">
300
+ <div class="setting-popover-inner">
301
+ <!-- <div class="setting-popover-block" v-if="'displayMarkers' in globalSettings">
212
302
  <el-checkbox
213
303
  v-model="globalSettings.displayMarkers"
214
304
  @change="updateGlobalSettings"
215
305
  >
216
306
  Display Map Markers
217
307
  </el-checkbox>
218
- <p>Card Hover</p>
308
+ </div> -->
309
+ <!-- <div class="setting-popover-block" v-if="'highlightConnectedPaths' in globalSettings || 'highlightDOIPaths' in globalSettings">
310
+ <h5>Card Hover</h5>
219
311
  <el-checkbox
312
+ v-if="'highlightConnectedPaths' in globalSettings"
220
313
  v-model="globalSettings.highlightConnectedPaths"
221
314
  @change="updateGlobalSettings"
222
315
  >
223
316
  Highlight Connected Paths
224
317
  </el-checkbox>
225
318
  <el-checkbox
319
+ v-if="'highlightDOIPaths' in globalSettings"
226
320
  v-model="globalSettings.highlightDOIPaths"
227
321
  @change="updateGlobalSettings"
228
322
  >
229
323
  Highlight DOI Paths
230
324
  </el-checkbox>
231
- <p>Interactive Mode</p>
325
+ </div> -->
326
+ <!-- <div class="setting-popover-block" v-if="'interactiveMode' in globalSettings">
327
+ <h5>Interactive Mode</h5>
232
328
  <el-radio-group
233
329
  v-model="globalSettings.interactiveMode"
234
330
  @change="updateGlobalSettings"
@@ -237,20 +333,81 @@
237
333
  <el-radio value="connectivity">Connectivity Exploration</el-radio>
238
334
  <el-radio value="multiscale">Multiscale Model</el-radio>
239
335
  </el-radio-group>
240
- </el-col>
241
- </el-row>
336
+ </div> -->
337
+
338
+ <div class="setting-popover-block" v-if="'flightPathDisplay' in globalSettings">
339
+ <h5>Flight path display</h5>
340
+ <el-radio-group
341
+ v-model="globalSettings.flightPathDisplay"
342
+ @change="updateGlobalSettings"
343
+ >
344
+ <el-radio :value="false">2D</el-radio>
345
+ <el-radio :value="true">3D</el-radio>
346
+ </el-radio-group>
347
+ </div>
348
+ <div class="setting-popover-block" v-if="'organsDisplay' in globalSettings">
349
+ <h5>Organs display</h5>
350
+ <el-radio-group
351
+ v-model="globalSettings.organsDisplay"
352
+ @change="updateGlobalSettings"
353
+ >
354
+ <el-radio :value="true">Color</el-radio>
355
+ <el-radio :value="false">Grayscale</el-radio>
356
+ </el-radio-group>
357
+ </div>
358
+ <div class="setting-popover-block" v-if="'outlinesDisplay' in globalSettings">
359
+ <h5>Outlines display</h5>
360
+ <el-radio-group
361
+ v-model="globalSettings.outlinesDisplay"
362
+ @change="updateGlobalSettings"
363
+ >
364
+ <el-radio :value="true">Show</el-radio>
365
+ <el-radio :value="false">Hide</el-radio>
366
+ </el-radio-group>
367
+ </div>
368
+ <div class="setting-popover-block" v-if="'backgroundDisplay' in globalSettings">
369
+ <h5>Change background</h5>
370
+ <el-radio-group
371
+ class="bg-color-radio-group"
372
+ v-model="globalSettings.backgroundDisplay"
373
+ @change="updateGlobalSettings"
374
+ >
375
+ <el-radio value="white" class="bg-color-radio">
376
+ <span style="--bg-color: white">white</span>
377
+ </el-radio>
378
+ <el-radio value="lightskyblue" class="bg-color-radio">
379
+ <span style="--bg-color: lightskyblue">lightskyblue</span>
380
+ </el-radio>
381
+ <el-radio value="black" class="bg-color-radio">
382
+ <span style="--bg-color: black">black</span>
383
+ </el-radio>
384
+ </el-radio-group>
385
+ </div>
386
+ </div>
242
387
  </el-popover>
243
- <el-popover class="tooltip" content="Global Settings" placement="bottom-end"
244
- :show-after="helpDelay" :teleported=false trigger="hover"
388
+ <el-popover
389
+ v-if="showGlobalSettings"
390
+ class="tooltip"
391
+ content="Global Settings"
392
+ placement="bottom-end"
393
+ :show-after="helpDelay"
394
+ :teleported=false
395
+ trigger="hover"
245
396
  popper-class="header-popper"
397
+ :disabled="!mapLoaded"
246
398
  >
247
399
  <template #reference>
248
- <el-icon class="header-icon" ref="globalSettingRef">
400
+ <el-icon
401
+ ref="globalSettingRef"
402
+ :disabled="!mapLoaded"
403
+ class="header-icon"
404
+ :class="{'disabled': !mapLoaded}"
405
+ >
249
406
  <el-icon-more-filled />
250
407
  </el-icon>
251
408
  </template>
252
409
  </el-popover>
253
- -->
410
+
254
411
  </el-row>
255
412
  </div>
256
413
  </template>
@@ -321,6 +478,7 @@ export default {
321
478
 
322
479
  },
323
480
  },
481
+ inject: ['showGlobalSettings'],
324
482
  computed: {
325
483
  ...mapStores(useEntriesStore, useSettingsStore, useSplitFlowStore),
326
484
  activeView() {
@@ -332,6 +490,9 @@ export default {
332
490
  shareLink() {
333
491
  return this.settingsStore.shareLink;
334
492
  },
493
+ offlineAnnotationEnabled() {
494
+ return this.settingsStore.offlineAnnotationEnabled;
495
+ },
335
496
  syncMode() {
336
497
  return this.splitFlowStore.syncMode;
337
498
  },
@@ -340,7 +501,7 @@ export default {
340
501
  },
341
502
  globalCallback() {
342
503
  return this.splitFlowStore.globalCallback;
343
- }
504
+ },
344
505
  },
345
506
  watch: {
346
507
  shareLink: function() {
@@ -370,6 +531,13 @@ export default {
370
531
  isFullscreen: false,
371
532
  loadingLink: true,
372
533
  permalinkRef: undefined,
534
+ viewingModes: {
535
+ 'Exploration': 'Find relevant research and view detail of neural pathways by selecting a pathway to view its connections and data sources',
536
+ 'Neuron Connection': 'Discover Neuron connections by selecting a neuron and viewing its associated network connections',
537
+ 'Annotation': ['View feature annotations', 'Add, comment on and view feature annotations']
538
+ },
539
+ authorisedUser: false,
540
+ mapLoaded: false,
373
541
  }
374
542
  },
375
543
  methods: {
@@ -379,7 +547,27 @@ export default {
379
547
  ...this.settingsStore.globalSettings
380
548
  };
381
549
  },
382
- /**
550
+ updateViewingMode: function (event, value) {
551
+ const { target } = event;
552
+
553
+ // prevent clicking inner checkbox
554
+ if (!target.closest('.el-checkbox')) {
555
+ this.globalSettings.viewingMode = value;
556
+
557
+ if (value === 'Exploration') {
558
+ this.globalSettings.displayMarkers = true;
559
+ this.globalSettings.interactiveMode = 'dataset';
560
+ } else if (value === 'Annotation') {
561
+ this.globalSettings.displayMarkers = false;
562
+ this.globalSettings.interactiveMode = 'dataset';
563
+ } else {
564
+ this.globalSettings.displayMarkers = false;
565
+ this.globalSettings.interactiveMode = 'connectivity';
566
+ }
567
+
568
+ this.updateGlobalSettings();
569
+ }
570
+ },
383
571
  updateGlobalSettings: function() {
384
572
  const updatedSettings = this.settingsStore.getUpdatedGlobalSettingsKey(this.globalSettings);
385
573
  this.settingsStore.updateGlobalSettings(this.globalSettings);
@@ -391,8 +579,27 @@ export default {
391
579
  if (updatedSettings.includes('interactiveMode')) {
392
580
  EventBus.emit('modeUpdate', this.globalSettings.interactiveMode);
393
581
  }
582
+ // viewing mode update
583
+ if (updatedSettings.includes('viewingMode')) {
584
+ EventBus.emit('viewingModeUpdate', this.globalSettings.viewingMode);
585
+ }
586
+ // flight path update
587
+ if (updatedSettings.includes('flightPathDisplay')) {
588
+ EventBus.emit('flightPathUpdate', this.globalSettings.flightPathDisplay);
589
+ }
590
+ // organs display update
591
+ if (updatedSettings.includes('organsDisplay')) {
592
+ EventBus.emit('organsDisplayUpdate', this.globalSettings.organsDisplay);
593
+ }
594
+ // outlines display update
595
+ if (updatedSettings.includes('outlinesDisplay')) {
596
+ EventBus.emit('outlinesDisplayUpdate', this.globalSettings.outlinesDisplay);
597
+ }
598
+ // background display update
599
+ if (updatedSettings.includes('backgroundDisplay')) {
600
+ EventBus.emit('backgroundDisplayUpdate', this.globalSettings.backgroundDisplay);
601
+ }
394
602
  },
395
- */
396
603
  titleClicked: function(id) {
397
604
  this.$emit("titleClicked", id);
398
605
  },
@@ -448,6 +655,10 @@ export default {
448
655
  this.permalinkRef = shallowRef(this.$refs.permalinkRef);
449
656
  this.globalSettingRef = shallowRef(this.$refs.globalSettingRef);
450
657
 
658
+ EventBus.on("mapLoaded", (map) => {
659
+ this.mapLoaded = true;
660
+ });
661
+
451
662
  document.addEventListener('fullscreenchange', this.onFullscreenEsc);
452
663
 
453
664
  this.loadGlobalSettings();
@@ -577,8 +788,8 @@ export default {
577
788
  padding-top:7px;
578
789
  }
579
790
 
580
- :deep(.view-icon-popover.el-popper),
581
- :deep(.setting-popover.el-popper ) {
791
+ :deep(.view-icon-popover.el-popper),
792
+ :deep(.setting-popover.el-popper) {
582
793
  border: 1px solid $app-primary-color;
583
794
  box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.06);
584
795
  padding: 4px 8px 12px 8px;
@@ -594,6 +805,142 @@ export default {
594
805
  }
595
806
  }
596
807
 
808
+ :deep(.setting-popover.el-popper) {
809
+ min-width: 200px !important;
810
+ }
811
+
812
+ .viewing-mode-selector {
813
+ display: flex;
814
+ flex-direction: row;
815
+ align-items: center;
816
+ gap: 0.5rem;
817
+ }
818
+
819
+ :deep(.toolbar-dropdown-dropdown.el-popper) {
820
+ border: 1px solid $app-primary-color;
821
+ box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.06);
822
+ background-color: #f3ecf6;
823
+ width: 300px;
824
+
825
+ .el-popper__arrow {
826
+ &:before {
827
+ border-color: $app-primary-color;
828
+ background-color: #f3ecf6;
829
+ }
830
+ }
831
+
832
+ .el-dropdown-menu {
833
+ background-color: #f3ecf6;
834
+ }
835
+
836
+ .el-dropdown-menu__item {
837
+ padding: 0.5rem;
838
+ height: auto;
839
+ color: $app-primary-color;
840
+ flex-direction: column;
841
+ align-items: start;
842
+ gap: 0.5rem;
843
+ position: relative;
844
+ transition: all 0.3s ease;
845
+
846
+ + .el-dropdown-menu__item {
847
+ &::before {
848
+ content: "";
849
+ display: block;
850
+ width: calc(100% - 1rem);
851
+ border-top: 1px solid var(--el-border-color);
852
+ position: absolute;
853
+ top: 0;
854
+ left: 0.5rem;
855
+ }
856
+ }
857
+
858
+ .el-icon {
859
+ display: inline;
860
+ vertical-align: middle;
861
+ }
862
+
863
+ > span,
864
+ > small {
865
+ display: block;
866
+ }
867
+
868
+ > span {
869
+ line-height: 1.5;
870
+ font-weight: 500;
871
+ }
872
+
873
+ > small {
874
+ height: auto;
875
+ line-height: 1.2;
876
+ font-weight: normal;
877
+ color: gray;
878
+ white-space: normal;
879
+ }
880
+
881
+ &.is-selected,
882
+ &:hover {
883
+ background-color: #f1e4f6;
884
+ }
885
+
886
+ &.is-selected {
887
+ > span {
888
+ font-weight: 700;
889
+ }
890
+ }
891
+ }
892
+
893
+ &:hover {
894
+ .el-dropdown-menu__item {
895
+ opacity: 1;
896
+
897
+ &:not(:hover) {
898
+ opacity: 0.5;
899
+ }
900
+ }
901
+ }
902
+ }
903
+
904
+ :deep(.setting-popover.el-popper) {
905
+ padding: 1px !important;
906
+ }
907
+
908
+ .setting-popover-inner {
909
+ padding: 4px 8px 12px 8px;
910
+ max-height: calc(100vh - 135px);
911
+ overflow-y: auto;
912
+ border-radius: var(--el-popover-border-radius);
913
+ scrollbar-width: thin;
914
+ display: flex;
915
+ flex-direction: column;
916
+ gap: 1rem;
917
+ }
918
+
919
+ .setting-popover-block {
920
+ + .setting-popover-block {
921
+ position: relative;
922
+
923
+ &:before {
924
+ content: "";
925
+ display: block;
926
+ width: 100%;
927
+ height: 0;
928
+ border-top: 1px solid var(--el-border-color);
929
+ position: absolute;
930
+ top: -0.5rem;
931
+ left: 0;
932
+ }
933
+ }
934
+
935
+ h5 {
936
+ margin: 0;
937
+ padding: 0;
938
+ font-size: 14px;
939
+ font-weight: 500;
940
+ line-height: 32px;
941
+ }
942
+ }
943
+
597
944
  .switch-control {
598
945
  width:250px;
599
946
  top:2px;
@@ -626,4 +973,73 @@ export default {
626
973
  top: 0px;
627
974
  scale: 0.7;
628
975
  }
629
- </style>
976
+
977
+ .el-radio__description {
978
+ font-size: 12px;
979
+ }
980
+
981
+ .bg-color-radio-group {
982
+ gap: 0.5rem;
983
+
984
+ .el-radio {
985
+ margin-right: 0;
986
+ line-height: 0px;
987
+ }
988
+ }
989
+
990
+ .bg-color-radio {
991
+ position: relative;
992
+
993
+ :deep(.el-radio__input) {
994
+ display: none;
995
+ }
996
+
997
+ :deep(.el-radio__label) {
998
+ height: auto;
999
+ line-height: 0;
1000
+ padding: 4px;
1001
+
1002
+ > span {
1003
+ display: inline-block;
1004
+ width: 20px;
1005
+ height: 20px;
1006
+ background-color: var(--bg-color);
1007
+ box-shadow: 0px 0px 0px 1px rgb(144, 147, 153);
1008
+ font-size: 0px;
1009
+ line-height: 0;
1010
+ transition: box-shadow 0.3s ease;
1011
+ }
1012
+ }
1013
+
1014
+ &.is-checked {
1015
+ :deep(.el-radio__label) > span {
1016
+ background-color: var(--bg-color);
1017
+ box-shadow: 0px 0px 0px 2px $app-primary-color;
1018
+ }
1019
+ }
1020
+ }
1021
+
1022
+ .toolbar-dropdown {
1023
+ .el-dropdown-link {
1024
+ cursor: pointer;
1025
+ color: $app-primary-color;
1026
+ display: flex;
1027
+ align-items: center;
1028
+ height: 24px;
1029
+ font-weight: 500;
1030
+ outline: none;
1031
+ }
1032
+
1033
+ &.is-disabled {
1034
+ opacity: 0.5;
1035
+
1036
+ .el-dropdown-link {
1037
+ cursor: default;
1038
+ }
1039
+ }
1040
+
1041
+ :deep(.el-icon) {
1042
+ color: $app-primary-color;
1043
+ }
1044
+ }
1045
+ </style>
@@ -107,6 +107,28 @@ export default {
107
107
  type: Boolean,
108
108
  default: true,
109
109
  },
110
+ /**
111
+ * The option to show global settings UI.
112
+ * Set to `false` to hide the global settings and show local settings for flatmap and scaffold viewers.
113
+ * Default is `true`.
114
+ */
115
+ showGlobalSettings: {
116
+ type: Boolean,
117
+ default: true,
118
+ },
119
+ /**
120
+ * The option to show open new map button
121
+ */
122
+ showOpenMapButton: {
123
+ type: Boolean,
124
+ default: true,
125
+ },
126
+ },
127
+ provide: function () {
128
+ return {
129
+ showGlobalSettings: this.showGlobalSettings,
130
+ showOpenMapButton: this.showOpenMapButton,
131
+ };
110
132
  },
111
133
  data: function () {
112
134
  return {
@@ -197,7 +219,7 @@ export default {
197
219
  * @public
198
220
  * Restore state of the map viewer from a state provided in the
199
221
  * state argument, use the getState method to get the current state.
200
- *
222
+ *
201
223
  * @arg `state`
202
224
  */
203
225
  setState: function(state){
@@ -209,7 +231,7 @@ export default {
209
231
  * restore settings and viewers using the setState method.
210
232
  * Set anonymousAnnotations to true if the user would like to perserve the
211
233
  * state of anonymous annotations.
212
- * @arg `anonymousAnnotations`
234
+ * @arg `anonymousAnnotations`
213
235
  */
214
236
  getState: function(anonymousAnnotations = false){
215
237
  return this.$refs.flow.getState(anonymousAnnotations);