@abi-software/scaffoldvuer 1.21.1-beta.2 → 2.0.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 (45) hide show
  1. package/README.md +31 -12
  2. package/dist/index.html +9 -6
  3. package/dist/scaffoldvuer.js +14095 -13154
  4. package/dist/scaffoldvuer.umd.cjs +48 -48
  5. package/dist/style.css +1 -1
  6. package/eslint.config.js +37 -9
  7. package/package.json +10 -3
  8. package/public/index.html +9 -6
  9. package/src/App.vue +312 -279
  10. package/src/ScaffoldVuer-wc.js +4 -4
  11. package/src/app/DropZone.vue +11 -27
  12. package/src/app/ModelsInformation.js +22 -19
  13. package/src/app/ModelsTable.vue +42 -65
  14. package/src/app/TextureDemos.js +38 -64
  15. package/src/assets/_variables.scss +12 -10
  16. package/src/components/GlyphsControls.vue +3 -23
  17. package/src/components/LinesControls.vue +27 -66
  18. package/src/components/OpacityControls.vue +22 -26
  19. package/src/components/PointsControls.vue +20 -71
  20. package/src/components/PrimitiveControls.vue +35 -49
  21. package/src/components/ScaffoldOverlay.vue +63 -63
  22. package/src/components/ScaffoldTooltip.vue +36 -49
  23. package/src/components/ScaffoldTreeControls.vue +81 -129
  24. package/src/components/ScaffoldVuer.vue +509 -498
  25. package/src/components/TextureSlidesControls.vue +22 -64
  26. package/src/components/TransformationControls.vue +15 -42
  27. package/src/components/index.js +2 -2
  28. package/src/main.js +16 -18
  29. package/src/scripts/Annotation.js +3 -3
  30. package/src/scripts/BaseModule.js +26 -30
  31. package/src/scripts/EventNotifier.js +30 -36
  32. package/src/scripts/GraphicsHighlight.js +43 -50
  33. package/src/scripts/LocalFilesHelper.js +27 -26
  34. package/src/scripts/MappedNerves.js +2139 -697
  35. package/src/scripts/MappedOrgans.js +24 -25
  36. package/src/scripts/OrgansRenderer.js +445 -425
  37. package/src/scripts/RendererModule.js +133 -122
  38. package/src/scripts/Search.js +135 -151
  39. package/src/scripts/Utilities.js +129 -127
  40. package/src/scripts/WebGL.js +57 -91
  41. package/src/scripts/niftiHelper.js +3 -3
  42. package/src/store/index.js +7 -7
  43. package/vite.config.js +51 -50
  44. package/vite.static-build.js +7 -7
  45. package/vuese-generator.js +48 -56
@@ -1,14 +1,14 @@
1
- import Vue from 'vue'
1
+ import Vue from 'vue';
2
2
  import vueCustomElement from 'vue-custom-element';
3
3
 
4
4
  Vue.use(vueCustomElement);
5
5
 
6
- import ScaffoldVuer from "./components/ScaffoldVuer.vue";
6
+ import ScaffoldVuer from './components/ScaffoldVuer.vue';
7
7
 
8
- Vue.customElement("scaffoldvuer-wc", ScaffoldVuer);
8
+ Vue.customElement('scaffoldvuer-wc', ScaffoldVuer);
9
9
 
10
10
  /*
11
11
  const wrappedElement = wrap(Vue, ScaffoldVuer);
12
12
 
13
13
  window.customElements.define("scaffoldvuer-wc", wrappedElement);
14
- */
14
+ */
@@ -1,30 +1,17 @@
1
1
  <template>
2
- <div
3
- ref="dropEl"
4
- class="dropzone"
5
- >
2
+ <div ref="dropEl" class="dropzone">
6
3
  <slot />
7
- <input
8
- ref="fileInput"
9
- type="file"
10
- >
4
+ <input ref="fileInput" type="file" />
11
5
  </div>
12
6
  </template>
13
7
 
14
8
  <script>
15
- /* eslint-disable no-alert, no-console */
16
9
  import { markRaw } from 'vue';
17
- import { SimpleDropzone } from "simple-dropzone";
18
- import { createURLFromFiles } from "../scripts/LocalFilesHelper.js";
19
-
20
- const getJSON = async (URL) => {
21
- return fetch(URL)
22
- .then((response) => response.json())
23
- .then((responseJson) => {return responseJson});
24
- }
10
+ import { SimpleDropzone } from 'simple-dropzone';
11
+ import { createURLFromFiles } from '../scripts/LocalFilesHelper.js';
25
12
 
