@abi-software/mapintegratedvuer 0.7.2-vue3.0-alpha.0 → 1.0.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 (65) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +150 -150
  3. package/assets/styleguide.css +19 -19
  4. package/cypress.config.js +23 -23
  5. package/dist/index.html +17 -17
  6. package/dist/mapintegratedvuer.js +74289 -73840
  7. package/dist/mapintegratedvuer.umd.cjs +878 -515
  8. package/dist/style.css +1 -1
  9. package/package.json +134 -135
  10. package/public/index.html +17 -17
  11. package/reporter-config.json +9 -9
  12. package/src/App.vue +245 -245
  13. package/src/assets/_variables.scss +43 -43
  14. package/src/assets/fonts/mapicon-species.eot +0 -0
  15. package/src/assets/fonts/mapicon-species.ttf +0 -0
  16. package/src/assets/fonts/mapicon-species.woff +0 -0
  17. package/src/assets/header-icon.scss +67 -67
  18. package/src/assets/mapicon-species-style.css +41 -41
  19. package/src/assets/styles.scss +9 -9
  20. package/src/components/ContentBar.vue +376 -376
  21. package/src/components/ContentVuer.vue +217 -217
  22. package/src/components/ContextCard.vue +385 -385
  23. package/src/components/ContextHelp.vue +73 -73
  24. package/src/components/CustomSplitter.vue +151 -151
  25. package/src/components/DatasetHeader.vue +97 -97
  26. package/src/components/DialogToolbarContent.vue +464 -464
  27. package/src/components/EventBus.js +3 -3
  28. package/src/components/FlatmapContextCard.vue +134 -134
  29. package/src/components/MapContent.vue +328 -333
  30. package/src/components/ResizeSensor.vue +47 -47
  31. package/src/components/SearchControls.vue +115 -115
  32. package/src/components/SimulatedData.js +721 -721
  33. package/src/components/SplitDialog.vue +287 -287
  34. package/src/components/SplitFlow.vue +414 -414
  35. package/src/components/index.js +7 -7
  36. package/src/components/markerZoomLevelsHardCoded.js +255 -255
  37. package/src/components/scripts/utilities.js +173 -173
  38. package/src/components/viewers/Flatmap.vue +145 -145
  39. package/src/components/viewers/Iframe.vue +31 -31
  40. package/src/components/viewers/MultiFlatmap.vue +384 -384
  41. package/src/components/viewers/Plot.vue +23 -23
  42. package/src/components/viewers/Scaffold.vue +198 -198
  43. package/src/components/viewers/Simulation.vue +21 -21
  44. package/src/icons/yellowstar.js +1 -1
  45. package/src/main.js +31 -31
  46. package/src/mixins/ContentMixin.js +438 -438
  47. package/src/mixins/DynamicMarkerMixin.js +88 -88
  48. package/src/mixins/S3Bucket.vue +37 -37
  49. package/src/stores/entries.js +40 -40
  50. package/src/stores/index.js +23 -23
  51. package/src/stores/settings.js +144 -144
  52. package/src/stores/splitFlow.js +523 -523
  53. package/static.json +7 -7
  54. package/vite.config.js +70 -70
  55. package/vite.static-build.js +12 -12
  56. package/vitest.workspace.js +3 -3
  57. package/vuese-generator.js +65 -65
  58. package/assets/gazelle-icons-no-background.css +0 -32
  59. package/dist/matterport.pdf +0 -0
  60. package/dist/test.txt +0 -0
  61. package/public/matterport.pdf +0 -0
  62. package/public/test.txt +0 -0
  63. package/q.json +0 -690
  64. package/src/mixins/RetrieveContextCardMixin.js +0 -82
  65. package/tsconfig.json +0 -19
