@abi-software/scaffoldvuer 0.1.50-beta-1 → 0.1.52-beta.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.
@@ -101,125 +101,69 @@ module.exports = require("element-ui/lib/checkbox-group");
101
101
 
102
102
  /***/ }),
103
103
 
104
- /***/ "0cf4":
104
+ /***/ "0676":
105
105
  /***/ (function(module, exports) {
106
106
 
107
- module.exports = require("element-ui/lib/theme-chalk/checkbox-group.css");
107
+ function _nonIterableSpread() {
108
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
109
+ }
110
+
111
+ module.exports = _nonIterableSpread;
108
112
 
109
113
  /***/ }),
110
114
 
111
- /***/ "0de2":
112
- /***/ (function(module, exports) {
115
+ /***/ "09a4":
116
+ /***/ (function(module, exports, __webpack_require__) {
113
117
 
114
- module.exports = require("element-ui/lib/select");
118
+ // extracted by mini-css-extract-plugin
115
119
 
116
120
  /***/ }),
117
121
 
118
- /***/ "0fe2":
122
+ /***/ "0cf4":
119
123
  /***/ (function(module, exports) {
120
124
 
121
- module.exports = require("element-ui/lib/theme-chalk/select.css");
125
+ module.exports = require("element-ui/lib/theme-chalk/checkbox-group.css");
122
126
 
123
127
  /***/ }),
124
128
 
125
- /***/ "10c9":
129
+ /***/ "0de2":
126
130
  /***/ (function(module, exports) {
127
131
 
128
- /**
129
- * @author alteredq / http://alteredqualia.com/
130
- * @author mr.doob / http://mrdoob.com/
131
- */
132
-
133
- exports.WEBGL = {
134
-
135
- isWebGLAvailable: function () {
136
-
137
- try {
138
-
139
- var canvas = document.createElement( 'canvas' );
140
- return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
141
-
142
- } catch ( e ) {
143
-
144
- return false;
145
-
146
- }
147
-
148
- },
149
-
150
- isWebGL2Available: function () {
151
-
152
- try {
153
-
154
- var canvas = document.createElement( 'canvas' );
155
- return !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );
156
-
157
- } catch ( e ) {
158
-
159
- return false;
160
-
161
- }
162
-
163
- },
164
-
165
- getWebGLErrorMessage: function () {
166
-
167
- return this.getErrorMessage( 1 );
168
-
169
- },
170
-
171
- getWebGL2ErrorMessage: function () {
172
-
173
- return this.getErrorMessage( 2 );
174
-
175
- },
176
-
177
- getErrorMessage: function ( version ) {
132
+ module.exports = require("element-ui/lib/select");
178
133
 
179
- var names = {
180
- 1: 'WebGL',
181
- 2: 'WebGL 2'
182
- };
134
+ /***/ }),
183
135
 
184
- var contexts = {
185
- 1: window.WebGLRenderingContext,
186
- 2: window.WebGL2RenderingContext
187
- };
136
+ /***/ "0fe2":
137
+ /***/ (function(module, exports) {
188
138
 
189
- var message = 'This module requires <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#008">$1</a> support but your $0 does not seem to support it.';
139
+ module.exports = require("element-ui/lib/theme-chalk/select.css");
190
140
 
191
- var element = document.createElement( 'div' );
192
- element.id = 'webglmessage';
193
- element.style.fontFamily = 'monospace';
194
- element.style.fontSize = '20px';
195
- element.style.fontWeight = 'normal';
196
- element.style.textAlign = 'center';
197
- element.style.background = '#fff';
198
- element.style.color = '#000';
199
- element.style.padding = '1.5em';
200
- element.style.width = '400px';
201
- element.style.margin = '5em auto 0';
141
+ /***/ }),
202
142
 
203
- if ( contexts[ version ] ) {
143
+ /***/ "11b0":
144
+ /***/ (function(module, exports, __webpack_require__) {
204
145
 
205
- message = message.replace( '$0', 'graphics card' );
146
+ __webpack_require__("6049");
206
147
 
207
- } else {
148
+ __webpack_require__("51e9");
208
149
 
209
- message = message.replace( '$0', 'browser' );
150
+ __webpack_require__("02ac");
210
151
 
211
- }
152
+ __webpack_require__("e42b");
212
153
 
213
- message = message.replace( '$1', names[ version ] );
154
+ __webpack_require__("8c84");
214
155
 
215
- element.innerHTML = message;
156
+ __webpack_require__("850c");
216
157
 
217
- return element;
158
+ __webpack_require__("907b");
218
159
 
219
- }
160
+ __webpack_require__("1ce0");
220
161
 
221
- };
162
+ function _iterableToArray(iter) {
163
+ if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
164
+ }
222
165
 
166
+ module.exports = _iterableToArray;
223
167
 
224
168
  /***/ }),
225
169
 
@@ -230,13 +174,6 @@ module.exports = require("core-js/modules/es.array.for-each");
230
174
 
231
175
  /***/ }),
232
176
 
233
- /***/ "1823":
234
- /***/ (function(module, exports) {
235
-
236
- module.exports = "precision highp float;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute vec2 uv;\nattribute vec3 position_1;\nattribute vec3 position_2;\nattribute vec2 uv_1;\nattribute vec2 uv_2;\n\nuniform float time;\nuniform float slide_pos;\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\t\n\tvec3 transformed_xi1 = position * vec3(1.0 - time) + position_1 * vec3(time);\n\t\n\tvec3 xi0_time_1 = vec3(position_1.x, position_1.y, 0.0);\n\tvec3 transformed_xi0 = position_2 * vec3(1.0 - time) + xi0_time_1 * vec3(time);\n\n\tvec3 transformed = vec3(transformed_xi0) * vec3(1.0 - slide_pos) + vec3(transformed_xi1) * vec3(slide_pos);\n\t\n\tvec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\n}\n"
237
-
238
- /***/ }),
239
-
240
177
  /***/ "18d2":
241
178
  /***/ (function(module, exports) {
242
179
 
@@ -256,6 +193,17 @@ module.exports = require("element-ui/lib/container");
256
193
 
257
194
  module.exports = require("core-js/modules/web.dom-collections.iterator");
258
195
 
196
+ /***/ }),
197
+
198
+ /***/ "1f67":
199
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
200
+
201
+ "use strict";
202
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_023c058f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("09a4");
203
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_023c058f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_023c058f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
204
+ /* unused harmony reexport * */
205
+
206
+
259
207
  /***/ }),
260
208
 
261
209
  /***/ "1fe8":
@@ -283,10 +231,16 @@ module.exports = require("core-js/modules/es.object.keys");
283
231
 
284
232
  /***/ }),
285
233
 
286
- /***/ "24f0":
234
+ /***/ "2236":
287
235
  /***/ (function(module, exports, __webpack_require__) {
288
236
 
289
- // extracted by mini-css-extract-plugin
237
+ var arrayLikeToArray = __webpack_require__("5a43");
238
+
239
+ function _arrayWithoutHoles(arr) {
240
+ if (Array.isArray(arr)) return arrayLikeToArray(arr);
241
+ }
242
+
243
+ module.exports = _arrayWithoutHoles;
290
244
 
291
245
  /***/ }),
292
246
 
@@ -346,133 +300,47 @@ module.exports = require("element-ui/lib/drawer");
346
300
 
347
301
  /***/ }),
348
302
 
349
- /***/ "3966":
350
- /***/ (function(module, exports, __webpack_require__) {
351
-
352
- var MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };
353
-
354
- var BaseModule = function() {
355
- this.typeName = "Base Module";
356
- this.instanceName = "default";
357
- this.onChangedCallbacks = [];
358
- this.messageFunction = undefined;
359
- /** Notifier handle for informing other modules of any changes **/
360
- this.eventNotifiers = [];
361
- this.broadcastChannels = {};
362
- }
363
-
364
- BaseModule.prototype.setName = function(name) {
365
- if (name && this.instanceName !== name) {
366
- this.instanceName = name;
367
- var callbackArray = this.onChangedCallbacks.slice();
368
- for (var i = 0; i < callbackArray.length; i++) {
369
- callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );
370
- }
371
- }
372
- }
373
-
374
- BaseModule.prototype.addBroadcastChannels = function(ChannelName) {
375
- if (ChannelName in this.broadcastChannels)
376
- return false;
377
- var newChannel = new (__webpack_require__("c45a")).default(ChannelName);
378
- this.broadcastChannels[ChannelName] = newChannel;
379
- return true;
380
- }
381
-
382
- BaseModule.prototype.removeBroadcastChannels = function(ChannelName) {
383
- if (ChannelName in this.broadcastChannels) {
384
- this.broadcastChannels[ChannelName].close();
385
- delete broadcastChannels[ChannelName];
386
- }
387
-
388
- }
303
+ /***/ "3a59":
304
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
389
305
 
390
- BaseModule.prototype.settingsChanged = function() {
391
- var callbackArray = this.onChangedCallbacks.slice();
392
- for (var i = 0; i < callbackArray.length; i++) {
393
- callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );
394
- }
395
- }
306
+ "use strict";
307
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_335c5764_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("4646");
308
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_335c5764_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_335c5764_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
309
+ /* unused harmony reexport * */
396
310
 
397
- BaseModule.prototype.exportSettings = function() {
398
- var settings = {};
399
- settings.dialog = this.typeName;
400
- settings.name = this.instanceName;
401
- return settings;
402
- }
403
311
 
404
- BaseModule.prototype.importSettings = function(settings) {
405
- if (settings.dialog == this.typeName) {
406
- this.setName(settings.name);
407
- return true;
408
- }
409
- return false;
410
- }
312
+ /***/ }),
411
313
 
412
- BaseModule.prototype.publishChanges = function(annotations, eventType) {
413
- for (var i = 0; i < this.eventNotifiers.length; i++) {
414
- this.eventNotifiers[i].publish(this, eventType, annotations);
415
- }
416
- if (eventType === __webpack_require__("549c").EVENT_TYPE.SELECTED) {
417
- if (annotations && annotations[0]) {
418
- var annotation = annotations[0];
419
- var data = {action: "query-data", resource: annotation.data.id, data: annotation.data, sender: this.instanceName};
420
- for (var key in this.broadcastChannels) {
421
- this.broadcastChannels[key].postMessage(data);
422
- }
423
- }
424
- }
425
- }
314
+ /***/ "429c":
315
+ /***/ (function(module, exports) {
426
316
 
427
- BaseModule.prototype.setMessageFunction = function(functionIn) {
428
- this.messageFunction = functionIn;
429
- }
317
+ module.exports = require("@abi-software/svg-sprite");
430
318
 
431
- BaseModule.prototype.displayMessage = function(message) {
432
- if (this.messageFunction)
433
- this.messageFunction(message);
434
- }
319
+ /***/ }),
435
320
 
436
- BaseModule.prototype.getName = function() {
437
- return this.instanceName;
438
- }
321
+ /***/ "448a":
322
+ /***/ (function(module, exports, __webpack_require__) {
439
323
 
440
- BaseModule.prototype.destroy = function() {
441
- //Make a temorary copy as the array may be altered during the loop
442
- var callbackArray = this.onChangedCallbacks.slice();
443
- for (var i = 0; i < callbackArray.length; i++) {
444
- callbackArray[i]( this, MODULE_CHANGE.DESTROYED );
445
- }
324
+ var arrayWithoutHoles = __webpack_require__("2236");
446
325
 
447
- delete this;
448
- }
326
+ var iterableToArray = __webpack_require__("11b0");
449
327
 
450
- BaseModule.prototype.addChangedCallback = function(callback) {
451
- if (this.onChangedCallbacks.includes(callback) == false)
452
- this.onChangedCallbacks.push(callback);
453
- }
328
+ var unsupportedIterableToArray = __webpack_require__("6613");
454
329
 
455
- BaseModule.prototype.removeChangedCallback = function(callback) {
456
- var index = this.onChangedCallbacks.indexOf(callback);
457
- if (index > -1) {
458
- this.onChangedCallbacks.splice(index, 1);
459
- }
460
- }
330
+ var nonIterableSpread = __webpack_require__("0676");
461
331
 
462
- BaseModule.prototype.addNotifier = function(eventNotifier) {
463
- this.eventNotifiers.push(eventNotifier);
332
+ function _toConsumableArray(arr) {
333
+ return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
464
334
  }
465
335
 
466
- exports.BaseModule = BaseModule;
467
- exports.MODULE_CHANGE = MODULE_CHANGE;
468
-
336
+ module.exports = _toConsumableArray;
469
337
 
470
338
  /***/ }),
471
339
 
472
- /***/ "429c":
473
- /***/ (function(module, exports) {
340
+ /***/ "4646":
341
+ /***/ (function(module, exports, __webpack_require__) {
474
342
 
475
- module.exports = require("@abi-software/svg-sprite");
343
+ // extracted by mini-css-extract-plugin
476
344
 
477
345
  /***/ }),
478
346
 
@@ -497,13 +365,6 @@ module.exports = require("lodash/uniq");
497
365
 
498
366
  /***/ }),
499
367
 
500
- /***/ "4e8a":
501
- /***/ (function(module, exports) {
502
-
503
- module.exports = "precision highp float;\nuniform sampler2D myTex;\nvarying vec2 vUv;\n\nvoid main() {\n\tgl_FragColor = texture2D( myTex, vUv );\n\n}\n"
504
-
505
- /***/ }),
506
-
507
368
  /***/ "51c7":
508
369
  /***/ (function(module, exports) {
509
370
 
@@ -525,139 +386,31 @@ module.exports = require("core-js/modules/es.regexp.exec");
525
386
 
526
387
  /***/ }),
527
388
 
528
- /***/ "549c":
529
- /***/ (function(module, exports) {
530
-
531
- var EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };
532
-
533
- var SelectionEvent = function(eventTypeIn, identifiersIn) {
534
- this.eventType = eventTypeIn;
535
- this.identifiers = identifiersIn;
536
- }
537
-
538
- var returnFullID = function(sourceId) {
539
- //return full annotations with all different name
540
- }
541
-
542
- var Subscription = function(subscriberIn, callbackIn, eventType) {
543
- this.targetedID = [];
544
- var subscriber = subscriberIn;
545
- if (eventType === undefined)
546
- this.targetEventType = EVENT_TYPE.ALL;
547
- else
548
- this.targetEventType = eventType;
549
- var callback = callbackIn;
550
-
551
- var _this = this;
552
-
553
- this.getEventType = function() {
554
- return eventType;
555
- }
556
-
557
- this.notify = function(source, eventType, ids) {
558
- if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||
559
- _this.targetEventType === eventType)) {
560
- //should support different type of id e.g lyph, name, fmas...
561
- //need a function that finds all relavant ids
562
- var event = new SelectionEvent(eventType, ids);
563
- callback(event);
564
- }
565
- }
566
- }
567
-
568
- exports.EventNotifier = function() {
569
- var events = [];
570
- var subscriptions = [];
571
- var _this = this;
572
-
573
- this.publish = function(source, eventType, id) {
574
- for (var i = 0; i < subscriptions.length;i++) {
575
- subscriptions[i].notify(source, eventType, id);
576
- }
577
- }
578
-
579
- this.subscribe = function(subscriber, callbackFunction, eventType) {
580
- if (typeof callbackFunction === "function") {
581
- var subscription = new Subscription(subscriber, callbackFunction, eventType);
582
- subscriptions.push(subscription);
583
- return subscription;
584
- }
585
- return undefined;
586
- }
587
-
588
- this.unsubscribe = function(subscription) {
589
- for (var i = 0; i < subscriptions.length;i++) {
590
- if (subscription === subscriptions[i]) {
591
- subscriptions.splice(i, 1);
592
- return;
593
- }
594
- }
595
- }
596
- }
597
-
598
- exports.EVENT_TYPE = EVENT_TYPE;
599
-
600
-
601
- /***/ }),
602
-
603
- /***/ "55ee":
604
- /***/ (function(module, exports) {
605
-
606
- module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
607
-
608
- /***/ }),
609
-
610
- /***/ "5810":
389
+ /***/ "53d7":
611
390
  /***/ (function(module, exports, __webpack_require__) {
612
391
 
613
- // extracted by mini-css-extract-plugin
614
-
615
- /***/ }),
616
-
617
- /***/ "5fef":
618
- /***/ (function(module, exports) {
619
-
620
- module.exports = require("core-js/modules/es.regexp.to-string");
621
-
622
- /***/ }),
623
-
624
- /***/ "6049":
625
- /***/ (function(module, exports) {
626
-
627
- module.exports = require("core-js/modules/es.symbol");
628
-
629
- /***/ }),
630
-
631
- /***/ "642d":
632
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
633
-
634
- "use strict";
635
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7d9b");
636
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
637
- /* unused harmony reexport * */
638
-
392
+ __webpack_require__("ab7e");
639
393
 
640
- /***/ }),
394
+ __webpack_require__("7c81");
641
395
 
642
- /***/ "6579":
643
- /***/ (function(module, exports) {
396
+ __webpack_require__("bcd8");
644
397
 
645
- module.exports = require("core-js/modules/es.array.slice");
398
+ __webpack_require__("2175");
646
399
 
647
- /***/ }),
400
+ __webpack_require__("fd48");
648
401
 