26
13
  export default {
27
- name: "DropZone",
14
+ name: 'DropZone',
28
15
  data: function () {
29
16
  return {
30
17
  objectURLs: markRaw([]),
@@ -32,20 +19,17 @@ export default {
32
19
  };
33
20
  },
34
21
  mounted: function () {
35
- const dropCtrl = new SimpleDropzone(
36
- this.$refs.dropEl,
37
- this.$refs.fileInput
38
- );
39
- dropCtrl.on("drop", ({ files }) => {
22
+ const dropCtrl = new SimpleDropzone(this.$refs.dropEl, this.$refs.fileInput);
23
+ dropCtrl.on('drop', ({ files }) => {
40
24
  this.localDrop(files);
41
25
  });
42
26
  },
43
27
  methods: {
44
- findRealFilename: function(objectURL) {
45
- return this.filesMapping[objectURL]
28
+ findRealFilename: function (objectURL) {
29
+ return this.filesMapping[objectURL];
46
30
  },
47
31
  revokeURLs: function () {
48
- this.objectURLs.forEach(objectURL => URL.revokeObjectURL(objectURL));
32
+ this.objectURLs.forEach((objectURL) => URL.revokeObjectURL(objectURL));
49
33
  this.objectURLs.length = 0;
50
34
  this.filesMapping = markRaw({});
51
35
  },
@@ -61,7 +45,7 @@ export default {
61
45
  Object.assign(this.filesMapping, data.filesMapping);
62
46
  }
63
47
  if (data.format && data.url) {
64
- this.$emit("files-drop", { url: data.url, format : data.format } );
48
+ this.$emit('files-drop', { url: data.url, format: data.format });
65
49
  }
66
50
  }
67
51
  },
@@ -26,38 +26,41 @@ export default async function(keywords, spreadsheet_id, service_email, service_k
26
26
  }
27
27
  */
28
28
 
29
- export default async function(keywords, spreadsheet_id) {
29
+ export default async function (keywords, spreadsheet_id) {
30
30
  const gid = '0';
31
- const response = await fetch(`https://docs.google.com/spreadsheets/d/${spreadsheet_id}/gviz/tq?tqx=out:json&tq&gid=${gid}`);
31
+ const response = await fetch(
32
+ `https://docs.google.com/spreadsheets/d/${spreadsheet_id}/gviz/tq?tqx=out:json&tq&gid=${gid}`,
33
+ );
32
34
  const txt = await response.text();
33
35
 
34
36
  const jsonString = txt.match(/(?<="table":).*(?=}\);)/g)[0];
35
37
  const json = JSON.parse(jsonString);
36
38
  const tableData = [];
37
39
  const labelRow = [];
38
- json.cols.forEach(colonne => labelRow.push(colonne.label));
40
+ json.cols.forEach((colonne) => labelRow.push(colonne.label));
39
41
  const keywordsIndex = [];
40
- keywords.forEach(key => keywordsIndex.push(labelRow.indexOf(key)));
42
+ keywords.forEach((key) => keywordsIndex.push(labelRow.indexOf(key)));
41
43
  const rawTable = [];
42
- json.rows.forEach(r => {
43
- const row = []
44
- r.c.forEach(cel => {
45
- let value = '';
46
- try{value = cel.f ? cel.f : cel.v}
47
- catch(e){value = ''}
48
- row.push(value)
49
- })
50
- rawTable.push(row)
51
- })
52
- rawTable.forEach(row => {
44
+ json.rows.forEach((r) => {
45
+ const row = [];
46
+ r.c.forEach((cel) => {
47
+ let value;
48
+ try {
49
+ value = cel.f ? cel.f : cel.v;
50
+ } catch (_e) {
51
+ value = '';
52
+ }
53
+ row.push(value);
54
+ });
55
+ rawTable.push(row);
56
+ });
57
+ rawTable.forEach((row) => {
53
58
  const mappedData = {};
54
- keywordsIndex.forEach(index => {
59
+ keywordsIndex.forEach((index) => {
55
60
  mappedData[labelRow[index]] = row[index];
56
-
57
61
  });
58
62
  tableData.push(mappedData);
59
63
  });
60
-
61
64
 
62
- return tableData
65
+ return tableData;
63
66
  }
@@ -1,51 +1,26 @@
1
1
  <template>
2
2
  <div>
3
- <el-input
4
- v-model="search"
5
- size="small"
6
- placeholder="Type to search"
7
- />
3
+ <el-input v-model="search" size="small" placeholder="Type to search" />
8
4
  <el-table
9
- :data="tableData.filter(
10
- data => !search ||
11
- data.Organ.toLowerCase().includes(search.toLowerCase()) ||
12
- data.Species.toLowerCase().includes(search.toLowerCase()) ||
13
- data.Note.toLowerCase().includes(search.toLowerCase()))"
14
- style="width: 100%;"
5
+ :data="
6
+ tableData.filter(
7
+ (data) =>
8
+ !search ||
9
+ data.Organ.toLowerCase().includes(search.toLowerCase()) ||
10
+ data.Species.toLowerCase().includes(search.toLowerCase()) ||
11
+ data.Note.toLowerCase().includes(search.toLowerCase()),
12
+ )
13
+ "
14
+ style="width: 100%"
15
15
  height="600"
16
16
  >
17
- <el-table-column
18
- prop="Organ"
19
- label="Organ"
20
- width="100"
21
- />
22
- <el-table-column
23
- prop="Species"
24
- label="Species"
25
- width="100"
26
- />
27
- <el-table-column
28
- prop="Note"
29
- label="Note"
30
- width="200"
31
- />
32
- <el-table-column
33
- prop="Last modified"
34
- label="Last modified"
35
- width="250"
36
- />
37
- <el-table-column
38
- fixed="right"
39
- label="Action"
40
- width="300"
41
- >
17
+ <el-table-column prop="Organ" label="Organ" width="100" />
18
+ <el-table-column prop="Species" label="Species" width="100" />
19
+ <el-table-column prop="Note" label="Note" width="200" />
20
+ <el-table-column prop="Last modified" label="Last modified" width="250" />
21
+ <el-table-column fixed="right" label="Action" width="300">
42
22
  <template #default="scope">
43
- <el-button
44
- size="small"
45
- @click="handleView(scope.row)"
46
- >
47
- View
48
- </el-button>
23
+ <el-button size="small" @click="handleView(scope.row)">View</el-button>
49
24
  <el-button
50
25
  v-if="scope.row.Discover !== 'Not even'"
51
26
  size="small"
@@ -61,33 +36,35 @@
61
36
  Blackfynn
62
37
  </el-button>
63
38
  </template>
64
- </el-table-column>
39
+ </el-table-column>
65
40
  </el-table>
66
41
  </div>
67
42
  </template>
68
43
 
69
44
  <script>
70
- /* eslint-disable no-alert, no-console */
71
- import getTableData from "./ModelsInformation.js";
45
+ import getTableData from './ModelsInformation.js';
72
46
 
73
- import {
47
+ import {
74
48
  ElButton as Button,
75
49
  ElInput as Input,
76
50
  ElTable as Table,
77
- ElTableColumn as TableColumn
78
- } from "element-plus";
51
+ ElTableColumn as TableColumn,
52
+ } from 'element-plus';
79
53
 
80
54
  export default {
81
- name: "ModelsTable",
82
- components: [
83
- Button,
84
- Input,
85
- Table,
86
- TableColumn
87
- ],
55
+ name: 'ModelsTable',
56
+ components: [Button, Input, Table, TableColumn],
88
57
  async setup() {
89
- const keywords = ["Organ", "Species", "Note", "Location",
90
- "Last modified","Blackfynn dataset", "Published", "Discover"];
58
+ const keywords = [
59
+ 'Organ',
60
+ 'Species',
61
+ 'Note',
62
+ 'Location',
63
+ 'Last modified',
64
+ 'Blackfynn dataset',
65
+ 'Published',
66
+ 'Discover',
67
+ ];
91
68
  const spreadsheet_id = import.meta.env.VITE_GOOGLE_SPREADSHEET_ID;
92
69
  const service_email = import.meta.env.VITE_GOOGLE_SERVICE_SCAFFOLDVUER_EMAIL;
93
70
  const service_key = import.meta.env.VITE_GOOGLE_PRIVATE_SCAFFOLDVUER_KEY;
@@ -97,18 +74,18 @@ export default {
97
74
  data() {
98
75
  return {
99
76
  search: '',
100
- }
77
+ };
101
78
  },
102
79
  methods: {
103
- handleView: function(row) {
104
- this.$emit("viewModelClicked", row.Location);
80
+ handleView: function (row) {
81
+ this.$emit('viewModelClicked', row.Location);
105
82
  },
106
- handleDiscover: function(row) {
107
- window.open(row.Discover, "_blank");
83
+ handleDiscover: function (row) {
84
+ window.open(row.Discover, '_blank');
108
85
  },
109
- handleBlackfynn: function(row) {
110
- window.open(row['Blackfynn dataset'], "_blank");
86
+ handleBlackfynn: function (row) {
87
+ window.open(row['Blackfynn dataset'], '_blank');
111
88
  },
112
- }
89
+ },
113
90
  };
114
91
  </script>
@@ -1,11 +1,11 @@
1
- import * as volumeTexture from "zincjs/src/shaders/volumeTexture.js";
1
+ import * as volumeTexture from 'zincjs/src/shaders/volumeTexture.js';
2
2
 
3
3
  const getVolumeTexture = (texture) => {
4
4
  const myUniforms = volumeTexture.getUniforms();
5
5
  myUniforms.volume_scale.value.set(
6
6
  texture.size.width / texture.size.depth,
7
7
  texture.size.height / texture.size.depth,
8
- 1
8
+ 1,
9
9
  );
10
10
  myUniforms.diffuse.value = texture.impl;
11
11
  myUniforms.depth.value = texture.size.depth;
@@ -33,7 +33,7 @@ const getTexture = async (scaffoldModule, texture_prefix) => {
33
33
  export const testVolume = async (scaffoldVuer, texture_prefix) => {
34
34
  const cube = new scaffoldVuer.$module.Zinc.THREE.BoxGeometry(1, 1, 1);
35
35
  const zincObject = new scaffoldVuer.$module.Zinc.Geometry();
36
- zincObject.setName("Texture volume");
36
+ zincObject.setName('Texture volume');
37
37
  cube.translate(0.5, 0.5, 0.5);
38
38
  let meshOptions = {};
39
39
  meshOptions.opacity = 1.0;
@@ -44,70 +44,53 @@ export const testVolume = async (scaffoldVuer, texture_prefix) => {
44
44
  const material = texture.getMaterial(options);
45
45
  zincObject.createMesh(cube, material, meshOptions);
46
46
  scaffoldVuer.addZincObject(zincObject);
47
- zincObject.getMorph().matrix.set(
48
- -100,
49
- 0,
50
- 0,
51
- -60,
52
- 0,
53
- -100,
54
- 0,
55
- -100,
56
- 0,
57
- 0,
58
- -100,
59
- 30,
60
- 0,
61
- 0,
62
- 0,
63
- 1
64
- );
47
+ zincObject.getMorph().matrix.set(-100, 0, 0, -60, 0, -100, 0, -100, 0, 0, -100, 30, 0, 0, 0, 1);
65
48
  window.texture = zincObject;
66
49
  };
67
50
 
68
- const addCylinder = (scaffoldVuer) => {
69
- const THREE = scaffoldVuer.$module.Zinc.THREE;
70
- const cylinderGeometry = new THREE.CylinderGeometry(50, 50, 200,80);
71
- const material = new THREE.MeshPhongMaterial( {color: 0xffff00, side : THREE.DoubleSide} );
72
- const cylinderMesh = new THREE.Mesh( cylinderGeometry, material );
73
- const zincGeometry = new scaffoldVuer.$module.Zinc.Geometry();
74
- zincGeometry.setMesh(cylinderMesh, false, false);
75
- zincGeometry.setName("Cylinder");
76
- scaffoldVuer.addZincObject(zincGeometry);
77
- }
51
+ // const addCylinder = (scaffoldVuer) => {
52
+ // const THREE = scaffoldVuer.$module.Zinc.THREE;
53
+ // const cylinderGeometry = new THREE.CylinderGeometry(50, 50, 200, 80);
54
+ // const material = new THREE.MeshPhongMaterial({ color: 0xffff00, side: THREE.DoubleSide });
55
+ // const cylinderMesh = new THREE.Mesh(cylinderGeometry, material);
56
+ // const zincGeometry = new scaffoldVuer.$module.Zinc.Geometry();
57
+ // zincGeometry.setMesh(cylinderMesh, false, false);
58
+ // zincGeometry.setName('Cylinder');
59
+ // scaffoldVuer.addZincObject(zincGeometry);
60
+ // };
78
61
 
79
62
  export const testSlides = async (scaffoldVuer, texture_prefix) => {
80
63
  const scaffoldModule = scaffoldVuer.$module;
81
64
  const texture = await getTexture(scaffoldModule, texture_prefix);
82
65
  const textureSlides = new scaffoldModule.Zinc.TextureSlides(texture);
83
- textureSlides.setName("Texture slides");
66
+ textureSlides.setName('Texture slides');
84
67
  textureSlides.createSlides([
85
68
  {
86
- direction: "y",
69
+ direction: 'y',
87
70
  value: 0.1,
88
71
  },
89
72
  {
90
- direction: "y",
73
+ direction: 'y',
91
74
  value: 0.3,
92
75
  },
93
76
  {
94
- direction: "y",
77
+ direction: 'y',
95
78
  value: 0.5,
96
79
  },
97
80
  {
98
- direction: "y",
81
+ direction: 'y',
99
82
  value: 0.7,
100
83
  },
101
84
  {
102
- direction: "y",
85
+ direction: 'y',
103
86
  value: 0.9,
104
87
  },
105
88
  {
106
- direction: "x",
89
+ direction: 'x',
107
90
  value: 0.5,
108
91
  },
109
92
  {
110
- direction: "z",
93
+ direction: 'z',
111
94
  value: 0.5,
112
95
  },
113
96
  ]);
@@ -125,25 +108,24 @@ export const testSlides = async (scaffoldVuer, texture_prefix) => {
125
108
 
126
109
  const padNumber = (number) => {
127
110
  let string = number.toString();
128
- while(string.length < 4) {
129
- string = "0" + string;
111
+ while (string.length < 4) {
112
+ string = '0' + string;
130
113
  }
131
114
  return string;
132
- }
115
+ };
133
116
 
134
117
  const getArmTexture = async (scaffoldModule) => {
135
118
  const imgArray = [];
136
- const prefix = "https://mapcore-bucket1.s3.us-west-2.amazonaws.com/texture/arm1/jpg";
119
+ const prefix = 'https://mapcore-bucket1.s3.us-west-2.amazonaws.com/texture/arm1/jpg';
137
120
  const texture = new scaffoldModule.Zinc.TextureArray();
138
121
  for (let i = 984; i <= 2184;) {
139
122
  imgArray.push(`${prefix}/${padNumber(i)}.jpg`);
140
- i = i + 10 ;
123
+ i = i + 10;
141
124
  }
142
125
  await texture.loadFromImages(imgArray);
143
126
  return texture;
144
127
  };
145
128
 
146
-
147
129
  /*
148
130
  {
149
131
  "id": "mesh-location-orientation",
@@ -162,8 +144,8 @@ const getArmTexture = async (scaffoldModule) => {
162
144
  */
163
145
 
164
146
  //https://threejs.org/docs/#manual/en/introduction/Matrix-transformations
165
- const applyTransformation = (scaffoldVuer, mesh, rotation, position, scale, reference) => {
166
- //if (reference === "centre") {
147
+ const applyTransformation = (scaffoldVuer, mesh, rotation, position, scale, _reference) => {
148
+ //if (_reference === "centre") {
167
149
  // mesh.geometry.translate(-0.5, -0.5, -0.5);
168
150
  //}
169
151
  const THREE = scaffoldVuer.$module.Zinc.THREE;
@@ -184,48 +166,40 @@ const applyTransformation = (scaffoldVuer, mesh, rotation, position, scale, refe
184
166
  0,
185
167
  0,
186
168
  0,
187
- 0
169
+ 0,
188
170
  );
189
171
  const quaternion = new THREE.Quaternion().setFromRotationMatrix(matrix);
190
172
  mesh.position.set(...position);
191
- mesh.quaternion.copy( quaternion );
173
+ mesh.quaternion.copy(quaternion);
192
174
  mesh.scale.set(...scale);
193
175
  mesh.updateMatrix();
194
- }
195
-
196
-
176
+ };
197
177
 
198
178
  export const testArmSlides = async (scaffoldVuer) => {
199
179
  const scaffoldModule = scaffoldVuer.$module;
200
180
  const texture = await getArmTexture(scaffoldModule);
201
181
  const textureSlides = new scaffoldModule.Zinc.TextureSlides(texture);
202
- textureSlides.setName("Arm texture");
182
+ textureSlides.setName('Arm texture');
203
183
  textureSlides.createSlides([
204
184
  {
205
- direction: "x",
185
+ direction: 'x',
206
186
  value: 0.5,
207
187
  },
208
188
  {
209
- direction: "y",
189
+ direction: 'y',
210
190
  value: 0.5,
211
191
  },
212
192
  {
213
- direction: "z",
193
+ direction: 'z',
214
194
  value: 0.5,
215
195
  },
216
196
  ]);
217
197
 
218
- const rotation = [
219
- 0, 0, 1,
220
- 0, 1, 0,
221
- -1, 0, 0
222
- ];
198
+ const rotation = [0, 0, 1, 0, 1, 0, -1, 0, 0];
223
199
  const position = [0, -1.0, 0.95];
224
200
  const scale = [1.6, 1.6, 1.2];
225
- const reference = "corner";
201
+ const reference = 'corner';
226
202
  applyTransformation(scaffoldVuer, textureSlides.morph, rotation, position, scale, reference);
227
203
  scaffoldVuer.addZincObject(textureSlides);
228
204
  scaffoldVuer.fitWindow();
229
205
  };
230
-
231
-
@@ -1,15 +1,15 @@
1
1
  // Primary colors
2
- $purple: #8300BF;
3
- $darkBlue: #24245B;
2
+ $purple: #8300bf;
3
+ $darkBlue: #24245b;
4
4
  $grey: #303133;
5
5
 
6
6
  // Secondary colors
7
- $lightPurple: #BC00FC;
8
- $blue: #0026FF;
7
+ $lightPurple: #bc00fc;
8
+ $blue: #0026ff;
9
9
 
10
10
  // Status colors
11
11
  $success: #5e9f69;
12
- $warning: #FF8400;
12
+ $warning: #ff8400;
13
13
  $danger: #b51d09;
14
14
 
15
15
  // Text colors
@@ -18,12 +18,12 @@ $mediumGrey: #606266;
18
18
  $lightGrey: #909399;
19
19
 
20
20
  // Line colors
21
- $lineColor1: #DCDFE6;
22
- $lineColor2: #E4E7ED;
21
+ $lineColor1: #dcdfe6;
22
+ $lineColor2: #e4e7ed;
23
23
 
24
24
  // Background colors
25
- $background: #F5F7FA;
26
- $cochlear: #FFFFFF;
25
+ $background: #f5f7fa;
26
+ $cochlear: #ffffff;
27
27
 
28
28
  //Search box colors
29
29
  $darkGrey: #606266;
@@ -33,7 +33,9 @@ $app-secondary-color: $darkBlue;
33
33
  $text-color: $grey;
34
34
  $input-text: $grey;
35
35
 
36
- $system-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif !important;
36
+ $system-font:
37
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell,
38
+ 'Helvetica Neue', sans-serif !important;
37
39
  $font-family: 'Asap', sans-serif;
38
40
 
39
41
  // Viewport Sizes
@@ -1,33 +1,17 @@
1
1
  <template>
2
2
  <el-container class="glyph-container">
3
- <el-checkbox
4
- v-model="displayLabels"
5
- class="block"
6
- >
7
- Display labels
8
- </el-checkbox>
3
+ <el-checkbox v-model="displayLabels" class="block">Display labels</el-checkbox>
9
4
  </el-container>
10
5
  </template>
11
6
 
12
7
  <script>
13
- /* eslint-disable no-alert, no-console */
14
8
  import { markRaw } from 'vue';
15
- import {
16
- ElCheckbox as Checkbox,
17
- ElContainer as Container,
18
- ElMain as Main,
19
- } from "element-plus";
20
9
 
21
10
  /**
22
11
  * A component to control the opacity of the target object.
23
12
  */
24
13
  export default {
25
- name: "GlyphsControls",
26
- components: {
27
- Checkbox,
28
- Container,
29
- Main,
30
- },
14
+ name: 'GlyphsControls',
31
15
  data: function () {
32
16
  return {
33
17
  displayLabels: true,
@@ -45,7 +29,7 @@ export default {
45
29
  },
46
30
  },
47
31
  methods: {
48
- reset: function() {
32
+ reset: function () {
49
33
  this.displayLabels = true;
50
34
  },
51
35
  setObject: function (object) {
@@ -62,7 +46,6 @@ export default {
62
46
 
63
47
  <!-- Add "scoped" attribute to limit CSS to this component only -->
64
48
  <style scoped lang="scss">
65
-
66
49
  .block {
67
50
  left: 40px;
68
51
  :deep(.el-checkbox__label) {
@@ -75,7 +58,4 @@ export default {
75
58
  height: auto;
76
59
  overflow-y: none;
77
60
  }
78
-
79
-
80
-
81
61
  </style>