@abi-software/mapintegratedvuer 0.7.1-demo.0 → 0.7.2-vue3.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +150 -142
  3. package/assets/gazelle-icons-no-background.css +32 -0
  4. package/assets/styleguide.css +19 -19
  5. package/cypress.config.js +23 -23
  6. package/dist/index.html +17 -17
  7. package/dist/mapintegratedvuer.js +60394 -59859
  8. package/dist/mapintegratedvuer.umd.cjs +515 -907
  9. package/dist/matterport.pdf +0 -0
  10. package/dist/style.css +1 -1
  11. package/dist/test.txt +0 -0
  12. package/package.json +135 -136
  13. package/public/index.html +17 -17
  14. package/public/matterport.pdf +0 -0
  15. package/public/test.txt +0 -0
  16. package/q.json +690 -0
  17. package/reporter-config.json +9 -9
  18. package/src/App.vue +245 -245
  19. package/src/assets/_variables.scss +43 -43
  20. package/src/assets/fonts/mapicon-species.eot +0 -0
  21. package/src/assets/fonts/mapicon-species.ttf +0 -0
  22. package/src/assets/fonts/mapicon-species.woff +0 -0
  23. package/src/assets/header-icon.scss +67 -67
  24. package/src/assets/mapicon-species-style.css +41 -41
  25. package/src/assets/styles.scss +9 -9
  26. package/src/components/ContentBar.vue +376 -376
  27. package/src/components/ContentVuer.vue +217 -217
  28. package/src/components/ContextCard.vue +385 -385
  29. package/src/components/ContextHelp.vue +73 -73
  30. package/src/components/CustomSplitter.vue +151 -151
  31. package/src/components/DatasetHeader.vue +97 -97
  32. package/src/components/DialogToolbarContent.vue +464 -464
  33. package/src/components/EventBus.js +3 -3
  34. package/src/components/FlatmapContextCard.vue +134 -134
  35. package/src/components/MapContent.vue +333 -285
  36. package/src/components/ResizeSensor.vue +47 -47
  37. package/src/components/SearchControls.vue +115 -115
  38. package/src/components/SimulatedData.js +721 -721
  39. package/src/components/SplitDialog.vue +287 -287
  40. package/src/components/SplitFlow.vue +414 -414
  41. package/src/components/index.js +7 -7
  42. package/src/components/markerZoomLevelsHardCoded.js +255 -255
  43. package/src/components/scripts/utilities.js +173 -173
  44. package/src/components/viewers/Flatmap.vue +145 -145
  45. package/src/components/viewers/Iframe.vue +31 -31
  46. package/src/components/viewers/MultiFlatmap.vue +384 -384
  47. package/src/components/viewers/Plot.vue +23 -23
  48. package/src/components/viewers/Scaffold.vue +198 -198
  49. package/src/components/viewers/Simulation.vue +21 -21
  50. package/src/icons/yellowstar.js +1 -1
  51. package/src/main.js +32 -22
  52. package/src/mixins/ContentMixin.js +438 -438
  53. package/src/mixins/DynamicMarkerMixin.js +88 -88
  54. package/src/mixins/RetrieveContextCardMixin.js +82 -0
  55. package/src/mixins/S3Bucket.vue +37 -37
  56. package/src/stores/entries.js +40 -40
  57. package/src/stores/index.js +24 -16
  58. package/src/stores/settings.js +144 -144
  59. package/src/stores/splitFlow.js +523 -523
  60. package/static.json +7 -7
  61. package/tsconfig.json +19 -0
  62. package/vite.config.js +70 -66
  63. package/vite.static-build.js +12 -12
  64. package/vitest.workspace.js +3 -3
  65. package/vuese-generator.js +65 -0