649
- /***/ "67b6":
650
- /***/ (function(module, exports, __webpack_require__) {
402
+ var _typeof = __webpack_require__("7037");
651
403
 
652
- var THREE = __webpack_require__("9206").THREE;
653
- // Current model's associate data, data fields, external link, nerve map
404
+ var THREE = __webpack_require__("9206").THREE; // Current model's associate data, data fields, external link, nerve map
654
405
  // informations,
655
406
  // these are proived in the organsFileMap array.
656
- var OrgansSceneData = function() {
407
+
408
+
409
+ var OrgansSceneData = function OrgansSceneData() {
657
410
  this.currentName = "";
658
411
  this.currentSystem = "";
659
412
  this.currentPart = "";
660
- this.currentSpecies = "";
413
+ this.currentSpecies = "";
661
414
  this.metaURL = "";
662
415
  this.viewURL = "";
663
416
  this.geometries = [];
@@ -666,12 +419,7 @@ var OrgansSceneData = function() {
666
419
  this.pointsets = [];
667
420
  this.currentTime = 0.0;
668
421
  this.timeVarying = false;
669
- // Current model's associate data, data fields, external link, nerve map
670
- // informations,
671
- this.nerveMap = undefined;
672
- this.nerveMapIsActive = false;
673
- }
674
-
422
+ };
675
423
  /**
676
424
  * Viewer of 3D-organs models. Users can toggle on/off different views. Data is
677
425
  * displayed instead if models are not available.
@@ -686,619 +434,927 @@ var OrgansSceneData = function() {
686
434
  * @author Alan Wu
687
435
  * @returns {PJP.OrgansViewer}
688
436
  */
689
- var OrgansViewer = function(ModelsLoaderIn) {
690
- (__webpack_require__("7a89").RendererModule).call(this);
691
- var pickerScene = undefined;
692
- var nerveMapScene = undefined;
693
- this.sceneData = new OrgansSceneData();
694
- var timeChangedCallbacks = new Array();
695
- var sceneChangedCallbacks = new Array();
437
+
438
+
439
+ var OrgansViewer = function OrgansViewer(ModelsLoaderIn) {
440
+ __webpack_require__("8278").RendererModule.call(this);
441
+
442
+ var _this = this;
443
+
444
+ var pickerScene = undefined;
445
+ this.sceneData = new OrgansSceneData();
446
+ var timeChangedCallbacks = new Array();
447
+ var sceneChangedCallbacks = new Array();
696
448
  var organPartAddedCallbacks = new Array();
697
449
  var finishDownloadCallback = undefined;
698
- var layoutUpdateRequiredCallbacks = new Array();
699
- var modelsLoader = ModelsLoaderIn;
700
- var _this = this;
701
- _this.typeName = "Organ Viewer";
702
-
703
- this.getSceneData = function() {
704
- return _this.sceneData;
705
- }
706
-
707
- /**
708
- * Used to update internal timer in scene when time slider has changed.
709
- */
710
- this.updateTime = function(value) {
711
- let duration = 6000;
712
- if (_this.scene)
713
- duration = _this.scene.getDuration();
450
+ var modelsLoader = ModelsLoaderIn;
451
+ _this.typeName = "Organ Viewer";
452
+
453
+ this.getSceneData = function () {
454
+ return _this.sceneData;
455
+ };
456
+ /**
457
+ * Used to update internal timer in scene when time slider has changed.
458
+ */
459
+
460
+
461
+ this.updateTime = function (value) {
462
+ var duration = 6000;
463
+ if (_this.scene) duration = _this.scene.getDuration();
714
464
  var actualTime = value / 100.0 * duration;
715
- if (!_this.sceneData.nerveMapIsActive) {
716
- if (pickerScene)
717
- pickerScene.setMorphsTime(actualTime);
718
- if (_this.scene)
719
- _this.scene.setMorphsTime(actualTime);
720
- } else if (nerveMapScene) {
721
- nerveMapScene.setMorphsTime(actualTime);
722
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
723
- _this.sceneData.nerveMap.additionalReader.setTime(value / 100.0);
724
- }
725
- _this.sceneData.currentTime = value;
726
- }
727
-
728
- /**
729
- * Update the time slider and other renderers/scenes when time has changed.
730
- */
731
- var preRenderTimeUpdate = function() {
732
- let duration = 3000;
733
- if (_this.scene)
734
- duration = _this.scene.getDuration();
735
- var currentTime = _this.zincRenderer.getCurrentTime();
736
- for (var i = 0; i < timeChangedCallbacks.length;i++) {
737
- timeChangedCallbacks[i](currentTime);
738
- }
739
- if (!_this.sceneData.nerveMapIsActive && pickerScene)
740
- pickerScene.setMorphsTime(currentTime);
741
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
742
- _this.sceneData.nerveMap.additionalReader.setTime(currentTime /
743
- duration);
744
- _this.sceneData.currentTime = currentTime / duration * 100.0;
745
- }
746
-
747
- var postRenderSelectedCoordinatesUpdate = function() {
748
- if (_this.selectedCenter) {
749
- const vector = new THREE.Vector3();
750
- vector.copy(_this.selectedCenter);
751
- var coord = _this.scene.vectorToScreenXY(vector);
752
- _this.selectedScreenCoordinates.x = coord.x;
465
+
466
+ if (!_this.sceneData.nerveMapIsActive) {
467
+ if (pickerScene) pickerScene.setMorphsTime(actualTime);
468
+ if (_this.scene) _this.scene.setMorphsTime(actualTime);
469
+ }
470
+
471
+ _this.sceneData.currentTime = value;
472
+ };
473
+ /**
474
+ * Update the time slider and other renderers/scenes when time has changed.
475
+ */
476
+
477
+
478
+ var preRenderTimeUpdate = function preRenderTimeUpdate() {
479
+ var duration = 3000;
480
+ if (_this.scene) duration = _this.scene.getDuration();
481
+
482
+ var currentTime = _this.zincRenderer.getCurrentTime();
483
+
484
+ for (var i = 0; i < timeChangedCallbacks.length; i++) {
485
+ timeChangedCallbacks[i](currentTime);
486
+ }
487
+
488
+ if (!_this.sceneData.nerveMapIsActive && pickerScene) pickerScene.setMorphsTime(currentTime);
489
+ if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setTime(currentTime / duration);
490
+ _this.sceneData.currentTime = currentTime / duration * 100.0;
491
+ };
492
+
493
+ var postRenderSelectedCoordinatesUpdate = function postRenderSelectedCoordinatesUpdate() {
494
+ if (_this.selectedCenter) {
495
+ var vector = new THREE.Vector3();
496
+ vector.copy(_this.selectedCenter);
497
+
498
+ var coord = _this.scene.vectorToScreenXY(vector);
499
+
500
+ _this.selectedScreenCoordinates.x = coord.x;
753
501
  _this.selectedScreenCoordinates.y = coord.y;
754
502
  }
755
- }
756
-
757
- var preRenderUpdateCallback = function() {
758
- return function() {
503
+ };
504
+
505
+ var preRenderUpdateCallback = function preRenderUpdateCallback() {
506
+ return function () {
759
507
  preRenderTimeUpdate();
760
- }
761
- }
762
-
763
- var postRenderUpdateCallback = function() {
764
- return function() {
508
+ };
509
+ };
510
+
511
+ var postRenderUpdateCallback = function postRenderUpdateCallback() {
512
+ return function () {
765
513
  postRenderSelectedCoordinatesUpdate();
766
- }
767
- }
768
-
769
- /**
770
- * Add a callback which will be called when time has changed
771
- */
772
- this.addTimeChangedCallback = function(callback) {
773
- if (typeof(callback === "function"))
774
- timeChangedCallbacks.push(callback);
775
- }
776
-
777
- this.setTexturePos = function(value) {
778
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
779
- _this.sceneData.nerveMap.additionalReader.setSliderPos(value);
780
- }
781
-
782
- this.addLayoutUpdateRequiredCallback = function(callback) {
783
- if (typeof(callback === "function")) {
784
- layoutUpdateRequiredCallbacks.push(callback);
785
- }
786
- }
787
-
788
- this.addSceneChangedCallback = function(callback) {
789
- if (typeof(callback === "function")) {
790
- sceneChangedCallbacks.push(callback);
791
- }
792
- }
793
-
794
- this.addOrganPartAddedCallback = function(callback) {
795
- if (typeof(callback === "function"))
796
- organPartAddedCallbacks.push(callback);
797
- }
514
+ };
515
+ };
516
+ /**
517
+ * Add a callback which will be called when time has changed
518
+ */
798
519
 
799
- this.setFinishDownloadCallback = function(callback) {
800
- if (typeof(callback === "function"))
801
- finishDownloadCallback = callback;
802
- }
803
520
 
804
- this.unsetFinishDownloadCallback = function() {
521
+ this.addTimeChangedCallback = function (callback) {
522
+ if (_typeof(callback === "function")) timeChangedCallbacks.push(callback);
523
+ };
524
+
525
+ this.setTexturePos = function (value) {
526
+ if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setSliderPos(value);
527
+ };
528
+
529
+ this.addSceneChangedCallback = function (callback) {
530
+ if (_typeof(callback === "function")) {
531
+ sceneChangedCallbacks.push(callback);
532
+ }
533
+ };
534
+
535
+ this.addOrganPartAddedCallback = function (callback) {
536
+ if (_typeof(callback === "function")) organPartAddedCallbacks.push(callback);
537
+ };
538
+
539
+ this.setFinishDownloadCallback = function (callback) {
540
+ if (_typeof(callback === "function")) finishDownloadCallback = callback;
541
+ };
542
+
543
+ this.unsetFinishDownloadCallback = function () {
805
544
  finishDownloadCallback = undefined;
806
- }
545
+ };
807
546
 
808
- this.getNamedObjectsToScreenCoordinates = function(name, camera) {
547
+ this.getNamedObjectsToScreenCoordinates = function (name, camera) {
809
548
  var vector = new THREE.Vector3();
810
- vector.setFromMatrixPosition( obj.matrixWorld );
811
- var widthHalf = (width/2);
812
- var heightHalf = (height/2);
549
+ vector.setFromMatrixPosition(obj.matrixWorld);
550
+ var widthHalf = width / 2;
551
+ var heightHalf = height / 2;
813
552
  vector.project(camera);
814
- vector.x = ( vector.x * widthHalf ) + widthHalf;
815
- vector.y = - ( vector.y * heightHalf ) + heightHalf;
553
+ vector.x = vector.x * widthHalf + widthHalf;
554
+ vector.y = -(vector.y * heightHalf) + heightHalf;
816
555
  return vector;
817
- }
556
+ };
818
557
 
819
- var getIdObjectFromIntersect = function(intersected) {
558
+ var getIdObjectFromIntersect = function getIdObjectFromIntersect(intersected) {
820
559
  var id = undefined;
821
560
  var intersectedObject = undefined;
561
+
822
562
  if (intersected !== undefined) {
823
- if (intersected.object.userData &&
824
- intersected.object.userData.isMarker) {
563
+ if (intersected.object.userData && intersected.object.userData.isMarker) {
825
564
  intersectedObject = intersected.object.userData.parent.morph;
826
565
  } else {
827
566
  intersectedObject = intersected.object;
828
567
  }
568
+
829
569
  if (intersectedObject) {
830
570
  if (intersectedObject.name) {
831
571
  id = intersectedObject.name;
832
572
  } else {
833
- var annotations = _this.getAnnotationsFromObjects(
834
- [intersectedObject]);
573
+ var annotations = _this.getAnnotationsFromObjects([intersectedObject]);
574
+
835
575
  if (annotations && annotations[0]) {
836
576
  id = annotations[0].data.group;
837
577
  }
838
578
  }
839
579
  }
840
580
  }
841
- return {"id":id, "object":intersectedObject};
581
+
582
+ return {
583
+ "id": id,
584
+ "object": intersectedObject
585
+ };
586
+ };
587
+ /**
588
+ * Callback function when a pickable object has been picked. It will then
589
+ * call functions in tissueViewer and cellPanel to show corresponding
590
+ * informations.
591
+ *
592
+ * @callback
593
+ */
594
+
595
+
596
+ var _pickingCallback = function _pickingCallback() {
597
+ return function (intersects, window_x, window_y) {
598
+ var intersected = _this.getIntersectedObject(intersects);
599
+
600
+ var idObject = getIdObjectFromIntersect(intersected);
601
+
602
+ if (idObject.id) {
603
+ if (idObject.object.userData.isGlyph) {
604
+ if (idObject.object.name) _this.setSelectedByObjects([idObject.object], true);else _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);
605
+ } else {
606
+ _this.setSelectedByObjects([idObject.object], true);
607
+ }
608
+
609
+ return;
610
+ } else {
611
+ _this.setSelectedByObjects([], true);
612
+ }
613
+ };
614
+ };
615
+ /**
616
+ * Callback function when a pickable object has been hovered over.
617
+ *
618
+ * @callback
619
+ */
620
+
621
+
622
+ var _hoverCallback = function _hoverCallback() {
623
+ return function (intersects, window_x, window_y) {
624
+ var intersected = _this.getIntersectedObject(intersects);
625
+
626
+ var idObject = getIdObjectFromIntersect(intersected);
627
+
628
+ if (idObject.id) {
629
+ _this.displayArea.style.cursor = "pointer";
630
+
631
+ _this.setHighlightedByObjects([idObject.object], true);
632
+
633
+ return;
634
+ } else {
635
+ _this.displayArea.style.cursor = "auto";
636
+
637
+ _this.setHighlightedByObjects([], true);
638
+ }
639
+ };
640
+ };
641
+
642
+ var changeOrganPartsVisibilityForScene = function changeOrganPartsVisibilityForScene(scene, name, value, type) {
643
+ if (type == "all" || type == "geometries") {
644
+ var geometries = scene.findGeometriesWithGroupName(name);
645
+
646
+ for (var i = 0; i < geometries.length; i++) {
647
+ geometries[i].setVisibility(value);
648
+ }
649
+ }
650
+
651
+ if (type == "all" || type == "glyphsets") {
652
+ var glyphsets = scene.findGlyphsetsWithGroupName(name);
653
+
654
+ for (var _i = 0; _i < glyphsets.length; _i++) {
655
+ glyphsets[_i].setVisibility(value);
656
+ }
657
+ }
658
+
659
+ if (type == "all" || type == "pointsets") {
660
+ var pointsets = scene.findPointsetsWithGroupName(name);
661
+
662
+ for (var _i2 = 0; _i2 < pointsets.length; _i2++) {
663
+ pointsets[_i2].setVisibility(value);
664
+ }
665
+ }
666
+
667
+ if (type == "all" || type == "lines") {
668
+ var lines = scene.findLinesWithGroupName(name);
669
+
670
+ for (var _i3 = 0; _i3 < lines.length; _i3++) {
671
+ lines[_i3].setVisibility(value);
672
+ }
673
+ }
674
+ };
675
+ /**
676
+ * Change visibility for parts of the current scene.
677
+ */
678
+
679
+
680
+ this.changeGeometriesVisibility = function (name, value) {
681
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
682
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
683
+ };
684
+ /**
685
+ * Change visibility for parts of the current scene.
686
+ */
687
+
688
+
689
+ this.changeGlyphsetsVisibility = function (name, value) {
690
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
691
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
692
+ };
693
+ /**
694
+ * Change visibility for parts of the current scene.
695
+ */
696
+
697
+
698
+ this.changeLinesVisibility = function (name, value) {
699
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
700
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
701
+ };
702
+ /**
703
+ * Change visibility for parts of the current scene.
704
+ */
705
+
706
+
707
+ this.changePointsetsVisibility = function (name, value) {
708
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
709
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
710
+ };
711
+ /**
712
+ * Change visibility for parts of the current scene.
713
+ */
714
+
715
+
716
+ this.changeOrganPartsVisibility = function (name, value, typeIn) {
717
+ var type = "all";
718
+ if (typeIn !== undefined) type = typeIn;
719
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
720
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
721
+ };
722
+
723
+ this.changeOrganPartsVisibilityCallback = function (name) {
724
+ return function (value) {
725
+ _this.changeOrganPartsVisibility(name, value);
726
+ };
727
+ };
728
+
729
+ this.changeBackgroundColour = function (backgroundColourString) {
730
+ var colour = new THREE.Color(backgroundColourString);
731
+
732
+ if (_this.zincRenderer) {
733
+ var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
734
+
735
+ internalRenderer.setClearColor(colour, 1);
736
+ }
737
+ };
738
+
739
+ var addOrganPartToSceneData = function addOrganPartToSceneData(zincObject) {
740
+ if (zincObject.groupName) {
741
+ if (zincObject.isGeometry) {
742
+ if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
743
+ _this.sceneData.geometries.push(zincObject.groupName);
744
+ }
745
+ } else if (zincObject.isGlyphset) {
746
+ if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
747
+ _this.sceneData.glyphsets.push(zincObject.groupName);
748
+ }
749
+ } else if (zincObject.isLines) {
750
+ if (!_this.sceneData.lines.includes(zincObject.groupName)) {
751
+ _this.sceneData.lines.push(zincObject.groupName);
752
+ }
753
+ } else if (zincObject.isPointset) {
754
+ if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
755
+ _this.sceneData.pointsets.push(zincObject.groupName);
756
+ }
757
+ }
758
+ }
759
+ };
760
+
761
+ var addOrganPart = function addOrganPart(systemName, partName, useDefautColour, zincObject) {
762
+ for (var i = 0; i < organPartAddedCallbacks.length; i++) {
763
+ organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
764
+ }
765
+
766
+ if (useDefautColour) modelsLoader.setGeometryColour(zincObject, systemName, partName);
767
+ addOrganPartToSceneData(zincObject);
768
+ var annotation = new (__webpack_require__("984d").annotation)();
769
+ annotation.data = {
770
+ species: _this.sceneData.currentSpecies,
771
+ system: systemName,
772
+ part: partName,
773
+ group: zincObject.groupName
774
+ };
775
+ zincObject.userData = [annotation];
776
+ };
777
+ /**
778
+ * New organs geometry has been added to the scene, add UIs and make
779
+ * sure the viewport is correct.
780
+ */
781
+
782
+
783
+ var _addOrganPartCallback = function _addOrganPartCallback(systemName, partName, useDefautColour) {
784
+ return function (zincObject) {
785
+ addOrganPart(systemName, partName, useDefautColour, zincObject);
786
+ };
787
+ };
788
+
789
+ var downloadCompletedCallback = function downloadCompletedCallback() {
790
+ return function () {
791
+ _this.settingsChanged();
792
+
793
+ _this.sceneData.timeVarying = _this.scene.isTimeVarying();
794
+ if (finishDownloadCallback) finishDownloadCallback();
795
+ };
796
+ };
797
+
798
+ var singleItemDownloadCompletedCallback = function singleItemDownloadCompletedCallback(systemName, partName, useDefautColour) {
799
+ return function (geometry) {
800
+ addOrganPart(systemName, partName, useDefautColour, geometry);
801
+
802
+ _this.settingsChanged();
803
+ };
804
+ };
805
+ /**
806
+ * Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
807
+ * other activities of the organs.
808
+ */
809
+
810
+
811
+ this.updateFieldvisibility = function (dataFields, value) {
812
+ for (var i = 0; i < dataFields.length; i++) {
813
+ if (value != i) {
814
+ var geometryName = dataFields[i].PartName;
815
+
816
+ _this.changeOrganPartsVisibility(geometryName, false);
817
+ }
818
+ }
819
+
820
+ if (value > -1) {
821
+ var partName = dataFields[value].PartName;
822
+
823
+ if (_this.scene.findGeometriesWithGroupName(partName).length > 0 || _this.scene.findGlyphsetsWithGroupName(partName).length > 0) {
824
+ _this.changeOrganPartsVisibility(partName, true);
825
+ } else {
826
+ var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
827
+
828
+ if (partDetails != undefined) {
829
+ _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
830
+ }
831
+ }
832
+ }
833
+ };
834
+ /**
835
+ * Return an array containing name(s) of species that also contains the
836
+ * currently displayed organs.
837
+ *
838
+ * @returns {Array} containing species name
839
+ */
840
+
841
+
842
+ this.getAvailableSpecies = function (currentSpecies, currentSystem, currentPart) {
843
+ var availableSpecies = new Array();
844
+ availableSpecies.push("none");
845
+ var keysArray = Object.keys(organsFileMap);
846
+
847
+ for (index in keysArray) {
848
+ var species = keysArray[index];
849
+
850
+ if (species != currentSpecies) {
851
+ if (organsFileMap[species].hasOwnProperty(currentSystem) && organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
852
+ availableSpecies.push(species);
853
+ }
854
+ }
855
+ }
856
+
857
+ return availableSpecies;
858
+ };
859
+
860
+ var setSceneData = function setSceneData(speciesName, systemName, partName, organsDetails) {
861
+ _this.sceneData.nerveMapIsActive = false;
862
+ _this.sceneData.nerveMap = undefined;
863
+ _this.sceneData.metaURL = "";
864
+ _this.sceneData.viewURL = "";
865
+ _this.sceneData.currentSpecies = speciesName;
866
+ _this.sceneData.currentSystem = systemName;
867
+ _this.sceneData.currentPart = partName;
868
+ _this.sceneData.currentTime = 0.0;
869
+
870
+ _this.sceneData.geometries.splice(0);
871
+
872
+ _this.sceneData.lines.splice(0);
873
+
874
+ _this.sceneData.glyphsets.splice(0);
875
+
876
+ _this.sceneData.pointsets.splice(0);
877
+
878
+ _this.sceneData.timeVarying = false; // This is used as title
879
+
880
+ var name = "";
881
+ if (speciesName) name = speciesName + "/";
882
+ if (systemName) name = systemName + "/";
883
+ if (partName) name = partName;
884
+ _this.sceneData.currentName = name;
885
+ };
886
+
887
+ this.loadOrgansFromURL = function (url, speciesName, systemName, partName, viewURL) {
888
+ if (_this.zincRenderer) {
889
+ if (partName && _this.sceneData.metaURL !== url) {
890
+ setSceneData(speciesName, systemName, partName, undefined);
891
+ var name = _this.sceneData.currentName;
892
+
893
+ var organScene = _this.zincRenderer.getSceneByName(name);
894
+
895
+ if (organScene) {
896
+ organScene.clearAll();
897
+ } else {
898
+ organScene = _this.zincRenderer.createScene(name);
899
+ }
900
+
901
+ for (var i = 0; i < sceneChangedCallbacks.length; i++) {
902
+ sceneChangedCallbacks[i](_this.sceneData);
903
+ }
904
+
905
+ if (viewURL && viewURL != "") {
906
+ _this.sceneData.viewURL = viewURL;
907
+ organScene.loadViewURL(_this.sceneData.viewURL);
908
+ } else {
909
+ _this.sceneData.viewURL = undefined;
910
+ }
911
+
912
+ _this.sceneData.metaURL = url;
913
+ organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false), downloadCompletedCallback());
914
+ _this.scene = organScene;
915
+
916
+ _this.zincRenderer.setCurrentScene(organScene);
917
+
918
+ _this.graphicsHighlight.reset();
919
+
920
+ var zincCameraControl = organScene.getZincCameraControls();
921
+ zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
922
+ zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
923
+ zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
924
+ }
925
+ }
926
+ };
927
+
928
+ this.alignCameraWithSelectedObject = function (transitionTime) {
929
+ var objects = _this.graphicsHighlight.getSelected();
930
+
931
+ if (objects && objects[0] && objects[0].userData) {
932
+ _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
933
+ }
934
+ };
935
+
936
+ this.exportSettings = function () {
937
+ var settings = {};
938
+ settings.name = _this.instanceName;
939
+ if (_this.sceneData.currentSystem) settings.system = _this.sceneData.currentSystem;
940
+ if (_this.sceneData.currentSpecies) settings.species = _this.sceneData.currentSpecies;
941
+ if (_this.sceneData.currentPart) settings.part = _this.sceneData.currentPart;
942
+ settings.metaURL = _this.sceneData.metaURL;
943
+ if (_this.sceneData.viewURL) settings.viewURL = _this.sceneData.viewURL;
944
+ settings.dialog = "Organ Viewer";
945
+ return settings;
946
+ };
947
+
948
+ this.importSettings = function (settings) {
949
+ if (settings && settings.dialog == this.typeName) {
950
+ _this.setName(settings.name);
951
+
952
+ if (settings.metaURL !== undefined && settings.metaURL != "") {
953
+ _this.loadOrgansFromURL(settings.metaURL, settings.species, settings.system, settings.part, settings.viewURL);
954
+ } else {
955
+ _this.loadOrgans(settings.species, settings.system, settings.part);
956
+ }
957
+
958
+ return true;
959
+ }
960
+
961
+ return false;
962
+ };
963
+ /**
964
+ * initialise loading of the html layout for the organs panel, this is
965
+ * called when the {@link PJP.OrgansViewer} is created.
966
+ *
967
+ * @async
968
+ */
969
+
970
+
971
+ var initialise = function initialise() {
972
+ _this.initialiseRenderer(undefined);
973
+
974
+ if (_this.zincRenderer) {
975
+ _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
976
+
977
+ _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
978
+ }
979
+ };
980
+
981
+ initialise();
982
+ };
983
+
984
+ OrgansViewer.prototype = Object.create(__webpack_require__("8278").RendererModule.prototype);
985
+ exports.OrgansViewer = OrgansViewer;
986
+
987
+ /***/ }),
988
+
989
+ /***/ "55ee":
990
+ /***/ (function(module, exports) {
991
+
992
+ module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
993
+
994
+ /***/ }),
995
+
996
+ /***/ "5810":
997
+ /***/ (function(module, exports, __webpack_require__) {
998
+
999
+ // extracted by mini-css-extract-plugin
1000
+
1001
+ /***/ }),
1002
+
1003
+ /***/ "5a43":
1004
+ /***/ (function(module, exports) {
1005
+
1006
+ function _arrayLikeToArray(arr, len) {
1007
+ if (len == null || len > arr.length) len = arr.length;
1008
+
1009
+ for (var i = 0, arr2 = new Array(len); i < len; i++) {
1010
+ arr2[i] = arr[i];
1011
+ }
1012
+
1013
+ return arr2;
1014
+ }
1015
+
1016
+ module.exports = _arrayLikeToArray;
1017
+
1018
+ /***/ }),
1019
+
1020
+ /***/ "5ec5":
1021
+ /***/ (function(module, exports, __webpack_require__) {
1022
+
1023
+ var _toConsumableArray = __webpack_require__("448a");
1024
+
1025
+ var THREE = __webpack_require__("9206").THREE;
1026
+ /**
1027
+ * This module manages highlighted and selected objects in 3D modules.
1028
+ *
1029
+ * @class
1030
+ * @returns {exports.GraphicsHighlight}
1031
+ */
1032
+
1033
+
1034
+ exports.GraphicsHighlight = function () {
1035
+ var currentHighlightedObjects = [];
1036
+ var currentSelectedObjects = [];
1037
+ this.highlightColour = [1, 0, 0];
1038
+ this.selectColour = [0, 1, 0];
1039
+ this.originalColour = [0, 0, 0];
1040
+
1041
+ var _this = this;
1042
+
1043
+ var isDifferent = function isDifferent(array1, array2) {
1044
+ if (array1.length == 0 && array2.length == 0) return false;
1045
+
1046
+ for (var i = 0; i < array1.length; i++) {
1047
+ var matched = false;
1048
+
1049
+ for (var j = 0; j < array2.length; j++) {
1050
+ if (array1[i] === array2[j]) {
1051
+ matched = true;
1052
+ }
1053
+ }
1054
+
1055
+ if (!matched) return true;
1056
+ }
1057
+
1058
+ for (var _i = 0; _i < array2.length; _i++) {
1059
+ var _matched = false;
1060
+
1061
+ for (var _j = 0; _j < array1.length; _j++) {
1062
+ if (array2[_i] === array1[_j]) {
1063
+ _matched = true;
1064
+ }
1065
+ }
1066
+
1067
+ if (!_matched) return true;
1068
+ }
1069
+
1070
+ return false;
1071
+ };
1072
+
1073
+ var getUnmatchingObjects = function getUnmatchingObjects(objectsArray1, objectsArray2) {
1074
+ var unmatchingObjects = [];
1075
+ if (objectsArray2.length == 0) return objectsArray1;
1076
+
1077
+ for (var i = 0; i < objectsArray1.length; i++) {
1078
+ var matched = false;
1079
+
1080
+ for (var j = 0; j < objectsArray2.length; j++) {
1081
+ if (objectsArray1[i] === objectsArray2[j]) {
1082
+ matched = true;
1083
+ }
1084
+ }
1085
+
1086
+ if (!matched) unmatchingObjects.push(objectsArray1[i]);
1087
+ }
1088
+
1089
+ return unmatchingObjects;
1090
+ };
1091
+
1092
+ this.setHighlighted = function (objects) {
1093
+ var previousHighlightedObjects = currentHighlightedObjects;
1094
+
1095
+ _this.resetHighlighted(); // Selected object cannot be highlighted
1096
+
1097
+
1098
+ var array = getUnmatchingObjects(objects, currentSelectedObjects);
1099
+ var fullList = getFullListOfObjects(array);
1100
+
1101
+ for (var i = 0; i < fullList.length; i++) {
1102
+ var _fullList$i$material$;
1103
+
1104
+ if (fullList[i] && fullList[i].material && fullList[i].material.emissive) (_fullList$i$material$ = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$, _toConsumableArray(_this.highlightColour));
1105
+ }
1106
+
1107
+ currentHighlightedObjects = array;
1108
+ return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
1109
+ };
1110
+
1111
+ this.setSelected = function (objects) {
1112
+ // first find highlighted object that are not selected
1113
+ var previousHSelectedObjects = currentSelectedObjects;
1114
+ var array = getUnmatchingObjects(currentHighlightedObjects, objects);
1115
+ currentHighlightedObjects = array;
1116
+
1117
+ _this.resetSelected();
1118
+
1119
+ var fullList = getFullListOfObjects(objects);
1120
+
1121
+ for (var i = 0; i < fullList.length; i++) {
1122
+ var _fullList$i$material$2;
1123
+
1124
+ if (fullList[i] && fullList[i].material && fullList[i].material.emissive) (_fullList$i$material$2 = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$2, _toConsumableArray(_this.selectColour));
1125
+ }
1126
+
1127
+ currentSelectedObjects = objects;
1128
+ return isDifferent(currentSelectedObjects, previousHSelectedObjects);
1129
+ };
1130
+
1131
+ var getFullListOfObjects = function getFullListOfObjects(objects) {
1132
+ var fullList = [];
1133
+
1134
+ for (var i = 0; i < objects.length; i++) {
1135
+ if (objects[i].material) fullList.push(objects[i]);
1136
+ }
1137
+
1138
+ return fullList;
1139
+ };
1140
+
1141
+ this.resetHighlighted = function () {
1142
+ var fullList = getFullListOfObjects(currentHighlightedObjects);
1143
+
1144
+ for (var i = 0; i < fullList.length; i++) {
1145
+ if (fullList[i] && fullList[i].material) {
1146
+ var _fullList$i$material$3;
1147
+
1148
+ if (fullList[i].material.emissive) (_fullList$i$material$3 = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$3, _toConsumableArray(_this.originalColour));
1149
+ if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
1150
+ }
1151
+ }
1152
+
1153
+ currentHighlightedObjects = [];
1154
+ };
1155
+
1156
+ this.resetSelected = function () {
1157
+ var fullList = getFullListOfObjects(currentSelectedObjects);
1158
+
1159
+ for (var i = 0; i < fullList.length; i++) {
1160
+ if (fullList[i] && fullList[i].material) {
1161
+ var _fullList$i$material$4;
1162
+
1163
+ if (fullList[i].material.emissive) (_fullList$i$material$4 = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$4, _toConsumableArray(_this.originalColour));
1164
+ if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
1165
+ }
1166
+ }
1167
+
1168
+ currentSelectedObjects = [];
1169
+ };
1170
+
1171
+ this.getSelected = function () {
1172
+ return currentSelectedObjects;
1173
+ };
1174
+
1175
+ this.reset = function () {
1176
+ _this.resetSelected();
1177
+
1178
+ _this.resetHighlighted();
1179
+ };
1180
+ };
1181
+
1182
+ /***/ }),
1183
+
1184
+ /***/ "5fef":
1185
+ /***/ (function(module, exports) {
1186
+
1187
+ module.exports = require("core-js/modules/es.regexp.to-string");
1188
+
1189
+ /***/ }),
1190
+
1191
+ /***/ "6049":
1192
+ /***/ (function(module, exports) {
1193
+
1194
+ module.exports = require("core-js/modules/es.symbol");
1195
+
1196
+ /***/ }),
1197
+
1198
+ /***/ "642d":
1199
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1200
+
1201
+ "use strict";
1202
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7d9b");
1203
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
1204
+ /* unused harmony reexport * */
1205
+
1206
+
1207
+ /***/ }),
1208
+
1209
+ /***/ "6579":
1210
+ /***/ (function(module, exports) {
1211
+
1212
+ module.exports = require("core-js/modules/es.array.slice");
1213
+
1214
+ /***/ }),
1215
+
1216
+ /***/ "6613":
1217
+ /***/ (function(module, exports, __webpack_require__) {
1218
+
1219
+ __webpack_require__("e42b");
1220
+
1221
+ __webpack_require__("6579");
1222
+
1223
+ __webpack_require__("bcd8");
1224
+
1225
+ __webpack_require__("850c");
1226
+
1227
+ __webpack_require__("5fef");
1228
+
1229
+ __webpack_require__("907b");
1230
+
1231
+ var arrayLikeToArray = __webpack_require__("5a43");
1232
+
1233
+ function _unsupportedIterableToArray(o, minLen) {
1234
+ if (!o) return;
1235
+ if (typeof o === "string") return arrayLikeToArray(o, minLen);
1236
+ var n = Object.prototype.toString.call(o).slice(8, -1);
1237
+ if (n === "Object" && o.constructor) n = o.constructor.name;
1238
+ if (n === "Map" || n === "Set") return Array.from(n);
1239
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
1240
+ }
1241
+
1242
+ module.exports = _unsupportedIterableToArray;
1243
+
1244
+ /***/ }),
1245
+
1246
+ /***/ "6814":
1247
+ /***/ (function(module, exports) {
1248
+
1249
+ module.exports = require("lodash/orderBy");
1250
+
1251
+ /***/ }),
1252
+
1253
+ /***/ "6aa6":
1254
+ /***/ (function(module, exports, __webpack_require__) {
1255
+
1256
+ __webpack_require__("ab7e");
1257
+
1258
+ __webpack_require__("6bb1");
1259
+
1260
+ __webpack_require__("6579");
1261
+
1262
+ __webpack_require__("7c81");
1263
+
1264
+ __webpack_require__("bcd8");
1265
+
1266
+ __webpack_require__("fd48");
1267
+
1268
+ var MODULE_CHANGE = {
1269
+ ALL: 0,
1270
+ DESTROYED: 1,
1271
+ NAME_CHANGED: 2,
1272
+ SETTINGS_CHANGED: 3
1273
+ };
1274
+
1275
+ var BaseModule = function BaseModule() {
1276
+ this.typeName = "Base Module";
1277
+ this.instanceName = "default";
1278
+ this.onChangedCallbacks = [];
1279
+ /** Notifier handle for informing other modules of any changes **/
1280
+
1281
+ this.eventNotifiers = [];
1282
+ };
1283
+
1284
+ BaseModule.prototype.setName = function (name) {
1285
+ if (name && this.instanceName !== name) {
1286
+ this.instanceName = name;
1287
+ var callbackArray = this.onChangedCallbacks.slice();
1288
+
1289
+ for (var i = 0; i < callbackArray.length; i++) {
1290
+ callbackArray[i](this, MODULE_CHANGE.NAME_CHANGED);
1291
+ }
842
1292
  }
843
-
844
- /**
845
- * Callback function when a pickable object has been picked. It will then
846
- * call functions in tissueViewer and cellPanel to show corresponding
847
- * informations.
848
- *
849
- * @callback
850
- */
851
- var _pickingCallback = function() {
852
- return function(intersects, window_x, window_y) {
853
- var intersected = _this.getIntersectedObject(intersects);
854
- var idObject = getIdObjectFromIntersect(intersected);
855
- if (idObject.id) {
856
- if (_this.toolTip !== undefined) {
857
- _this.toolTip.setText(idObject.id);
858
- _this.toolTip.show(window_x, window_y);
859
- }
860
- _this.displayMessage(idObject.object.name + " selected.");
1293
+ };
861
1294
 
862
- if (idObject.object.userData.isGlyph) {
863
- if (idObject.object.name)
864
- _this.setSelectedByObjects([idObject.object], true);
865
- else
866
- _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);
867
- } else {
868
- _this.setSelectedByObjects([idObject.object], true);
869
- }
870
- return;
871
- } else {
872
- if (_this.toolTip !== undefined) {
873
- _this.toolTip.hide();
874
- }
875
- _this.setSelectedByObjects([], true);
876
- }
877
- }
878
- };
879
-
880
- /**
881
- * Callback function when a pickable object has been hovered over. It will
882
- * show objecty id/name as _this.toolTip text.
883
- *
884
- * @callback
885
- */
886
- var _hoverCallback = function() {
887
- return function(intersects, window_x, window_y) {
888
- var intersected = _this.getIntersectedObject(intersects);
889
- var idObject = getIdObjectFromIntersect(intersected);
890
- if (idObject.id) {
891
- _this.displayArea.style.cursor = "pointer";
892
- if (_this.toolTip !== undefined) {
893
- _this.toolTip.setText(idObject.id);
894
- _this.toolTip.show(window_x, window_y);
895
- }
896
- _this.setHighlightedByObjects([idObject.object], true);
897
- return;
898
- }
899
- else {
900
- if (_this.toolTip !== undefined) {
901
- _this.toolTip.hide();
902
- }
903
- _this.displayArea.style.cursor = "auto";
904
- _this.setHighlightedByObjects([], true);
905
- }
906
- }
907
- };
908
-
909
- var changeOrganPartsVisibilityForScene = function(scene, name, value, type) {
910
- if (type == "all" || type == "geometries") {
911
- var geometries = scene.findGeometriesWithGroupName(name);
912
- for (var i = 0; i < geometries.length; i ++ ) {
913
- geometries[i].setVisibility(value);
914
- }
915
- }
916
- if (type == "all" || type == "glyphsets") {
917
- var glyphsets = scene.findGlyphsetsWithGroupName(name);
918
- for (var i = 0; i < glyphsets.length; i ++ ) {
919
- glyphsets[i].setVisibility(value);
920
- }
921
- }
922
- if (type == "all" || type == "pointsets") {
923
- var pointsets = scene.findPointsetsWithGroupName(name);
924
- for (var i = 0; i < pointsets.length; i ++ ) {
925
- pointsets[i].setVisibility(value);
926
- }
927
- }
928
- if (type == "all" || type == "lines") {
929
- var lines = scene.findLinesWithGroupName(name);
930
- for (var i = 0; i < lines.length; i ++ ) {
931
- lines[i].setVisibility(value);
932
- }
933
- }
934
- }
935
-
936
- /**
937
- * Change visibility for parts of the current scene.
938
- */
939
- this.changeGeometriesVisibility = function(name, value) {
940
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
941
- if (pickerScene)
942
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
943
- }
944
-
945
- /**
946
- * Change visibility for parts of the current scene.
947
- */
948
- this.changeGlyphsetsVisibility = function(name, value) {
949
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
950
- if (pickerScene)
951
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
952
- }
953
-
954
- /**
955
- * Change visibility for parts of the current scene.
956
- */
957
- this.changeLinesVisibility = function(name, value) {
958
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
959
- if (pickerScene)
960
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
961
- }
962
-
963
- /**
964
- * Change visibility for parts of the current scene.
965
- */
966
- this.changePointsetsVisibility = function(name, value) {
967
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
968
- if (pickerScene)
969
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
1295
+ BaseModule.prototype.settingsChanged = function () {
1296
+ var callbackArray = this.onChangedCallbacks.slice();
1297
+
1298
+ for (var i = 0; i < callbackArray.length; i++) {
1299
+ callbackArray[i](this, MODULE_CHANGE.SETTINGS_CHANGED);
970
1300
  }
971
-
972
- /**
973
- * Change visibility for parts of the current scene.
974
- */
975
- this.changeOrganPartsVisibility = function(name, value, typeIn) {
976
- var type = "all";
977
- if (typeIn !== undefined)
978
- type = typeIn;
979
- changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
980
- if (pickerScene)
981
- changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
982
- }
983
-
984
- this.changeOrganPartsVisibilityCallback = function(name) {
985
- return function(value) {
986
- _this.changeOrganPartsVisibility(name, value);
987
- }
988
- }
989
-
990
- /**
991
- * Change some of the ZincGeometry property for never map geometry
992
- *
993
- * @callback
994
- */
995
- var _addNerveMapGeometryCallback = function(GroupName) {
996
- return function(geometry) {
997
- geometry.groupName = GroupName;
998
- if (imageCombiner && geometry.morph && geometry.morph.material.map) {
999
- geometry.morph.material.map = new THREE.Texture(imageCombiner.getCombinedImage());
1000
- geometry.morph.material.map.needsUpdate = true;
1001
- geometry.morph.material.needsUpdate = true;
1002
- }
1003
- }
1004
- }
1005
-
1006
- /**
1007
- * Read in the nerve map models onto the primary renderer when nerve map has
1008
- * been toggled on.
1009
- */
1010
- var setupNerveMapPrimaryRenderer = function() {
1011
- var sceneName = _this.sceneData.currentName + "_nervemap";
1012
- nerveMapScene = _this.zincRenderer.getSceneByName(sceneName);
1013
- if (nerveMapScene == undefined) {
1014
- var downloadPath = modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.meta;
1015
- nerveMapScene = _this.zincRenderer.createScene(sceneName);
1016
- nerveMapScene.loadMetadataURL(downloadPath, _addNerveMapGeometryCallback("threed"));
1017
- if (_this.sceneData.nerveMap.threed.view !== undefined)
1018
- nerveMapScene.loadViewURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.view);
1019
- else {
1020
- nerveMapScene.loadViewURL(modelsLoader.getBodyDirectoryPrefix() + "/body_view.json");
1021
- }
1022
- nerveMapScene.ambient.intensity = 8.0;
1023
- nerveMapScene.directionalLight.intensity = 0;
1024
- var zincCameraControl = nerveMapScene.getZincCameraControls();
1025
- zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
1026
- zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
1027
- _this.sceneData.nerveMap.additionalReader = new (__webpack_require__("6fd2").VaryingTexCoordsReader)(nerveMapScene);
1028
- var urlsArray = [ modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_0.json",
1029
- modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_1.json",
1030
- modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi0_time_0.json"];
1031
- _this.sceneData.nerveMap.additionalReader.loadURLsIntoBufferGeometry(urlsArray);
1032
- }
1033
- _this.zincRenderer.setCurrentScene(nerveMapScene);
1034
- _this.graphicsHighlight.reset();
1035
- }
1036
-
1037
- var activateAdditionalNerveMapRenderer = function() {
1038
- for (var i = 0; i < layoutUpdateRequiredCallbacks.length;i++) {
1039
- layoutUpdateRequiredCallbacks[i](false, true);
1040
- }
1041
- }
1042
-
1043
- /**
1044
- * Nerve map has been toggled on/off, change organs renderer layput.
1045
- */
1046
- this.changeNerveMapVisibility = function() {
1047
- _this.sceneData.nerveMapIsActive = !_this.sceneData.nerveMapIsActive;
1048
- if (_this.sceneData.nerveMapIsActive)
1049
- setupNerveMapPrimaryRenderer();
1050
- else {
1051
- _this.zincRenderer.setCurrentScene(_this.scene);
1052
- _this.graphicsHighlight.reset();
1053
- }
1054
- activateAdditionalNerveMapRenderer();
1055
- }
1056
-
1057
- this.changeBackgroundColour = function(backgroundColourString) {
1058
- var colour = new THREE.Color(backgroundColourString);
1059
- if (_this.zincRenderer) {
1060
- var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
1061
- internalRenderer.setClearColor( colour, 1 );
1062
- }
1063
- }
1064
-
1065
- var addOrganPartToSceneData = function(zincObject) {
1066
- if (zincObject.groupName) {
1067
- if (zincObject.isGeometry) {
1068
- if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
1069
- _this.sceneData.geometries.push(zincObject.groupName);
1070
- }
1071
- } else if (zincObject.isGlyphset) {
1072
- if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
1073
- _this.sceneData.glyphsets.push(zincObject.groupName);
1074
- }
1075
- } else if (zincObject.isLines) {
1076
- if (!_this.sceneData.lines.includes(zincObject.groupName)) {
1077
- _this.sceneData.lines.push(zincObject.groupName);
1078
- }
1079
- } else if (zincObject.isPointset) {
1080
- if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
1081
- _this.sceneData.pointsets.push(zincObject.groupName);
1082
- }
1083
- }
1084
- }
1085
- }
1086
-
1087
- var addOrganPart = function(systemName, partName, useDefautColour, zincObject) {
1088
- for (var i = 0; i < organPartAddedCallbacks.length;i++) {
1089
- organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
1090
- }
1091
- if (useDefautColour)
1092
- modelsLoader.setGeometryColour(zincObject, systemName, partName);
1093
- addOrganPartToSceneData(zincObject);
1094
- if (zincObject.groupName) {
1095
- _this.displayMessage(zincObject.groupName + " loaded.");
1096
- } else {
1097
- _this.displayMessage("Resource loaded.");
1098
- }
1099
- var annotation = new (__webpack_require__("a0d7").annotation)();
1100
- annotation.data = {species:_this.sceneData.currentSpecies, system:systemName, part:partName, group:zincObject.groupName};
1101
- zincObject.userData = [annotation];
1102
- }
1103
-
1104
- /**
1105
- * New organs geometry has been added to the scene, add UIs and make
1106
- * sure the viewport is correct.
1107
- */
1108
- var _addOrganPartCallback = function(systemName, partName, useDefautColour) {
1109
- return function(zincObject) {
1110
- addOrganPart(systemName, partName, useDefautColour, zincObject);
1111
- }
1112
- }
1113
-
1114
- var downloadCompletedCallback = function() {
1115
- return function() {
1116
- _this.settingsChanged();
1117
- _this.sceneData.timeVarying = _this.scene.isTimeVarying();
1118
- _this.displayMessage("All resources loaded.");
1119
- if (finishDownloadCallback)
1120
- finishDownloadCallback();
1121
- }
1122
- }
1123
-
1124
- var singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {
1125
- return function(geometry) {
1126
- addOrganPart(systemName, partName, useDefautColour, geometry);
1127
- _this.settingsChanged();
1128
- }
1129
- }
1130
-
1131
- /**
1132
- * Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
1133
- * other activities of the organs.
1134
- */
1135
- this.updateFieldvisibility = function(dataFields, value) {
1136
- for ( var i = 0; i < dataFields.length; i ++ ) {
1137
- if (value != i) {
1138
- var geometryName = dataFields[i].PartName;
1139
- _this.changeOrganPartsVisibility(geometryName, false);
1140
- }
1141
- }
1142
- if (value > -1) {
1143
- var partName = dataFields[value].PartName;
1144
- if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||
1145
- (_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {
1146
- _this.changeOrganPartsVisibility(partName, true);
1147
- } else {
1148
- var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
1149
- if (partDetails != undefined) {
1150
- _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
1151
- }
1152
- }
1153
- }
1154
- }
1155
-
1156
- /**
1157
- * Return an array containing name(s) of species that also contains the
1158
- * currently displayed organs.
1159
- *
1160
- * @returns {Array} containing species name
1161
- */
1162
- this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {
1163
- var availableSpecies = new Array();
1164
- availableSpecies.push("none");
1165
- var keysArray = Object.keys(organsFileMap);
1166
- for (index in keysArray) {
1167
- var species = keysArray[index];
1168
- if (species != currentSpecies) {
1169
- if (organsFileMap[species].hasOwnProperty(currentSystem) &&
1170
- organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
1171
- availableSpecies.push(species);
1172
- }
1173
- }
1174
- }
1175
- return availableSpecies;
1176
- }
1177
-
1178
- var setSceneData = function(speciesName, systemName, partName, organsDetails) {
1179
- _this.sceneData.nerveMapIsActive = false;
1180
- _this.sceneData.nerveMap = undefined;
1181
- _this.sceneData.metaURL = "";
1182
- _this.sceneData.viewURL = "";
1183
- _this.sceneData.currentSpecies = speciesName;
1184
- _this.sceneData.currentSystem = systemName;
1185
- _this.sceneData.currentPart = partName;
1186
- _this.sceneData.currentTime = 0.0;
1187
- _this.sceneData.geometries.splice(0);
1188
- _this.sceneData.lines.splice(0);
1189
- _this.sceneData.glyphsets.splice(0);
1190
- _this.sceneData.pointsets.splice(0);
1191
- _this.sceneData.timeVarying = false;
1192
- // This is used as title
1193
- var name = "";
1194
- if (speciesName)
1195
- name = speciesName + "/";
1196
- if (systemName)
1197
- name = systemName + "/";
1198
- if (partName)
1199
- name = partName;
1200
- _this.sceneData.currentName = name;
1201
- }
1202
-
1203
- this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {
1204
- if (_this.zincRenderer) {
1205
- if (partName && (_this.sceneData.metaURL !== url)) {
1206
- setSceneData(speciesName, systemName, partName, undefined);
1207
- var name = _this.sceneData.currentName;
1208
- var organScene = _this.zincRenderer.getSceneByName(name);
1209
- if (organScene) {
1210
- organScene.clearAll();
1211
- } else {
1212
- organScene = _this.zincRenderer.createScene(name);
1213
- }
1214
- for (var i = 0; i < sceneChangedCallbacks.length;i++) {
1215
- sceneChangedCallbacks[i](_this.sceneData);
1216
- }
1217
- if (viewURL && viewURL != "") {
1218
- _this.sceneData.viewURL = viewURL;
1219
- organScene.loadViewURL(_this.sceneData.viewURL);
1220
- } else
1221
- _this.sceneData.viewURL = undefined;
1222
- _this.sceneData.metaURL = url;
1223
- _this.displayMessage("Downloading...");
1224
- organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),
1225
- downloadCompletedCallback());
1226
- _this.scene = organScene;
1227
- _this.zincRenderer.setCurrentScene(organScene);
1228
- _this.graphicsHighlight.reset();
1229
- var zincCameraControl = organScene.getZincCameraControls();
1230
- zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
1231
- zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
1232
- zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
1233
- }
1234
- }
1235
- }
1236
-
1237
- this.alignCameraWithSelectedObject = function(transitionTime) {
1238
- var objects = _this.graphicsHighlight.getSelected();
1239
- if (objects && objects[0] && objects[0].userData) {
1240
- _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
1241
- }
1242
- }
1243
-
1244
- this.exportSettings = function() {
1245
- var settings = {};
1246
- settings.name = _this.instanceName;
1247
- if (_this.sceneData.currentSystem)
1248
- settings.system = _this.sceneData.currentSystem;
1249
- if (_this.sceneData.currentSpecies)
1250
- settings.species = _this.sceneData.currentSpecies;
1251
- if (_this.sceneData.currentPart)
1252
- settings.part = _this.sceneData.currentPart;
1253
- settings.metaURL = _this.sceneData.metaURL;
1254
- if (_this.sceneData.viewURL)
1255
- settings.viewURL = _this.sceneData.viewURL;
1256
- settings.dialog = "Organ Viewer";
1257
- return settings;
1258
- }
1259
-
1260
- this.importSettings = function(settings) {
1261
- if (settings && (settings.dialog == this.typeName)) {
1262
- _this.setName(settings.name);
1263
- if (settings.metaURL !== undefined && settings.metaURL != "") {
1264
- _this.loadOrgansFromURL(settings.metaURL, settings.species,
1265
- settings.system, settings.part, settings.viewURL);
1266
- } else {
1267
- _this.loadOrgans(settings.species, settings.system, settings.part);
1268
- }
1269
- return true;
1270
- }
1271
- return false;
1272
- }
1273
-
1274
- /**
1275
- * initialise loading of the html layout for the organs panel, this is
1276
- * called when the {@link PJP.OrgansViewer} is created.
1277
- *
1278
- * @async
1279
- */
1280
- var initialise = function() {
1281
- _this.initialiseRenderer(undefined);
1282
- if (_this.zincRenderer) {
1283
- _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
1284
- _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
1285
- }
1301
+ };
1302
+
1303
+ BaseModule.prototype.exportSettings = function () {
1304
+ var settings = {};
1305
+ settings.dialog = this.typeName;
1306
+ settings.name = this.instanceName;
1307
+ return settings;
1308
+ };
1309
+
1310
+ BaseModule.prototype.importSettings = function (settings) {
1311
+ if (settings.dialog == this.typeName) {
1312
+ this.setName(settings.name);
1313
+ return true;
1286
1314
  }
1287
-
1288
- initialise();
1289
1315
 
1290
- }
1316
+ return false;
1317
+ };
1291
1318
 