@@ -1,334 +1,329 @@
1
- <template>
2
- <div
3
- ref="MapApp"
4
- v-loading="!isReady"
5
- class="mapcontent"
6
- element-loading-text="Loading..."
7
- element-loading-background="rgba(0, 0, 0, 0.3)"
8
- >
9
- <map-svg-sprite-color/>
10
- <SplitFlow
11
- v-if="isReady"
12
- @onFullscreen="onFullscreen"
13
- :state="stateToSet"
14
- ref="flow"
15
- @vue:mounted="flowMounted"
16
- />
17
- </div>
18
- </template>
19
-
20
- <script>
21
- /* eslint-disable no-alert, no-console */
22
- import SplitFlow from './SplitFlow.vue';
23
- import EventBus from './EventBus';
24
- import { mapStores } from 'pinia';
25
- import { useSettingsStore } from '../stores/settings';
26
- import { findSpeciesKey } from './scripts/utilities.js';
27
- import { MapSvgSpriteColor} from '@abi-software/svg-sprite';
28
- import { initialState } from "./scripts/utilities.js";
29
- import RetrieveContextCardMixin from "../mixins/RetrieveContextCardMixin.js"
30
- import {
31
- ElLoading as Loading
32
- } from "element-plus";
33
-
34
- /**
35
- * Content of the app. More work flows will be added here.
36
- */
37
- export default {
38
- name: "MapContent",
39
- components: {
40
- MapSvgSpriteColor,
41
- Loading,
42
- SplitFlow,
43
- },
44
- mixins: [RetrieveContextCardMixin],
45
- props: {
46
- /**
47
- * A link (URL) to share.
48
- */
49
- shareLink: {
50
- type: String,
51
- default: undefined
52
- },
53
- /**
54
- * State containing state of the scaffold.
55
- */
56
- state: {
57
- type: Object,
58
- default: undefined
59
- },
60
- /**
61
- * The options include APIs and Keys.
62
- */
63
- options: {
64
- type: Object,
65
- default: () => {},
66
- required: true
67
- },
68
- /**
69
- * New option to start the map in AC, FC or WholeBody.
70
- */
71
- startingMap: {
72
- type: String,
73
- default: "AC"
74
- }
75
- },
76
- data: function () {
77
- return {
78
- isReady: false,
79
- initialState: undefined,
80
- }
81
- },
82
- methods: {
83
- /**
84
- * @vuese
85
- * Function to check whether it is in fullscreen mode or not.
86
- *
87
- */
88
- isFullscreen: function(){
89
- return (document.fullscreenElement || document.webkitFullscreenElement ||
90
- document.mozFullScreenElement || document.msFullscreenElement )
91
- },
92
- /**
93
- * @vuese
94
- * Function to toggle fullscreen.
95
- * @arg fullscreenRequest
96
- */
97
- onFullscreen: function(fullscreenReq) {
98
- //If a request is sent, try it
99
- if (fullscreenReq !== undefined){
100
- if (fullscreenReq && !this.isFullscreen()){
101
- this.goFullscreen()
102
- }
103
- if(!fullscreenReq && this.isFullscreen()){
104
- this.leaveFullscreen()
105
- }
106
- }
107
- // Else we toggle fullscreen
108
- else{
109
- if(this.isFullscreen()){
110
- this.leaveFullscreen()
111
- } else {
112
- this.goFullscreen()
113
- }
114
- }
115
- },
116
- /**
117
- * @vuese
118
- * Function to leave fullscreen mode.
119
- */
120
- leaveFullscreen: function(){
121
- if (this.isFullscreen()) {
122
- if (document.exitFullscreen) {
123
- document.exitFullscreen();
124
- } else if (document.mozCancelFullScreen) { /* Firefox */
125
- document.mozCancelFullScreen();
126
- } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */
127
- document.webkitExitFullscreen();
128
- } else if (document.msExitFullscreen) { /* IE/Edge */
129
- document.msExitFullscreen();
130
- }
131
- }
132
- },
133
- /**
134
- * @vuese
135
- * Function to go to fullscreen mode.
136
- */
137
- goFullscreen: function(){
138
- let mapApp = this.$refs.MapApp;
139
- if (mapApp.requestFullscreen) {
140
- mapApp.requestFullscreen();
141
- } else if (mapApp.mozRequestFullScreen) { /* Firefox */
142
- mapApp.mozRequestFullScreen();
143
- } else if (mapApp.webkitRequestFullscreen) { /* Chrome, Safari and Opera */
144
- mapApp.webkitRequestFullscreen();
145
- } else if (parent.msRequestFullscreen) { /* IE/Edge */
146
- mapApp.msRequestFullscreen();
147
- }
148
- },
149
- setState: function(state){
150
- return this.$refs.flow.setState(state);
151
- },
152
- getState: function(){
153
- return this.$refs.flow.getState();
154
- },
155
- /**
156
- * @vuese
157
- * Provide a way to set the current view, this is currently limited
158
- * to setting view for flatmapm, multiflatmap or scaffold.
159
- * In the case of the multiflatmap, it will not create a new entry and
160
- * instead change the current entry by setting the state.
161
- * @arg state
162
- */
163
- setCurrentEntry: async function(state) {
164
- if (state && state.type) {
165
- if (state.type === "Scaffold" && state.url) {
166
- //State for scaffold containing the following items:
167
- // label - Setting the name of the dialog
168
- // region - Which region/group currently focusing on
169
- // resource - the url to metadata
170
- // state - state to restore (viewport)
171
- // viewUrl - relative path of the view file to metadata
172
- let newView = {
173
- type: state.type,
174
- label: state.label,
175
- region: state.region,
176
- resource: state.url,
177
- state: state.state,
178
- viewUrl: state.viewUrl
179
- };
180
- // Add content from scicrunch for the context card
181
- const contextCardInfo = await this.retrieveContextCardFromUrl(state.url);
182
- newView = {...newView, ...contextCardInfo};
183
- this.$refs.flow.createNewEntry(newView);
184
- } else if (state.type === "MultiFlatmap") {
185
- //State for scaffold containing the following items:
186
- // label - Setting the name of the dialog
187
- // taxo - taxo of species to set
188
- // biologicalSex - biological sex to be displayed (PATO)
189
- // organ - Target organ, flatmap will conduct a local search
190
- // using this
191
-
192
- //Look for the key in the available species array,
193
- //it will use the taxo and biologicalSex as hints.
194
- const key = findSpeciesKey(state);
195
- if (key) {
196
- const currentState = this.getState();
197
- if (currentState && currentState.entries) {
198
- for (let i = 0; i < currentState.entries.length; i++) {
199
- const entry = currentState.entries[i];
200
- if (entry.type === "MultiFlatmap") {
201
- entry.resource = key;
202
- entry.state = {species: key};
203
- if (state.organ || state.uuid) {
204
- entry.state.state = { searchTerm: state.organ, uuid: state.uuid };
205
- //if it contains an uuid, use the taxo to help identify if the uuid
206
- //is current
207
- if (state.uuid) entry.state.state.entry = state.taxo;
208
- }
209
- this.$refs.flow.setState(currentState);
210
- //Do not create a new entry, instead set the multiflatmap viewer
211
- //to the primary slot
212
- this.$refs.flow.setIdToPrimaryPane(entry.id);
213
- break;
214
- }
215
- }
216
- }
217
- }
218
- }
219
- else if (state.type === "Flatmap") {
220
- //State for scaffold containing the following items:
221
- // label - Setting the name of the dialog
222
- // region - Which region/group currently focusing on
223
- // resource - the url to metadata
224
- // state - state to restore (viewport)
225
- // viewUrl - relative path of the view file to metadata
226
- const newView = {
227
- type: state.type,
228
- resource: state.resource,
229
- state: state.state,
230
- label: state.label
231
- };
232
- this.$refs.flow.createNewEntry(newView);
233
- }
234
- }
235
- },
236
- /**
237
- * @vuese
238
- * Open the sidebar with the specified facets and query.
239
- * @arg facets, query
240
- */
241
- openSearch: function(facets, query) {
242
- return this.$refs.flow.openSearch(facets, query);
243
- },
244
- /**
245
- * @vuese
246
- * Function to run when the component is mounted.
247
- */
248
- flowMounted: function () {
249
- this._flowMounted = true;
250
- /**
251
- * This event emit when the component is mounted.
252
- */
253
- this.$emit("isReady");
254
- },
255
- },
256
- computed: {
257
- ...mapStores(useSettingsStore),
258
- stateToSet() {
259
- return this.state ? this.state : this.initialState;
260
- },
261
- },
262
- watch: {
263
- "shareLink" : {
264
- handler: function (newLink) {
265
- this.settingsStore.updateShareLink(newLink);
266
- },
267
- immediate: true,
268
- },
269
- },
270
- beforeMount: function() {
271
- if (this.options) {
272
- // Split options prop up to commit to the store
273
- this.options.sparcApi ? this.settingsStore.updateSparcAPI(this.options.sparcApi) : null
274
- this.options.algoliaIndex ? this.settingsStore.updateAlgoliaIndex(this.options.algoliaIndex) : null
275
- this.options.algoliaKey ? this.settingsStore.updateAlgoliaKey(this.options.algoliaKey) : null
276
- this.options.algoliaId ? this.settingsStore.updateAlgoliaId(this.options.algoliaId) : null
277
- this.options.pennsieveApi ? this.settingsStore.updatePennsieveApi(this.options.pennsieveApi) : null
278
- this.options.flatmapAPI ? this.settingsStore.updateFlatmapAPI(this.options.flatmapAPI) : null,
279
- this.options.nlLinkPrefix ? this.settingsStore.updateNLLinkPrefix(this.options.nlLinkPrefix) : null
280
- this.options.rootUrl ? this.settingsStore.updateRootUrl(this.options.rootUrl) : null
281
- }
282
- },
283
- mounted: async function() {
284
- EventBus.on("updateShareLinkRequested", () => {
285
- /**
286
- * This event emits when the share link is requested.
287
- */
288
- this.$emit("updateShareLinkRequested");
289
- });
290
- if (!this.state) {
291
- this.initialState = await initialState(this.startingMap, this.options.sparcApi);
292
- }
293
- this.isReady = true;
294
- }
295
- }
296
-
297
- </script>
298
-
299
- <style scoped lang="scss">
300
-
301
- :deep(.el-loading-spinner) {
302
- .path {
303
- stroke: $app-primary-color;
304
- }
305
- .el-loading-text {
306
- color: $app-primary-color;
307
- }
308
- }
309
-
310
- .map-help-dialog {
311
- position: fixed;
312
- z-index: 20;
313
- bottom: 30px;
314
- right: 30px;
315
- }
316
-
317
- .mapcontent {
318
- height: 100%;
319
- width:100%;
320
- z-index:1;
321
- }
322
-
323
- </style>
324
-
325
- <style lang="scss">
326
-
327
- .mapcontent {
328
- --el-color-primary: #8300BF;
329
- --el-color-primary-light-7: #dab3ec;
330
- --el-color-primary-light-8: #e6ccf2;
331
- --el-color-primary-light-9: #f3e6f9;
332
- }
333
-
1
+ <template>
2
+ <div
3
+ ref="MapApp"
4
+ v-loading="!isReady"
5
+ class="mapcontent"
6
+ element-loading-text="Loading..."
7
+ element-loading-background="rgba(0, 0, 0, 0.3)"
8
+ >
9
+ <map-svg-sprite-color/>
10
+ <SplitFlow
11
+ v-if="isReady"
12
+ @onFullscreen="onFullscreen"
13
+ :state="stateToSet"
14
+ ref="flow"
15
+ @vue:mounted="flowMounted"
16
+ />
17
+ </div>
18
+ </template>
19
+
20
+ <script>
21
+ /* eslint-disable no-alert, no-console */
22
+ import SplitFlow from './SplitFlow.vue';
23
+ import EventBus from './EventBus';
24
+ import { mapStores } from 'pinia';
25
+ import { useSettingsStore } from '../stores/settings';
26
+ import { findSpeciesKey } from './scripts/utilities.js';
27
+ import { MapSvgSpriteColor} from '@abi-software/svg-sprite';
28
+ import { initialState } from "./scripts/utilities.js";
29
+ import {
30
+ ElLoading as Loading
31
+ } from "element-plus";
32
+
33
+ /**
34
+ * Content of the app. More work flows will be added here.
35
+ */
36
+ export default {
37
+ name: "MapContent",
38
+ components: {
39
+ MapSvgSpriteColor,
40
+ Loading,
41
+ SplitFlow,
42
+ },
43
+ props: {
44
+ /**
45
+ * A link (URL) to share.
46
+ */
47
+ shareLink: {
48
+ type: String,
49
+ default: undefined
50
+ },
51
+ /**
52
+ * State containing state of the scaffold.
53
+ */
54
+ state: {
55
+ type: Object,
56
+ default: undefined
57
+ },
58
+ /**
59
+ * The options include APIs and Keys.
60
+ */
61
+ options: {
62
+ type: Object,
63
+ default: () => {},
64
+ required: true
65
+ },
66
+ /**
67
+ * New option to start the map in AC, FC or WholeBody.
68
+ */
69
+ startingMap: {
70
+ type: String,
71
+ default: "AC"
72
+ }
73
+ },
74
+ data: function () {
75
+ return {
76
+ isReady: false,
77
+ initialState: undefined,
78
+ }
79
+ },
80
+ methods: {
81
+ /**
82
+ * @vuese
83
+ * Function to check whether it is in fullscreen mode or not.
84
+ *
85
+ */
86
+ isFullscreen: function(){
87
+ return (document.fullscreenElement || document.webkitFullscreenElement ||
88
+ document.mozFullScreenElement || document.msFullscreenElement )
89
+ },
90
+ /**
91
+ * @vuese
92
+ * Function to toggle fullscreen.
93
+ * @arg fullscreenRequest
94
+ */
95
+ onFullscreen: function(fullscreenReq) {
96
+ //If a request is sent, try it
97
+ if (fullscreenReq !== undefined){
98
+ if (fullscreenReq && !this.isFullscreen()){
99
+ this.goFullscreen()
100
+ }
101
+ if(!fullscreenReq && this.isFullscreen()){
102
+ this.leaveFullscreen()
103
+ }
104
+ }
105
+ // Else we toggle fullscreen
106
+ else{
107
+ if(this.isFullscreen()){
108
+ this.leaveFullscreen()
109
+ } else {
110
+ this.goFullscreen()
111
+ }
112
+ }
113
+ },
114
+ /**
115
+ * @vuese
116
+ * Function to leave fullscreen mode.
117
+ */
118
+ leaveFullscreen: function(){
119
+ if (this.isFullscreen()) {
120
+ if (document.exitFullscreen) {
121
+ document.exitFullscreen();
122
+ } else if (document.mozCancelFullScreen) { /* Firefox */
123
+ document.mozCancelFullScreen();
124
+ } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */
125
+ document.webkitExitFullscreen();
126
+ } else if (document.msExitFullscreen) { /* IE/Edge */
127
+ document.msExitFullscreen();
128
+ }
129
+ }
130
+ },
131
+ /**
132
+ * @vuese
133
+ * Function to go to fullscreen mode.
134
+ */
135
+ goFullscreen: function(){
136
+ let mapApp = this.$refs.MapApp;
137
+ if (mapApp.requestFullscreen) {
138
+ mapApp.requestFullscreen();
139
+ } else if (mapApp.mozRequestFullScreen) { /* Firefox */
140
+ mapApp.mozRequestFullScreen();
141
+ } else if (mapApp.webkitRequestFullscreen) { /* Chrome, Safari and Opera */
142
+ mapApp.webkitRequestFullscreen();
143
+ } else if (parent.msRequestFullscreen) { /* IE/Edge */
144
+ mapApp.msRequestFullscreen();
145
+ }
146
+ },
147
+ setState: function(state){
148
+ return this.$refs.flow.setState(state);
149
+ },
150
+ getState: function(){
151
+ return this.$refs.flow.getState();
152
+ },
153
+ /**
154
+ * @vuese
155
+ * Provide a way to set the current view, this is currently limited
156
+ * to setting view for flatmapm, multiflatmap or scaffold.
157
+ * In the case of the multiflatmap, it will not create a new entry and
158
+ * instead change the current entry by setting the state.
159
+ * @arg state
160
+ */
161
+ setCurrentEntry: function(state) {
162
+ if (state && state.type) {
163
+ if (state.type === "Scaffold" && state.url) {
164
+ //State for scaffold containing the following items:
165
+ // label - Setting the name of the dialog
166
+ // region - Which region/group currently focusing on
167
+ // resource - the url to metadata
168
+ // state - state to restore (viewport)
169
+ // viewUrl - relative path of the view file to metadata
170
+ const newView = {
171
+ type: state.type,
172
+ label: state.label,
173
+ region: state.region,
174
+ resource: state.url,
175
+ state: state.state,
176
+ viewUrl: state.viewUrl
177
+ };
178
+ this.$refs.flow.createNewEntry(newView);
179
+ } else if (state.type === "MultiFlatmap") {
180
+ //State for scaffold containing the following items:
181
+ // label - Setting the name of the dialog
182
+ // taxo - taxo of species to set
183
+ // biologicalSex - biological sex to be displayed (PATO)
184
+ // organ - Target organ, flatmap will conduct a local search
185
+ // using this
186
+
187
+ //Look for the key in the available species array,
188
+ //it will use the taxo and biologicalSex as hints.
189
+ const key = findSpeciesKey(state);
190
+ if (key) {
191
+ const currentState = this.getState();
192
+ if (currentState && currentState.entries) {
193
+ for (let i = 0; i < currentState.entries.length; i++) {
194
+ const entry = currentState.entries[i];
195
+ if (entry.type === "MultiFlatmap") {
196
+ entry.resource = key;
197
+ entry.state = {species: key};
198
+ if (state.organ || state.uuid) {
199
+ entry.state.state = { searchTerm: state.organ, uuid: state.uuid };
200
+ //if it contains an uuid, use the taxo to help identify if the uuid
201
+ //is current
202
+ if (state.uuid) entry.state.state.entry = state.taxo;
203
+ }
204
+ this.$refs.flow.setState(currentState);
205
+ //Do not create a new entry, instead set the multiflatmap viewer
206
+ //to the primary slot
207
+ this.$refs.flow.setIdToPrimaryPane(entry.id);
208
+ break;
209
+ }
210
+ }
211
+ }
212
+ }
213
+ }
214
+ else if (state.type === "Flatmap") {
215
+ //State for scaffold containing the following items:
216
+ // label - Setting the name of the dialog
217
+ // region - Which region/group currently focusing on
218
+ // resource - the url to metadata
219
+ // state - state to restore (viewport)
220
+ // viewUrl - relative path of the view file to metadata
221
+ const newView = {
222
+ type: state.type,
223
+ resource: state.resource,
224
+ state: state.state,
225
+ label: state.label
226
+ };
227
+ this.$refs.flow.createNewEntry(newView);
228
+ }
229
+ }
230
+ },
231
+ /**
232
+ * @vuese
233
+ * Open the sidebar with the specified facets and query.
234
+ * @arg facets, query
235
+ */
236
+ openSearch: function(facets, query) {
237
+ return this.$refs.flow.openSearch(facets, query);
238
+ },
239
+ /**
240
+ * @vuese
241
+ * Function to run when the component is mounted.
242
+ */
243
+ flowMounted: function () {
244
+ this._flowMounted = true;
245
+ /**
246
+ * This event emit when the component is mounted.
247
+ */
248
+ this.$emit("isReady");
249
+ },
250
+ },
251
+ computed: {
252
+ ...mapStores(useSettingsStore),
253
+ stateToSet() {
254
+ return this.state ? this.state : this.initialState;
255
+ },
256
+ },
257
+ watch: {
258
+ "shareLink" : {
259
+ handler: function (newLink) {
260
+ this.settingsStore.updateShareLink(newLink);
261
+ },
262
+ immediate: true,
263
+ },
264
+ },
265
+ beforeMount: function() {
266
+ if (this.options) {
267
+ // Split options prop up to commit to the store
268
+ this.options.sparcApi ? this.settingsStore.updateSparcAPI(this.options.sparcApi) : null
269
+ this.options.algoliaIndex ? this.settingsStore.updateAlgoliaIndex(this.options.algoliaIndex) : null
270
+ this.options.algoliaKey ? this.settingsStore.updateAlgoliaKey(this.options.algoliaKey) : null
271
+ this.options.algoliaId ? this.settingsStore.updateAlgoliaId(this.options.algoliaId) : null
272
+ this.options.pennsieveApi ? this.settingsStore.updatePennsieveApi(this.options.pennsieveApi) : null
273
+ this.options.flatmapAPI ? this.settingsStore.updateFlatmapAPI(this.options.flatmapAPI) : null,
274
+ this.options.nlLinkPrefix ? this.settingsStore.updateNLLinkPrefix(this.options.nlLinkPrefix) : null
275
+ this.options.rootUrl ? this.settingsStore.updateRootUrl(this.options.rootUrl) : null
276
+ }
277
+ },
278
+ mounted: async function() {
279
+ EventBus.on("updateShareLinkRequested", () => {
280
+ /**
281
+ * This event emits when the share link is requested.
282
+ */
283
+ this.$emit("updateShareLinkRequested");
284
+ });
285
+ if (!this.state) {
286
+ this.initialState = await initialState(this.startingMap, this.options.sparcApi);
287
+ }
288
+ this.isReady = true;
289
+ }
290
+ }
291
+
292
+ </script>
293
+
294
+ <style scoped lang="scss">
295
+
296
+ :deep(.el-loading-spinner) {
297
+ .path {
298
+ stroke: $app-primary-color;
299
+ }
300
+ .el-loading-text {
301
+ color: $app-primary-color;
302
+ }
303
+ }
304
+
305
+ .map-help-dialog {
306
+ position: fixed;
307
+ z-index: 20;
308
+ bottom: 30px;
309
+ right: 30px;
310
+ }
311
+
312
+ .mapcontent {
313
+ height: 100%;
314
+ width:100%;
315
+ z-index:1;
316
+ }
317
+
318
+ </style>
319
+
320
+ <style lang="scss">
321
+
322
+ .mapcontent {
323
+ --el-color-primary: #8300BF;
324
+ --el-color-primary-light-7: #dab3ec;
325
+ --el-color-primary-light-8: #e6ccf2;
326
+ --el-color-primary-light-9: #f3e6f9;
327
+ }
328
+
334
329
  </style>