@@ -1,376 +1,376 @@
1
- <template>
2
- <div>
3
- <div class="toolbar-flex-container">
4
- <el-select
5
- v-if="entries.length > 1"
6
- :teleported="false"
7
- :model-value="entry.id"
8
- placeholder="Select"
9
- class="select-box"
10
- popper-class="viewer_dropdown"
11
- @change="viewerChanged($event)"
12
- >
13
- <el-option
14
- v-for="entry in entries"
15
- :key="entry.id"
16
- :label="getEntryTitle(entry)"
17
- :value="entry.id"
18
- />
19
- </el-select>
20
- <div v-else class="toolbar-title">
21
- {{ getEntryTitle(entry) }}
22
- </div>
23
- </div>
24
- <el-row class="icon-group">
25
- <div v-show="contextCardEntry && contextCardVisible" class="hide" @click="contextCardVisible = false">
26
- Hide information
27
- <el-icon><el-icon-arrow-up /></el-icon>
28
- </div>
29
- <div v-show="contextCardEntry && !contextCardVisible" class="hide" @click="contextCardVisible = true">
30
- Show information
31
- <el-icon><el-icon-arrow-down /></el-icon>
32
- </div>
33
-
34
- <el-popover
35
- placement="bottom"
36
- :teleported="false"
37
- trigger="manual"
38
- :width="setPopperWidth(slot.id)"
39
- :offset="0"
40
- popper-class="context-card-popover"
41
- :popper-options="popperOptions"
42
- :visible="contextCardVisible"
43
- >
44
- <template #default v-if="contextCardEntry">
45
- <flatmap-context-card
46
- class="flatmap-context-card"
47
- v-if="(contextCardEntry.type == 'Flatmap' ||
48
- contextCardEntry.type == 'MultiFlatmap')"
49
- :mapImpProv="contextCardEntry.mapImpProv"
50
- />
51
- <context-card
52
- v-if="contextCardEntry.type.toLowerCase() == 'scaffold'"
53
- :entry="contextCardEntry"
54
- :envVars="envVars"
55
- class="context-card"
56
- @context-ready="contextCardVisible = true"
57
- @scaffold-view-clicked="$emit('scaffold-view-clicked', $event)"
58
- />
59
- </template>
60
- <template #reference>
61
- <el-icon
62
- class="info-icon"
63
- @click="contextCardVisible = !contextCardVisible"
64
- v-show="contextCardEntry">
65
- <el-icon-info-filled/>
66
- </el-icon>
67
- </template>
68
- </el-popover>
69
- <el-popover class="tooltip" content="Close and remove" placement="bottom-end" :show-after="helpDelay"
70
- :teleported=false trigger="hover" popper-class="header-popper" >
71
- <template #reference>
72
- <map-svg-icon icon="close" class="header-icon"
73
- v-show="(activeView !== 'singlepanel') && (entry.mode !== 'main')"
74
- @click="closeAndRemove()"/>
75
- </template>
76
- </el-popover>
77
-
78
- </el-row>
79
-
80
- </div>
81
- </template>
82
-
83
-
84
- <script>
85
- /* eslint-disable no-alert, no-console */
86
- import EventBus from './EventBus';
87
- import { MapSvgIcon } from '@abi-software/svg-sprite';
88
- import { mapStores } from 'pinia';
89
- import { useEntriesStore } from '../stores/entries';
90
- import { useSettingsStore } from '../stores/settings';
91
- import { useSplitFlowStore } from '../stores/splitFlow';
92
- import ContextCard from "./ContextCard.vue";
93
- import FlatmapContextCard from './FlatmapContextCard.vue';
94
- import {
95
- ArrowDown as ElIconArrowDown,
96
- ArrowUp as ElIconArrowUp,
97
- InfoFilled as ElIconInfoFilled,
98
- } from '@element-plus/icons-vue'
99
- import {
100
- ElInput as Input,
101
- ElOption as Option,
102
- ElPopover as Popover,
103
- ElRow as Row,
104
- ElSelect as Select,
105
- } from "element-plus";
106
-
107
- export default {
108
- name: "ContentBar",
109
- components: {
110
- ElIconArrowDown,
111
- ElIconArrowUp,
112
- ElIconInfoFilled,
113
- Input,
114
- Option,
115
- Popover,
116
- Row,
117
- Select,
118
- ContextCard,
119
- FlatmapContextCard,
120
- MapSvgIcon,
121
- },
122
- props: {
123
- entry: Object,
124
- },
125
- data: function() {
126
- return {
127
- contextCardVisible: false,
128
- slot:{
129
-
130
- },
131
- boundariesElement: null, // this is set @vue:mounted by the parent component via the 'setBoundary' method
132
- showDetails: true,
133
- contextCardEntry: undefined,
134
- }
135
- },
136
- computed: {
137
- ...mapStores(useEntriesStore, useSettingsStore, useSplitFlowStore),
138
- helpDelay() {
139
- return this.settingsStore.helpDelay;
140
- },
141
- activeView: function() {
142
- return this.splitFlowStore.activeView;
143
- },
144
- envVars: function () {
145
- return {
146
- API_LOCATION: this.settingsStore.sparcApi,
147
- ALGOLIA_INDEX: this.settingsStore.algoliaIndex,
148
- ALGOLIA_KEY: this.settingsStore.algoliaKey,
149
- ALGOLIA_ID: this.settingsStore.algoliaId,
150
- PENNSIEVE_API_LOCATION: this.settingsStore.pennsieveApi,
151
- NL_LINK_PREFIX: this.settingsStore.nlLinkPrefix,
152
- ROOT_URL: this.settingsStore.rootUrl,
153
- };
154
- },
155
- popperOptions: function() {
156
- return {
157
- preventOverflow: {
158
- enabled: true,
159
- boundary: this.boundariesElement,
160
- }
161
- }
162
- },
163
- entries: function() {
164
- return this.entriesStore.entries;
165
- },
166
- },
167
- methods: {
168
- closeAndRemove: function() {
169
- this.splitFlowStore.closeSlot({ id: this.entry.id, entries: this.entries});
170
- EventBus.emit("RemoveEntryRequest", this.entry.id);
171
- },
172
- getEntryTitle: function(entry) {
173
- if (entry) {
174
- let title = entry.label ? entry.label + " ": '';
175
- let type = entry.type;
176
- if (type == "Scaffold")
177
- type = "3D Scaffold";
178
- title += type;
179
- if (entry.datasetId)
180
- title += " (" + entry.datasetId + ")";
181
- else if (entry.discoverId)
182
- title += " (" + entry.discoverId + ")";
183
- return title;
184
- }
185
- return "Viewer";
186
- },
187
- viewerChanged: function(value) {
188
- if (this.entry.id && this.entry.id != value) {
189
- this.splitFlowStore.assignOrSwapPaneWithIds({
190
- source: this.entry.id,
191
- target: value
192
- });
193
- this.$nextTick(() => {
194
- setTimeout(() => {
195
- this.$emit("chooser-changed");
196
- }, 1200);
197
- });
198
- //this.contextCardVisible = false; // Hide all context cards when switching viewers
199
- }
200
- },
201
- // setPopper with is needed as the flatmap context card does not have an image and has smaller with
202
- setPopperWidth: function(slotId) {
203
- let entry = this.entries.find(entry => entry.id === slotId);
204
- if (entry) {
205
- if (entry.type == "Flatmap" || entry.type == "MultiFlatmap") {
206
- return "240px";
207
- } else {
208
- return "440px";
209
- }
210
- }
211
- },
212
- // Set the boundaries element for the popper
213
- setBoundary: function(boundaryElement) {
214
- this.boundariesElement = boundaryElement;
215
- },
216
- setupFlatmapContextCard: function(mapImpProv) {
217
- // flatmap context update
218
- this.contextCardVisible = false; // hide the context card when new map loads
219
- let contextEntry = Object.assign({mapImpProv: mapImpProv.prov}, this.entry);
220
- this.contextCardEntry = contextEntry;
221
- },
222
- setupScaffoldContextCard: function(){
223
- // scaffold context update
224
- if (this.entry.contextCardUrl) {
225
- this.contextCardEntry = { ...this.entry};
226
- }
227
- }
228
- },
229
- mounted: function() {
230
- this.setupScaffoldContextCard();
231
- }
232
- };
233
- </script>
234
-
235
-
236
- <!-- Add "scoped" attribute to limit CSS to this component only -->
237
- <style scoped lang="scss">
238
- @use "../assets/header-icon.scss";
239
-
240
-
241
- .toolbar-title {
242
- width: 160px;
243
- height: 20px;
244
- color: $app-primary-color;
245
- font-size: 14px;
246
- font-weight: normal;
247
- line-height: 20px;
248
- margin-left: 1rem;
249
- margin-top: 4px;
250
- }
251
-
252
- .toolbar-flex-container {
253
- display:flex;
254
- flex-direction: row;
255
- .select-box {
256
- width: 177px;
257
- height: 26px;
258
- border-radius: 4px;
259
- border: 1px solid rgb(144, 147, 153);
260
- background-color: #fff;
261
- font-weight: 500;
262
- color: rgb(48, 49, 51);
263
- margin-left: 8px;
264
- margin-top: 3px;
265
- margin-bottom: 2px;
266
- z-index: 5;
267
- :deep(.el-select__wrapper) {
268
- width:177px;
269
- color: $app-primary-color;
270
- height: 26px;
271
- min-height: 26px;
272
- line-height: 26px;
273
- padding-left: 4px;
274
- padding-right: 8px;
275
- background-color: #fff;
276
- border-style: none;
277
- span {
278
- color: $app-primary-color;
279
- }
280
- }
281
-
282
- :deep(.el-input__icon) {
283
- line-height: 24px;
284
- color: $lightGrey;
285
- }
286
- }
287
- i .select-box :deep(.el-input__icon) {
288
- color: rgb(48, 49, 51);
289
- height: 24px;
290
- padding-left: 8px;
291
- padding-right: 8px;
292
- }
293
- .text {
294
- margin-left: 8px;
295
- margin-top: 7px;
296
- font-weight: 500;
297
- -moz-user-select: none;
298
- -webkit-user-select: none;
299
- -ms-user-select: none;
300
- user-select: none;
301
- line-height:18px;
302
- }
303
- .title {
304
- width: 140px;
305
- color: $app-primary-color;
306
- }
307
- }
308
-
309
- .viewer_dropdown {
310
- z-index: 5;
311
- .el-select-dropdown__item {
312
- white-space: nowrap;
313
- text-align: left;
314
- &.is-selected {
315
- color: $app-primary-color;
316
- font-weight: normal;
317
- }
318
- }
319
- }
320
-
321
- .hide{
322
- color: $app-primary-color;
323
- cursor: pointer;
324
- margin-right: 6px;
325
- margin-top: 8px;
326
- }
327
-
328
- .icon-group {
329
- position: relative;
330
- top: auto;
331
- font-size: 12px;
332
- }
333
-
334
- .info-icon {
335
- margin-top: 2px;
336
- margin-right: 8px;
337
- font-size: 28px;
338
- color: $app-primary-color;
339
- cursor: pointer;
340
- &::before { // since the icon is a font, we need to adjust the vertical alignment
341
- position: relative;
342
- top: -2px;
343
- }
344
- }
345
-
346
- .flatmap-context-card {
347
- width: 240px;
348
- }
349
-
350
- .context-card {
351
- width: 440px;
352
- }
353
-
354
- :deep(.header-popper.el-popover.el-popper) {
355
- padding: 6px 4px;
356
- font-size:12px;
357
- color: rgb(48, 49, 51);
358
- background-color: #f3ecf6;
359
- border: 1px solid $app-primary-color;
360
- white-space: nowrap;
361
- min-width: unset;
362
- .el-popper__arrow {
363
- &:before {
364
- border-color: $app-primary-color;
365
- background-color: #f3ecf6;
366
- }
367
- }
368
- }
369
-
370
- :deep(.context-card-popover.el-popover.el-popper) {
371
- max-width: calc(100vw - 100px);
372
- padding-right: 0px;
373
- width: unset!important;
374
- background: #fff!important;
375
- }
376
- </style>
1
+ <template>
2
+ <div>
3
+ <div class="toolbar-flex-container">
4
+ <el-select
5
+ v-if="entries.length > 1"
6
+ :teleported="false"
7
+ :model-value="entry.id"
8
+ placeholder="Select"
9
+ class="select-box"
10
+ popper-class="viewer_dropdown"
11
+ @change="viewerChanged($event)"
12
+ >
13
+ <el-option
14
+ v-for="entry in entries"
15
+ :key="entry.id"
16
+ :label="getEntryTitle(entry)"
17
+ :value="entry.id"
18
+ />
19
+ </el-select>
20
+ <div v-else class="toolbar-title">
21
+ {{ getEntryTitle(entry) }}
22
+ </div>
23
+ </div>
24
+ <el-row class="icon-group">
25
+ <div v-show="contextCardEntry && contextCardVisible" class="hide" @click="contextCardVisible = false">
26
+ Hide information
27
+ <el-icon><el-icon-arrow-up /></el-icon>
28
+ </div>
29
+ <div v-show="contextCardEntry && !contextCardVisible" class="hide" @click="contextCardVisible = true">
30
+ Show information
31
+ <el-icon><el-icon-arrow-down /></el-icon>
32
+ </div>
33
+
34
+ <el-popover
35
+ placement="bottom"
36
+ :teleported="false"
37
+ trigger="manual"
38
+ :width="setPopperWidth(slot.id)"
39
+ :offset="0"
40
+ popper-class="context-card-popover"
41
+ :popper-options="popperOptions"
42
+ :visible="contextCardVisible"
43
+ >
44
+ <template #default v-if="contextCardEntry">
45
+ <flatmap-context-card
46
+ class="flatmap-context-card"
47
+ v-if="(contextCardEntry.type == 'Flatmap' ||
48
+ contextCardEntry.type == 'MultiFlatmap')"
49
+ :mapImpProv="contextCardEntry.mapImpProv"
50
+ />
51
+ <context-card
52
+ v-if="contextCardEntry.type.toLowerCase() == 'scaffold'"
53
+ :entry="contextCardEntry"
54
+ :envVars="envVars"
55
+ class="context-card"
56
+ @context-ready="contextCardVisible = true"
57
+ @scaffold-view-clicked="$emit('scaffold-view-clicked', $event)"
58
+ />
59
+ </template>
60
+ <template #reference>
61
+ <el-icon
62
+ class="info-icon"
63
+ @click="contextCardVisible = !contextCardVisible"
64
+ v-show="contextCardEntry">
65
+ <el-icon-info-filled/>
66
+ </el-icon>
67
+ </template>
68
+ </el-popover>
69
+ <el-popover class="tooltip" content="Close and remove" placement="bottom-end" :show-after="helpDelay"
70
+ :teleported=false trigger="hover" popper-class="header-popper" >
71
+ <template #reference>
72
+ <map-svg-icon icon="close" class="header-icon"
73
+ v-show="(activeView !== 'singlepanel') && (entry.mode !== 'main')"
74
+ @click="closeAndRemove()"/>
75
+ </template>
76
+ </el-popover>
77
+
78
+ </el-row>
79
+
80
+ </div>
81
+ </template>
82
+
83
+
84
+ <script>
85
+ /* eslint-disable no-alert, no-console */
86
+ import EventBus from './EventBus';
87
+ import { MapSvgIcon } from '@abi-software/svg-sprite';
88
+ import { mapStores } from 'pinia';
89
+ import { useEntriesStore } from '../stores/entries';
90
+ import { useSettingsStore } from '../stores/settings';
91
+ import { useSplitFlowStore } from '../stores/splitFlow';
92
+ import ContextCard from "./ContextCard.vue";
93
+ import FlatmapContextCard from './FlatmapContextCard.vue';
94
+ import {
95
+ ArrowDown as ElIconArrowDown,
96
+ ArrowUp as ElIconArrowUp,
97
+ InfoFilled as ElIconInfoFilled,
98
+ } from '@element-plus/icons-vue'
99
+ import {
100
+ ElInput as Input,
101
+ ElOption as Option,
102
+ ElPopover as Popover,
103
+ ElRow as Row,
104
+ ElSelect as Select,
105
+ } from "element-plus";
106
+
107
+ export default {
108
+ name: "ContentBar",
109
+ components: {
110
+ ElIconArrowDown,
111
+ ElIconArrowUp,
112
+ ElIconInfoFilled,
113
+ Input,
114
+ Option,
115
+ Popover,
116
+ Row,
117
+ Select,
118
+ ContextCard,
119
+ FlatmapContextCard,
120
+ MapSvgIcon,
121
+ },
122
+ props: {
123
+ entry: Object,
124
+ },
125
+ data: function() {
126
+ return {
127
+ contextCardVisible: false,
128
+ slot:{
129
+
130
+ },
131
+ boundariesElement: null, // this is set @vue:mounted by the parent component via the 'setBoundary' method
132
+ showDetails: true,
133
+ contextCardEntry: undefined,
134
+ }
135
+ },
136
+ computed: {
137
+ ...mapStores(useEntriesStore, useSettingsStore, useSplitFlowStore),
138
+ helpDelay() {
139
+ return this.settingsStore.helpDelay;
140
+ },
141
+ activeView: function() {
142
+ return this.splitFlowStore.activeView;
143
+ },
144
+ envVars: function () {
145
+ return {
146
+ API_LOCATION: this.settingsStore.sparcApi,
147
+ ALGOLIA_INDEX: this.settingsStore.algoliaIndex,
148
+ ALGOLIA_KEY: this.settingsStore.algoliaKey,
149
+ ALGOLIA_ID: this.settingsStore.algoliaId,
150
+ PENNSIEVE_API_LOCATION: this.settingsStore.pennsieveApi,
151
+ NL_LINK_PREFIX: this.settingsStore.nlLinkPrefix,
152
+ ROOT_URL: this.settingsStore.rootUrl,
153
+ };
154
+ },
155
+ popperOptions: function() {
156
+ return {
157
+ preventOverflow: {
158
+ enabled: true,
159
+ boundary: this.boundariesElement,
160
+ }
161
+ }
162
+ },
163
+ entries: function() {
164
+ return this.entriesStore.entries;
165
+ },
166
+ },
167
+ methods: {
168
+ closeAndRemove: function() {
169
+ this.splitFlowStore.closeSlot({ id: this.entry.id, entries: this.entries});
170
+ EventBus.emit("RemoveEntryRequest", this.entry.id);
171
+ },
172
+ getEntryTitle: function(entry) {
173
+ if (entry) {
174
+ let title = entry.label ? entry.label + " ": '';
175
+ let type = entry.type;
176
+ if (type == "Scaffold")
177
+ type = "3D Scaffold";
178
+ title += type;
179
+ if (entry.datasetId)
180
+ title += " (" + entry.datasetId + ")";
181
+ else if (entry.discoverId)
182
+ title += " (" + entry.discoverId + ")";
183
+ return title;
184
+ }
185
+ return "Viewer";
186
+ },
187
+ viewerChanged: function(value) {
188
+ if (this.entry.id && this.entry.id != value) {
189
+ this.splitFlowStore.assignOrSwapPaneWithIds({
190
+ source: this.entry.id,
191
+ target: value
192
+ });
193
+ this.$nextTick(() => {
194
+ setTimeout(() => {
195
+ this.$emit("chooser-changed");
196
+ }, 1200);
197
+ });
198
+ //this.contextCardVisible = false; // Hide all context cards when switching viewers
199
+ }
200
+ },
201
+ // setPopper with is needed as the flatmap context card does not have an image and has smaller with
202
+ setPopperWidth: function(slotId) {
203
+ let entry = this.entries.find(entry => entry.id === slotId);
204
+ if (entry) {
205
+ if (entry.type == "Flatmap" || entry.type == "MultiFlatmap") {
206
+ return "240px";
207
+ } else {
208
+ return "440px";
209
+ }
210
+ }
211
+ },
212
+ // Set the boundaries element for the popper
213
+ setBoundary: function(boundaryElement) {
214
+ this.boundariesElement = boundaryElement;
215
+ },
216
+ setupFlatmapContextCard: function(mapImpProv) {
217
+ // flatmap context update
218
+ this.contextCardVisible = false; // hide the context card when new map loads
219
+ let contextEntry = Object.assign({mapImpProv: mapImpProv.prov}, this.entry);
220
+ this.contextCardEntry = contextEntry;
221
+ },
222
+ setupScaffoldContextCard: function(){
223
+ // scaffold context update
224
+ if (this.entry.contextCardUrl) {
225
+ this.contextCardEntry = { ...this.entry};
226
+ }
227
+ }
228
+ },
229
+ mounted: function() {
230
+ this.setupScaffoldContextCard();
231
+ }
232
+ };
233
+ </script>
234
+
235
+
236
+ <!-- Add "scoped" attribute to limit CSS to this component only -->
237
+ <style scoped lang="scss">
238
+ @use "../assets/header-icon.scss";
239
+
240
+
241
+ .toolbar-title {
242
+ width: 160px;
243
+ height: 20px;
244
+ color: $app-primary-color;
245
+ font-size: 14px;
246
+ font-weight: normal;
247
+ line-height: 20px;
248
+ margin-left: 1rem;
249
+ margin-top: 4px;
250
+ }
251
+
252
+ .toolbar-flex-container {
253
+ display:flex;
254
+ flex-direction: row;
255
+ .select-box {
256
+ width: 177px;
257
+ height: 26px;
258
+ border-radius: 4px;
259
+ border: 1px solid rgb(144, 147, 153);
260
+ background-color: #fff;
261
+ font-weight: 500;
262
+ color: rgb(48, 49, 51);
263
+ margin-left: 8px;
264
+ margin-top: 3px;
265
+ margin-bottom: 2px;
266
+ z-index: 5;
267
+ :deep(.el-select__wrapper) {
268
+ width:177px;
269
+ color: $app-primary-color;
270
+ height: 26px;
271
+ min-height: 26px;
272
+ line-height: 26px;
273
+ padding-left: 4px;
274
+ padding-right: 8px;
275
+ background-color: #fff;
276
+ border-style: none;
277
+ span {
278
+ color: $app-primary-color;
279
+ }
280
+ }
281
+
282
+ :deep(.el-input__icon) {
283
+ line-height: 24px;
284
+ color: $lightGrey;
285
+ }
286
+ }
287
+ i .select-box :deep(.el-input__icon) {
288
+ color: rgb(48, 49, 51);
289
+ height: 24px;
290
+ padding-left: 8px;
291
+ padding-right: 8px;
292
+ }
293
+ .text {
294
+ margin-left: 8px;
295
+ margin-top: 7px;
296
+ font-weight: 500;
297
+ -moz-user-select: none;
298
+ -webkit-user-select: none;
299
+ -ms-user-select: none;
300
+ user-select: none;
301
+ line-height:18px;
302
+ }
303
+ .title {
304
+ width: 140px;
305
+ color: $app-primary-color;
306
+ }
307
+ }
308
+
309
+ .viewer_dropdown {
310
+ z-index: 5;
311
+ .el-select-dropdown__item {
312
+ white-space: nowrap;
313
+ text-align: left;
314
+ &.is-selected {
315
+ color: $app-primary-color;
316
+ font-weight: normal;
317
+ }
318
+ }
319
+ }
320
+
321
+ .hide{
322
+ color: $app-primary-color;
323
+ cursor: pointer;
324
+ margin-right: 6px;
325
+ margin-top: 8px;
326
+ }
327
+
328
+ .icon-group {
329
+ position: relative;
330
+ top: auto;
331
+ font-size: 12px;
332
+ }
333
+
334
+ .info-icon {
335
+ margin-top: 2px;
336
+ margin-right: 8px;
337
+ font-size: 28px;
338
+ color: $app-primary-color;
339
+ cursor: pointer;
340
+ &::before { // since the icon is a font, we need to adjust the vertical alignment
341
+ position: relative;
342
+ top: -2px;
343
+ }
344
+ }
345
+
346
+ .flatmap-context-card {
347
+ width: 240px;
348
+ }
349
+
350
+ .context-card {
351
+ width: 440px;
352
+ }
353
+
354
+ :deep(.header-popper.el-popover.el-popper) {
355
+ padding: 6px 4px;
356
+ font-size:12px;
357
+ color: rgb(48, 49, 51);
358
+ background-color: #f3ecf6;
359
+ border: 1px solid $app-primary-color;
360
+ white-space: nowrap;
361
+ min-width: unset;
362
+ .el-popper__arrow {
363
+ &:before {
364
+ border-color: $app-primary-color;
365
+ background-color: #f3ecf6;
366
+ }
367
+ }
368
+ }
369
+
370
+ :deep(.context-card-popover.el-popover.el-popper) {
371
+ max-width: calc(100vw - 100px);
372
+ padding-right: 0px;
373
+ width: unset!important;
374
+ background: #fff!important;
375
+ }
376
+ </style>