1292
- OrgansViewer.prototype = Object.create((__webpack_require__("7a89").RendererModule).prototype);
1293
- exports.OrgansViewer = OrgansViewer;
1319
+ BaseModule.prototype.publishChanges = function (annotations, eventType) {
1320
+ for (var i = 0; i < this.eventNotifiers.length; i++) {
1321
+ this.eventNotifiers[i].publish(this, eventType, annotations);
1322
+ }
1323
+ };
1294
1324
 
1325
+ BaseModule.prototype.getName = function () {
1326
+ return this.instanceName;
1327
+ };
1295
1328
 
1296
- /***/ }),
1329
+ BaseModule.prototype.destroy = function () {
1330
+ //Make a temorary copy as the array may be altered during the loop
1331
+ var callbackArray = this.onChangedCallbacks.slice();
1297
1332
 
1298
- /***/ "6814":
1299
- /***/ (function(module, exports) {
1333
+ for (var i = 0; i < callbackArray.length; i++) {
1334
+ callbackArray[i](this, MODULE_CHANGE.DESTROYED);
1335
+ }
1300
1336
 
1301
- module.exports = require("lodash/orderBy");
1337
+ delete this;
1338
+ };
1339
+
1340
+ BaseModule.prototype.addChangedCallback = function (callback) {
1341
+ if (this.onChangedCallbacks.includes(callback) == false) this.onChangedCallbacks.push(callback);
1342
+ };
1343
+
1344
+ BaseModule.prototype.removeChangedCallback = function (callback) {
1345
+ var index = this.onChangedCallbacks.indexOf(callback);
1346
+
1347
+ if (index > -1) {
1348
+ this.onChangedCallbacks.splice(index, 1);
1349
+ }
1350
+ };
1351
+
1352
+ BaseModule.prototype.addNotifier = function (eventNotifier) {
1353
+ this.eventNotifiers.push(eventNotifier);
1354
+ };
1355
+
1356
+ exports.BaseModule = BaseModule;
1357
+ exports.MODULE_CHANGE = MODULE_CHANGE;
1302
1358
 
1303
1359
  /***/ }),
1304
1360
 
@@ -1323,160 +1379,40 @@ module.exports = require("element-ui/lib/row");
1323
1379
 
1324
1380
  /***/ }),
1325
1381
 
1326
- /***/ "6fd2":
1382
+ /***/ "7037":
1327
1383
  /***/ (function(module, exports, __webpack_require__) {
1328
1384
 
1329
- var THREE = __webpack_require__("9206").THREE;
1385
+ __webpack_require__("6049");
1386
+
1387
+ __webpack_require__("51e9");
1388
+
1389
+ __webpack_require__("02ac");
1390
+
1391
+ __webpack_require__("8c84");
1392
+
1393
+ __webpack_require__("850c");
1330
1394
 
1331
- exports.VaryingTexCoordsReader = function(sceneIn) {
1332
-
1333
- var _this = this;
1334
- var finishCallbackFunction = undefined;
1335
- var bufferGeometry = undefined;
1336
- var zincGeometry = undefined;
1337
- var numberOfInputs = 0;
1338
- var completedInputs = 0;
1339
- var scene = sceneIn;
1340
- var currentMap = undefined;
1341
- var textureLoader = new THREE.TextureLoader();
1342
- var texture = new textureLoader.load( 'models/organsViewerModels/digestive/stomach/nerve_map/texture/ratstomach_innervation_square.png' );
1343
- texture.wrapS = THREE.RepeatWrapping;
1344
- texture.wrapT = THREE.RepeatWrapping;
1345
- texture.format = THREE.RGBFormat;
1346
-
1347
- var shadersUniforms = THREE.UniformsUtils.merge( [
1348
- {
1349
- ambient : { type: "c", value: new THREE.Color( 0x000000 ) },
1350
- diffuse : { type: "c", value: new THREE.Color( 0xffffff ) },
1351
- emissive : { type: "c", value: new THREE.Color( 0xbbbbbb ) },
1352
- specular : { type: "c", value: new THREE.Color( 0x111111 ) },
1353
- shininess: { type: "f", value: 100 },
1354
- opacity: { type: "f", value: 1.0 },
1355
- ambientLightColor: { type: "c", value: new THREE.Color( 0xF0F0F0 ) },
1356
- directionalLightColor: { type: "c", value: new THREE.Color( 0x555555) },
1357
- directionalLightDirection: { type: "v3", value: new THREE.Vector3() },
1358
- offsetRepeat: { value: new THREE.Vector4( 0, 0, 1, 1 ) },
1359
- time: { type: "f", value: 0.0 },
1360
- slide_pos: { type: "f", value: 1.0 },
1361
- myTex: {type: 't', value: null}
1362
- } ] );
1363
-
1364
- var addGeometryIntoBufferGeometry = function(order, geometry)
1365
- {
1366
- var arrayLength = geometry.faces.length * 3 * 3;
1367
- var positions = new Float32Array( arrayLength );
1368
- var colors = new Float32Array( arrayLength );
1369
- var normals = new Float32Array( arrayLength );
1370
- var texCoords = new Float32Array( geometry.faces.length * 3 * 2 );
1371
- if (bufferGeometry === undefined)
1372
- bufferGeometry = new THREE.BufferGeometry();
1373
-
1374
- geometry.faces.forEach( function ( face, index ) {
1375
- positions[ index * 9 + 0 ] = geometry.vertices[ face.a ].x;
1376
- positions[ index * 9 + 1 ] = geometry.vertices[ face.a ].y;
1377
- positions[ index * 9 + 2 ] = geometry.vertices[ face.a ].z;
1378
- positions[ index * 9 + 3 ] = geometry.vertices[ face.b ].x;
1379
- positions[ index * 9 + 4 ] = geometry.vertices[ face.b ].y;
1380
- positions[ index * 9 + 5 ] = geometry.vertices[ face.b ].z;
1381
- positions[ index * 9 + 6 ] = geometry.vertices[ face.c ].x;
1382
- positions[ index * 9 + 7 ] = geometry.vertices[ face.c ].y;
1383
- positions[ index * 9 + 8 ] = geometry.vertices[ face.c ].z;
1384
-
1385
- normals[ index * 9 + 0 ] = face.vertexNormals[0].x;
1386
- normals[ index * 9 + 1 ] = face.vertexNormals[0].y;
1387
- normals[ index * 9 + 2 ] = face.vertexNormals[0].z;
1388
- normals[ index * 9 + 3 ] = face.vertexNormals[1].x;
1389
- normals[ index * 9 + 4 ] = face.vertexNormals[1].y;
1390
- normals[ index * 9 + 5 ] = face.vertexNormals[1].z;
1391
- normals[ index * 9 + 6 ] = face.vertexNormals[2].x;
1392
- normals[ index * 9 + 7 ] = face.vertexNormals[2].y;
1393
- normals[ index * 9 + 8 ] = face.vertexNormals[2].z;
1394
-
1395
- texCoords[ index * 6 + 0] = geometry.faceVertexUvs[ 0 ][index][0].x;
1396
- texCoords[ index * 6 + 1] = geometry.faceVertexUvs[ 0 ][index][0].y;
1397
- texCoords[ index * 6 + 2] = geometry.faceVertexUvs[ 0 ][index][1].x;
1398
- texCoords[ index * 6 + 3] = geometry.faceVertexUvs[ 0 ][index][1].y;
1399
- texCoords[ index * 6 + 4] = geometry.faceVertexUvs[ 0 ][index][2].x;
1400
- texCoords[ index * 6 + 5] = geometry.faceVertexUvs[ 0 ][index][2].y;
1401
- } );
1402
-
1403
-
1404
- if (order == 0) {
1405
- bufferGeometry.addAttribute( "position", new THREE.BufferAttribute( positions, 3) );
1406
- bufferGeometry.addAttribute( "normal", new THREE.BufferAttribute( normals, 3 ) );
1407
- bufferGeometry.addAttribute( "uv", new THREE.BufferAttribute( texCoords, 2 ) );
1408
- } else {
1409
- var positionStr = "position_" + order;
1410
- var normalStr = "normal_" + order;
1411
- var uvsStr = "uv_" + order;
1412
- bufferGeometry.addAttribute( positionStr, new THREE.BufferAttribute( positions, 3) );
1413
- bufferGeometry.addAttribute( normalStr, new THREE.BufferAttribute( normals, 3 ) );
1414
- bufferGeometry.addAttribute( uvsStr, new THREE.BufferAttribute( texCoords, 2 ) );
1415
- }
1416
-
1417
- }
1418
-
1419
- var meshReady = function(bufferGeometryIn, shaderText, material){
1420
- var shaderMaterial = new THREE.RawShaderMaterial( {
1421
- vertexShader: shaderText[0],
1422
- fragmentShader: shaderText[1],
1423
- uniforms: shadersUniforms
1424
- } );
1425
- shaderMaterial.uniforms.myTex.value = texture;
1426
- shaderMaterial.side = THREE.DoubleSide;
1427
- shaderMaterial.depthTest = true;
1428
- shaderMaterial.needsUpdate = true;
1429
- shaderMaterial.map = texture;
1430
- shaderMaterial.uniforms.myTex.value.needsUpdate = true;
1431
- shaderMaterial.opacity = 1.0;
1432
- zincGeometry = scene.addZincGeometry(bufferGeometryIn, 30001, undefined, undefined, false, false, true, undefined, shaderMaterial);
1433
- zincGeometry.groupName = "varyingTexture";
1434
- }
1435
-
1436
- var myLoader = function(order, shaderText) {
1437
- return function(geometry, materials){
1438
- var material = 0;
1439
- addGeometryIntoBufferGeometry(order, geometry);
1440
- completedInputs++;
1441
- if (completedInputs == numberOfInputs) {
1442
- meshReady(bufferGeometry, shaderText, material);
1443
- if (finishCallbackFunction != undefined && (typeof finishCallbackFunction == 'function'))
1444
- finishCallbackFunction(bufferGeometry);
1445
- }
1446
- }
1447
- }
1448
-
1449
- this.setSliderPos = function(pos) {
1450
- if (zincGeometry)
1451
- zincGeometry.morph.material.uniforms.slide_pos.value = pos;
1452
- }
1453
-
1454
- this.setTime = function(time) {
1455
- if (zincGeometry) {
1456
- zincGeometry.morph.material.uniforms.time.value = time;
1457
- }
1458
- }
1459
-
1460
- this.setTexture = function(textureIn) {
1461
- if (zincGeometry) {
1462
- zincGeometry.morph.material.uniforms.myTex.value = textureIn;
1463
- zincGeometry.morph.material.uniforms.myTex.value.needsUpdate = true;
1464
- }
1465
- }
1466
-
1467
- this.loadURLsIntoBufferGeometry = function(urls, finishCallback, progressCallback, errorCallback) {
1468
- var loader = new THREE.JSONLoader( true );
1469
- numberOfInputs = urls.length;
1470
- finishCallbackFunction = finishCallback;
1471
- var shaderText = [
1472
- __webpack_require__("1823"),
1473
- __webpack_require__("4e8a")
1474
- ];
1475
- for (var i = 0; i < numberOfInputs; i++)
1476
- loader.load( urls[i], myLoader(i, shaderText), progressCallback, errorCallback);
1477
- }
1395
+ __webpack_require__("907b");
1396
+
1397
+ __webpack_require__("1ce0");
1398
+
1399
+ function _typeof(obj) {
1400
+ "@babel/helpers - typeof";
1401
+
1402
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
1403
+ module.exports = _typeof = function _typeof(obj) {
1404
+ return typeof obj;
1405
+ };
1406
+ } else {
1407
+ module.exports = _typeof = function _typeof(obj) {
1408
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
1409
+ };
1410
+ }
1411
+
1412
+ return _typeof(obj);
1478
1413
  }
1479
1414
 
1415
+ module.exports = _typeof;
1480
1416
 
1481
1417
  /***/ }),
1482
1418
 
@@ -1487,105 +1423,68 @@ module.exports = require("element-ui/lib/theme-chalk/col.css");
1487
1423
 
1488
1424
  /***/ }),
1489
1425
 
1490
- /***/ "73b5":
1491
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
1492
-
1493
- "use strict";
1494
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("24f0");
1495
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
1496
- /* unused harmony reexport * */
1426
+ /***/ "73ef":
1427
+ /***/ (function(module, exports) {
1497
1428
 
1429
+ module.exports = require("element-ui/lib/theme-chalk/main.css");
1498
1430
 
1499
1431
  /***/ }),
1500
1432
 
1501
- /***/ "73ef":
1433
+ /***/ "7c81":
1502
1434
  /***/ (function(module, exports) {
1503
1435
 
1504
- module.exports = require("element-ui/lib/theme-chalk/main.css");
1436
+ module.exports = require("core-js/modules/es.array.splice");
1505
1437
 
1506
1438
  /***/ }),
1507
1439
 
1508
- /***/ "76bf":
1440
+ /***/ "7d9b":
1509
1441
  /***/ (function(module, exports, __webpack_require__) {
1510
1442
 
1511
- __webpack_require__("b723");
1443
+ // extracted by mini-css-extract-plugin
1512
1444
 
1513
- exports.ToolTip = function(container) {
1514
- var tooltipcontainerElement = undefined;
1515
- var tipElement = undefined;
1516
- var tiptextElement = undefined;
1517
- var template = '<div class="mptooltip" id="tip"><span class="mptooltiptext" id="tiptext"> Tooltip text</span></div>';
1518
- var _this = this;
1519
-
1520
- /**
1521
- * Show tool tip on the specified windows coordinates.
1522
- * @param {Number} x - Style sheet with the same title.
1523
- * @param {Number} y - selector string to match.
1524
- */
1525
- this.show = function(x, y) {
1526
- tooltipcontainerElement.style.left = x +"px";
1527
- tooltipcontainerElement.style.top = (y - 20) + "px";
1528
- tipElement.style.visibility = "visible";
1529
- tipElement.style.opacity = 1;
1530
- tiptextElement.style.visibility = "visible";
1531
- tiptextElement.style.opacity = 1;
1532
- }
1533
-
1534
- this.hide = function() {
1535
- tipElement.style.visibility = "hidden";
1536
- tipElement.style.opacity = 0;
1537
- tiptextElement.style.visibility = "hidden";
1538
- tiptextElement.style.opacity = 0;
1539
- }
1540
-
1541
- /**
1542
- * Change the tooltip text.
1543
- * @param {String} text - Text to update the tooltip to.
1544
- */
1545
- this.setText = function(text) {
1546
- tiptextElement.innerHTML = text;
1547
- }
1445
+ /***/ }),
1548
1446
 
1549
- var setupToolTipContainer = function() {
1550
- tooltipcontainerElement = document.createElement("div");
1551
- tooltipcontainerElement.id = "tooltipcontainer";
1552
- tooltipcontainerElement.innerHTML = template;
1553
- /*
1554
- for (i = 0; i < childNodes.length; i++) {
1555
- parent[0].appendChild(childNodes[i]);
1556
- }
1557
- */
1558
- tipElement = tooltipcontainerElement.querySelector("#tip");
1559
- tiptextElement = tooltipcontainerElement.querySelector("#tiptext");
1560
- container.appendChild(tooltipcontainerElement);
1561
-
1562
- }
1563
-
1564
- setupToolTipContainer();
1565
- }
1447
+ /***/ "7f9f":
1448
+ /***/ (function(module, exports) {
1566
1449
 
1450
+ module.exports = require("element-ui/lib/locale");
1451
+
1452
+ /***/ }),
1453
+
1454
+ /***/ "80c4":
1455
+ /***/ (function(module, exports) {
1567
1456
 
1457
+ module.exports = require("element-ui/lib/theme-chalk/option.css");
1568
1458
 
1569
1459
  /***/ }),
1570
1460
 
1571
- /***/ "7a89":
1461
+ /***/ "8278":
1572
1462
  /***/ (function(module, exports, __webpack_require__) {
1573
1463
 
1574
- var THREE = __webpack_require__("9206").THREE;
1464
+ __webpack_require__("bcd8");
1575
1465
 
1466
+ var _readOnlyError = __webpack_require__("da60");
1467
+
1468
+ var THREE = __webpack_require__("9206").THREE;
1576
1469
  /**
1577
1470
  * Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.
1578
1471
  * @param {String} elementID - id of the target dom element.
1579
1472
  * @returns {Zinc.Renderer}
1580
1473
  */
1581
- var createRenderer = function () {
1582
- var WEBGL = __webpack_require__("10c9").WEBGL;
1583
- var localContainer = document.createElement( 'div' );
1584
- var localRenderer = undefined;;
1474
+
1475
+
1476
+ var createRenderer = function createRenderer() {
1477
+ var WEBGL = __webpack_require__("cf41").WEBGL;
1478
+
1479
+ var localContainer = document.createElement('div');
1480
+ var localRenderer = undefined;
1481
+ ;
1585
1482
  localContainer.style.height = "100%";
1483
+
1586
1484
  if (WEBGL.isWebGLAvailable()) {
1587
1485
  var Zinc = __webpack_require__("9206");
1588
- var localRenderer = new Zinc.Renderer(localContainer, window);
1486
+
1487
+ localRenderer = new Zinc.Renderer(localContainer, window);
1589
1488
  Zinc.defaultMaterialColor = 0xFFFF9C;
1590
1489
  localRenderer.initialiseVisualisation();
1591
1490
  localRenderer.playAnimation = false;
@@ -1593,278 +1492,253 @@ var createRenderer = function () {
1593
1492
  var warning = WEBGL.getWebGLErrorMessage();
1594
1493
  localContainer.appendChild(warning);
1595
1494
  }
1596
- return {"renderer":localRenderer, "container":localContainer};
1597
- }
1598
1495
 
1599
- var RendererModule = function() {
1600
- (__webpack_require__("3966").BaseModule).call(this);
1496
+ return {
1497
+ "renderer": localRenderer,
1498
+ "container": localContainer
1499
+ };
1500
+ };
1501
+
1502
+ var RendererModule = function RendererModule() {
1503
+ __webpack_require__("6aa6").BaseModule.call(this);
1504
+
1601
1505
  this.scene = undefined;
1602
- this.toolTip = undefined;
1603
1506
  this.rendererContainer = undefined;
1604
1507
  this.displayArea = undefined;
1605
- this.graphicsHighlight = new (__webpack_require__("8cec").GraphicsHighlight)();
1508
+ this.graphicsHighlight = new (__webpack_require__("5ec5").GraphicsHighlight)();
1606
1509
  this.zincRenderer = null;
1607
1510
  this.selectedScreenCoordinates = new THREE.Vector3();
1608
1511
  this.selectedCenter = undefined;
1609
- }
1610
-
1611
- RendererModule.prototype = Object.create((__webpack_require__("3966").BaseModule).prototype);
1512
+ };
1612
1513
 
1514
+ RendererModule.prototype = Object.create(__webpack_require__("6aa6").BaseModule.prototype);
1613
1515
  /**
1614
1516
  * This function will get the the first intersected object with name or
1615
1517
  * the first glyph object with name.
1616
1518
  */
1617
- RendererModule.prototype.getIntersectedObject = function(intersects) {
1618
- if (intersects) {
1619
- for (var i = 0; i < intersects.length; i++) {
1620
- if (intersects[i] !== undefined) {
1621
- if (intersects[i].object &&
1622
- intersects[i].object.userData &&
1623
- intersects[i].object.userData.isZincObject &&
1624
- (intersects[i].object.name ||
1625
- intersects[i].object.userData.isMarker))
1626
- return intersects[i];
1627
- }
1628
- }
1629
- }
1630
- return undefined;
1631
- }
1632
1519
 
1633
- RendererModule.prototype.getAnnotationsFromObjects = function(objects) {
1634
- var annotations = [];
1635
- for (var i = 0; i < objects.length; i++) {
1636
- var zincObject = objects[i].userData;
1637
- var annotation = undefined;
1638
- if (zincObject) {
1639
- if (zincObject.isGlyph || zincObject.isGlyphset) {
1640
- var glyphset = zincObject;
1641
- if (zincObject.isGlyph)
1642
- glyphset = zincObject.getGlyphset();
1643
- annotation = glyphset.userData ? glyphset.userData[0] : undefined;
1644
- if (annotation && annotation.data) {
1645
- if (objects[i].name && objects[i].name != "")
1646
- annotation.data.id = objects[i].name;
1647
- else
1648
- annotation.data.id = glyphset.groupName;
1649
- }
1650
- } else {
1651
- annotation = zincObject.userData ? zincObject.userData[0] : undefined;
1652
- if (annotation && annotation.data){
1653
- annotation.data.id = objects[i].name;
1654
- }
1520
+ RendererModule.prototype.getIntersectedObject = function (intersects) {
1521
+ if (intersects) {
1522
+ for (var i = 0; i < intersects.length; i++) {
1523
+ if (intersects[i] !== undefined) {
1524
+ if (intersects[i].object && intersects[i].object.userData && intersects[i].object.userData.isZincObject && (intersects[i].object.name || intersects[i].object.userData.isMarker)) return intersects[i];
1525
+ }
1526
+ }
1527
+ }
1528
+
1529
+ return undefined;
1530
+ };
1531
+
1532
+ RendererModule.prototype.getAnnotationsFromObjects = function (objects) {
1533
+ var annotations = [];
1534
+ var count = 0;
1535
+
1536
+ for (var i = 0; i < objects.length; i++) {
1537
+ var zincObject = objects[i].userData;
1538
+ var annotation = undefined;
1539
+
1540
+ if (zincObject) {
1541
+ if (zincObject.isGlyph || zincObject.isGlyphset) {
1542
+ var glyphset = zincObject;
1543
+ if (zincObject.isGlyph) glyphset = (_readOnlyError("glyphset"), zincObject.getGlyphset());
1544
+ annotation = glyphset.userData ? glyphset.userData[0] : undefined;
1545
+
1546
+ if (annotation && annotation.data) {
1547
+ if (objects[i].name && objects[i].name != "") annotation.data.id = objects[i].name;else annotation.data.id = glyphset.groupName;
1548
+ }
1549
+ } else {
1550
+ annotation = zincObject.userData ? zincObject.userData[0] : undefined;
1551
+
1552
+ if (annotation && annotation.data) {
1553
+ annotation.data.id = objects[i].name;
1655
1554
  }
1656
1555
  }
1657
- annotations[i] = annotation;
1658
1556
  }
1659
- return annotations;
1660
- }
1661
1557
 
1662
- RendererModule.prototype.setHighlightedByObjects = function(objects, propagateChanges) {
1558
+ if (annotation) annotations[count++] = annotation;
1559
+ }
1560
+
1561
+ return annotations;
1562
+ };
1563
+
1564
+ RendererModule.prototype.setHighlightedByObjects = function (objects, propagateChanges) {
1663
1565
  var changed = this.graphicsHighlight.setHighlighted(objects);
1566
+
1664
1567
  if (changed && propagateChanges) {
1665
- var eventType = __webpack_require__("549c").EVENT_TYPE.HIGHLIGHTED;
1568
+ var eventType = __webpack_require__("9b21").EVENT_TYPE.HIGHLIGHTED;
1569
+
1666
1570
  var annotations = this.getAnnotationsFromObjects(objects);
1667
1571
  this.publishChanges(annotations, eventType);
1668
1572
  }
1669
- return changed;
1670
- }
1671
1573
 
1574
+ return changed;
1575
+ };
1672
1576
 
1673
- RendererModule.prototype.setHighlightedByZincObject = function(
1674
- zincObject, propagateChanges) {
1675
- return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1676
- }
1577
+ RendererModule.prototype.setHighlightedByZincObject = function (zincObject, propagateChanges) {
1578
+ return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1579
+ };
1677
1580
 
1678
- RendererModule.prototype.setupLiveCoordinates = function(zincObjects) {
1679
- if (zincObjects && (zincObjects.length > 0)) {
1581
+ RendererModule.prototype.setupLiveCoordinates = function (zincObjects) {
1582
+ if (zincObjects && zincObjects.length > 0) {
1680
1583
  var boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);
1681
- let newSelectedCenter = new THREE.Vector3();
1584
+ var newSelectedCenter = new THREE.Vector3();
1682
1585
  boundingBox.getCenter(newSelectedCenter);
1683
- if (this.selectedCenter == undefined)
1684
- this.selectedCenter = newSelectedCenter;
1685
- else {
1586
+ if (this.selectedCenter == undefined) this.selectedCenter = newSelectedCenter;else {
1686
1587
  this.selectedCenter.x = newSelectedCenter.x;
1687
1588
  this.selectedCenter.y = newSelectedCenter.y;
1688
1589
  }
1689
1590
  } else {
1690
1591
  this.selectedCenter = undefined;
1691
1592
  }
1692
- }
1593
+ };
1693
1594
 
1694
- RendererModule.prototype.objectsToZincObjects = function(objects) {
1595
+ RendererModule.prototype.objectsToZincObjects = function (objects) {
1695
1596
  var zincObjects = [];
1597
+
1696
1598
  for (var i = 0; i < objects.length; i++) {
1697
1599
  var zincObject = objects[i].userData;
1600
+
1698
1601
  if (zincObject) {
1699
1602
  if (zincObject.isGlyph || zincObject.isGlyphset) {
1700
1603
  var glyphset = zincObject;
1701
- if (zincObject.isGlyph)
1702
- glyphset = zincObject.getGlyphset();
1703
- zincObjects. push(glyphset);
1604
+ if (zincObject.isGlyph) glyphset = zincObject.getGlyphset();
1605
+ zincObjects.push(glyphset);
1704
1606
  } else {
1705
- zincObjects. push(zincObject);
1607
+ zincObjects.push(zincObject);
1706
1608
  }
1707
1609
  }
1708
1610
  }
1709
- return zincObjects;
1710
- }
1711
1611
 
1612
+ return zincObjects;
1613
+ };
1712
1614
 
1713
- RendererModule.prototype.setSelectedByObjects = function(
1714
- objects, propagateChanges) {
1615
+ RendererModule.prototype.setSelectedByObjects = function (objects, propagateChanges) {
1715
1616
  var changed = this.graphicsHighlight.setSelected(objects);
1617
+
1716
1618
  if (changed) {
1717
1619
  var zincObjects = this.objectsToZincObjects(objects);
1718
1620
  this.setupLiveCoordinates(zincObjects);
1621
+
1719
1622
  if (propagateChanges) {
1720
- var eventType = __webpack_require__("549c").EVENT_TYPE.SELECTED;
1623
+ var eventType = __webpack_require__("9b21").EVENT_TYPE.SELECTED;
1624
+
1721
1625
  var annotations = this.getAnnotationsFromObjects(objects);
1722
1626
  this.publishChanges(annotations, eventType);
1723
1627
  }
1724
1628
  }
1629
+
1725
1630
  return changed;
1726
- }
1631
+ };
1727
1632
 
1728
- RendererModule.prototype.setSelectedByZincObject = function(
1729
- zincObject, propagateChanges) {
1633
+ RendererModule.prototype.setSelectedByZincObject = function (zincObject, propagateChanges) {
1730
1634
  return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1731
- }
1635
+ };
1732
1636
 
1733
- var addGlyphToArray = function(objects) {
1734
- return function(glyph) {
1637
+ var addGlyphToArray = function addGlyphToArray(objects) {
1638
+ return function (glyph) {
1735
1639
  objects.push(glyph.getMesh());
1736
- }
1737
- }
1640
+ };
1641
+ };
1738
1642
 
1739
- RendererModule.prototype.findObjectsByGroupName = function(groupName) {
1643
+ RendererModule.prototype.findObjectsByGroupName = function (groupName) {
1740
1644
  var geometries = this.scene.findGeometriesWithGroupName(groupName);
1741
1645
  var objects = [];
1742
- for (var i = 0; i < geometries.length; i ++ ) {
1646
+
1647
+ for (var i = 0; i < geometries.length; i++) {
1743
1648
  objects.push(geometries[i].morph);
1744
1649
  }
1650
+
1745
1651
  var glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);
1746
- for (var i = 0; i < glyphsets.length; i ++ ) {
1747
- glyphsets[i].forEachGlyph(addGlyphToArray(objects));
1652
+
1653
+ for (var _i = 0; _i < glyphsets.length; _i++) {
1654
+ glyphsets[_i].forEachGlyph(addGlyphToArray(objects));
1748
1655
  }
1749
-
1656
+
1750
1657
  return objects;
1751
- }
1658
+ };
1752
1659
 
1753
- RendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {
1660
+ RendererModule.prototype.setHighlightedByGroupName = function (groupName, propagateChanges) {
1754
1661
  var objects = this.findObjectsByGroupName(groupName);
1755
1662
  return this.setHighlightedByObjects(objects, propagateChanges);
1756
- }
1663
+ };
1757
1664
 
1758
- RendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {
1665
+ RendererModule.prototype.setSelectedByGroupName = function (groupName, propagateChanges) {
1759
1666
  var objects = this.findObjectsByGroupName(groupName);
1760
1667
  return this.setSelectedByObjects(objects, propagateChanges);
1761
- }
1668
+ };
1762
1669
 
1763
- RendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {
1670
+ RendererModule.prototype.changeBackgroundColour = function (backgroundColourString) {
1764
1671
  var colour = new THREE.Color(backgroundColourString);
1672
+
1765
1673
  if (this.zincRenderer) {
1766
1674
  var internalRenderer = this.zincRenderer.getThreeJSRenderer();
1767
- internalRenderer.setClearColor( colour, 1 );
1675
+ internalRenderer.setClearColor(colour, 1);
1768
1676
  }
1769
- }
1677
+ };
1770
1678
 
1771
- RendererModule.prototype.resetView = function() {
1772
- if (this.zincRenderer)
1773
- this.zincRenderer.resetView();
1774
- }
1775
-
1776
- RendererModule.prototype.viewAll = function() {
1777
- if (this.zincRenderer)
1778
- this.zincRenderer.viewAll();
1779
- }
1679
+ RendererModule.prototype.resetView = function () {
1680
+ if (this.zincRenderer) this.zincRenderer.resetView();
1681
+ };
1780
1682
 
1683
+ RendererModule.prototype.viewAll = function () {
1684
+ if (this.zincRenderer) this.zincRenderer.viewAll();
1685
+ };
1781
1686
  /**
1782
1687
  * Start the animation and let the renderer to processs with
1783
1688
  * time progression
1784
1689
  */
1785
- RendererModule.prototype.playAnimation = function(flag) {
1786
- if (this.zincRenderer)
1787
- this.zincRenderer.playAnimation = flag;
1788
- }
1789
1690
 
1691
+
1692
+ RendererModule.prototype.playAnimation = function (flag) {
1693
+ if (this.zincRenderer) this.zincRenderer.playAnimation = flag;
1694
+ };
1790
1695
  /**
1791
1696
  * Set the speed of playback
1792
1697
  */
1793
- RendererModule.prototype.setPlayRate = function(value) {
1794
- if (this.zincRenderer)
1795
- this.zincRenderer.setPlayRate(value);
1796
- }
1797
1698
 
1699
+
1700
+ RendererModule.prototype.setPlayRate = function (value) {
1701
+ if (this.zincRenderer) this.zincRenderer.setPlayRate(value);
1702
+ };
1798
1703
  /**
1799
1704
  * Get the speed of playback
1800
1705
  */
1801
- RendererModule.prototype.getPlayRate = function(value) {
1802
- if (this.zincRenderer)
1803
- return this.zincRenderer.getPlayRate();
1804
- else
1805
- return 0.0;
1806
- }
1807
-
1808
- /** Initialise everything in the renderer, including the 3D renderer,
1809
- * and picker for the 3D renderer.
1810
- *
1811
- */
1812
- RendererModule.prototype.initialiseRenderer = function(displayAreaIn) {
1813
- if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
1814
- var returnedValue = createRenderer();
1815
- this.zincRenderer = returnedValue["renderer"];
1816
- this.rendererContainer = returnedValue["container"];
1817
- }
1818
- if (displayAreaIn) {
1819
- this.displayArea = displayAreaIn;
1820
- this.displayArea.appendChild( this.rendererContainer );
1821
- if (this.zincRenderer) {
1822
- this.zincRenderer.animate();
1823
- if (this.toolTip === undefined)
1824
- this.toolTip = new (__webpack_require__("76bf").ToolTip)(this.displayArea);
1825
- }
1826
- }
1827
- }
1828
-
1829
- RendererModule.prototype.destroy = function() {
1830
- if (this.zincRenderer) {
1831
- this.zincRenderer.dispose();
1832
- this.zincRenderer.getThreeJSRenderer().dispose();
1833
- this.zincRenderer = undefined;
1834
- }
1835
- (__webpack_require__("3966").BaseModule).prototype.destroy.call( this );
1836
- }
1837
-
1838
- exports.RendererModule = RendererModule;
1839
-
1840
-
1841
- /***/ }),
1842
-
1843
- /***/ "7c81":
1844
- /***/ (function(module, exports) {
1845
-
1846
- module.exports = require("core-js/modules/es.array.splice");
1847
-
1848
- /***/ }),
1849
-
1850
- /***/ "7d9b":
1851
- /***/ (function(module, exports, __webpack_require__) {
1852
1706
 
1853
- // extracted by mini-css-extract-plugin
1854
1707
 
1855
- /***/ }),
1708
+ RendererModule.prototype.getPlayRate = function (value) {
1709
+ if (this.zincRenderer) return this.zincRenderer.getPlayRate();else return 0.0;
1710
+ };
1711
+ /** Initialise everything in the renderer, including the 3D renderer,
1712
+ * and picker for the 3D renderer.
1713
+ *
1714
+ */
1856
1715
 
1857
- /***/ "7f9f":
1858
- /***/ (function(module, exports) {
1859
1716
 
1860
- module.exports = require("element-ui/lib/locale");
1717
+ RendererModule.prototype.initialiseRenderer = function (displayAreaIn) {
1718
+ if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
1719
+ var returnedValue = createRenderer();
1720
+ this.zincRenderer = returnedValue["renderer"];
1721
+ this.rendererContainer = returnedValue["container"];
1722
+ }
1861
1723
 
1862
- /***/ }),
1724
+ if (displayAreaIn) {
1725
+ this.displayArea = displayAreaIn;
1726
+ this.displayArea.appendChild(this.rendererContainer);
1727
+ if (this.zincRenderer) this.zincRenderer.animate();
1728
+ }
1729
+ };
1863
1730
 
1864
- /***/ "80c4":
1865
- /***/ (function(module, exports) {
1731
+ RendererModule.prototype.destroy = function () {
1732
+ if (this.zincRenderer) {
1733
+ this.zincRenderer.dispose();
1734
+ this.zincRenderer.getThreeJSRenderer().dispose();
1735
+ this.zincRenderer = undefined;
1736
+ }
1866
1737
 
1867
- module.exports = require("element-ui/lib/theme-chalk/option.css");
1738
+ __webpack_require__("6aa6").BaseModule.prototype.destroy.call(this);
1739
+ };
1740
+
1741
+ exports.RendererModule = RendererModule;
1868
1742
 
1869
1743
  /***/ }),
1870
1744
 
@@ -1894,146 +1768,6 @@ module.exports = require("element-ui/lib/tabs");
1894
1768
 
1895
1769
  module.exports = require("core-js/modules/es.array.iterator");
1896
1770
 
1897
- /***/ }),
1898
-
1899
- /***/ "8cec":
1900
- /***/ (function(module, exports, __webpack_require__) {
1901
-
1902
- var THREE = __webpack_require__("9206").THREE;
1903
-
1904
- /**
1905
- * This module manages highlighted and selected objects in 3D modules.
1906
- *
1907
- * @class
1908
- * @returns {exports.GraphicsHighlight}
1909
- */
1910
- exports.GraphicsHighlight = function() {
1911
- var currentHighlightedObjects = [];
1912
- var currentSelectedObjects = [];
1913
- this.highlightColour = 0x0000FF;
1914
- this.selectColour = 0x00FF00;
1915
- this.originalColour = 0x000000;
1916
- var _this = this;
1917
-
1918
- var isDifferent = function(array1, array2) {
1919
- if ((array1.length == 0) && (array2.length == 0))
1920
- return false;
1921
-
1922
- for (var i = 0; i < array1.length; i++) {
1923
- var matched = false;
1924
- for (var j = 0; j < array2.length; j++) {
1925
- if (array1[i] === array2[j]) {
1926
- matched = true;
1927
- }
1928
- }
1929
- if (!matched)
1930
- return true;
1931
- }
1932
- for (var i = 0; i < array2.length; i++) {
1933
- var matched = false;
1934
- for (var j = 0; j < array1.length; j++) {
1935
- if (array2[i] === array1[j]) {
1936
- matched = true;
1937
- }
1938
- }
1939
- if (!matched)
1940
- return true;
1941
- }
1942
- return false;
1943
- }
1944
-
1945
- var getUnmatchingObjects = function(objectsArray1, objectsArray2) {
1946
- var unmatchingObjects = [];
1947
- if (objectsArray2.length == 0)
1948
- return objectsArray1;
1949
- for (var i = 0; i < objectsArray1.length; i++) {
1950
- var matched = false;
1951
- for (var j = 0; j < objectsArray2.length; j++) {
1952
- if (objectsArray1[i] === objectsArray2[j]) {
1953
- matched = true;
1954
- }
1955
- }
1956
- if (!matched)
1957
- unmatchingObjects.push(objectsArray1[i]);
1958
- }
1959
- return unmatchingObjects;
1960
- }
1961
-
1962
- this.setHighlighted = function(objects) {
1963
- var previousHighlightedObjects = currentHighlightedObjects;
1964
- _this.resetHighlighted();
1965
- // Selected object cannot be highlighted
1966
- var array = getUnmatchingObjects(objects, currentSelectedObjects);
1967
- var fullList = getFullListOfObjects(array);
1968
- for (var i = 0; i < fullList.length; i++) {
1969
- if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
1970
- fullList[i].material.emissive.setHex(_this.highlightColour);
1971
- }
1972
- currentHighlightedObjects = array;
1973
- return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
1974
- }
1975
-
1976
- this.setSelected = function(objects) {
1977
- // first find highlighted object that are not selected
1978
- var previousHSelectedObjects = currentSelectedObjects;
1979
- var array = getUnmatchingObjects(currentHighlightedObjects, objects);
1980
- currentHighlightedObjects = array;
1981
- _this.resetSelected();
1982
- var fullList = getFullListOfObjects(objects);
1983
- for (var i = 0; i < fullList.length; i++) {
1984
- if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
1985
- fullList[i].material.emissive.setHex(_this.selectColour);
1986
- }
1987
- currentSelectedObjects = objects;
1988
- return isDifferent(currentSelectedObjects, previousHSelectedObjects);
1989
- }
1990
-
1991
- var getFullListOfObjects = function(objects) {
1992
- let fullList = [];
1993
- for (var i = 0; i < objects.length; i++) {
1994
- if (objects[i].material)
1995
- fullList.push(objects[i]);
1996
- }
1997
- return fullList;
1998
- }
1999
-
2000
- this.resetHighlighted = function() {
2001
- let fullList = getFullListOfObjects(currentHighlightedObjects);
2002
- for (var i = 0; i < fullList.length; i++) {
2003
- if (fullList[i] && fullList[i].material) {
2004
- if (fullList[i].material.emissive)
2005
- fullList[i].material.emissive.setHex(_this.originalColour);
2006
- if (fullList[i].material.depthFunc)
2007
- fullList[i].material.depthFunc = THREE.LessEqualDepth;
2008
- }
2009
- }
2010
- currentHighlightedObjects = [];
2011
- }
2012
-
2013
- this.resetSelected = function() {
2014
- let fullList = getFullListOfObjects(currentSelectedObjects);
2015
- for (var i = 0; i < fullList.length; i++) {
2016
- if (fullList[i] && fullList[i].material) {
2017
- if (fullList[i].material.emissive)
2018
- fullList[i].material.emissive.setHex(_this.originalColour);
2019
- if (fullList[i].material.depthFunc)
2020
- fullList[i].material.depthFunc = THREE.LessEqualDepth;
2021
- }
2022
- }
2023
- currentSelectedObjects = [];
2024
- }
2025
-
2026
- this.getSelected = function() {
2027
- return currentSelectedObjects;
2028
- }
2029
-
2030
- this.reset = function() {
2031
- _this.resetSelected();
2032
- _this.resetHighlighted();
2033
- }
2034
- }
2035
-
2036
-
2037
1771
  /***/ }),
2038
1772
 
2039
1773
  /***/ "8f11":
@@ -2071,6 +1805,17 @@ module.exports = require("element-ui/lib/theme-chalk/slider.css");
2071
1805
 
2072
1806
  /***/ }),
2073
1807
 
1808
+ /***/ "984d":
1809
+ /***/ (function(module, exports) {
1810
+
1811
+ exports.annotation = function () {
1812
+ this.type = "anatomical";
1813
+ this.data = undefined;
1814
+ this.isAnnotation = true;
1815
+ };
1816
+
1817
+ /***/ }),
1818
+
2074
1819
  /***/ "9985":
2075
1820
  /***/ (function(module, exports) {
2076
1821
 
@@ -2085,22 +1830,86 @@ module.exports = require("element-ui/lib/theme-chalk/base.css");
2085
1830
 
2086
1831
  /***/ }),
2087
1832
 
2088
- /***/ "9bb0":
2089
- /***/ (function(module, exports) {
1833
+ /***/ "9b21":
1834
+ /***/ (function(module, exports, __webpack_require__) {
2090
1835
 
2091
- module.exports = require("@soda/get-current-script");
1836
+ __webpack_require__("7c81");
1837
+
1838
+ var EVENT_TYPE = {
1839
+ ALL: 0,
1840
+ SELECTED: 1,
1841
+ HIGHLIGHTED: 2
1842
+ };
1843
+
1844
+ var SelectionEvent = function SelectionEvent(eventTypeIn, identifiersIn) {
1845
+ this.eventType = eventTypeIn;
1846
+ this.identifiers = identifiersIn;
1847
+ };
1848
+
1849
+ var returnFullID = function returnFullID(sourceId) {//return full annotations with all different name
1850
+ };
1851
+
1852
+ var Subscription = function Subscription(subscriberIn, callbackIn, eventType) {
1853
+ this.targetedID = [];
1854
+ var subscriber = subscriberIn;
1855
+ var callback = callbackIn;
1856
+ this.targetEventType = eventType;
1857
+
1858
+ var _this = this;
1859
+
1860
+ if (eventType === undefined) this.targetEventType = EVENT_TYPE.ALL;
1861
+
1862
+ this.getEventType = function () {
1863
+ return eventType;
1864
+ };
1865
+
1866
+ this.notify = function (source, eventType, ids) {
1867
+ if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL || _this.targetEventType === eventType)) {
1868
+ //should support different type of id e.g lyph, name, fmas...
1869
+ //need a function that finds all relavant ids
1870
+ var event = new SelectionEvent(eventType, ids);
1871
+ callback(event);
1872
+ }
1873
+ };
1874
+ };
1875
+
1876
+ exports.EventNotifier = function () {
1877
+ var subscriptions = [];
1878
+
1879
+ this.publish = function (source, eventType, id) {
1880
+ for (var i = 0; i < subscriptions.length; i++) {
1881
+ subscriptions[i].notify(source, eventType, id);
1882
+ }
1883
+ };
1884
+
1885
+ this.subscribe = function (subscriber, callbackFunction, eventType) {
1886
+ if (typeof callbackFunction === "function") {
1887
+ var subscription = new Subscription(subscriber, callbackFunction, eventType);
1888
+ subscriptions.push(subscription);
1889
+ return subscription;
1890
+ }
1891
+
1892
+ return undefined;
1893
+ };
1894
+
1895
+ this.unsubscribe = function (subscription) {
1896
+ for (var i = 0; i < subscriptions.length; i++) {
1897
+ if (subscription === subscriptions[i]) {
1898
+ subscriptions.splice(i, 1);
1899
+ return;
1900
+ }
1901
+ }
1902
+ };
1903
+ };
1904
+
1905
+ exports.EVENT_TYPE = EVENT_TYPE;
2092
1906
 
2093
1907
  /***/ }),
2094
1908
 
2095
- /***/ "a0d7":
1909
+ /***/ "9bb0":
2096
1910
  /***/ (function(module, exports) {
2097
1911
 
2098
- exports.annotation = function() {
2099
- this.type = "anatomical";
2100
- this.data = undefined;
2101
- this.isAnnotation = true;
2102
- }
2103
-
1912
+ module.exports = require("@soda/get-current-script");
2104
1913
 
2105
1914
  /***/ }),
2106
1915
 
@@ -2164,13 +1973,6 @@ module.exports = require("element-ui/lib/icon");
2164
1973
 
2165
1974
  /***/ }),
2166
1975
 
2167
- /***/ "b723":
2168
- /***/ (function(module, exports, __webpack_require__) {
2169
-
2170
- // extracted by mini-css-extract-plugin
2171
-
2172
- /***/ }),
2173
-
2174
1976
  /***/ "b777":
2175
1977
  /***/ (function(module, exports) {
2176
1978
 
@@ -2206,21 +2008,84 @@ module.exports = require("element-ui/lib/option");
2206
2008
 
2207
2009
  /***/ }),
2208
2010
 
2209
- /***/ "c45a":
2210
- /***/ (function(module, exports) {
2011
+ /***/ "cf41":
2012
+ /***/ (function(module, exports, __webpack_require__) {
2013
+
2014
+ __webpack_require__("51f7");
2015
+
2016
+ __webpack_require__("bfab");
2017
+
2018
+ /**
2019
+ * @author alteredq / http://alteredqualia.com/
2020
+ * @author mr.doob / http://mrdoob.com/
2021
+ */
2022
+ exports.WEBGL = {
2023
+ isWebGLAvailable: function isWebGLAvailable() {
2024
+ try {
2025
+ var canvas = document.createElement('canvas');
2026
+ return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));
2027
+ } catch (e) {
2028
+ return false;
2029
+ }
2030
+ },
2031
+ isWebGL2Available: function isWebGL2Available() {
2032
+ try {
2033
+ var canvas = document.createElement('canvas');
2034
+ return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2'));
2035
+ } catch (e) {
2036
+ return false;
2037
+ }
2038
+ },
2039
+ getWebGLErrorMessage: function getWebGLErrorMessage() {
2040
+ return this.getErrorMessage(1);
2041
+ },
2042
+ getWebGL2ErrorMessage: function getWebGL2ErrorMessage() {
2043
+ return this.getErrorMessage(2);
2044
+ },
2045
+ getErrorMessage: function getErrorMessage(version) {
2046
+ var names = {
2047
+ 1: 'WebGL',
2048
+ 2: 'WebGL 2'
2049
+ };
2050
+ var contexts = {
2051
+ 1: window.WebGLRenderingContext,
2052
+ 2: window.WebGL2RenderingContext
2053
+ };
2054
+ var message = 'This module requires <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#008">$1</a> support but your $0 does not seem to support it.';
2055
+ var element = document.createElement('div');
2056
+ element.id = 'webglmessage';
2057
+ element.style.fontFamily = 'monospace';
2058
+ element.style.fontSize = '20px';
2059
+ element.style.fontWeight = 'normal';
2060
+ element.style.textAlign = 'center';
2061
+ element.style.background = '#fff';
2062
+ element.style.color = '#000';
2063
+ element.style.padding = '1.5em';
2064
+ element.style.width = '400px';
2065
+ element.style.margin = '5em auto 0';
2066
+
2067
+ if (contexts[version]) {
2068
+ message = message.replace('$0', 'graphics card');
2069
+ } else {
2070
+ message = message.replace('$0', 'browser');
2071
+ }
2211
2072
 
2212
- module.exports = require("broadcast-channel");
2073
+ message = message.replace('$1', names[version]);
2074
+ element.innerHTML = message;
2075
+ return element;
2076
+ }
2077
+ };
2213
2078
 
2214
2079
  /***/ }),
2215
2080
 
2216
- /***/ "d378":
2217
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
2081
+ /***/ "da60":
2082
+ /***/ (function(module, exports) {
2218
2083
 
2219
- "use strict";
2220
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_d67c1b8e_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("f8fb");
2221
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_d67c1b8e_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_d67c1b8e_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
2222
- /* unused harmony reexport * */
2084
+ function _readOnlyError(name) {
2085
+ throw new Error("\"" + name + "\" is read-only");
2086
+ }
2223
2087
 
2088
+ module.exports = _readOnlyError;
2224
2089
 
2225
2090
  /***/ }),
2226
2091
 
@@ -2238,13 +2103,6 @@ module.exports = require("core-js/modules/es.array.from");
2238
2103
 
2239
2104
  /***/ }),
2240
2105
 
2241
- /***/ "f8fb":
2242
- /***/ (function(module, exports, __webpack_require__) {
2243
-
2244
- // extracted by mini-css-extract-plugin
2245
-
2246
- /***/ }),
2247
-
2248
2106
  /***/ "fae3":
2249
2107
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2250
2108
 
@@ -2279,12 +2137,12 @@ if (typeof window !== 'undefined') {
2279
2137
  // Indicate to webpack that this file can be concatenated
2280
2138
  /* harmony default export */ var setPublicPath = (null);
2281
2139
 
2282
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d8b3812-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ScaffoldVuer.vue?vue&type=template&id=d67c1b8e&scoped=true&
2283
- var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"loading",rawName:"v-loading",value:(_vm.loading),expression:"loading"}],ref:"scaffoldContainer",staticClass:"scaffold-container",attrs:{"element-loading-text":"Loading...","element-loading-spinner":"el-icon-loading","element-loading-background":"rgba(0, 0, 0, 0.3)"}},[_c('SvgSpriteColor'),_c('div',{ref:"display",staticStyle:{"height":"100%","width":"100%"},attrs:{"id":"organsDisplayArea","tabindex":"-1"},on:{"keydown":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==66){ return null; }return _vm.backgroundChangeCallback($event)}}}),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayUI && !_vm.isTransitioning),expression:"displayUI && !isTransitioning"}]},[(_vm.displayWarning)?_c('el-popover',{ref:"warningPopover",attrs:{"content":_vm.warningMessage,"placement":"right","append-to-body":false,"trigger":"manual","popper-class":"warning-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[6].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[6], "value", $$v)},expression:"hoverVisabilities[6].value"}}):_vm._e(),(_vm.displayWarning)?_c('i',{directives:[{name:"popover",rawName:"v-popover:warningPopover",arg:"warningPopover"}],staticClass:"el-icon-warning warning-icon",on:{"mouseover":function($event){return _vm.showToolitip(6)},"mouseout":function($event){return _vm.hideToolitip(6)}}},[_c('span',{staticClass:"warning-text"},[_vm._v("Beta")])]):_vm._e(),_c('el-popover',{ref:"checkBoxPopover",attrs:{"content":"Change region visibility","placement":"right","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[5].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[5], "value", $$v)},expression:"hoverVisabilities[5].value"}}),_c('TraditionalControls',{directives:[{name:"popover",rawName:"v-popover:checkBoxPopover",arg:"checkBoxPopover"}],ref:"traditionalControl",attrs:{"help-mode":_vm.helpMode,"module":_vm.$module,"show-colour-picker":_vm.showColourPicker},on:{"object-selected":_vm.objectSelected,"object-hovered":_vm.objectHovered,"drawer-toggled":_vm.drawerToggled}}),_c('div',{staticClass:"opacity-box"},[_c('OpacityControls',{ref:"opacityControl"})],1),(_vm.sceneData.timeVarying)?_c('el-popover',{ref:"sliderPopover",attrs:{"content":"Move the slider to animate the region","placement":"top","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper top-popper non-selectable"},model:{value:(_vm.hoverVisabilities[4].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[4], "value", $$v)},expression:"hoverVisabilities[4].value"}}):_vm._e(),(_vm.sceneData.timeVarying)?_c('div',{directives:[{name:"popover",rawName:"v-popover:sliderPopover",arg:"sliderPopover"}],staticClass:"time-slider-container",class:[ _vm.minimisedSlider ? 'minimised' : '', _vm.sliderPosition]},[_c('el-tabs',{attrs:{"type":"card"}},[_c('el-tab-pane',{attrs:{"label":"Animate scaffold"}},[_c('el-row',{staticClass:"tab-content"},[(_vm.isPlaying)?_c('SvgIcon',{staticClass:"icon-button video-button",attrs:{"icon":"pause"},nativeOn:{"click":function($event){return _vm.play(false)}}}):_c('SvgIcon',{staticClass:"video-button icon-button",attrs:{"icon":"play"},nativeOn:{"click":function($event){return _vm.play(true)}}}),_c('el-slider',{staticClass:"slider",attrs:{"min":0,"max":_vm.timeMax,"value":_vm.sceneData.currentTime / 100 * _vm.timeMax,"step":0.1,"tooltip-class":"time-slider-tooltip","format-tooltip":_vm.formatTooltip,"marks":_vm.timeStamps},on:{"input":function($event){return _vm.timeChange($event)}}})],1)],1),_c('el-tab-pane',{attrs:{"label":"Animation data"}},[_c('el-row',{staticClass:"tab-content"},[_c('div',{staticClass:"animation-data"},[_vm._v(" Original duration: "),_c('div',{staticClass:"purple"},[_vm._v(" "+_vm._s(_vm.orginalDuration)+" ")])]),_c('div',{staticClass:"animation-data"},[_vm._v(" Animation duration: "),_c('div',{staticClass:"purple"},[_vm._v(" "+_vm._s(_vm.animateDuration)+" ")])]),_c('div',{staticClass:"animation-data"},[_vm._v(" Playback speed "),_c('el-select',{staticClass:"select-box",attrs:{"popper-append-to-body":true,"value":_vm.currentSpeed,"placeholder":"Select","popper-class":"scaffold_viewer_dropdown"},on:{"change":function($event){return _vm.speedChanged($event)}}},_vm._l((_vm.playSpeed),function(item){return _c('el-option',{key:item.value,attrs:{"label":item.label,"value":item.value}})}),1)],1)])],1)],1)],1):_vm._e(),_c('div',{staticClass:"bottom-right-control"},[_c('el-popover',{attrs:{"content":"Zoom in","placement":"left","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper left-popper non-selectable"},model:{value:(_vm.hoverVisabilities[0].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[0], "value", $$v)},expression:"hoverVisabilities[0].value"}},[_c('SvgIcon',{staticClass:"icon-button zoomIn",attrs:{"slot":"reference","icon":"zoomIn"},nativeOn:{"click":function($event){return _vm.zoomIn()},"mouseover":function($event){return _vm.showToolitip(0)},"mouseout":function($event){return _vm.hideToolitip(0)}},slot:"reference"})],1),_c('el-popover',{attrs:{"content":"Zoom out","placement":"top-end","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper popper-zoomout non-selectable"},model:{value:(_vm.hoverVisabilities[1].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[1], "value", $$v)},expression:"hoverVisabilities[1].value"}},[_c('SvgIcon',{staticClass:"icon-button zoomOut",attrs:{"slot":"reference","icon":"zoomOut"},nativeOn:{"click":function($event){return _vm.zoomOut()},"mouseover":function($event){return _vm.showToolitip(1)},"mouseout":function($event){return _vm.hideToolitip(1)}},slot:"reference"})],1),_c('el-popover',{attrs:{"placement":"top","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper non-selectable"},model:{value:(_vm.hoverVisabilities[2].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[2], "value", $$v)},expression:"hoverVisabilities[2].value"}},[_c('div',[_vm._v(" Fit to "),_c('br'),_vm._v(" window ")]),_c('SvgIcon',{staticClass:"icon-button fitWindow",attrs:{"slot":"reference","icon":"fitWindow"},nativeOn:{"click":function($event){return _vm.fitWindow()},"mouseover":function($event){return _vm.showToolitip(2)},"mouseout":function($event){return _vm.hideToolitip(2)}},slot:"reference"})],1)],1),_c('el-popover',{ref:"backgroundPopover",attrs:{"placement":"top-start","width":"128","append-to-body":false,"trigger":"click","popper-class":"background-popper non-selectable"}},[_c('el-row',{staticClass:"backgroundText"},[_vm._v(" Change background ")]),_c('el-row',{staticClass:"backgroundChooser"},_vm._l((_vm.availableBackground),function(item){return _c('div',{key:item,class:['backgroundChoice', item, item == _vm.currentBackground ? 'active' :''],on:{"click":function($event){return _vm.backgroundChangeCallback(item)}}})}),0)],1),_c('el-popover',{attrs:{"content":"Change background color","placement":"right","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[3].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[3], "value", $$v)},expression:"hoverVisabilities[3].value"}},[_c('SvgIcon',{directives:[{name:"popover",rawName:"v-popover:backgroundPopover",arg:"backgroundPopover"}],staticClass:"icon-button background-colour",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{"slot":"reference","icon":"changeBckgd"},nativeOn:{"mouseover":function($event){return _vm.showToolitip(3)},"mouseout":function($event){return _vm.hideToolitip(3)}},slot:"reference"})],1)],1)],1)}
2140
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"de8fb6da-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ScaffoldVuer.vue?vue&type=template&id=023c058f&scoped=true&
2141
+ var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"loading",rawName:"v-loading",value:(_vm.loading),expression:"loading"}],ref:"scaffoldContainer",staticClass:"scaffold-container",attrs:{"element-loading-text":"Loading...","element-loading-spinner":"el-icon-loading","element-loading-background":"rgba(0, 0, 0, 0.3)"}},[_c('map-svg-sprite-color'),_c('div',{ref:"display",staticStyle:{"height":"100%","width":"100%"},attrs:{"id":"organsDisplayArea","tabindex":"-1"},on:{"keydown":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==66){ return null; }return _vm.backgroundChangeCallback($event)}}}),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayUI && !_vm.isTransitioning),expression:"displayUI && !isTransitioning"}]},[(_vm.displayWarning)?_c('el-popover',{ref:"warningPopover",attrs:{"content":_vm.warningMessage,"placement":"right","append-to-body":false,"trigger":"manual","popper-class":"warning-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[6].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[6], "value", $$v)},expression:"hoverVisabilities[6].value"}}):_vm._e(),(_vm.displayWarning)?_c('i',{directives:[{name:"popover",rawName:"v-popover:warningPopover",arg:"warningPopover"}],staticClass:"el-icon-warning warning-icon",on:{"mouseover":function($event){return _vm.showToolitip(6)},"mouseout":function($event){return _vm.hideToolitip(6)}}},[_c('span',{staticClass:"warning-text"},[_vm._v("Beta")])]):_vm._e(),_c('el-popover',{ref:"checkBoxPopover",attrs:{"content":"Change region visibility","placement":"right","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[5].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[5], "value", $$v)},expression:"hoverVisabilities[5].value"}}),_c('TraditionalControls',{directives:[{name:"popover",rawName:"v-popover:checkBoxPopover",arg:"checkBoxPopover"}],ref:"traditionalControl",attrs:{"help-mode":_vm.helpMode,"module":_vm.$module,"show-colour-picker":_vm.showColourPicker},on:{"object-selected":_vm.objectSelected,"object-hovered":_vm.objectHovered,"drawer-toggled":_vm.drawerToggled}}),_c('div',{staticClass:"opacity-box"},[_c('OpacityControls',{ref:"opacityControl"})],1),(_vm.sceneData.timeVarying)?_c('el-popover',{ref:"sliderPopover",attrs:{"content":"Move the slider to animate the region","placement":"top","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper top-popper non-selectable"},model:{value:(_vm.hoverVisabilities[4].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[4], "value", $$v)},expression:"hoverVisabilities[4].value"}}):_vm._e(),(_vm.sceneData.timeVarying)?_c('div',{directives:[{name:"popover",rawName:"v-popover:sliderPopover",arg:"sliderPopover"}],staticClass:"time-slider-container",class:[ _vm.minimisedSlider ? 'minimised' : '', _vm.sliderPosition]},[_c('el-tabs',{attrs:{"type":"card"}},[_c('el-tab-pane',{attrs:{"label":"Animate scaffold"}},[_c('el-row',{staticClass:"tab-content"},[(_vm.isPlaying)?_c('map-svg-icon',{staticClass:"icon-button video-button",attrs:{"icon":"pause"},nativeOn:{"click":function($event){return _vm.play(false)}}}):_c('map-svg-icon',{staticClass:"video-button icon-button",attrs:{"icon":"play"},nativeOn:{"click":function($event){return _vm.play(true)}}}),_c('el-slider',{staticClass:"slider",attrs:{"min":0,"max":_vm.timeMax,"value":_vm.sceneData.currentTime / 100 * _vm.timeMax,"step":0.1,"tooltip-class":"time-slider-tooltip","format-tooltip":_vm.formatTooltip,"marks":_vm.timeStamps},on:{"input":function($event){return _vm.timeChange($event)}}})],1)],1),_c('el-tab-pane',{attrs:{"label":"Animation data"}},[_c('el-row',{staticClass:"tab-content"},[_c('div',{staticClass:"animation-data"},[_vm._v(" Original duration: "),_c('div',{staticClass:"purple"},[_vm._v(" "+_vm._s(_vm.orginalDuration)+" ")])]),_c('div',{staticClass:"animation-data"},[_vm._v(" Animation duration: "),_c('div',{staticClass:"purple"},[_vm._v(" "+_vm._s(_vm.animateDuration)+" ")])]),_c('div',{staticClass:"animation-data"},[_vm._v(" Playback speed "),_c('el-select',{staticClass:"select-box",attrs:{"popper-append-to-body":true,"value":_vm.currentSpeed,"placeholder":"Select","popper-class":"scaffold_viewer_dropdown"},on:{"change":function($event){return _vm.speedChanged($event)}}},_vm._l((_vm.playSpeed),function(item){return _c('el-option',{key:item.value,attrs:{"label":item.label,"value":item.value}})}),1)],1)])],1)],1)],1):_vm._e(),_c('div',{staticClass:"bottom-right-control"},[_c('el-popover',{attrs:{"content":"Zoom in","placement":"left","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper left-popper non-selectable"},model:{value:(_vm.hoverVisabilities[0].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[0], "value", $$v)},expression:"hoverVisabilities[0].value"}},[_c('map-svg-icon',{staticClass:"icon-button zoomIn",attrs:{"slot":"reference","icon":"zoomIn"},nativeOn:{"click":function($event){return _vm.zoomIn()},"mouseover":function($event){return _vm.showToolitip(0)},"mouseout":function($event){return _vm.hideToolitip(0)}},slot:"reference"})],1),_c('el-popover',{attrs:{"content":"Zoom out","placement":"top-end","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper popper-zoomout non-selectable"},model:{value:(_vm.hoverVisabilities[1].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[1], "value", $$v)},expression:"hoverVisabilities[1].value"}},[_c('map-svg-icon',{staticClass:"icon-button zoomOut",attrs:{"slot":"reference","icon":"zoomOut"},nativeOn:{"click":function($event){return _vm.zoomOut()},"mouseover":function($event){return _vm.showToolitip(1)},"mouseout":function($event){return _vm.hideToolitip(1)}},slot:"reference"})],1),_c('el-popover',{attrs:{"placement":"top","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper non-selectable"},model:{value:(_vm.hoverVisabilities[2].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[2], "value", $$v)},expression:"hoverVisabilities[2].value"}},[_c('div',[_vm._v(" Fit to "),_c('br'),_vm._v(" window ")]),_c('map-svg-icon',{staticClass:"icon-button fitWindow",attrs:{"slot":"reference","icon":"fitWindow"},nativeOn:{"click":function($event){return _vm.fitWindow()},"mouseover":function($event){return _vm.showToolitip(2)},"mouseout":function($event){return _vm.hideToolitip(2)}},slot:"reference"})],1)],1),_c('el-popover',{ref:"backgroundPopover",attrs:{"placement":"top-start","width":"128","append-to-body":false,"trigger":"click","popper-class":"background-popper non-selectable"}},[_c('el-row',{staticClass:"backgroundText"},[_vm._v(" Change background ")]),_c('el-row',{staticClass:"backgroundChooser"},_vm._l((_vm.availableBackground),function(item){return _c('div',{key:item,class:['backgroundChoice', item, item == _vm.currentBackground ? 'active' :''],on:{"click":function($event){return _vm.backgroundChangeCallback(item)}}})}),0)],1),_c('el-popover',{attrs:{"content":"Change background color","placement":"right","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[3].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[3], "value", $$v)},expression:"hoverVisabilities[3].value"}},[_c('map-svg-icon',{directives:[{name:"popover",rawName:"v-popover:backgroundPopover",arg:"backgroundPopover"}],staticClass:"icon-button background-colour",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{"slot":"reference","icon":"changeBckgd"},nativeOn:{"mouseover":function($event){return _vm.showToolitip(3)},"mouseout":function($event){return _vm.hideToolitip(3)}},slot:"reference"})],1)],1)],1)}
2284
2142
  var staticRenderFns = []
2285
2143
 
2286
2144
 
2287
- // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=d67c1b8e&scoped=true&
2145
+ // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=023c058f&scoped=true&
2288
2146
 
2289
2147
  // EXTERNAL MODULE: external "core-js/modules/es.array.for-each"
2290
2148
  var es_array_for_each_ = __webpack_require__("139f");
@@ -2383,7 +2241,7 @@ var col_default = /*#__PURE__*/__webpack_require__.n(col_);
2383
2241
  var external_vue_ = __webpack_require__("8bbf");
2384
2242
  var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
2385
2243
 
2386
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d8b3812-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&
2244
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"de8fb6da-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&
2387
2245
  var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.material!=undefined)?_c('div',{ref:"control",staticClass:"opacity-control"},[_c('el-drawer',{staticClass:"drawer-content",attrs:{"custom-class":"my-drawer","visible":_vm.drawerOpen,"append-to-body":false,"modal-append-to-body":false,"size":"300","with-header":false,"wrapper-closable":false,"modal":false},on:{"update:visible":function($event){_vm.drawerOpen=$event}}},[(_vm.drawerOpen)?_c('div',{staticClass:"tab-button close",on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-right"})]):_vm._e(),_c('el-container',{staticClass:"opacity-container"},[_c('el-header',{staticClass:"header",attrs:{"height":"37px"}},[_c('div',[_vm._v("Opacity")])]),_c('el-main',{staticClass:"main"},[_c('div',{staticClass:"block"},[_c('span',{staticClass:"display"},[_vm._v(_vm._s(_vm.displayString))]),_c('el-slider',{staticClass:"my-slider",attrs:{"step":0.01,"min":0,"max":1,"format-tooltip":_vm.formatTooltip,"show-tooltip":false},model:{value:(_vm.material.opacity),callback:function ($$v) {_vm.$set(_vm.material, "opacity", $$v)},expression:"material.opacity"}})],1)])],1)],1),(!_vm.drawerOpen)?_c('div',{staticClass:"tab-button open",on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-left"})]):_vm._e()],1):_vm._e()}
2388
2246
  var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_staticRenderFns = []
2389
2247
 
@@ -2684,13 +2542,13 @@ var component = normalizeComponent(
2684
2542
  )
2685
2543
 
2686
2544
  /* harmony default export */ var OpacityControls = (component.exports);
2687
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"7d8b3812-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/TraditionalControls.vue?vue&type=template&id=318fd7c8&scoped=true&
2688
- var TraditionalControlsvue_type_template_id_318fd7c8_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"traditional-location",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen }},[_c('div',{staticClass:"traditional-container"},[_c('el-row',[_c('el-col',{attrs:{"span":12}},[_c('div',{staticClass:"regions-display-text"},[_vm._v(" Regions ")])]),_c('el-col',{attrs:{"span":12}},[_c('el-checkbox',{staticClass:"all-checkbox",attrs:{"indeterminate":_vm.isIndeterminate},on:{"change":_vm.handleCheckAllChange},model:{value:(_vm.checkAll),callback:function ($$v) {_vm.checkAll=$$v},expression:"checkAll"}},[_vm._v(" Display all ")])],1)],1),_c('el-checkbox-group',{staticClass:"checkbox-group",attrs:{"size":"small"},on:{"change":_vm.handleCheckedItemsChange},model:{value:(_vm.checkedItems),callback:function ($$v) {_vm.checkedItems=$$v},expression:"checkedItems"}},[_c('div',{staticClass:"checkbox-group-inner"},_vm._l((_vm.sortedPrimitiveGroups),function(item){return _c('el-row',{key:item,attrs:{"label":item}},[_c('div',{staticClass:"checkbox-container"},[_c('el-checkbox',{staticClass:"my-checkbox",class:{ activeItem: _vm.activeRegion === item,
2545
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"de8fb6da-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/TraditionalControls.vue?vue&type=template&id=335c5764&scoped=true&
2546
+ var TraditionalControlsvue_type_template_id_335c5764_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"traditional-location",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen }},[_c('div',{staticClass:"traditional-container"},[_c('el-row',[_c('el-col',{attrs:{"span":12}},[_c('div',{staticClass:"regions-display-text"},[_vm._v(" Regions ")])]),_c('el-col',{attrs:{"span":12}},[_c('el-checkbox',{staticClass:"all-checkbox",attrs:{"indeterminate":_vm.isIndeterminate},on:{"change":_vm.handleCheckAllChange},model:{value:(_vm.checkAll),callback:function ($$v) {_vm.checkAll=$$v},expression:"checkAll"}},[_vm._v(" Display all ")])],1)],1),_c('el-checkbox-group',{staticClass:"checkbox-group",attrs:{"size":"small"},on:{"change":_vm.handleCheckedItemsChange},model:{value:(_vm.checkedItems),callback:function ($$v) {_vm.checkedItems=$$v},expression:"checkedItems"}},[_c('div',{staticClass:"checkbox-group-inner"},_vm._l((_vm.sortedPrimitiveGroups),function(item){return _c('el-row',{key:item,attrs:{"label":item}},[_c('div',{staticClass:"checkbox-container"},[_c('el-checkbox',{staticClass:"my-checkbox",class:{ activeItem: _vm.activeRegion === item,
2689
2547
  hoverItem: _vm.hoverRegion === item },attrs:{"label":item,"checked":true},on:{"change":function($event){return _vm.visibilityToggle(item, $event)}},nativeOn:{"click":function($event){return _vm.itemClicked(item, $event)},"mouseover":function($event){return _vm.checkboxHover(item)}}},[_c('el-color-picker',{class:{ 'show-picker' : _vm.showColourPicker },attrs:{"value":_vm.getColour(item),"size":"small","popper-class":_vm.myPopperClass},on:{"change":function($event){return _vm.setColour(item, $event)}}}),_vm._v(" "+_vm._s(item)+" ")],1)],1)])}),1)])],1),_c('div',{staticClass:"drawer-button",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-left"})])])}
2690
- var TraditionalControlsvue_type_template_id_318fd7c8_scoped_true_staticRenderFns = []
2548
+ var TraditionalControlsvue_type_template_id_335c5764_scoped_true_staticRenderFns = []
2691
2549
 
2692
2550
 
2693
- // CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=template&id=318fd7c8&scoped=true&
2551
+ // CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=template&id=335c5764&scoped=true&
2694
2552
 
2695
2553
  // EXTERNAL MODULE: external "core-js/modules/es.array.concat"
2696
2554
  var es_array_concat_ = __webpack_require__("18d2");
@@ -2962,7 +2820,6 @@ external_vue_default.a.use(row_default.a);
2962
2820
  tmpArray = uniq(tmpArray.concat(this.module.sceneData.pointset));
2963
2821
  this.sortedPrimitiveGroups = orderBy(tmpArray);
2964
2822
  this.module.addOrganPartAddedCallback(this.organsAdded);
2965
- this.module.graphicsHighlight.selectColour = 0x444444;
2966
2823
  },
2967
2824
  destroyed: function destroyed() {
2968
2825
  this.sortedPrimitiveGroups = undefined;
@@ -2988,55 +2845,47 @@ external_vue_default.a.use(row_default.a);
2988
2845
  /**
2989
2846
  * Select a region by its name.
2990
2847
  */
2991
- changeActiveByName: function changeActiveByName(name) {
2848
+ changeActiveByName: function changeActiveByName(name, propagate) {
2992
2849
  var targetObject = this.getFirstZincObjectWithGroupName(name);
2993
2850
 
2994
2851
  if (targetObject && targetObject.getVisibility()) {
2995
2852
  this.activeRegion = name;
2996
- /**
2997
- * Triggers when an item has been selected.
2998
- *
2999
- * @property {object} target selected object.
3000
- */
3001
-
3002
- this.$emit("object-selected", targetObject);
2853
+ this.$emit("object-selected", targetObject, propagate);
2854
+ } else {
2855
+ this.removeActive(propagate);
3003
2856
  }
3004
2857
 
3005
- this.removeHover();
2858
+ this.removeHover(propagate);
3006
2859
  },
3007
2860
 
3008
2861
  /**
3009
2862
  * Hover a region by its name.
3010
2863
  */
3011
- changeHoverByName: function changeHoverByName(name) {
2864
+ changeHoverByName: function changeHoverByName(name, propagate) {
3012
2865
  var targetObject = this.getFirstZincObjectWithGroupName(name);
3013
2866
 
3014
2867
  if (targetObject) {
3015
2868
  this.hoverRegion = name;
3016
- /**
3017
- * Triggers when an item has been hovered over.
3018
- *
3019
- * @property {object} target hovered object.
3020
- */
3021
-
3022
- this.$emit("object-hovered", targetObject);
2869
+ this.$emit("object-hovered", targetObject, propagate);
2870
+ } else {
2871
+ this.removeHover(propagate);
3023
2872
  }
3024
2873
  },
3025
2874
 
3026
2875
  /**
3027
2876
  * Unselect the current selected region.
3028
2877
  */
3029
- removeActive: function removeActive() {
2878
+ removeActive: function removeActive(propagate) {
3030
2879
  this.activeRegion = "";
3031
- this.$emit("object-selected", undefined);
2880
+ this.$emit("object-selected", undefined, propagate);
3032
2881
  },
3033
2882
 
3034
2883
  /**
3035
2884
  * Unselect the current hover region.
3036
2885
  */
3037
- removeHover: function removeHover() {
2886
+ removeHover: function removeHover(propagate) {
3038
2887
  this.hoverRegion = "";
3039
- this.$emit("object-hovered", undefined);
2888
+ this.$emit("object-hovered", undefined, propagate);
3040
2889
  },
3041
2890
 
3042
2891
  /**
@@ -3084,11 +2933,11 @@ external_vue_default.a.use(row_default.a);
3084
2933
  }
3085
2934
  },
3086
2935
  checkboxHover: function checkboxHover(name) {
3087
- this.changeHoverByName(name);
2936
+ this.changeHoverByName(name, true);
3088
2937
  },
3089
2938
  itemClicked: function itemClicked(name, event) {
3090
2939
  if (!(event.target.classList.contains("el-checkbox__inner") || event.target.classList.contains("el-checkbox__original"))) {
3091
- this.changeActiveByName(name);
2940
+ this.changeActiveByName(name, true);
3092
2941
  event.preventDefault();
3093
2942
  }
3094
2943
  },
@@ -3115,11 +2964,11 @@ external_vue_default.a.use(row_default.a);
3115
2964
 
3116
2965
  if (event == false) {
3117
2966
  if (this.activeRegion === item) {
3118
- this.removeActive();
2967
+ this.removeActive(true);
3119
2968
  }
3120
2969
 
3121
2970
  if (this.hoverRegion === item) {
3122
- this.removeHover();
2971
+ this.removeHover(true);
3123
2972
  }
3124
2973
  }
3125
2974
  },
@@ -3170,8 +3019,8 @@ external_vue_default.a.use(row_default.a);
3170
3019
  });
3171
3020
  // CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=script&lang=js&
3172
3021
  /* harmony default export */ var components_TraditionalControlsvue_type_script_lang_js_ = (TraditionalControlsvue_type_script_lang_js_);
3173
- // EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=0&id=318fd7c8&scoped=true&lang=scss&
3174
- var TraditionalControlsvue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss_ = __webpack_require__("73b5");
3022
+ // EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&
3023
+ var TraditionalControlsvue_type_style_index_0_id_335c5764_scoped_true_lang_scss_ = __webpack_require__("3a59");
3175
3024
 
3176
3025
  // EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=1&lang=css&
3177
3026
  var TraditionalControlsvue_type_style_index_1_lang_css_ = __webpack_require__("add8");
@@ -3188,11 +3037,11 @@ var TraditionalControlsvue_type_style_index_1_lang_css_ = __webpack_require__("a
3188
3037
 
3189
3038
  var TraditionalControls_component = normalizeComponent(
3190
3039
  components_TraditionalControlsvue_type_script_lang_js_,
3191
- TraditionalControlsvue_type_template_id_318fd7c8_scoped_true_render,
3192
- TraditionalControlsvue_type_template_id_318fd7c8_scoped_true_staticRenderFns,
3040
+ TraditionalControlsvue_type_template_id_335c5764_scoped_true_render,
3041
+ TraditionalControlsvue_type_template_id_335c5764_scoped_true_staticRenderFns,
3193
3042
  false,
3194
3043
  null,
3195
- "318fd7c8",
3044
+ "335c5764",
3196
3045
  null
3197
3046
 
3198
3047
  )
@@ -3495,9 +3344,9 @@ external_vue_default.a.use(slider_default.a);
3495
3344
  external_vue_default.a.use(tab_pane_default.a);
3496
3345
  external_vue_default.a.use(tabs_default.a);
3497
3346
 
3498
- var OrgansViewer = __webpack_require__("67b6").OrgansViewer;
3347
+ var OrgansViewer = __webpack_require__("53d7").OrgansViewer;
3499
3348
 
3500
- var EventNotifier = __webpack_require__("549c").EventNotifier;
3349
+ var EventNotifier = __webpack_require__("9b21").EventNotifier;
3501
3350
  /**
3502
3351
  * A vue component of the scaffold viewer.
3503
3352
  *
@@ -3510,8 +3359,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3510
3359
  name: "ScaffoldVuer",
3511
3360
  components: {
3512
3361
  OpacityControls: OpacityControls,
3513
- SvgIcon: svg_sprite_["SvgIcon"],
3514
- SvgSpriteColor: svg_sprite_["SvgSpriteColor"],
3362
+ MapSvgIcon: svg_sprite_["MapSvgIcon"],
3363
+ MapSvgSpriteColor: svg_sprite_["MapSvgSpriteColor"],
3515
3364
  TraditionalControls: TraditionalControls
3516
3365
  },
3517
3366
  props: {
@@ -3774,7 +3623,6 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3774
3623
  this.$module.addOrganPartAddedCallback(this.organsAdded);
3775
3624
  this.$module.initialiseRenderer(this.$refs.display);
3776
3625
  this.toggleRendering(this.render);
3777
- this.$module.toolTip = undefined;
3778
3626
  this.ro = new ResizeObserver(this.adjustLayout).observe(this.$refs.scaffoldContainer);
3779
3627
  this.defaultRate = this.$module.getPlayRate();
3780
3628
  },
@@ -3934,6 +3782,13 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3934
3782
  }
3935
3783
  }
3936
3784
  },
3785
+ getRendererInfo: function getRendererInfo() {
3786
+ if (this.$module.zincRenderer) {
3787
+ return this.$module.zincRenderer.getThreeJSRenderer().info;
3788
+ }
3789
+
3790
+ return undefined;
3791
+ },
3937
3792
 
3938
3793
  /**
3939
3794
  * Function used to rotate the scene.
@@ -3957,12 +3812,12 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3957
3812
  */
3958
3813
  eventNotifierCallback: function eventNotifierCallback(event) {
3959
3814
  if (event.eventType == 1) {
3960
- if (this.controls) {
3815
+ if (this.$refs.traditionalControl) {
3961
3816
  if (event.identifiers[0]) {
3962
3817
  var id = event.identifiers[0].data.id ? event.identifiers[0].data.id : event.identifiers[0].data.group;
3963
- this.controls.changeActiveByName(id);
3818
+ this.$refs.traditionalControl.changeActiveByName(id, true);
3964
3819
  } else {
3965
- this.controls.removeActive();
3820
+ this.$refs.traditionalControl.removeActive(true);
3966
3821
  }
3967
3822
  }
3968
3823
  /**
@@ -3975,12 +3830,12 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3975
3830
 
3976
3831
  this.$emit("scaffold-selected", event.identifiers);
3977
3832
  } else if (event.eventType == 2) {
3978
- if (this.controls) {
3833
+ if (this.$refs.traditionalControl) {
3979
3834
  if (event.identifiers[0]) {
3980
3835
  var _id = event.identifiers[0].data.id ? event.identifiers[0].data.id : event.identifiers[0].data.group;
3981
3836
 
3982
- this.controls.changeHoverByName(_id);
3983
- } else this.controls.removeHover();
3837
+ this.$refs.traditionalControl.changeHoverByName(_id, true);
3838
+ } else this.$refs.traditionalControl.removeHover(true);
3984
3839
  }
3985
3840
  /**
3986
3841
  * Triggers when an object has been highlighted
@@ -4027,30 +3882,48 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
4027
3882
  },
4028
3883
 
4029
3884
  /**
4030
- * Set the selected zinc object
3885
+ * A callback used by children components. Set the selected zinc object
4031
3886
  *
4032
3887
  * @param {object} object Zinc object
4033
3888
  */
4034
- objectSelected: function objectSelected(object) {
3889
+ objectSelected: function objectSelected(object, propagate) {
4035
3890
  if (object !== this.selectedObject) {
4036
3891
  this.selectedObject = object;
4037
3892
  this.$refs.opacityControl.setObject(this.selectedObject);
4038
- if (object) this.$module.setSelectedByZincObject(object, true);else this.$module.setSelectedByObjects([], true);
3893
+ if (object) this.$module.setSelectedByZincObject(object, propagate);else this.$module.setSelectedByObjects([], propagate);
4039
3894
  }
4040
3895
  },
4041
3896
 
4042
3897
  /**
4043
- * Set the highlighted zinc object
3898
+ * A callback used by children components. Set the highlighted zinc object
4044
3899
  *
4045
3900
  * @param {object} object Zinc object
4046
3901
  */
4047
- objectHovered: function objectHovered(object) {
3902
+ objectHovered: function objectHovered(object, propagate) {
4048
3903
  if (object !== this.hoveredObject) {
4049
3904
  this.hoveredObject = object;
4050
- if (object) this.$module.setHighlightedByZincObject(object, true);else this.$module.setHighlightedByObjects([], true);
3905
+ if (object) this.$module.setHighlightedByZincObject(object, propagate);else this.$module.setHighlightedByObjects([], propagate);
4051
3906
  }
4052
3907
  },
4053
3908
 
3909
+ /**
3910
+ * Set the selected by name.
3911
+ *
3912
+ * @param {name} name Name of the region
3913
+ */
3914
+ changeActiveByName: function changeActiveByName(name, propagate) {
3915
+ if (name === undefined) this.$refs.traditionalControl.removeActive(propagate);else this.$refs.traditionalControl.changeActiveByName(name, propagate);
3916
+ },
3917
+
3918
+ /**
3919
+ * Set the highlighted by name.
3920
+ *
3921
+ * @param {name} name Name of the region
3922
+ */
3923
+ changeHighlightedByName: function changeHighlightedByName(name, propagate) {
3924
+ if (name === undefined) this.$refs.traditionalControl.removeHover(propagate);else this.$refs.traditionalControl.changeHoverByName(name, propagate);
3925
+ },
3926
+
4054
3927
  /**
4055
3928
  * Start the animation.
4056
3929
  *
@@ -4213,6 +4086,9 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
4213
4086
  }
4214
4087
  }
4215
4088
  },
4089
+ exportGLTF: function exportGLTF(binary) {
4090
+ return this.$module.scene.exportGLTF(binary);
4091
+ },
4216
4092
 
4217
4093
  /**
4218
4094
  * Function used for reading in new scaffold metadata and a custom
@@ -4293,8 +4169,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
4293
4169
  });
4294
4170
  // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=script&lang=js&
4295
4171
  /* harmony default export */ var components_ScaffoldVuervue_type_script_lang_js_ = (ScaffoldVuervue_type_script_lang_js_);
4296
- // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=d67c1b8e&scoped=true&lang=scss&
4297
- var ScaffoldVuervue_type_style_index_0_id_d67c1b8e_scoped_true_lang_scss_ = __webpack_require__("d378");
4172
+ // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=023c058f&scoped=true&lang=scss&
4173
+ var ScaffoldVuervue_type_style_index_0_id_023c058f_scoped_true_lang_scss_ = __webpack_require__("1f67");
4298
4174
 
4299
4175
  // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&
4300
4176
  var ScaffoldVuervue_type_style_index_1_lang_scss_ = __webpack_require__("642d");
@@ -4315,7 +4191,7 @@ var ScaffoldVuer_component = normalizeComponent(
4315
4191
  staticRenderFns,
4316
4192
  false,
4317
4193
  null,
4318
- "d67c1b8e",
4194
+ "023c058f",
4319
4195
  null
4320
4196
 
4321
4197
  )