@abi-software/scaffoldvuer 0.1.50 → 0.1.52-beta.2

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.
@@ -110,6 +110,17 @@ module.exports = require("element-ui/lib/checkbox-group");
110
110
 
111
111
  /***/ }),
112
112
 
113
+ /***/ "0676":
114
+ /***/ (function(module, exports) {
115
+
116
+ function _nonIterableSpread() {
117
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
118
+ }
119
+
120
+ module.exports = _nonIterableSpread;
121
+
122
+ /***/ }),
123
+
113
124
  /***/ "0cf4":
114
125
  /***/ (function(module, exports) {
115
126
 
@@ -131,104 +142,30 @@ module.exports = require("element-ui/lib/theme-chalk/select.css");
131
142
 
132
143
  /***/ }),
133
144
 
134
- /***/ "10c9":
135
- /***/ (function(module, exports) {
136
-
137
- /**
138
- * @author alteredq / http://alteredqualia.com/
139
- * @author mr.doob / http://mrdoob.com/
140
- */
141
-
142
- exports.WEBGL = {
143
-
144
- isWebGLAvailable: function () {
145
-
146
- try {
147
-
148
- var canvas = document.createElement( 'canvas' );
149
- return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
150
-
151
- } catch ( e ) {
152
-
153
- return false;
154
-
155
- }
156
-
157
- },
158
-
159
- isWebGL2Available: function () {
160
-
161
- try {
162
-
163
- var canvas = document.createElement( 'canvas' );
164
- return !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );
165
-
166
- } catch ( e ) {
167
-
168
- return false;
169
-
170
- }
171
-
172
- },
173
-
174
- getWebGLErrorMessage: function () {
175
-
176
- return this.getErrorMessage( 1 );
177
-
178
- },
179
-
180
- getWebGL2ErrorMessage: function () {
181
-
182
- return this.getErrorMessage( 2 );
183
-
184
- },
185
-
186
- getErrorMessage: function ( version ) {
187
-
188
- var names = {
189
- 1: 'WebGL',
190
- 2: 'WebGL 2'
191
- };
192
-
193
- var contexts = {
194
- 1: window.WebGLRenderingContext,
195
- 2: window.WebGL2RenderingContext
196
- };
197
-
198
- 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.';
199
-
200
- var element = document.createElement( 'div' );
201
- element.id = 'webglmessage';
202
- element.style.fontFamily = 'monospace';
203
- element.style.fontSize = '20px';
204
- element.style.fontWeight = 'normal';
205
- element.style.textAlign = 'center';
206
- element.style.background = '#fff';
207
- element.style.color = '#000';
208
- element.style.padding = '1.5em';
209
- element.style.width = '400px';
210
- element.style.margin = '5em auto 0';
211
-
212
- if ( contexts[ version ] ) {
145
+ /***/ "11b0":
146
+ /***/ (function(module, exports, __webpack_require__) {
213
147
 
214
- message = message.replace( '$0', 'graphics card' );
148
+ __webpack_require__("6049");
215
149
 
216
- } else {
150
+ __webpack_require__("51e9");
217
151
 
218
- message = message.replace( '$0', 'browser' );
152
+ __webpack_require__("02ac");
219
153
 
220
- }
154
+ __webpack_require__("e42b");
221
155
 
222
- message = message.replace( '$1', names[ version ] );
156
+ __webpack_require__("8c84");
223
157
 
224
- element.innerHTML = message;
158
+ __webpack_require__("850c");
225
159
 
226
- return element;
160
+ __webpack_require__("907b");
227
161
 
228
- }
162
+ __webpack_require__("1ce0");
229
163
 
230
- };
164
+ function _iterableToArray(iter) {
165
+ if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
166
+ }
231
167
 
168
+ module.exports = _iterableToArray;
232
169
 
233
170
  /***/ }),
234
171
 
@@ -239,13 +176,6 @@ module.exports = require("core-js/modules/es.array.for-each");
239
176
 
240
177
  /***/ }),
241
178
 
242
- /***/ "1823":
243
- /***/ (function(module, exports) {
244
-
245
- 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"
246
-
247
- /***/ }),
248
-
249
179
  /***/ "18d2":
250
180
  /***/ (function(module, exports) {
251
181
 
@@ -292,10 +222,16 @@ module.exports = require("core-js/modules/es.object.keys");
292
222
 
293
223
  /***/ }),
294
224
 
295
- /***/ "24f0":
225
+ /***/ "2236":
296
226
  /***/ (function(module, exports, __webpack_require__) {
297
227
 
298
- // extracted by mini-css-extract-plugin
228
+ var arrayLikeToArray = __webpack_require__("5a43");
229
+
230
+ function _arrayWithoutHoles(arr) {
231
+ if (Array.isArray(arr)) return arrayLikeToArray(arr);
232
+ }
233
+
234
+ module.exports = _arrayWithoutHoles;
299
235
 
300
236
  /***/ }),
301
237
 
@@ -355,144 +291,54 @@ module.exports = require("element-ui/lib/drawer");
355
291
 
356
292
  /***/ }),
357
293
 
358
- /***/ "382f":
294
+ /***/ "3a59":
359
295
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
360
296
 
361
297
  "use strict";
362
- /* 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_03b672b7_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5cd8");
363
- /* 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_03b672b7_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_03b672b7_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
298
+ /* 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");
299
+ /* 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__);
364
300
  /* unused harmony reexport * */
365
301
 
366
302
 
367
303
  /***/ }),
368
304
 
369
- /***/ "3966":
370
- /***/ (function(module, exports, __webpack_require__) {
371
-
372
- var MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };
373
-
374
- var BaseModule = function() {
375
- this.typeName = "Base Module";
376
- this.instanceName = "default";
377
- this.onChangedCallbacks = [];
378
- this.messageFunction = undefined;
379
- /** Notifier handle for informing other modules of any changes **/
380
- this.eventNotifiers = [];
381
- this.broadcastChannels = {};
382
- }
383
-
384
- BaseModule.prototype.setName = function(name) {
385
- if (name && this.instanceName !== name) {
386
- this.instanceName = name;
387
- var callbackArray = this.onChangedCallbacks.slice();
388
- for (var i = 0; i < callbackArray.length; i++) {
389
- callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );
390
- }
391
- }
392
- }
393
-
394
- BaseModule.prototype.addBroadcastChannels = function(ChannelName) {
395
- if (ChannelName in this.broadcastChannels)
396
- return false;
397
- var newChannel = new (__webpack_require__("c45a")).default(ChannelName);
398
- this.broadcastChannels[ChannelName] = newChannel;
399
- return true;
400
- }
401
-
402
- BaseModule.prototype.removeBroadcastChannels = function(ChannelName) {
403
- if (ChannelName in this.broadcastChannels) {
404
- this.broadcastChannels[ChannelName].close();
405
- delete broadcastChannels[ChannelName];
406
- }
407
-
408
- }
409
-
410
- BaseModule.prototype.settingsChanged = function() {
411
- var callbackArray = this.onChangedCallbacks.slice();
412
- for (var i = 0; i < callbackArray.length; i++) {
413
- callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );
414
- }
415
- }
416
-
417
- BaseModule.prototype.exportSettings = function() {
418
- var settings = {};
419
- settings.dialog = this.typeName;
420
- settings.name = this.instanceName;
421
- return settings;
422
- }
305
+ /***/ "429c":
306
+ /***/ (function(module, exports) {
423
307
 
424
- BaseModule.prototype.importSettings = function(settings) {
425
- if (settings.dialog == this.typeName) {
426
- this.setName(settings.name);
427
- return true;
428
- }
429
- return false;
430
- }
308
+ module.exports = require("@abi-software/svg-sprite");
431
309
 
432
- BaseModule.prototype.publishChanges = function(annotations, eventType) {
433
- for (var i = 0; i < this.eventNotifiers.length; i++) {
434
- this.eventNotifiers[i].publish(this, eventType, annotations);
435
- }
436
- if (eventType === __webpack_require__("549c").EVENT_TYPE.SELECTED) {
437
- if (annotations && annotations[0]) {
438
- var annotation = annotations[0];
439
- var data = {action: "query-data", resource: annotation.data.id, data: annotation.data, sender: this.instanceName};
440
- for (var key in this.broadcastChannels) {
441
- this.broadcastChannels[key].postMessage(data);
442
- }
443
- }
444
- }
445
- }
310
+ /***/ }),
446
311
 
447
- BaseModule.prototype.setMessageFunction = function(functionIn) {
448
- this.messageFunction = functionIn;
449
- }
312
+ /***/ "448a":
313
+ /***/ (function(module, exports, __webpack_require__) {
450
314
 
451
- BaseModule.prototype.displayMessage = function(message) {
452
- if (this.messageFunction)
453
- this.messageFunction(message);
454
- }
315
+ var arrayWithoutHoles = __webpack_require__("2236");
455
316
 
456
- BaseModule.prototype.getName = function() {
457
- return this.instanceName;
458
- }
317
+ var iterableToArray = __webpack_require__("11b0");
459
318
 
460
- BaseModule.prototype.destroy = function() {
461
- //Make a temorary copy as the array may be altered during the loop
462
- var callbackArray = this.onChangedCallbacks.slice();
463
- for (var i = 0; i < callbackArray.length; i++) {
464
- callbackArray[i]( this, MODULE_CHANGE.DESTROYED );
465
- }
319
+ var unsupportedIterableToArray = __webpack_require__("6613");
466
320
 
467
- delete this;
468
- }
321
+ var nonIterableSpread = __webpack_require__("0676");
469
322
 
470
- BaseModule.prototype.addChangedCallback = function(callback) {
471
- if (this.onChangedCallbacks.includes(callback) == false)
472
- this.onChangedCallbacks.push(callback);
323
+ function _toConsumableArray(arr) {
324
+ return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
473
325
  }
474
326
 
475
- BaseModule.prototype.removeChangedCallback = function(callback) {
476
- var index = this.onChangedCallbacks.indexOf(callback);
477
- if (index > -1) {
478
- this.onChangedCallbacks.splice(index, 1);
479
- }
480
- }
327
+ module.exports = _toConsumableArray;
481
328
 
482
- BaseModule.prototype.addNotifier = function(eventNotifier) {
483
- this.eventNotifiers.push(eventNotifier);
484
- }
329
+ /***/ }),
485
330
 
486
- exports.BaseModule = BaseModule;
487
- exports.MODULE_CHANGE = MODULE_CHANGE;
331
+ /***/ "44bd":
332
+ /***/ (function(module, exports, __webpack_require__) {
488
333
 
334
+ // extracted by mini-css-extract-plugin
489
335
 
490
336
  /***/ }),
491
337
 
492
- /***/ "429c":
493
- /***/ (function(module, exports) {
338
+ /***/ "4646":
339
+ /***/ (function(module, exports, __webpack_require__) {
494
340
 
495
- module.exports = require("@abi-software/svg-sprite");
341
+ // extracted by mini-css-extract-plugin
496
342
 
497
343
  /***/ }),
498
344
 
@@ -517,13 +363,6 @@ module.exports = require("lodash/uniq");
517
363
 
518
364
  /***/ }),
519
365
 
520
- /***/ "4e8a":
521
- /***/ (function(module, exports) {
522
-
523
- module.exports = "precision highp float;\nuniform sampler2D myTex;\nvarying vec2 vUv;\n\nvoid main() {\n\tgl_FragColor = texture2D( myTex, vUv );\n\n}\n"
524
-
525
- /***/ }),
526
-
527
366
  /***/ "51c7":
528
367
  /***/ (function(module, exports) {
529
368
 
@@ -545,146 +384,31 @@ module.exports = require("core-js/modules/es.regexp.exec");
545
384
 
546
385
  /***/ }),
547
386
 
548
- /***/ "549c":
549
- /***/ (function(module, exports) {
550
-
551
- var EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };
552
-
553
- var SelectionEvent = function(eventTypeIn, identifiersIn) {
554
- this.eventType = eventTypeIn;
555
- this.identifiers = identifiersIn;
556
- }
557
-
558
- var returnFullID = function(sourceId) {
559
- //return full annotations with all different name
560
- }
561
-
562
- var Subscription = function(subscriberIn, callbackIn, eventType) {
563
- this.targetedID = [];
564
- var subscriber = subscriberIn;
565
- if (eventType === undefined)
566
- this.targetEventType = EVENT_TYPE.ALL;
567
- else
568
- this.targetEventType = eventType;
569
- var callback = callbackIn;
570
-
571
- var _this = this;
572
-
573
- this.getEventType = function() {
574
- return eventType;
575
- }
576
-
577
- this.notify = function(source, eventType, ids) {
578
- if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||
579
- _this.targetEventType === eventType)) {
580
- //should support different type of id e.g lyph, name, fmas...
581
- //need a function that finds all relavant ids
582
- var event = new SelectionEvent(eventType, ids);
583
- callback(event);
584
- }
585
- }
586
- }
587
-
588
- exports.EventNotifier = function() {
589
- var events = [];
590
- var subscriptions = [];
591
- var _this = this;
592
-
593
- this.publish = function(source, eventType, id) {
594
- for (var i = 0; i < subscriptions.length;i++) {
595
- subscriptions[i].notify(source, eventType, id);
596
- }
597
- }
598
-
599
- this.subscribe = function(subscriber, callbackFunction, eventType) {
600
- if (typeof callbackFunction === "function") {
601
- var subscription = new Subscription(subscriber, callbackFunction, eventType);
602
- subscriptions.push(subscription);
603
- return subscription;
604
- }
605
- return undefined;
606
- }
607
-
608
- this.unsubscribe = function(subscription) {
609
- for (var i = 0; i < subscriptions.length;i++) {
610
- if (subscription === subscriptions[i]) {
611
- subscriptions.splice(i, 1);
612
- return;
613
- }
614
- }
615
- }
616
- }
617
-
618
- exports.EVENT_TYPE = EVENT_TYPE;
619
-
620
-
621
- /***/ }),
622
-
623
- /***/ "55ee":
624
- /***/ (function(module, exports) {
625
-
626
- module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
627
-
628
- /***/ }),
629
-
630
- /***/ "5810":
631
- /***/ (function(module, exports, __webpack_require__) {
632
-
633
- // extracted by mini-css-extract-plugin
634
-
635
- /***/ }),
636
-
637
- /***/ "5cd8":
387
+ /***/ "53d7":
638
388
  /***/ (function(module, exports, __webpack_require__) {
639
389
 
640
- // extracted by mini-css-extract-plugin
641
-
642
- /***/ }),
643
-
644
- /***/ "5fef":
645
- /***/ (function(module, exports) {
646
-
647
- module.exports = require("core-js/modules/es.regexp.to-string");
648
-
649
- /***/ }),
650
-
651
- /***/ "6049":
652
- /***/ (function(module, exports) {
653
-
654
- module.exports = require("core-js/modules/es.symbol");
655
-
656
- /***/ }),
657
-
658
- /***/ "642d":
659
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
660
-
661
- "use strict";
662
- /* 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");
663
- /* 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__);
664
- /* unused harmony reexport * */
665
-
390
+ __webpack_require__("ab7e");
666
391
 
667
- /***/ }),
392
+ __webpack_require__("7c81");
668
393
 
669
- /***/ "6579":
670
- /***/ (function(module, exports) {
394
+ __webpack_require__("bcd8");
671
395
 
672
- module.exports = require("core-js/modules/es.array.slice");
396
+ __webpack_require__("2175");
673
397
 
674
- /***/ }),
398
+ __webpack_require__("fd48");
675
399
 
676
- /***/ "67b6":
677
- /***/ (function(module, exports, __webpack_require__) {
400
+ var _typeof = __webpack_require__("7037");
678
401
 
679
- var THREE = __webpack_require__("9206").THREE;
680
- // Current model's associate data, data fields, external link, nerve map
402
+ var THREE = __webpack_require__("9206").THREE; // Current model's associate data, data fields, external link, nerve map
681
403
  // informations,
682
404
  // these are proived in the organsFileMap array.
683
- var OrgansSceneData = function() {
405
+
406
+
407
+ var OrgansSceneData = function OrgansSceneData() {
684
408
  this.currentName = "";
685
409
  this.currentSystem = "";
686
410
  this.currentPart = "";
687
- this.currentSpecies = "";
411
+ this.currentSpecies = "";
688
412
  this.metaURL = "";
689
413
  this.viewURL = "";
690
414
  this.geometries = [];
@@ -693,12 +417,7 @@ var OrgansSceneData = function() {
693
417
  this.pointsets = [];
694
418
  this.currentTime = 0.0;
695
419
  this.timeVarying = false;
696
- // Current model's associate data, data fields, external link, nerve map
697
- // informations,
698
- this.nerveMap = undefined;
699
- this.nerveMapIsActive = false;
700
- }
701
-
420
+ };
702
421
  /**
703
422
  * Viewer of 3D-organs models. Users can toggle on/off different views. Data is
704
423
  * displayed instead if models are not available.
@@ -713,619 +432,964 @@ var OrgansSceneData = function() {
713
432
  * @author Alan Wu
714
433
  * @returns {PJP.OrgansViewer}
715
434
  */
716
- var OrgansViewer = function(ModelsLoaderIn) {
717
- (__webpack_require__("7a89").RendererModule).call(this);
718
- var pickerScene = undefined;
719
- var nerveMapScene = undefined;
720
- this.sceneData = new OrgansSceneData();
721
- var timeChangedCallbacks = new Array();
722
- var sceneChangedCallbacks = new Array();
723
- var organPartAddedCallbacks = new Array();
724
- var finishDownloadCallback = undefined;
725
- var layoutUpdateRequiredCallbacks = new Array();
726
- var modelsLoader = ModelsLoaderIn;
727
- var _this = this;
728
- _this.typeName = "Organ Viewer";
729
-
730
- this.getSceneData = function() {
731
- return _this.sceneData;
732
- }
733
-
734
- /**
735
- * Used to update internal timer in scene when time slider has changed.
736
- */
737
- this.updateTime = function(value) {
738
- let duration = 6000;
739
- if (_this.scene)
740
- duration = _this.scene.getDuration();
741
- var actualTime = value / 100.0 * duration;
742
- if (!_this.sceneData.nerveMapIsActive) {
743
- if (pickerScene)
744
- pickerScene.setMorphsTime(actualTime);
745
- if (_this.scene)
746
- _this.scene.setMorphsTime(actualTime);
747
- } else if (nerveMapScene) {
748
- nerveMapScene.setMorphsTime(actualTime);
749
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
750
- _this.sceneData.nerveMap.additionalReader.setTime(value / 100.0);
751
- }
752
- _this.sceneData.currentTime = value;
753
- }
754
-
755
- /**
756
- * Update the time slider and other renderers/scenes when time has changed.
757
- */
758
- var preRenderTimeUpdate = function() {
759
- let duration = 3000;
760
- if (_this.scene)
761
- duration = _this.scene.getDuration();
762
- var currentTime = _this.zincRenderer.getCurrentTime();
763
- for (var i = 0; i < timeChangedCallbacks.length;i++) {
764
- timeChangedCallbacks[i](currentTime);
765
- }
766
- if (!_this.sceneData.nerveMapIsActive && pickerScene)
767
- pickerScene.setMorphsTime(currentTime);
768
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
769
- _this.sceneData.nerveMap.additionalReader.setTime(currentTime /
770
- duration);
771
- _this.sceneData.currentTime = currentTime / duration * 100.0;
772
- }
773
-
774
- var postRenderSelectedCoordinatesUpdate = function() {
775
- if (_this.selectedCenter) {
776
- const vector = new THREE.Vector3();
777
- vector.copy(_this.selectedCenter);
778
- var coord = _this.scene.vectorToScreenXY(vector);
779
- _this.selectedScreenCoordinates.x = coord.x;
780
- _this.selectedScreenCoordinates.y = coord.y;
781
- }
782
- }
783
-
784
- var preRenderUpdateCallback = function() {
785
- return function() {
786
- preRenderTimeUpdate();
787
- }
788
- }
789
-
790
- var postRenderUpdateCallback = function() {
791
- return function() {
792
- postRenderSelectedCoordinatesUpdate();
793
- }
794
- }
795
-
796
- /**
797
- * Add a callback which will be called when time has changed
798
- */
799
- this.addTimeChangedCallback = function(callback) {
800
- if (typeof(callback === "function"))
801
- timeChangedCallbacks.push(callback);
802
- }
803
-
804
- this.setTexturePos = function(value) {
805
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
806
- _this.sceneData.nerveMap.additionalReader.setSliderPos(value);
807
- }
808
-
809
- this.addLayoutUpdateRequiredCallback = function(callback) {
810
- if (typeof(callback === "function")) {
811
- layoutUpdateRequiredCallbacks.push(callback);
812
- }
813
- }
814
-
815
- this.addSceneChangedCallback = function(callback) {
816
- if (typeof(callback === "function")) {
817
- sceneChangedCallbacks.push(callback);
818
- }
819
- }
820
-
821
- this.addOrganPartAddedCallback = function(callback) {
822
- if (typeof(callback === "function"))
823
- organPartAddedCallbacks.push(callback);
824
- }
825
435
 
826
- this.setFinishDownloadCallback = function(callback) {
827
- if (typeof(callback === "function"))
828
- finishDownloadCallback = callback;
829
- }
830
436
 
831
- this.unsetFinishDownloadCallback = function() {
832
- finishDownloadCallback = undefined;
833
- }
437
+ var OrgansViewer = function OrgansViewer(ModelsLoaderIn) {
438
+ var _this2 = this;
834
439
 
835
- this.getNamedObjectsToScreenCoordinates = function(name, camera) {
836
- var vector = new THREE.Vector3();
837
- vector.setFromMatrixPosition( obj.matrixWorld );
838
- var widthHalf = (width/2);
839
- var heightHalf = (height/2);
840
- vector.project(camera);
841
- vector.x = ( vector.x * widthHalf ) + widthHalf;
842
- vector.y = - ( vector.y * heightHalf ) + heightHalf;
843
- return vector;
844
- }
440
+ __webpack_require__("8278").RendererModule.call(this);
845
441
 
846
- var getIdObjectFromIntersect = function(intersected) {
442
+ var _this = this;
443
+
444
+ var pickerScene = undefined;
445
+ this.sceneData = new OrgansSceneData();
446
+ var timeChangedCallbacks = new Array();
447
+ var sceneChangedCallbacks = new Array();
448
+ var organPartAddedCallbacks = new Array();
449
+ var finishDownloadCallback = undefined;
450
+ var modelsLoader = ModelsLoaderIn;
451
+ this.NDCCameraControl = undefined;
452
+ _this.typeName = "Organ Viewer";
453
+
454
+ this.getSceneData = function () {
455
+ return _this.sceneData;
456
+ };
457
+ /**
458
+ * Used to update internal timer in scene when time slider has changed.
459
+ */
460
+
461
+
462
+ this.updateTime = function (value) {
463
+ var duration = 6000;
464
+ if (_this.scene) duration = _this.scene.getDuration();
465
+ var actualTime = value / 100.0 * duration;
466
+
467
+ if (!_this.sceneData.nerveMapIsActive) {
468
+ if (pickerScene) pickerScene.setMorphsTime(actualTime);
469
+ if (_this.scene) _this.scene.setMorphsTime(actualTime);
470
+ }
471
+
472
+ _this.sceneData.currentTime = value;
473
+ };
474
+ /**
475
+ * Update the time slider and other renderers/scenes when time has changed.
476
+ */
477
+
478
+
479
+ var preRenderTimeUpdate = function preRenderTimeUpdate() {
480
+ var duration = 3000;
481
+ if (_this.scene) duration = _this.scene.getDuration();
482
+
483
+ var currentTime = _this.zincRenderer.getCurrentTime();
484
+
485
+ for (var i = 0; i < timeChangedCallbacks.length; i++) {
486
+ timeChangedCallbacks[i](currentTime);
487
+ }
488
+
489
+ if (!_this.sceneData.nerveMapIsActive && pickerScene) pickerScene.setMorphsTime(currentTime);
490
+ if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setTime(currentTime / duration);
491
+ _this.sceneData.currentTime = currentTime / duration * 100.0;
492
+ };
493
+
494
+ this.toggleSyncControl = function (flag) {
495
+ var cameraControl = _this2.scene.getZincCameraControls();
496
+
497
+ if (flag) {
498
+ cameraControl.resetView();
499
+ _this2.NDCCameraControl = cameraControl.enableSyncControl();
500
+ } else {
501
+ cameraControl.disableSyncControl();
502
+ _this2.NDCCameraControl = undefined;
503
+ }
504
+ };
505
+
506
+ this.isSyncControl = function () {
507
+ return _this2.NDCCameraControl !== undefined;
508
+ };
509
+
510
+ this.setSyncControlZoomToBox = function (box) {
511
+ if (_this2.NDCCameraControl) {
512
+ _this2.NDCCameraControl.zoomToBox(box, 2);
513
+ }
514
+ };
515
+
516
+ this.setSyncControlCallback = function (callback) {
517
+ if (_this2.NDCCameraControl) {
518
+ _this2.NDCCameraControl.setEventCallback(callback);
519
+ }
520
+ };
521
+
522
+ this.setSyncControlCenterZoom = function (center, zoom) {
523
+ if (_this2.NDCCameraControl) {
524
+ _this2.NDCCameraControl.setCenterZoom(center, zoom);
525
+ }
526
+ };
527
+
528
+ var postRenderSelectedCoordinatesUpdate = function postRenderSelectedCoordinatesUpdate() {
529
+ if (_this.selectedCenter) {
530
+ var vector = new THREE.Vector3();
531
+ vector.copy(_this.selectedCenter);
532
+
533
+ var coord = _this.scene.vectorToScreenXY(vector);
534
+
535
+ _this.selectedScreenCoordinates.x = coord.x;
536
+ _this.selectedScreenCoordinates.y = coord.y;
537
+ }
538
+ };
539
+
540
+ var preRenderUpdateCallback = function preRenderUpdateCallback() {
541
+ return function () {
542
+ preRenderTimeUpdate();
543
+ };
544
+ };
545
+
546
+ var postRenderUpdateCallback = function postRenderUpdateCallback() {
547
+ return function () {
548
+ postRenderSelectedCoordinatesUpdate();
549
+ };
550
+ };
551
+ /**
552
+ * Add a callback which will be called when time has changed
553
+ */
554
+
555
+
556
+ this.addTimeChangedCallback = function (callback) {
557
+ if (_typeof(callback === "function")) timeChangedCallbacks.push(callback);
558
+ };
559
+
560
+ this.setTexturePos = function (value) {
561
+ if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setSliderPos(value);
562
+ };
563
+
564
+ this.addSceneChangedCallback = function (callback) {
565
+ if (_typeof(callback === "function")) {
566
+ sceneChangedCallbacks.push(callback);
567
+ }
568
+ };
569
+
570
+ this.addOrganPartAddedCallback = function (callback) {
571
+ if (_typeof(callback === "function")) organPartAddedCallbacks.push(callback);
572
+ };
573
+
574
+ this.setFinishDownloadCallback = function (callback) {
575
+ if (_typeof(callback === "function")) finishDownloadCallback = callback;
576
+ };
577
+
578
+ this.unsetFinishDownloadCallback = function () {
579
+ finishDownloadCallback = undefined;
580
+ };
581
+
582
+ this.getNamedObjectsToScreenCoordinates = function (name, camera) {
583
+ var vector = new THREE.Vector3();
584
+ vector.setFromMatrixPosition(obj.matrixWorld);
585
+ var widthHalf = width / 2;
586
+ var heightHalf = height / 2;
587
+ vector.project(camera);
588
+ vector.x = vector.x * widthHalf + widthHalf;
589
+ vector.y = -(vector.y * heightHalf) + heightHalf;
590
+ return vector;
591
+ };
592
+
593
+ var getIdObjectFromIntersect = function getIdObjectFromIntersect(intersected) {
847
594
  var id = undefined;
848
595
  var intersectedObject = undefined;
596
+
849
597
  if (intersected !== undefined) {
850
- if (intersected.object.userData &&
851
- intersected.object.userData.isMarker) {
598
+ if (intersected.object.userData && intersected.object.userData.isMarker) {
852
599
  intersectedObject = intersected.object.userData.parent.morph;
853
600
  } else {
854
601
  intersectedObject = intersected.object;
855
602
  }
603
+
856
604
  if (intersectedObject) {
857
605
  if (intersectedObject.name) {
858
606
  id = intersectedObject.name;
859
607
  } else {
860
- var annotations = _this.getAnnotationsFromObjects(
861
- [intersectedObject]);
608
+ var annotations = _this.getAnnotationsFromObjects([intersectedObject]);
609
+
862
610
  if (annotations && annotations[0]) {
863
611
  id = annotations[0].data.group;
864
612
  }
865
613
  }
866
614
  }
867
615
  }
868
- return {"id":id, "object":intersectedObject};
616
+
617
+ return {
618
+ "id": id,
619
+ "object": intersectedObject
620
+ };
621
+ };
622
+ /**
623
+ * Callback function when a pickable object has been picked. It will then
624
+ * call functions in tissueViewer and cellPanel to show corresponding
625
+ * informations.
626
+ *
627
+ * @callback
628
+ */
629
+
630
+
631
+ var _pickingCallback = function _pickingCallback() {
632
+ return function (intersects, window_x, window_y) {
633
+ var intersected = _this.getIntersectedObject(intersects);
634
+
635
+ var idObject = getIdObjectFromIntersect(intersected);
636
+
637
+ if (idObject.id) {
638
+ if (idObject.object.userData.isGlyph) {
639
+ if (idObject.object.name) _this.setSelectedByObjects([idObject.object], true);else _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);
640
+ } else {
641
+ _this.setSelectedByObjects([idObject.object], true);
642
+ }
643
+
644
+ return;
645
+ } else {
646
+ _this.setSelectedByObjects([], true);
647
+ }
648
+ };
649
+ };
650
+ /**
651
+ * Callback function when a pickable object has been hovered over.
652
+ *
653
+ * @callback
654
+ */
655
+
656
+
657
+ var _hoverCallback = function _hoverCallback() {
658
+ return function (intersects, window_x, window_y) {
659
+ var intersected = _this.getIntersectedObject(intersects);
660
+
661
+ var idObject = getIdObjectFromIntersect(intersected);
662
+
663
+ if (idObject.id) {
664
+ _this.displayArea.style.cursor = "pointer";
665
+
666
+ _this.setHighlightedByObjects([idObject.object], true);
667
+
668
+ return;
669
+ } else {
670
+ _this.displayArea.style.cursor = "auto";
671
+
672
+ _this.setHighlightedByObjects([], true);
673
+ }
674
+ };
675
+ };
676
+
677
+ var changeOrganPartsVisibilityForScene = function changeOrganPartsVisibilityForScene(scene, name, value, type) {
678
+ if (type == "all" || type == "geometries") {
679
+ var geometries = scene.findGeometriesWithGroupName(name);
680
+
681
+ for (var i = 0; i < geometries.length; i++) {
682
+ geometries[i].setVisibility(value);
683
+ }
684
+ }
685
+
686
+ if (type == "all" || type == "glyphsets") {
687
+ var glyphsets = scene.findGlyphsetsWithGroupName(name);
688
+
689
+ for (var _i = 0; _i < glyphsets.length; _i++) {
690
+ glyphsets[_i].setVisibility(value);
691
+ }
692
+ }
693
+
694
+ if (type == "all" || type == "pointsets") {
695
+ var pointsets = scene.findPointsetsWithGroupName(name);
696
+
697
+ for (var _i2 = 0; _i2 < pointsets.length; _i2++) {
698
+ pointsets[_i2].setVisibility(value);
699
+ }
700
+ }
701
+
702
+ if (type == "all" || type == "lines") {
703
+ var lines = scene.findLinesWithGroupName(name);
704
+
705
+ for (var _i3 = 0; _i3 < lines.length; _i3++) {
706
+ lines[_i3].setVisibility(value);
707
+ }
708
+ }
709
+ };
710
+ /**
711
+ * Change visibility for parts of the current scene.
712
+ */
713
+
714
+
715
+ this.changeGeometriesVisibility = function (name, value) {
716
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
717
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
718
+ };
719
+ /**
720
+ * Change visibility for parts of the current scene.
721
+ */
722
+
723
+
724
+ this.changeGlyphsetsVisibility = function (name, value) {
725
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
726
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
727
+ };
728
+ /**
729
+ * Change visibility for parts of the current scene.
730
+ */
731
+
732
+
733
+ this.changeLinesVisibility = function (name, value) {
734
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
735
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
736
+ };
737
+ /**
738
+ * Change visibility for parts of the current scene.
739
+ */
740
+
741
+
742
+ this.changePointsetsVisibility = function (name, value) {
743
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
744
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
745
+ };
746
+ /**
747
+ * Change visibility for parts of the current scene.
748
+ */
749
+
750
+
751
+ this.changeOrganPartsVisibility = function (name, value, typeIn) {
752
+ var type = "all";
753
+ if (typeIn !== undefined) type = typeIn;
754
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
755
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
756
+ };
757
+
758
+ this.changeOrganPartsVisibilityCallback = function (name) {
759
+ return function (value) {
760
+ _this.changeOrganPartsVisibility(name, value);
761
+ };
762
+ };
763
+
764
+ this.changeBackgroundColour = function (backgroundColourString) {
765
+ var colour = new THREE.Color(backgroundColourString);
766
+
767
+ if (_this.zincRenderer) {
768
+ var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
769
+
770
+ internalRenderer.setClearColor(colour, 1);
771
+ }
772
+ };
773
+
774
+ var addOrganPartToSceneData = function addOrganPartToSceneData(zincObject) {
775
+ if (zincObject.groupName) {
776
+ if (zincObject.isGeometry) {
777
+ if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
778
+ _this.sceneData.geometries.push(zincObject.groupName);
779
+ }
780
+ } else if (zincObject.isGlyphset) {
781
+ if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
782
+ _this.sceneData.glyphsets.push(zincObject.groupName);
783
+ }
784
+ } else if (zincObject.isLines) {
785
+ if (!_this.sceneData.lines.includes(zincObject.groupName)) {
786
+ _this.sceneData.lines.push(zincObject.groupName);
787
+ }
788
+ } else if (zincObject.isPointset) {
789
+ if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
790
+ _this.sceneData.pointsets.push(zincObject.groupName);
791
+ }
792
+ }
793
+ }
794
+ };
795
+
796
+ var addOrganPart = function addOrganPart(systemName, partName, useDefautColour, zincObject) {
797
+ for (var i = 0; i < organPartAddedCallbacks.length; i++) {
798
+ organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
799
+ }
800
+
801
+ if (useDefautColour) modelsLoader.setGeometryColour(zincObject, systemName, partName);
802
+ addOrganPartToSceneData(zincObject);
803
+ var annotation = new (__webpack_require__("984d").annotation)();
804
+ annotation.data = {
805
+ species: _this.sceneData.currentSpecies,
806
+ system: systemName,
807
+ part: partName,
808
+ group: zincObject.groupName
809
+ };
810
+ zincObject.userData = [annotation];
811
+ };
812
+ /**
813
+ * New organs geometry has been added to the scene, add UIs and make
814
+ * sure the viewport is correct.
815
+ */
816
+
817
+
818
+ var _addOrganPartCallback = function _addOrganPartCallback(systemName, partName, useDefautColour) {
819
+ return function (zincObject) {
820
+ addOrganPart(systemName, partName, useDefautColour, zincObject);
821
+ };
822
+ };
823
+
824
+ var downloadCompletedCallback = function downloadCompletedCallback() {
825
+ return function () {
826
+ _this.settingsChanged();
827
+
828
+ _this.sceneData.timeVarying = _this.scene.isTimeVarying();
829
+ if (finishDownloadCallback) finishDownloadCallback();
830
+ };
831
+ };
832
+
833
+ var singleItemDownloadCompletedCallback = function singleItemDownloadCompletedCallback(systemName, partName, useDefautColour) {
834
+ return function (geometry) {
835
+ addOrganPart(systemName, partName, useDefautColour, geometry);
836
+
837
+ _this.settingsChanged();
838
+ };
839
+ };
840
+ /**
841
+ * Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
842
+ * other activities of the organs.
843
+ */
844
+
845
+
846
+ this.updateFieldvisibility = function (dataFields, value) {
847
+ for (var i = 0; i < dataFields.length; i++) {
848
+ if (value != i) {
849
+ var geometryName = dataFields[i].PartName;
850
+
851
+ _this.changeOrganPartsVisibility(geometryName, false);
852
+ }
853
+ }
854
+
855
+ if (value > -1) {
856
+ var partName = dataFields[value].PartName;
857
+
858
+ if (_this.scene.findGeometriesWithGroupName(partName).length > 0 || _this.scene.findGlyphsetsWithGroupName(partName).length > 0) {
859
+ _this.changeOrganPartsVisibility(partName, true);
860
+ } else {
861
+ var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
862
+
863
+ if (partDetails != undefined) {
864
+ _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
865
+ }
866
+ }
867
+ }
868
+ };
869
+ /**
870
+ * Return an array containing name(s) of species that also contains the
871
+ * currently displayed organs.
872
+ *
873
+ * @returns {Array} containing species name
874
+ */
875
+
876
+
877
+ this.getAvailableSpecies = function (currentSpecies, currentSystem, currentPart) {
878
+ var availableSpecies = new Array();
879
+ availableSpecies.push("none");
880
+ var keysArray = Object.keys(organsFileMap);
881
+
882
+ for (index in keysArray) {
883
+ var species = keysArray[index];
884
+
885
+ if (species != currentSpecies) {
886
+ if (organsFileMap[species].hasOwnProperty(currentSystem) && organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
887
+ availableSpecies.push(species);
888
+ }
889
+ }
890
+ }
891
+
892
+ return availableSpecies;
893
+ };
894
+
895
+ var setSceneData = function setSceneData(speciesName, systemName, partName, organsDetails) {
896
+ _this.sceneData.nerveMapIsActive = false;
897
+ _this.sceneData.nerveMap = undefined;
898
+ _this.sceneData.metaURL = "";
899
+ _this.sceneData.viewURL = "";
900
+ _this.sceneData.currentSpecies = speciesName;
901
+ _this.sceneData.currentSystem = systemName;
902
+ _this.sceneData.currentPart = partName;
903
+ _this.sceneData.currentTime = 0.0;
904
+
905
+ _this.sceneData.geometries.splice(0);
906
+
907
+ _this.sceneData.lines.splice(0);
908
+
909
+ _this.sceneData.glyphsets.splice(0);
910
+
911
+ _this.sceneData.pointsets.splice(0);
912
+
913
+ _this.sceneData.timeVarying = false; // This is used as title
914
+
915
+ var name = "";
916
+ if (speciesName) name = speciesName + "/";
917
+ if (systemName) name = systemName + "/";
918
+ if (partName) name = partName;
919
+ _this.sceneData.currentName = name;
920
+ };
921
+
922
+ this.loadOrgansFromURL = function (url, speciesName, systemName, partName, viewURL) {
923
+ if (_this.zincRenderer) {
924
+ if (partName && _this.sceneData.metaURL !== url) {
925
+ setSceneData(speciesName, systemName, partName, undefined);
926
+ var name = _this.sceneData.currentName;
927
+
928
+ var organScene = _this.zincRenderer.getSceneByName(name);
929
+
930
+ if (organScene) {
931
+ organScene.clearAll();
932
+ } else {
933
+ organScene = _this.zincRenderer.createScene(name);
934
+ }
935
+
936
+ for (var i = 0; i < sceneChangedCallbacks.length; i++) {
937
+ sceneChangedCallbacks[i](_this.sceneData);
938
+ }
939
+
940
+ if (viewURL && viewURL != "") {
941
+ _this.sceneData.viewURL = viewURL;
942
+ organScene.loadViewURL(_this.sceneData.viewURL);
943
+ } else {
944
+ _this.sceneData.viewURL = undefined;
945
+ }
946
+
947
+ _this.sceneData.metaURL = url;
948
+ organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false), downloadCompletedCallback());
949
+ _this.scene = organScene;
950
+
951
+ _this.zincRenderer.setCurrentScene(organScene);
952
+
953
+ _this.graphicsHighlight.reset();
954
+
955
+ var zincCameraControl = organScene.getZincCameraControls();
956
+ zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
957
+ zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
958
+ zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
959
+ }
960
+ }
961
+ };
962
+
963
+ this.alignCameraWithSelectedObject = function (transitionTime) {
964
+ var objects = _this.graphicsHighlight.getSelected();
965
+
966
+ if (objects && objects[0] && objects[0].userData) {
967
+ _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
968
+ }
969
+ };
970
+
971
+ this.exportSettings = function () {
972
+ var settings = {};
973
+ settings.name = _this.instanceName;
974
+ if (_this.sceneData.currentSystem) settings.system = _this.sceneData.currentSystem;
975
+ if (_this.sceneData.currentSpecies) settings.species = _this.sceneData.currentSpecies;
976
+ if (_this.sceneData.currentPart) settings.part = _this.sceneData.currentPart;
977
+ settings.metaURL = _this.sceneData.metaURL;
978
+ if (_this.sceneData.viewURL) settings.viewURL = _this.sceneData.viewURL;
979
+ settings.dialog = "Organ Viewer";
980
+ return settings;
981
+ };
982
+
983
+ this.importSettings = function (settings) {
984
+ if (settings && settings.dialog == this.typeName) {
985
+ _this.setName(settings.name);
986
+
987
+ if (settings.metaURL !== undefined && settings.metaURL != "") {
988
+ _this.loadOrgansFromURL(settings.metaURL, settings.species, settings.system, settings.part, settings.viewURL);
989
+ } else {
990
+ _this.loadOrgans(settings.species, settings.system, settings.part);
991
+ }
992
+
993
+ return true;
994
+ }
995
+
996
+ return false;
997
+ };
998
+ /**
999
+ * initialise loading of the html layout for the organs panel, this is
1000
+ * called when the {@link PJP.OrgansViewer} is created.
1001
+ *
1002
+ * @async
1003
+ */
1004
+
1005
+
1006
+ var initialise = function initialise() {
1007
+ _this.initialiseRenderer(undefined);
1008
+
1009
+ if (_this.zincRenderer) {
1010
+ _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
1011
+
1012
+ _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
1013
+ }
1014
+ };
1015
+
1016
+ initialise();
1017
+ };
1018
+
1019
+ OrgansViewer.prototype = Object.create(__webpack_require__("8278").RendererModule.prototype);
1020
+ exports.OrgansViewer = OrgansViewer;
1021
+
1022
+ /***/ }),
1023
+
1024
+ /***/ "55ee":
1025
+ /***/ (function(module, exports) {
1026
+
1027
+ module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
1028
+
1029
+ /***/ }),
1030
+
1031
+ /***/ "5810":
1032
+ /***/ (function(module, exports, __webpack_require__) {
1033
+
1034
+ // extracted by mini-css-extract-plugin
1035
+
1036
+ /***/ }),
1037
+
1038
+ /***/ "5a43":
1039
+ /***/ (function(module, exports) {
1040
+
1041
+ function _arrayLikeToArray(arr, len) {
1042
+ if (len == null || len > arr.length) len = arr.length;
1043
+
1044
+ for (var i = 0, arr2 = new Array(len); i < len; i++) {
1045
+ arr2[i] = arr[i];
1046
+ }
1047
+
1048
+ return arr2;
1049
+ }
1050
+
1051
+ module.exports = _arrayLikeToArray;
1052
+
1053
+ /***/ }),
1054
+
1055
+ /***/ "5ec5":
1056
+ /***/ (function(module, exports, __webpack_require__) {
1057
+
1058
+ var _toConsumableArray = __webpack_require__("448a");
1059
+
1060
+ var THREE = __webpack_require__("9206").THREE;
1061
+ /**
1062
+ * This module manages highlighted and selected objects in 3D modules.
1063
+ *
1064
+ * @class
1065
+ * @returns {exports.GraphicsHighlight}
1066
+ */
1067
+
1068
+
1069
+ exports.GraphicsHighlight = function () {
1070
+ var currentHighlightedObjects = [];
1071
+ var currentSelectedObjects = [];
1072
+ this.highlightColour = [1, 0, 0];
1073
+ this.selectColour = [0, 1, 0];
1074
+ this.originalColour = [0, 0, 0];
1075
+
1076
+ var _this = this;
1077
+
1078
+ var isDifferent = function isDifferent(array1, array2) {
1079
+ if (array1.length == 0 && array2.length == 0) return false;
1080
+
1081
+ for (var i = 0; i < array1.length; i++) {
1082
+ var matched = false;
1083
+
1084
+ for (var j = 0; j < array2.length; j++) {
1085
+ if (array1[i] === array2[j]) {
1086
+ matched = true;
1087
+ }
1088
+ }
1089
+
1090
+ if (!matched) return true;
1091
+ }
1092
+
1093
+ for (var _i = 0; _i < array2.length; _i++) {
1094
+ var _matched = false;
1095
+
1096
+ for (var _j = 0; _j < array1.length; _j++) {
1097
+ if (array2[_i] === array1[_j]) {
1098
+ _matched = true;
1099
+ }
1100
+ }
1101
+
1102
+ if (!_matched) return true;
1103
+ }
1104
+
1105
+ return false;
1106
+ };
1107
+
1108
+ var getUnmatchingObjects = function getUnmatchingObjects(objectsArray1, objectsArray2) {
1109
+ var unmatchingObjects = [];
1110
+ if (objectsArray2.length == 0) return objectsArray1;
1111
+
1112
+ for (var i = 0; i < objectsArray1.length; i++) {
1113
+ var matched = false;
1114
+
1115
+ for (var j = 0; j < objectsArray2.length; j++) {
1116
+ if (objectsArray1[i] === objectsArray2[j]) {
1117
+ matched = true;
1118
+ }
1119
+ }
1120
+
1121
+ if (!matched) unmatchingObjects.push(objectsArray1[i]);
1122
+ }
1123
+
1124
+ return unmatchingObjects;
1125
+ };
1126
+
1127
+ this.setHighlighted = function (objects) {
1128
+ var previousHighlightedObjects = currentHighlightedObjects;
1129
+
1130
+ _this.resetHighlighted(); // Selected object cannot be highlighted
1131
+
1132
+
1133
+ var array = getUnmatchingObjects(objects, currentSelectedObjects);
1134
+ var fullList = getFullListOfObjects(array);
1135
+
1136
+ for (var i = 0; i < fullList.length; i++) {
1137
+ var _fullList$i$material$;
1138
+
1139
+ 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));
1140
+ }
1141
+
1142
+ currentHighlightedObjects = array;
1143
+ return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
1144
+ };
1145
+
1146
+ this.setSelected = function (objects) {
1147
+ // first find highlighted object that are not selected
1148
+ var previousHSelectedObjects = currentSelectedObjects;
1149
+ var array = getUnmatchingObjects(currentHighlightedObjects, objects);
1150
+ currentHighlightedObjects = array;
1151
+
1152
+ _this.resetSelected();
1153
+
1154
+ var fullList = getFullListOfObjects(objects);
1155
+
1156
+ for (var i = 0; i < fullList.length; i++) {
1157
+ var _fullList$i$material$2;
1158
+
1159
+ 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));
1160
+ }
1161
+
1162
+ currentSelectedObjects = objects;
1163
+ return isDifferent(currentSelectedObjects, previousHSelectedObjects);
1164
+ };
1165
+
1166
+ var getFullListOfObjects = function getFullListOfObjects(objects) {
1167
+ var fullList = [];
1168
+
1169
+ for (var i = 0; i < objects.length; i++) {
1170
+ if (objects[i].material) fullList.push(objects[i]);
1171
+ }
1172
+
1173
+ return fullList;
1174
+ };
1175
+
1176
+ this.resetHighlighted = function () {
1177
+ var fullList = getFullListOfObjects(currentHighlightedObjects);
1178
+
1179
+ for (var i = 0; i < fullList.length; i++) {
1180
+ if (fullList[i] && fullList[i].material) {
1181
+ var _fullList$i$material$3;
1182
+
1183
+ if (fullList[i].material.emissive) (_fullList$i$material$3 = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$3, _toConsumableArray(_this.originalColour));
1184
+ if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
1185
+ }
1186
+ }
1187
+
1188
+ currentHighlightedObjects = [];
1189
+ };
1190
+
1191
+ this.resetSelected = function () {
1192
+ var fullList = getFullListOfObjects(currentSelectedObjects);
1193
+
1194
+ for (var i = 0; i < fullList.length; i++) {
1195
+ if (fullList[i] && fullList[i].material) {
1196
+ var _fullList$i$material$4;
1197
+
1198
+ if (fullList[i].material.emissive) (_fullList$i$material$4 = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$4, _toConsumableArray(_this.originalColour));
1199
+ if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
1200
+ }
1201
+ }
1202
+
1203
+ currentSelectedObjects = [];
1204
+ };
1205
+
1206
+ this.getSelected = function () {
1207
+ return currentSelectedObjects;
1208
+ };
1209
+
1210
+ this.reset = function () {
1211
+ _this.resetSelected();
1212
+
1213
+ _this.resetHighlighted();
1214
+ };
1215
+ };
1216
+
1217
+ /***/ }),
1218
+
1219
+ /***/ "5fef":
1220
+ /***/ (function(module, exports) {
1221
+
1222
+ module.exports = require("core-js/modules/es.regexp.to-string");
1223
+
1224
+ /***/ }),
1225
+
1226
+ /***/ "6049":
1227
+ /***/ (function(module, exports) {
1228
+
1229
+ module.exports = require("core-js/modules/es.symbol");
1230
+
1231
+ /***/ }),
1232
+
1233
+ /***/ "642d":
1234
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1235
+
1236
+ "use strict";
1237
+ /* 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");
1238
+ /* 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__);
1239
+ /* unused harmony reexport * */
1240
+
1241
+
1242
+ /***/ }),
1243
+
1244
+ /***/ "6579":
1245
+ /***/ (function(module, exports) {
1246
+
1247
+ module.exports = require("core-js/modules/es.array.slice");
1248
+
1249
+ /***/ }),
1250
+
1251
+ /***/ "6613":
1252
+ /***/ (function(module, exports, __webpack_require__) {
1253
+
1254
+ __webpack_require__("e42b");
1255
+
1256
+ __webpack_require__("6579");
1257
+
1258
+ __webpack_require__("bcd8");
1259
+
1260
+ __webpack_require__("850c");
1261
+
1262
+ __webpack_require__("5fef");
1263
+
1264
+ __webpack_require__("907b");
1265
+
1266
+ var arrayLikeToArray = __webpack_require__("5a43");
1267
+
1268
+ function _unsupportedIterableToArray(o, minLen) {
1269
+ if (!o) return;
1270
+ if (typeof o === "string") return arrayLikeToArray(o, minLen);
1271
+ var n = Object.prototype.toString.call(o).slice(8, -1);
1272
+ if (n === "Object" && o.constructor) n = o.constructor.name;
1273
+ if (n === "Map" || n === "Set") return Array.from(n);
1274
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
1275
+ }
1276
+
1277
+ module.exports = _unsupportedIterableToArray;
1278
+
1279
+ /***/ }),
1280
+
1281
+ /***/ "6814":
1282
+ /***/ (function(module, exports) {
1283
+
1284
+ module.exports = require("lodash/orderBy");
1285
+
1286
+ /***/ }),
1287
+
1288
+ /***/ "6aa6":
1289
+ /***/ (function(module, exports, __webpack_require__) {
1290
+
1291
+ __webpack_require__("ab7e");
1292
+
1293
+ __webpack_require__("6bb1");
1294
+
1295
+ __webpack_require__("6579");
1296
+
1297
+ __webpack_require__("7c81");
1298
+
1299
+ __webpack_require__("bcd8");
1300
+
1301
+ __webpack_require__("fd48");
1302
+
1303
+ var MODULE_CHANGE = {
1304
+ ALL: 0,
1305
+ DESTROYED: 1,
1306
+ NAME_CHANGED: 2,
1307
+ SETTINGS_CHANGED: 3
1308
+ };
1309
+
1310
+ var BaseModule = function BaseModule() {
1311
+ this.typeName = "Base Module";
1312
+ this.instanceName = "default";
1313
+ this.onChangedCallbacks = [];
1314
+ /** Notifier handle for informing other modules of any changes **/
1315
+
1316
+ this.eventNotifiers = [];
1317
+ };
1318
+
1319
+ BaseModule.prototype.setName = function (name) {
1320
+ if (name && this.instanceName !== name) {
1321
+ this.instanceName = name;
1322
+ var callbackArray = this.onChangedCallbacks.slice();
1323
+
1324
+ for (var i = 0; i < callbackArray.length; i++) {
1325
+ callbackArray[i](this, MODULE_CHANGE.NAME_CHANGED);
1326
+ }
869
1327
  }
870
-
871
- /**
872
- * Callback function when a pickable object has been picked. It will then
873
- * call functions in tissueViewer and cellPanel to show corresponding
874
- * informations.
875
- *
876
- * @callback
877
- */
878
- var _pickingCallback = function() {
879
- return function(intersects, window_x, window_y) {
880
- var intersected = _this.getIntersectedObject(intersects);
881
- var idObject = getIdObjectFromIntersect(intersected);
882
- if (idObject.id) {
883
- if (_this.toolTip !== undefined) {
884
- _this.toolTip.setText(idObject.id);
885
- _this.toolTip.show(window_x, window_y);
886
- }
887
- _this.displayMessage(idObject.object.name + " selected.");
1328
+ };
888
1329
 
889
- if (idObject.object.userData.isGlyph) {
890
- if (idObject.object.name)
891
- _this.setSelectedByObjects([idObject.object], true);
892
- else
893
- _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);
894
- } else {
895
- _this.setSelectedByObjects([idObject.object], true);
896
- }
897
- return;
898
- } else {
899
- if (_this.toolTip !== undefined) {
900
- _this.toolTip.hide();
901
- }
902
- _this.setSelectedByObjects([], true);
903
- }
904
- }
905
- };
906
-
907
- /**
908
- * Callback function when a pickable object has been hovered over. It will
909
- * show objecty id/name as _this.toolTip text.
910
- *
911
- * @callback
912
- */
913
- var _hoverCallback = function() {
914
- return function(intersects, window_x, window_y) {
915
- var intersected = _this.getIntersectedObject(intersects);
916
- var idObject = getIdObjectFromIntersect(intersected);
917
- if (idObject.id) {
918
- _this.displayArea.style.cursor = "pointer";
919
- if (_this.toolTip !== undefined) {
920
- _this.toolTip.setText(idObject.id);
921
- _this.toolTip.show(window_x, window_y);
922
- }
923
- _this.setHighlightedByObjects([idObject.object], true);
924
- return;
925
- }
926
- else {
927
- if (_this.toolTip !== undefined) {
928
- _this.toolTip.hide();
929
- }
930
- _this.displayArea.style.cursor = "auto";
931
- _this.setHighlightedByObjects([], true);
932
- }
933
- }
934
- };
935
-
936
- var changeOrganPartsVisibilityForScene = function(scene, name, value, type) {
937
- if (type == "all" || type == "geometries") {
938
- var geometries = scene.findGeometriesWithGroupName(name);
939
- for (var i = 0; i < geometries.length; i ++ ) {
940
- geometries[i].setVisibility(value);
941
- }
942
- }
943
- if (type == "all" || type == "glyphsets") {
944
- var glyphsets = scene.findGlyphsetsWithGroupName(name);
945
- for (var i = 0; i < glyphsets.length; i ++ ) {
946
- glyphsets[i].setVisibility(value);
947
- }
948
- }
949
- if (type == "all" || type == "pointsets") {
950
- var pointsets = scene.findPointsetsWithGroupName(name);
951
- for (var i = 0; i < pointsets.length; i ++ ) {
952
- pointsets[i].setVisibility(value);
953
- }
954
- }
955
- if (type == "all" || type == "lines") {
956
- var lines = scene.findLinesWithGroupName(name);
957
- for (var i = 0; i < lines.length; i ++ ) {
958
- lines[i].setVisibility(value);
959
- }
960
- }
961
- }
962
-
963
- /**
964
- * Change visibility for parts of the current scene.
965
- */
966
- this.changeGeometriesVisibility = function(name, value) {
967
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
968
- if (pickerScene)
969
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
970
- }
971
-
972
- /**
973
- * Change visibility for parts of the current scene.
974
- */
975
- this.changeGlyphsetsVisibility = function(name, value) {
976
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
977
- if (pickerScene)
978
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
979
- }
980
-
981
- /**
982
- * Change visibility for parts of the current scene.
983
- */
984
- this.changeLinesVisibility = function(name, value) {
985
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
986
- if (pickerScene)
987
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
988
- }
989
-
990
- /**
991
- * Change visibility for parts of the current scene.
992
- */
993
- this.changePointsetsVisibility = function(name, value) {
994
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
995
- if (pickerScene)
996
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
1330
+ BaseModule.prototype.settingsChanged = function () {
1331
+ var callbackArray = this.onChangedCallbacks.slice();
1332
+
1333
+ for (var i = 0; i < callbackArray.length; i++) {
1334
+ callbackArray[i](this, MODULE_CHANGE.SETTINGS_CHANGED);
997
1335
  }
998
-
999
- /**
1000
- * Change visibility for parts of the current scene.
1001
- */
1002
- this.changeOrganPartsVisibility = function(name, value, typeIn) {
1003
- var type = "all";
1004
- if (typeIn !== undefined)
1005
- type = typeIn;
1006
- changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
1007
- if (pickerScene)
1008
- changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
1009
- }
1010
-
1011
- this.changeOrganPartsVisibilityCallback = function(name) {
1012
- return function(value) {
1013
- _this.changeOrganPartsVisibility(name, value);
1014
- }
1015
- }
1016
-
1017
- /**
1018
- * Change some of the ZincGeometry property for never map geometry
1019
- *
1020
- * @callback
1021
- */
1022
- var _addNerveMapGeometryCallback = function(GroupName) {
1023
- return function(geometry) {
1024
- geometry.groupName = GroupName;
1025
- if (imageCombiner && geometry.morph && geometry.morph.material.map) {
1026
- geometry.morph.material.map = new THREE.Texture(imageCombiner.getCombinedImage());
1027
- geometry.morph.material.map.needsUpdate = true;
1028
- geometry.morph.material.needsUpdate = true;
1029
- }
1030
- }
1031
- }
1032
-
1033
- /**
1034
- * Read in the nerve map models onto the primary renderer when nerve map has
1035
- * been toggled on.
1036
- */
1037
- var setupNerveMapPrimaryRenderer = function() {
1038
- var sceneName = _this.sceneData.currentName + "_nervemap";
1039
- nerveMapScene = _this.zincRenderer.getSceneByName(sceneName);
1040
- if (nerveMapScene == undefined) {
1041
- var downloadPath = modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.meta;
1042
- nerveMapScene = _this.zincRenderer.createScene(sceneName);
1043
- nerveMapScene.loadMetadataURL(downloadPath, _addNerveMapGeometryCallback("threed"));
1044
- if (_this.sceneData.nerveMap.threed.view !== undefined)
1045
- nerveMapScene.loadViewURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.view);
1046
- else {
1047
- nerveMapScene.loadViewURL(modelsLoader.getBodyDirectoryPrefix() + "/body_view.json");
1048
- }
1049
- nerveMapScene.ambient.intensity = 8.0;
1050
- nerveMapScene.directionalLight.intensity = 0;
1051
- var zincCameraControl = nerveMapScene.getZincCameraControls();
1052
- zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
1053
- zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
1054
- _this.sceneData.nerveMap.additionalReader = new (__webpack_require__("6fd2").VaryingTexCoordsReader)(nerveMapScene);
1055
- var urlsArray = [ modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_0.json",
1056
- modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_1.json",
1057
- modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi0_time_0.json"];
1058
- _this.sceneData.nerveMap.additionalReader.loadURLsIntoBufferGeometry(urlsArray);
1059
- }
1060
- _this.zincRenderer.setCurrentScene(nerveMapScene);
1061
- _this.graphicsHighlight.reset();
1062
- }
1063
-
1064
- var activateAdditionalNerveMapRenderer = function() {
1065
- for (var i = 0; i < layoutUpdateRequiredCallbacks.length;i++) {
1066
- layoutUpdateRequiredCallbacks[i](false, true);
1067
- }
1068
- }
1069
-
1070
- /**
1071
- * Nerve map has been toggled on/off, change organs renderer layput.
1072
- */
1073
- this.changeNerveMapVisibility = function() {
1074
- _this.sceneData.nerveMapIsActive = !_this.sceneData.nerveMapIsActive;
1075
- if (_this.sceneData.nerveMapIsActive)
1076
- setupNerveMapPrimaryRenderer();
1077
- else {
1078
- _this.zincRenderer.setCurrentScene(_this.scene);
1079
- _this.graphicsHighlight.reset();
1080
- }
1081
- activateAdditionalNerveMapRenderer();
1082
- }
1083
-
1084
- this.changeBackgroundColour = function(backgroundColourString) {
1085
- var colour = new THREE.Color(backgroundColourString);
1086
- if (_this.zincRenderer) {
1087
- var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
1088
- internalRenderer.setClearColor( colour, 1 );
1089
- }
1090
- }
1091
-
1092
- var addOrganPartToSceneData = function(zincObject) {
1093
- if (zincObject.groupName) {
1094
- if (zincObject.isGeometry) {
1095
- if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
1096
- _this.sceneData.geometries.push(zincObject.groupName);
1097
- }
1098
- } else if (zincObject.isGlyphset) {
1099
- if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
1100
- _this.sceneData.glyphsets.push(zincObject.groupName);
1101
- }
1102
- } else if (zincObject.isLines) {
1103
- if (!_this.sceneData.lines.includes(zincObject.groupName)) {
1104
- _this.sceneData.lines.push(zincObject.groupName);
1105
- }
1106
- } else if (zincObject.isPointset) {
1107
- if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
1108
- _this.sceneData.pointsets.push(zincObject.groupName);
1109
- }
1110
- }
1111
- }
1112
- }
1113
-
1114
- var addOrganPart = function(systemName, partName, useDefautColour, zincObject) {
1115
- for (var i = 0; i < organPartAddedCallbacks.length;i++) {
1116
- organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
1117
- }
1118
- if (useDefautColour)
1119
- modelsLoader.setGeometryColour(zincObject, systemName, partName);
1120
- addOrganPartToSceneData(zincObject);
1121
- if (zincObject.groupName) {
1122
- _this.displayMessage(zincObject.groupName + " loaded.");
1123
- } else {
1124
- _this.displayMessage("Resource loaded.");
1125
- }
1126
- var annotation = new (__webpack_require__("a0d7").annotation)();
1127
- annotation.data = {species:_this.sceneData.currentSpecies, system:systemName, part:partName, group:zincObject.groupName};
1128
- zincObject.userData = [annotation];
1129
- }
1130
-
1131
- /**
1132
- * New organs geometry has been added to the scene, add UIs and make
1133
- * sure the viewport is correct.
1134
- */
1135
- var _addOrganPartCallback = function(systemName, partName, useDefautColour) {
1136
- return function(zincObject) {
1137
- addOrganPart(systemName, partName, useDefautColour, zincObject);
1138
- }
1139
- }
1140
-
1141
- var downloadCompletedCallback = function() {
1142
- return function() {
1143
- _this.settingsChanged();
1144
- _this.sceneData.timeVarying = _this.scene.isTimeVarying();
1145
- _this.displayMessage("All resources loaded.");
1146
- if (finishDownloadCallback)
1147
- finishDownloadCallback();
1148
- }
1149
- }
1150
-
1151
- var singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {
1152
- return function(geometry) {
1153
- addOrganPart(systemName, partName, useDefautColour, geometry);
1154
- _this.settingsChanged();
1155
- }
1156
- }
1157
-
1158
- /**
1159
- * Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
1160
- * other activities of the organs.
1161
- */
1162
- this.updateFieldvisibility = function(dataFields, value) {
1163
- for ( var i = 0; i < dataFields.length; i ++ ) {
1164
- if (value != i) {
1165
- var geometryName = dataFields[i].PartName;
1166
- _this.changeOrganPartsVisibility(geometryName, false);
1167
- }
1168
- }
1169
- if (value > -1) {
1170
- var partName = dataFields[value].PartName;
1171
- if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||
1172
- (_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {
1173
- _this.changeOrganPartsVisibility(partName, true);
1174
- } else {
1175
- var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
1176
- if (partDetails != undefined) {
1177
- _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
1178
- }
1179
- }
1180
- }
1181
- }
1182
-
1183
- /**
1184
- * Return an array containing name(s) of species that also contains the
1185
- * currently displayed organs.
1186
- *
1187
- * @returns {Array} containing species name
1188
- */
1189
- this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {
1190
- var availableSpecies = new Array();
1191
- availableSpecies.push("none");
1192
- var keysArray = Object.keys(organsFileMap);
1193
- for (index in keysArray) {
1194
- var species = keysArray[index];
1195
- if (species != currentSpecies) {
1196
- if (organsFileMap[species].hasOwnProperty(currentSystem) &&
1197
- organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
1198
- availableSpecies.push(species);
1199
- }
1200
- }
1201
- }
1202
- return availableSpecies;
1203
- }
1204
-
1205
- var setSceneData = function(speciesName, systemName, partName, organsDetails) {
1206
- _this.sceneData.nerveMapIsActive = false;
1207
- _this.sceneData.nerveMap = undefined;
1208
- _this.sceneData.metaURL = "";
1209
- _this.sceneData.viewURL = "";
1210
- _this.sceneData.currentSpecies = speciesName;
1211
- _this.sceneData.currentSystem = systemName;
1212
- _this.sceneData.currentPart = partName;
1213
- _this.sceneData.currentTime = 0.0;
1214
- _this.sceneData.geometries.splice(0);
1215
- _this.sceneData.lines.splice(0);
1216
- _this.sceneData.glyphsets.splice(0);
1217
- _this.sceneData.pointsets.splice(0);
1218
- _this.sceneData.timeVarying = false;
1219
- // This is used as title
1220
- var name = "";
1221
- if (speciesName)
1222
- name = speciesName + "/";
1223
- if (systemName)
1224
- name = systemName + "/";
1225
- if (partName)
1226
- name = partName;
1227
- _this.sceneData.currentName = name;
1228
- }
1229
-
1230
- this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {
1231
- if (_this.zincRenderer) {
1232
- if (partName && (_this.sceneData.metaURL !== url)) {
1233
- setSceneData(speciesName, systemName, partName, undefined);
1234
- var name = _this.sceneData.currentName;
1235
- var organScene = _this.zincRenderer.getSceneByName(name);
1236
- if (organScene) {
1237
- organScene.clearAll();
1238
- } else {
1239
- organScene = _this.zincRenderer.createScene(name);
1240
- }
1241
- for (var i = 0; i < sceneChangedCallbacks.length;i++) {
1242
- sceneChangedCallbacks[i](_this.sceneData);
1243
- }
1244
- if (viewURL && viewURL != "") {
1245
- _this.sceneData.viewURL = viewURL;
1246
- organScene.loadViewURL(_this.sceneData.viewURL);
1247
- } else
1248
- _this.sceneData.viewURL = undefined;
1249
- _this.sceneData.metaURL = url;
1250
- _this.displayMessage("Downloading...");
1251
- organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),
1252
- downloadCompletedCallback());
1253
- _this.scene = organScene;
1254
- _this.zincRenderer.setCurrentScene(organScene);
1255
- _this.graphicsHighlight.reset();
1256
- var zincCameraControl = organScene.getZincCameraControls();
1257
- zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
1258
- zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
1259
- zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
1260
- }
1261
- }
1262
- }
1263
-
1264
- this.alignCameraWithSelectedObject = function(transitionTime) {
1265
- var objects = _this.graphicsHighlight.getSelected();
1266
- if (objects && objects[0] && objects[0].userData) {
1267
- _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
1268
- }
1269
- }
1270
-
1271
- this.exportSettings = function() {
1272
- var settings = {};
1273
- settings.name = _this.instanceName;
1274
- if (_this.sceneData.currentSystem)
1275
- settings.system = _this.sceneData.currentSystem;
1276
- if (_this.sceneData.currentSpecies)
1277
- settings.species = _this.sceneData.currentSpecies;
1278
- if (_this.sceneData.currentPart)
1279
- settings.part = _this.sceneData.currentPart;
1280
- settings.metaURL = _this.sceneData.metaURL;
1281
- if (_this.sceneData.viewURL)
1282
- settings.viewURL = _this.sceneData.viewURL;
1283
- settings.dialog = "Organ Viewer";
1284
- return settings;
1285
- }
1286
-
1287
- this.importSettings = function(settings) {
1288
- if (settings && (settings.dialog == this.typeName)) {
1289
- _this.setName(settings.name);
1290
- if (settings.metaURL !== undefined && settings.metaURL != "") {
1291
- _this.loadOrgansFromURL(settings.metaURL, settings.species,
1292
- settings.system, settings.part, settings.viewURL);
1293
- } else {
1294
- _this.loadOrgans(settings.species, settings.system, settings.part);
1295
- }
1296
- return true;
1297
- }
1298
- return false;
1299
- }
1300
-
1301
- /**
1302
- * initialise loading of the html layout for the organs panel, this is
1303
- * called when the {@link PJP.OrgansViewer} is created.
1304
- *
1305
- * @async
1306
- */
1307
- var initialise = function() {
1308
- _this.initialiseRenderer(undefined);
1309
- if (_this.zincRenderer) {
1310
- _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
1311
- _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
1312
- }
1336
+ };
1337
+
1338
+ BaseModule.prototype.exportSettings = function () {
1339
+ var settings = {};
1340
+ settings.dialog = this.typeName;
1341
+ settings.name = this.instanceName;
1342
+ return settings;
1343
+ };
1344
+
1345
+ BaseModule.prototype.importSettings = function (settings) {
1346
+ if (settings.dialog == this.typeName) {
1347
+ this.setName(settings.name);
1348
+ return true;
1313
1349
  }
1314
-
1315
- initialise();
1316
1350
 
1317
- }
1351
+ return false;
1352
+ };
1318
1353
 
1319
- OrgansViewer.prototype = Object.create((__webpack_require__("7a89").RendererModule).prototype);
1320
- exports.OrgansViewer = OrgansViewer;
1354
+ BaseModule.prototype.publishChanges = function (annotations, eventType) {
1355
+ for (var i = 0; i < this.eventNotifiers.length; i++) {
1356
+ this.eventNotifiers[i].publish(this, eventType, annotations);
1357
+ }
1358
+ };
1321
1359
 
1360
+ BaseModule.prototype.getName = function () {
1361
+ return this.instanceName;
1362
+ };
1322
1363
 
1323
- /***/ }),
1364
+ BaseModule.prototype.destroy = function () {
1365
+ //Make a temorary copy as the array may be altered during the loop
1366
+ var callbackArray = this.onChangedCallbacks.slice();
1324
1367
 
1325
- /***/ "6814":
1326
- /***/ (function(module, exports) {
1368
+ for (var i = 0; i < callbackArray.length; i++) {
1369
+ callbackArray[i](this, MODULE_CHANGE.DESTROYED);
1370
+ }
1327
1371
 
1328
- module.exports = require("lodash/orderBy");
1372
+ delete this;
1373
+ };
1374
+
1375
+ BaseModule.prototype.addChangedCallback = function (callback) {
1376
+ if (this.onChangedCallbacks.includes(callback) == false) this.onChangedCallbacks.push(callback);
1377
+ };
1378
+
1379
+ BaseModule.prototype.removeChangedCallback = function (callback) {
1380
+ var index = this.onChangedCallbacks.indexOf(callback);
1381
+
1382
+ if (index > -1) {
1383
+ this.onChangedCallbacks.splice(index, 1);
1384
+ }
1385
+ };
1386
+
1387
+ BaseModule.prototype.addNotifier = function (eventNotifier) {
1388
+ this.eventNotifiers.push(eventNotifier);
1389
+ };
1390
+
1391
+ exports.BaseModule = BaseModule;
1392
+ exports.MODULE_CHANGE = MODULE_CHANGE;
1329
1393
 
1330
1394
  /***/ }),
1331
1395
 
@@ -1350,160 +1414,40 @@ module.exports = require("element-ui/lib/row");
1350
1414
 
1351
1415
  /***/ }),
1352
1416
 
1353
- /***/ "6fd2":
1417
+ /***/ "7037":
1354
1418
  /***/ (function(module, exports, __webpack_require__) {
1355
1419
 
1356
- var THREE = __webpack_require__("9206").THREE;
1420
+ __webpack_require__("6049");
1357
1421
 
1358
- exports.VaryingTexCoordsReader = function(sceneIn) {
1359
-
1360
- var _this = this;
1361
- var finishCallbackFunction = undefined;
1362
- var bufferGeometry = undefined;
1363
- var zincGeometry = undefined;
1364
- var numberOfInputs = 0;
1365
- var completedInputs = 0;
1366
- var scene = sceneIn;
1367
- var currentMap = undefined;
1368
- var textureLoader = new THREE.TextureLoader();
1369
- var texture = new textureLoader.load( 'models/organsViewerModels/digestive/stomach/nerve_map/texture/ratstomach_innervation_square.png' );
1370
- texture.wrapS = THREE.RepeatWrapping;
1371
- texture.wrapT = THREE.RepeatWrapping;
1372
- texture.format = THREE.RGBFormat;
1373
-
1374
- var shadersUniforms = THREE.UniformsUtils.merge( [
1375
- {
1376
- ambient : { type: "c", value: new THREE.Color( 0x000000 ) },
1377
- diffuse : { type: "c", value: new THREE.Color( 0xffffff ) },
1378
- emissive : { type: "c", value: new THREE.Color( 0xbbbbbb ) },
1379
- specular : { type: "c", value: new THREE.Color( 0x111111 ) },
1380
- shininess: { type: "f", value: 100 },
1381
- opacity: { type: "f", value: 1.0 },
1382
- ambientLightColor: { type: "c", value: new THREE.Color( 0xF0F0F0 ) },
1383
- directionalLightColor: { type: "c", value: new THREE.Color( 0x555555) },
1384
- directionalLightDirection: { type: "v3", value: new THREE.Vector3() },
1385
- offsetRepeat: { value: new THREE.Vector4( 0, 0, 1, 1 ) },
1386
- time: { type: "f", value: 0.0 },
1387
- slide_pos: { type: "f", value: 1.0 },
1388
- myTex: {type: 't', value: null}
1389
- } ] );
1390
-
1391
- var addGeometryIntoBufferGeometry = function(order, geometry)
1392
- {
1393
- var arrayLength = geometry.faces.length * 3 * 3;
1394
- var positions = new Float32Array( arrayLength );
1395
- var colors = new Float32Array( arrayLength );
1396
- var normals = new Float32Array( arrayLength );
1397
- var texCoords = new Float32Array( geometry.faces.length * 3 * 2 );
1398
- if (bufferGeometry === undefined)
1399
- bufferGeometry = new THREE.BufferGeometry();
1400
-
1401
- geometry.faces.forEach( function ( face, index ) {
1402
- positions[ index * 9 + 0 ] = geometry.vertices[ face.a ].x;
1403
- positions[ index * 9 + 1 ] = geometry.vertices[ face.a ].y;
1404
- positions[ index * 9 + 2 ] = geometry.vertices[ face.a ].z;
1405
- positions[ index * 9 + 3 ] = geometry.vertices[ face.b ].x;
1406
- positions[ index * 9 + 4 ] = geometry.vertices[ face.b ].y;
1407
- positions[ index * 9 + 5 ] = geometry.vertices[ face.b ].z;
1408
- positions[ index * 9 + 6 ] = geometry.vertices[ face.c ].x;
1409
- positions[ index * 9 + 7 ] = geometry.vertices[ face.c ].y;
1410
- positions[ index * 9 + 8 ] = geometry.vertices[ face.c ].z;
1411
-
1412
- normals[ index * 9 + 0 ] = face.vertexNormals[0].x;
1413
- normals[ index * 9 + 1 ] = face.vertexNormals[0].y;
1414
- normals[ index * 9 + 2 ] = face.vertexNormals[0].z;
1415
- normals[ index * 9 + 3 ] = face.vertexNormals[1].x;
1416
- normals[ index * 9 + 4 ] = face.vertexNormals[1].y;
1417
- normals[ index * 9 + 5 ] = face.vertexNormals[1].z;
1418
- normals[ index * 9 + 6 ] = face.vertexNormals[2].x;
1419
- normals[ index * 9 + 7 ] = face.vertexNormals[2].y;
1420
- normals[ index * 9 + 8 ] = face.vertexNormals[2].z;
1421
-
1422
- texCoords[ index * 6 + 0] = geometry.faceVertexUvs[ 0 ][index][0].x;
1423
- texCoords[ index * 6 + 1] = geometry.faceVertexUvs[ 0 ][index][0].y;
1424
- texCoords[ index * 6 + 2] = geometry.faceVertexUvs[ 0 ][index][1].x;
1425
- texCoords[ index * 6 + 3] = geometry.faceVertexUvs[ 0 ][index][1].y;
1426
- texCoords[ index * 6 + 4] = geometry.faceVertexUvs[ 0 ][index][2].x;
1427
- texCoords[ index * 6 + 5] = geometry.faceVertexUvs[ 0 ][index][2].y;
1428
- } );
1429
-
1430
-
1431
- if (order == 0) {
1432
- bufferGeometry.addAttribute( "position", new THREE.BufferAttribute( positions, 3) );
1433
- bufferGeometry.addAttribute( "normal", new THREE.BufferAttribute( normals, 3 ) );
1434
- bufferGeometry.addAttribute( "uv", new THREE.BufferAttribute( texCoords, 2 ) );
1435
- } else {
1436
- var positionStr = "position_" + order;
1437
- var normalStr = "normal_" + order;
1438
- var uvsStr = "uv_" + order;
1439
- bufferGeometry.addAttribute( positionStr, new THREE.BufferAttribute( positions, 3) );
1440
- bufferGeometry.addAttribute( normalStr, new THREE.BufferAttribute( normals, 3 ) );
1441
- bufferGeometry.addAttribute( uvsStr, new THREE.BufferAttribute( texCoords, 2 ) );
1442
- }
1443
-
1444
- }
1445
-
1446
- var meshReady = function(bufferGeometryIn, shaderText, material){
1447
- var shaderMaterial = new THREE.RawShaderMaterial( {
1448
- vertexShader: shaderText[0],
1449
- fragmentShader: shaderText[1],
1450
- uniforms: shadersUniforms
1451
- } );
1452
- shaderMaterial.uniforms.myTex.value = texture;
1453
- shaderMaterial.side = THREE.DoubleSide;
1454
- shaderMaterial.depthTest = true;
1455
- shaderMaterial.needsUpdate = true;
1456
- shaderMaterial.map = texture;
1457
- shaderMaterial.uniforms.myTex.value.needsUpdate = true;
1458
- shaderMaterial.opacity = 1.0;
1459
- zincGeometry = scene.addZincGeometry(bufferGeometryIn, 30001, undefined, undefined, false, false, true, undefined, shaderMaterial);
1460
- zincGeometry.groupName = "varyingTexture";
1461
- }
1462
-
1463
- var myLoader = function(order, shaderText) {
1464
- return function(geometry, materials){
1465
- var material = 0;
1466
- addGeometryIntoBufferGeometry(order, geometry);
1467
- completedInputs++;
1468
- if (completedInputs == numberOfInputs) {
1469
- meshReady(bufferGeometry, shaderText, material);
1470
- if (finishCallbackFunction != undefined && (typeof finishCallbackFunction == 'function'))
1471
- finishCallbackFunction(bufferGeometry);
1472
- }
1473
- }
1474
- }
1475
-
1476
- this.setSliderPos = function(pos) {
1477
- if (zincGeometry)
1478
- zincGeometry.morph.material.uniforms.slide_pos.value = pos;
1479
- }
1480
-
1481
- this.setTime = function(time) {
1482
- if (zincGeometry) {
1483
- zincGeometry.morph.material.uniforms.time.value = time;
1484
- }
1485
- }
1486
-
1487
- this.setTexture = function(textureIn) {
1488
- if (zincGeometry) {
1489
- zincGeometry.morph.material.uniforms.myTex.value = textureIn;
1490
- zincGeometry.morph.material.uniforms.myTex.value.needsUpdate = true;
1491
- }
1492
- }
1493
-
1494
- this.loadURLsIntoBufferGeometry = function(urls, finishCallback, progressCallback, errorCallback) {
1495
- var loader = new THREE.JSONLoader( true );
1496
- numberOfInputs = urls.length;
1497
- finishCallbackFunction = finishCallback;
1498
- var shaderText = [
1499
- __webpack_require__("1823"),
1500
- __webpack_require__("4e8a")
1501
- ];
1502
- for (var i = 0; i < numberOfInputs; i++)
1503
- loader.load( urls[i], myLoader(i, shaderText), progressCallback, errorCallback);
1504
- }
1422
+ __webpack_require__("51e9");
1423
+
1424
+ __webpack_require__("02ac");
1425
+
1426
+ __webpack_require__("8c84");
1427
+
1428
+ __webpack_require__("850c");
1429
+
1430
+ __webpack_require__("907b");
1431
+
1432
+ __webpack_require__("1ce0");
1433
+
1434
+ function _typeof(obj) {
1435
+ "@babel/helpers - typeof";
1436
+
1437
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
1438
+ module.exports = _typeof = function _typeof(obj) {
1439
+ return typeof obj;
1440
+ };
1441
+ } else {
1442
+ module.exports = _typeof = function _typeof(obj) {
1443
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
1444
+ };
1445
+ }
1446
+
1447
+ return _typeof(obj);
1505
1448
  }
1506
1449
 
1450
+ module.exports = _typeof;
1507
1451
 
1508
1452
  /***/ }),
1509
1453
 
@@ -1514,105 +1458,68 @@ module.exports = require("element-ui/lib/theme-chalk/col.css");
1514
1458
 
1515
1459
  /***/ }),
1516
1460
 
1517
- /***/ "73b5":
1518
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
1519
-
1520
- "use strict";
1521
- /* 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");
1522
- /* 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__);
1523
- /* unused harmony reexport * */
1461
+ /***/ "73ef":
1462
+ /***/ (function(module, exports) {
1524
1463
 
1464
+ module.exports = require("element-ui/lib/theme-chalk/main.css");
1525
1465
 
1526
1466
  /***/ }),
1527
1467
 
1528
- /***/ "73ef":
1468
+ /***/ "7c81":
1529
1469
  /***/ (function(module, exports) {
1530
1470
 
1531
- module.exports = require("element-ui/lib/theme-chalk/main.css");
1471
+ module.exports = require("core-js/modules/es.array.splice");
1532
1472
 
1533
1473
  /***/ }),
1534
1474
 
1535
- /***/ "76bf":
1475
+ /***/ "7d9b":
1536
1476
  /***/ (function(module, exports, __webpack_require__) {
1537
1477
 
1538
- __webpack_require__("b723");
1478
+ // extracted by mini-css-extract-plugin
1539
1479
 
1540
- exports.ToolTip = function(container) {
1541
- var tooltipcontainerElement = undefined;
1542
- var tipElement = undefined;
1543
- var tiptextElement = undefined;
1544
- var template = '<div class="mptooltip" id="tip"><span class="mptooltiptext" id="tiptext"> Tooltip text</span></div>';
1545
- var _this = this;
1546
-
1547
- /**
1548
- * Show tool tip on the specified windows coordinates.
1549
- * @param {Number} x - Style sheet with the same title.
1550
- * @param {Number} y - selector string to match.
1551
- */
1552
- this.show = function(x, y) {
1553
- tooltipcontainerElement.style.left = x +"px";
1554
- tooltipcontainerElement.style.top = (y - 20) + "px";
1555
- tipElement.style.visibility = "visible";
1556
- tipElement.style.opacity = 1;
1557
- tiptextElement.style.visibility = "visible";
1558
- tiptextElement.style.opacity = 1;
1559
- }
1560
-
1561
- this.hide = function() {
1562
- tipElement.style.visibility = "hidden";
1563
- tipElement.style.opacity = 0;
1564
- tiptextElement.style.visibility = "hidden";
1565
- tiptextElement.style.opacity = 0;
1566
- }
1567
-
1568
- /**
1569
- * Change the tooltip text.
1570
- * @param {String} text - Text to update the tooltip to.
1571
- */
1572
- this.setText = function(text) {
1573
- tiptextElement.innerHTML = text;
1574
- }
1480
+ /***/ }),
1575
1481
 
1576
- var setupToolTipContainer = function() {
1577
- tooltipcontainerElement = document.createElement("div");
1578
- tooltipcontainerElement.id = "tooltipcontainer";
1579
- tooltipcontainerElement.innerHTML = template;
1580
- /*
1581
- for (i = 0; i < childNodes.length; i++) {
1582
- parent[0].appendChild(childNodes[i]);
1583
- }
1584
- */
1585
- tipElement = tooltipcontainerElement.querySelector("#tip");
1586
- tiptextElement = tooltipcontainerElement.querySelector("#tiptext");
1587
- container.appendChild(tooltipcontainerElement);
1588
-
1589
- }
1590
-
1591
- setupToolTipContainer();
1592
- }
1482
+ /***/ "7f9f":
1483
+ /***/ (function(module, exports) {
1484
+
1485
+ module.exports = require("element-ui/lib/locale");
1486
+
1487
+ /***/ }),
1593
1488
 
1489
+ /***/ "80c4":
1490
+ /***/ (function(module, exports) {
1594
1491
 
1492
+ module.exports = require("element-ui/lib/theme-chalk/option.css");
1595
1493
 
1596
1494
  /***/ }),
1597
1495
 
1598
- /***/ "7a89":
1496
+ /***/ "8278":
1599
1497
  /***/ (function(module, exports, __webpack_require__) {
1600
1498
 
1601
- var THREE = __webpack_require__("9206").THREE;
1499
+ __webpack_require__("bcd8");
1500
+
1501
+ var _readOnlyError = __webpack_require__("da60");
1602
1502
 
1503
+ var THREE = __webpack_require__("9206").THREE;
1603
1504
  /**
1604
1505
  * Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.
1605
1506
  * @param {String} elementID - id of the target dom element.
1606
1507
  * @returns {Zinc.Renderer}
1607
1508
  */
1608
- var createRenderer = function () {
1609
- var WEBGL = __webpack_require__("10c9").WEBGL;
1610
- var localContainer = document.createElement( 'div' );
1611
- var localRenderer = undefined;;
1509
+
1510
+
1511
+ var createRenderer = function createRenderer() {
1512
+ var WEBGL = __webpack_require__("cf41").WEBGL;
1513
+
1514
+ var localContainer = document.createElement('div');
1515
+ var localRenderer = undefined;
1516
+ ;
1612
1517
  localContainer.style.height = "100%";
1518
+
1613
1519
  if (WEBGL.isWebGLAvailable()) {
1614
1520
  var Zinc = __webpack_require__("9206");
1615
- var localRenderer = new Zinc.Renderer(localContainer, window);
1521
+
1522
+ localRenderer = new Zinc.Renderer(localContainer, window);
1616
1523
  Zinc.defaultMaterialColor = 0xFFFF9C;
1617
1524
  localRenderer.initialiseVisualisation();
1618
1525
  localRenderer.playAnimation = false;
@@ -1620,278 +1527,253 @@ var createRenderer = function () {
1620
1527
  var warning = WEBGL.getWebGLErrorMessage();
1621
1528
  localContainer.appendChild(warning);
1622
1529
  }
1623
- return {"renderer":localRenderer, "container":localContainer};
1624
- }
1625
1530
 
1626
- var RendererModule = function() {
1627
- (__webpack_require__("3966").BaseModule).call(this);
1531
+ return {
1532
+ "renderer": localRenderer,
1533
+ "container": localContainer
1534
+ };
1535
+ };
1536
+
1537
+ var RendererModule = function RendererModule() {
1538
+ __webpack_require__("6aa6").BaseModule.call(this);
1539
+
1628
1540
  this.scene = undefined;
1629
- this.toolTip = undefined;
1630
1541
  this.rendererContainer = undefined;
1631
1542
  this.displayArea = undefined;
1632
- this.graphicsHighlight = new (__webpack_require__("8cec").GraphicsHighlight)();
1543
+ this.graphicsHighlight = new (__webpack_require__("5ec5").GraphicsHighlight)();
1633
1544
  this.zincRenderer = null;
1634
1545
  this.selectedScreenCoordinates = new THREE.Vector3();
1635
1546
  this.selectedCenter = undefined;
1636
- }
1637
-
1638
- RendererModule.prototype = Object.create((__webpack_require__("3966").BaseModule).prototype);
1547
+ };
1639
1548
 
1549
+ RendererModule.prototype = Object.create(__webpack_require__("6aa6").BaseModule.prototype);
1640
1550
  /**
1641
1551
  * This function will get the the first intersected object with name or
1642
1552
  * the first glyph object with name.
1643
1553
  */
1644
- RendererModule.prototype.getIntersectedObject = function(intersects) {
1645
- if (intersects) {
1646
- for (var i = 0; i < intersects.length; i++) {
1647
- if (intersects[i] !== undefined) {
1648
- if (intersects[i].object &&
1649
- intersects[i].object.userData &&
1650
- intersects[i].object.userData.isZincObject &&
1651
- (intersects[i].object.name ||
1652
- intersects[i].object.userData.isMarker))
1653
- return intersects[i];
1654
- }
1655
- }
1656
- }
1657
- return undefined;
1658
- }
1659
1554
 
1660
- RendererModule.prototype.getAnnotationsFromObjects = function(objects) {
1661
- var annotations = [];
1662
- for (var i = 0; i < objects.length; i++) {
1663
- var zincObject = objects[i].userData;
1664
- var annotation = undefined;
1665
- if (zincObject) {
1666
- if (zincObject.isGlyph || zincObject.isGlyphset) {
1667
- var glyphset = zincObject;
1668
- if (zincObject.isGlyph)
1669
- glyphset = zincObject.getGlyphset();
1670
- annotation = glyphset.userData ? glyphset.userData[0] : undefined;
1671
- if (annotation && annotation.data) {
1672
- if (objects[i].name && objects[i].name != "")
1673
- annotation.data.id = objects[i].name;
1674
- else
1675
- annotation.data.id = glyphset.groupName;
1676
- }
1677
- } else {
1678
- annotation = zincObject.userData ? zincObject.userData[0] : undefined;
1679
- if (annotation && annotation.data){
1680
- annotation.data.id = objects[i].name;
1681
- }
1555
+ RendererModule.prototype.getIntersectedObject = function (intersects) {
1556
+ if (intersects) {
1557
+ for (var i = 0; i < intersects.length; i++) {
1558
+ if (intersects[i] !== undefined) {
1559
+ 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];
1560
+ }
1561
+ }
1562
+ }
1563
+
1564
+ return undefined;
1565
+ };
1566
+
1567
+ RendererModule.prototype.getAnnotationsFromObjects = function (objects) {
1568
+ var annotations = [];
1569
+ var count = 0;
1570
+
1571
+ for (var i = 0; i < objects.length; i++) {
1572
+ var zincObject = objects[i].userData;
1573
+ var annotation = undefined;
1574
+
1575
+ if (zincObject) {
1576
+ if (zincObject.isGlyph || zincObject.isGlyphset) {
1577
+ var glyphset = zincObject;
1578
+ if (zincObject.isGlyph) glyphset = (_readOnlyError("glyphset"), zincObject.getGlyphset());
1579
+ annotation = glyphset.userData ? glyphset.userData[0] : undefined;
1580
+
1581
+ if (annotation && annotation.data) {
1582
+ if (objects[i].name && objects[i].name != "") annotation.data.id = objects[i].name;else annotation.data.id = glyphset.groupName;
1583
+ }
1584
+ } else {
1585
+ annotation = zincObject.userData ? zincObject.userData[0] : undefined;
1586
+
1587
+ if (annotation && annotation.data) {
1588
+ annotation.data.id = objects[i].name;
1682
1589
  }
1683
1590
  }
1684
- annotations[i] = annotation;
1685
1591
  }
1686
- return annotations;
1687
- }
1688
1592
 
1689
- RendererModule.prototype.setHighlightedByObjects = function(objects, propagateChanges) {
1593
+ if (annotation) annotations[count++] = annotation;
1594
+ }
1595
+
1596
+ return annotations;
1597
+ };
1598
+
1599
+ RendererModule.prototype.setHighlightedByObjects = function (objects, propagateChanges) {
1690
1600
  var changed = this.graphicsHighlight.setHighlighted(objects);
1601
+
1691
1602
  if (changed && propagateChanges) {
1692
- var eventType = __webpack_require__("549c").EVENT_TYPE.HIGHLIGHTED;
1603
+ var eventType = __webpack_require__("9b21").EVENT_TYPE.HIGHLIGHTED;
1604
+
1693
1605
  var annotations = this.getAnnotationsFromObjects(objects);
1694
1606
  this.publishChanges(annotations, eventType);
1695
1607
  }
1696
- return changed;
1697
- }
1698
1608
 
1609
+ return changed;
1610
+ };
1699
1611
 
1700
- RendererModule.prototype.setHighlightedByZincObject = function(
1701
- zincObject, propagateChanges) {
1702
- return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1703
- }
1612
+ RendererModule.prototype.setHighlightedByZincObject = function (zincObject, propagateChanges) {
1613
+ return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1614
+ };
1704
1615
 
1705
- RendererModule.prototype.setupLiveCoordinates = function(zincObjects) {
1706
- if (zincObjects && (zincObjects.length > 0)) {
1616
+ RendererModule.prototype.setupLiveCoordinates = function (zincObjects) {
1617
+ if (zincObjects && zincObjects.length > 0) {
1707
1618
  var boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);
1708
- let newSelectedCenter = new THREE.Vector3();
1619
+ var newSelectedCenter = new THREE.Vector3();
1709
1620
  boundingBox.getCenter(newSelectedCenter);
1710
- if (this.selectedCenter == undefined)
1711
- this.selectedCenter = newSelectedCenter;
1712
- else {
1621
+ if (this.selectedCenter == undefined) this.selectedCenter = newSelectedCenter;else {
1713
1622
  this.selectedCenter.x = newSelectedCenter.x;
1714
1623
  this.selectedCenter.y = newSelectedCenter.y;
1715
1624
  }
1716
1625
  } else {
1717
1626
  this.selectedCenter = undefined;
1718
1627
  }
1719
- }
1628
+ };
1720
1629
 
1721
- RendererModule.prototype.objectsToZincObjects = function(objects) {
1630
+ RendererModule.prototype.objectsToZincObjects = function (objects) {
1722
1631
  var zincObjects = [];
1632
+
1723
1633
  for (var i = 0; i < objects.length; i++) {
1724
1634
  var zincObject = objects[i].userData;
1635
+
1725
1636
  if (zincObject) {
1726
1637
  if (zincObject.isGlyph || zincObject.isGlyphset) {
1727
1638
  var glyphset = zincObject;
1728
- if (zincObject.isGlyph)
1729
- glyphset = zincObject.getGlyphset();
1730
- zincObjects. push(glyphset);
1639
+ if (zincObject.isGlyph) glyphset = zincObject.getGlyphset();
1640
+ zincObjects.push(glyphset);
1731
1641
  } else {
1732
- zincObjects. push(zincObject);
1642
+ zincObjects.push(zincObject);
1733
1643
  }
1734
1644
  }
1735
1645
  }
1736
- return zincObjects;
1737
- }
1738
1646
 
1647
+ return zincObjects;
1648
+ };
1739
1649
 
1740
- RendererModule.prototype.setSelectedByObjects = function(
1741
- objects, propagateChanges) {
1650
+ RendererModule.prototype.setSelectedByObjects = function (objects, propagateChanges) {
1742
1651
  var changed = this.graphicsHighlight.setSelected(objects);
1652
+
1743
1653
  if (changed) {
1744
1654
  var zincObjects = this.objectsToZincObjects(objects);
1745
1655
  this.setupLiveCoordinates(zincObjects);
1656
+
1746
1657
  if (propagateChanges) {
1747
- var eventType = __webpack_require__("549c").EVENT_TYPE.SELECTED;
1658
+ var eventType = __webpack_require__("9b21").EVENT_TYPE.SELECTED;
1659
+
1748
1660
  var annotations = this.getAnnotationsFromObjects(objects);
1749
1661
  this.publishChanges(annotations, eventType);
1750
1662
  }
1751
1663
  }
1664
+
1752
1665
  return changed;
1753
- }
1666
+ };
1754
1667
 
1755
- RendererModule.prototype.setSelectedByZincObject = function(
1756
- zincObject, propagateChanges) {
1668
+ RendererModule.prototype.setSelectedByZincObject = function (zincObject, propagateChanges) {
1757
1669
  return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1758
- }
1670
+ };
1759
1671
 
1760
- var addGlyphToArray = function(objects) {
1761
- return function(glyph) {
1672
+ var addGlyphToArray = function addGlyphToArray(objects) {
1673
+ return function (glyph) {
1762
1674
  objects.push(glyph.getMesh());
1763
- }
1764
- }
1675
+ };
1676
+ };
1765
1677
 
1766
- RendererModule.prototype.findObjectsByGroupName = function(groupName) {
1678
+ RendererModule.prototype.findObjectsByGroupName = function (groupName) {
1767
1679
  var geometries = this.scene.findGeometriesWithGroupName(groupName);
1768
1680
  var objects = [];
1769
- for (var i = 0; i < geometries.length; i ++ ) {
1681
+
1682
+ for (var i = 0; i < geometries.length; i++) {
1770
1683
  objects.push(geometries[i].morph);
1771
1684
  }
1685
+
1772
1686
  var glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);
1773
- for (var i = 0; i < glyphsets.length; i ++ ) {
1774
- glyphsets[i].forEachGlyph(addGlyphToArray(objects));
1687
+
1688
+ for (var _i = 0; _i < glyphsets.length; _i++) {
1689
+ glyphsets[_i].forEachGlyph(addGlyphToArray(objects));
1775
1690
  }
1776
-
1691
+
1777
1692
  return objects;
1778
- }
1693
+ };
1779
1694
 
1780
- RendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {
1695
+ RendererModule.prototype.setHighlightedByGroupName = function (groupName, propagateChanges) {
1781
1696
  var objects = this.findObjectsByGroupName(groupName);
1782
1697
  return this.setHighlightedByObjects(objects, propagateChanges);
1783
- }
1698
+ };
1784
1699
 
1785
- RendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {
1700
+ RendererModule.prototype.setSelectedByGroupName = function (groupName, propagateChanges) {
1786
1701
  var objects = this.findObjectsByGroupName(groupName);
1787
1702
  return this.setSelectedByObjects(objects, propagateChanges);
1788
- }
1703
+ };
1789
1704
 
1790
- RendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {
1705
+ RendererModule.prototype.changeBackgroundColour = function (backgroundColourString) {
1791
1706
  var colour = new THREE.Color(backgroundColourString);
1707
+
1792
1708
  if (this.zincRenderer) {
1793
1709
  var internalRenderer = this.zincRenderer.getThreeJSRenderer();
1794
- internalRenderer.setClearColor( colour, 1 );
1710
+ internalRenderer.setClearColor(colour, 1);
1795
1711
  }
1796
- }
1712
+ };
1797
1713
 
1798
- RendererModule.prototype.resetView = function() {
1799
- if (this.zincRenderer)
1800
- this.zincRenderer.resetView();
1801
- }
1802
-
1803
- RendererModule.prototype.viewAll = function() {
1804
- if (this.zincRenderer)
1805
- this.zincRenderer.viewAll();
1806
- }
1714
+ RendererModule.prototype.resetView = function () {
1715
+ if (this.zincRenderer) this.zincRenderer.resetView();
1716
+ };
1807
1717
 
1718
+ RendererModule.prototype.viewAll = function () {
1719
+ if (this.zincRenderer) this.zincRenderer.viewAll();
1720
+ };
1808
1721
  /**
1809
1722
  * Start the animation and let the renderer to processs with
1810
1723
  * time progression
1811
1724
  */
1812
- RendererModule.prototype.playAnimation = function(flag) {
1813
- if (this.zincRenderer)
1814
- this.zincRenderer.playAnimation = flag;
1815
- }
1816
1725
 
1726
+
1727
+ RendererModule.prototype.playAnimation = function (flag) {
1728
+ if (this.zincRenderer) this.zincRenderer.playAnimation = flag;
1729
+ };
1817
1730
  /**
1818
1731
  * Set the speed of playback
1819
1732
  */
1820
- RendererModule.prototype.setPlayRate = function(value) {
1821
- if (this.zincRenderer)
1822
- this.zincRenderer.setPlayRate(value);
1823
- }
1824
1733
 
1734
+
1735
+ RendererModule.prototype.setPlayRate = function (value) {
1736
+ if (this.zincRenderer) this.zincRenderer.setPlayRate(value);
1737
+ };
1825
1738
  /**
1826
1739
  * Get the speed of playback
1827
1740
  */
1828
- RendererModule.prototype.getPlayRate = function(value) {
1829
- if (this.zincRenderer)
1830
- return this.zincRenderer.getPlayRate();
1831
- else
1832
- return 0.0;
1833
- }
1834
-
1835
- /** Initialise everything in the renderer, including the 3D renderer,
1836
- * and picker for the 3D renderer.
1837
- *
1838
- */
1839
- RendererModule.prototype.initialiseRenderer = function(displayAreaIn) {
1840
- if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
1841
- var returnedValue = createRenderer();
1842
- this.zincRenderer = returnedValue["renderer"];
1843
- this.rendererContainer = returnedValue["container"];
1844
- }
1845
- if (displayAreaIn) {
1846
- this.displayArea = displayAreaIn;
1847
- this.displayArea.appendChild( this.rendererContainer );
1848
- if (this.zincRenderer) {
1849
- this.zincRenderer.animate();
1850
- if (this.toolTip === undefined)
1851
- this.toolTip = new (__webpack_require__("76bf").ToolTip)(this.displayArea);
1852
- }
1853
- }
1854
- }
1855
-
1856
- RendererModule.prototype.destroy = function() {
1857
- if (this.zincRenderer) {
1858
- this.zincRenderer.dispose();
1859
- this.zincRenderer.getThreeJSRenderer().dispose();
1860
- this.zincRenderer = undefined;
1861
- }
1862
- (__webpack_require__("3966").BaseModule).prototype.destroy.call( this );
1863
- }
1864
-
1865
- exports.RendererModule = RendererModule;
1866
-
1867
-
1868
- /***/ }),
1869
-
1870
- /***/ "7c81":
1871
- /***/ (function(module, exports) {
1872
-
1873
- module.exports = require("core-js/modules/es.array.splice");
1874
-
1875
- /***/ }),
1876
1741
 
1877
- /***/ "7d9b":
1878
- /***/ (function(module, exports, __webpack_require__) {
1879
1742
 
1880
- // extracted by mini-css-extract-plugin
1743
+ RendererModule.prototype.getPlayRate = function (value) {
1744
+ if (this.zincRenderer) return this.zincRenderer.getPlayRate();else return 0.0;
1745
+ };
1746
+ /** Initialise everything in the renderer, including the 3D renderer,
1747
+ * and picker for the 3D renderer.
1748
+ *
1749
+ */
1881
1750
 
1882
- /***/ }),
1883
1751
 
1884
- /***/ "7f9f":
1885
- /***/ (function(module, exports) {
1752
+ RendererModule.prototype.initialiseRenderer = function (displayAreaIn) {
1753
+ if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
1754
+ var returnedValue = createRenderer();
1755
+ this.zincRenderer = returnedValue["renderer"];
1756
+ this.rendererContainer = returnedValue["container"];
1757
+ }
1886
1758
 
1887
- module.exports = require("element-ui/lib/locale");
1759
+ if (displayAreaIn) {
1760
+ this.displayArea = displayAreaIn;
1761
+ this.displayArea.appendChild(this.rendererContainer);
1762
+ if (this.zincRenderer) this.zincRenderer.animate();
1763
+ }
1764
+ };
1888
1765
 
1889
- /***/ }),
1766
+ RendererModule.prototype.destroy = function () {
1767
+ if (this.zincRenderer) {
1768
+ this.zincRenderer.dispose();
1769
+ this.zincRenderer.getThreeJSRenderer().dispose();
1770
+ this.zincRenderer = undefined;
1771
+ }
1890
1772
 
1891
- /***/ "80c4":
1892
- /***/ (function(module, exports) {
1773
+ __webpack_require__("6aa6").BaseModule.prototype.destroy.call(this);
1774
+ };
1893
1775
 
1894
- module.exports = require("element-ui/lib/theme-chalk/option.css");
1776
+ exports.RendererModule = RendererModule;
1895
1777
 
1896
1778
  /***/ }),
1897
1779
 
@@ -1921,146 +1803,6 @@ module.exports = require("element-ui/lib/tabs");
1921
1803
 
1922
1804
  module.exports = require("core-js/modules/es.array.iterator");
1923
1805
 
1924
- /***/ }),
1925
-
1926
- /***/ "8cec":
1927
- /***/ (function(module, exports, __webpack_require__) {
1928
-
1929
- var THREE = __webpack_require__("9206").THREE;
1930
-
1931
- /**
1932
- * This module manages highlighted and selected objects in 3D modules.
1933
- *
1934
- * @class
1935
- * @returns {exports.GraphicsHighlight}
1936
- */
1937
- exports.GraphicsHighlight = function() {
1938
- var currentHighlightedObjects = [];
1939
- var currentSelectedObjects = [];
1940
- this.highlightColour = 0x0000FF;
1941
- this.selectColour = 0x00FF00;
1942
- this.originalColour = 0x000000;
1943
- var _this = this;
1944
-
1945
- var isDifferent = function(array1, array2) {
1946
- if ((array1.length == 0) && (array2.length == 0))
1947
- return false;
1948
-
1949
- for (var i = 0; i < array1.length; i++) {
1950
- var matched = false;
1951
- for (var j = 0; j < array2.length; j++) {
1952
- if (array1[i] === array2[j]) {
1953
- matched = true;
1954
- }
1955
- }
1956
- if (!matched)
1957
- return true;
1958
- }
1959
- for (var i = 0; i < array2.length; i++) {
1960
- var matched = false;
1961
- for (var j = 0; j < array1.length; j++) {
1962
- if (array2[i] === array1[j]) {
1963
- matched = true;
1964
- }
1965
- }
1966
- if (!matched)
1967
- return true;
1968
- }
1969
- return false;
1970
- }
1971
-
1972
- var getUnmatchingObjects = function(objectsArray1, objectsArray2) {
1973
- var unmatchingObjects = [];
1974
- if (objectsArray2.length == 0)
1975
- return objectsArray1;
1976
- for (var i = 0; i < objectsArray1.length; i++) {
1977
- var matched = false;
1978
- for (var j = 0; j < objectsArray2.length; j++) {
1979
- if (objectsArray1[i] === objectsArray2[j]) {
1980
- matched = true;
1981
- }
1982
- }
1983
- if (!matched)
1984
- unmatchingObjects.push(objectsArray1[i]);
1985
- }
1986
- return unmatchingObjects;
1987
- }
1988
-
1989
- this.setHighlighted = function(objects) {
1990
- var previousHighlightedObjects = currentHighlightedObjects;
1991
- _this.resetHighlighted();
1992
- // Selected object cannot be highlighted
1993
- var array = getUnmatchingObjects(objects, currentSelectedObjects);
1994
- var fullList = getFullListOfObjects(array);
1995
- for (var i = 0; i < fullList.length; i++) {
1996
- if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
1997
- fullList[i].material.emissive.setHex(_this.highlightColour);
1998
- }
1999
- currentHighlightedObjects = array;
2000
- return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
2001
- }
2002
-
2003
- this.setSelected = function(objects) {
2004
- // first find highlighted object that are not selected
2005
- var previousHSelectedObjects = currentSelectedObjects;
2006
- var array = getUnmatchingObjects(currentHighlightedObjects, objects);
2007
- currentHighlightedObjects = array;
2008
- _this.resetSelected();
2009
- var fullList = getFullListOfObjects(objects);
2010
- for (var i = 0; i < fullList.length; i++) {
2011
- if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
2012
- fullList[i].material.emissive.setHex(_this.selectColour);
2013
- }
2014
- currentSelectedObjects = objects;
2015
- return isDifferent(currentSelectedObjects, previousHSelectedObjects);
2016
- }
2017
-
2018
- var getFullListOfObjects = function(objects) {
2019
- let fullList = [];
2020
- for (var i = 0; i < objects.length; i++) {
2021
- if (objects[i].material)
2022
- fullList.push(objects[i]);
2023
- }
2024
- return fullList;
2025
- }
2026
-
2027
- this.resetHighlighted = function() {
2028
- let fullList = getFullListOfObjects(currentHighlightedObjects);
2029
- for (var i = 0; i < fullList.length; i++) {
2030
- if (fullList[i] && fullList[i].material) {
2031
- if (fullList[i].material.emissive)
2032
- fullList[i].material.emissive.setHex(_this.originalColour);
2033
- if (fullList[i].material.depthFunc)
2034
- fullList[i].material.depthFunc = THREE.LessEqualDepth;
2035
- }
2036
- }
2037
- currentHighlightedObjects = [];
2038
- }
2039
-
2040
- this.resetSelected = function() {
2041
- let fullList = getFullListOfObjects(currentSelectedObjects);
2042
- for (var i = 0; i < fullList.length; i++) {
2043
- if (fullList[i] && fullList[i].material) {
2044
- if (fullList[i].material.emissive)
2045
- fullList[i].material.emissive.setHex(_this.originalColour);
2046
- if (fullList[i].material.depthFunc)
2047
- fullList[i].material.depthFunc = THREE.LessEqualDepth;
2048
- }
2049
- }
2050
- currentSelectedObjects = [];
2051
- }
2052
-
2053
- this.getSelected = function() {
2054
- return currentSelectedObjects;
2055
- }
2056
-
2057
- this.reset = function() {
2058
- _this.resetSelected();
2059
- _this.resetHighlighted();
2060
- }
2061
- }
2062
-
2063
-
2064
1806
  /***/ }),
2065
1807
 
2066
1808
  /***/ "8f11":
@@ -2098,6 +1840,17 @@ module.exports = require("element-ui/lib/theme-chalk/slider.css");
2098
1840
 
2099
1841
  /***/ }),
2100
1842
 
1843
+ /***/ "984d":
1844
+ /***/ (function(module, exports) {
1845
+
1846
+ exports.annotation = function () {
1847
+ this.type = "anatomical";
1848
+ this.data = undefined;
1849
+ this.isAnnotation = true;
1850
+ };
1851
+
1852
+ /***/ }),
1853
+
2101
1854
  /***/ "9985":
2102
1855
  /***/ (function(module, exports) {
2103
1856
 
@@ -2112,6 +1865,82 @@ module.exports = require("element-ui/lib/theme-chalk/base.css");
2112
1865
 
2113
1866
  /***/ }),
2114
1867
 
1868
+ /***/ "9b21":
1869
+ /***/ (function(module, exports, __webpack_require__) {
1870
+
1871
+ __webpack_require__("7c81");
1872
+
1873
+ var EVENT_TYPE = {
1874
+ ALL: 0,
1875
+ SELECTED: 1,
1876
+ HIGHLIGHTED: 2
1877
+ };
1878
+
1879
+ var SelectionEvent = function SelectionEvent(eventTypeIn, identifiersIn) {
1880
+ this.eventType = eventTypeIn;
1881
+ this.identifiers = identifiersIn;
1882
+ };
1883
+
1884
+ var returnFullID = function returnFullID(sourceId) {//return full annotations with all different name
1885
+ };
1886
+
1887
+ var Subscription = function Subscription(subscriberIn, callbackIn, eventType) {
1888
+ this.targetedID = [];
1889
+ var subscriber = subscriberIn;
1890
+ var callback = callbackIn;
1891
+ this.targetEventType = eventType;
1892
+
1893
+ var _this = this;
1894
+
1895
+ if (eventType === undefined) this.targetEventType = EVENT_TYPE.ALL;
1896
+
1897
+ this.getEventType = function () {
1898
+ return eventType;
1899
+ };
1900
+
1901
+ this.notify = function (source, eventType, ids) {
1902
+ if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL || _this.targetEventType === eventType)) {
1903
+ //should support different type of id e.g lyph, name, fmas...
1904
+ //need a function that finds all relavant ids
1905
+ var event = new SelectionEvent(eventType, ids);
1906
+ callback(event);
1907
+ }
1908
+ };
1909
+ };
1910
+
1911
+ exports.EventNotifier = function () {
1912
+ var subscriptions = [];
1913
+
1914
+ this.publish = function (source, eventType, id) {
1915
+ for (var i = 0; i < subscriptions.length; i++) {
1916
+ subscriptions[i].notify(source, eventType, id);
1917
+ }
1918
+ };
1919
+
1920
+ this.subscribe = function (subscriber, callbackFunction, eventType) {
1921
+ if (typeof callbackFunction === "function") {
1922
+ var subscription = new Subscription(subscriber, callbackFunction, eventType);
1923
+ subscriptions.push(subscription);
1924
+ return subscription;
1925
+ }
1926
+
1927
+ return undefined;
1928
+ };
1929
+
1930
+ this.unsubscribe = function (subscription) {
1931
+ for (var i = 0; i < subscriptions.length; i++) {
1932
+ if (subscription === subscriptions[i]) {
1933
+ subscriptions.splice(i, 1);
1934
+ return;
1935
+ }
1936
+ }
1937
+ };
1938
+ };
1939
+
1940
+ exports.EVENT_TYPE = EVENT_TYPE;
1941
+
1942
+ /***/ }),
1943
+
2115
1944
  /***/ "9bb0":
2116
1945
  /***/ (function(module, exports) {
2117
1946
 
@@ -2119,14 +1948,13 @@ module.exports = require("@soda/get-current-script");
2119
1948
 
2120
1949
  /***/ }),
2121
1950
 
2122
- /***/ "a0d7":
2123
- /***/ (function(module, exports) {
1951
+ /***/ "a1d1":
1952
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
2124
1953
 
2125
- exports.annotation = function() {
2126
- this.type = "anatomical";
2127
- this.data = undefined;
2128
- this.isAnnotation = true;
2129
- }
1954
+ "use strict";
1955
+ /* 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_226a06e2_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("44bd");
1956
+ /* 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_226a06e2_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_226a06e2_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
1957
+ /* unused harmony reexport * */
2130
1958
 
2131
1959
 
2132
1960
  /***/ }),
@@ -2191,13 +2019,6 @@ module.exports = require("element-ui/lib/icon");
2191
2019
 
2192
2020
  /***/ }),
2193
2021
 
2194
- /***/ "b723":
2195
- /***/ (function(module, exports, __webpack_require__) {
2196
-
2197
- // extracted by mini-css-extract-plugin
2198
-
2199
- /***/ }),
2200
-
2201
2022
  /***/ "b777":
2202
2023
  /***/ (function(module, exports) {
2203
2024
 
@@ -2233,10 +2054,84 @@ module.exports = require("element-ui/lib/option");
2233
2054
 
2234
2055
  /***/ }),
2235
2056
 
2236
- /***/ "c45a":
2057
+ /***/ "cf41":
2058
+ /***/ (function(module, exports, __webpack_require__) {
2059
+
2060
+ __webpack_require__("51f7");
2061
+
2062
+ __webpack_require__("bfab");
2063
+
2064
+ /**
2065
+ * @author alteredq / http://alteredqualia.com/
2066
+ * @author mr.doob / http://mrdoob.com/
2067
+ */
2068
+ exports.WEBGL = {
2069
+ isWebGLAvailable: function isWebGLAvailable() {
2070
+ try {
2071
+ var canvas = document.createElement('canvas');
2072
+ return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));
2073
+ } catch (e) {
2074
+ return false;
2075
+ }
2076
+ },
2077
+ isWebGL2Available: function isWebGL2Available() {
2078
+ try {
2079
+ var canvas = document.createElement('canvas');
2080
+ return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2'));
2081
+ } catch (e) {
2082
+ return false;
2083
+ }
2084
+ },
2085
+ getWebGLErrorMessage: function getWebGLErrorMessage() {
2086
+ return this.getErrorMessage(1);
2087
+ },
2088
+ getWebGL2ErrorMessage: function getWebGL2ErrorMessage() {
2089
+ return this.getErrorMessage(2);
2090
+ },
2091
+ getErrorMessage: function getErrorMessage(version) {
2092
+ var names = {
2093
+ 1: 'WebGL',
2094
+ 2: 'WebGL 2'
2095
+ };
2096
+ var contexts = {
2097
+ 1: window.WebGLRenderingContext,
2098
+ 2: window.WebGL2RenderingContext
2099
+ };
2100
+ 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.';
2101
+ var element = document.createElement('div');
2102
+ element.id = 'webglmessage';
2103
+ element.style.fontFamily = 'monospace';
2104
+ element.style.fontSize = '20px';
2105
+ element.style.fontWeight = 'normal';
2106
+ element.style.textAlign = 'center';
2107
+ element.style.background = '#fff';
2108
+ element.style.color = '#000';
2109
+ element.style.padding = '1.5em';
2110
+ element.style.width = '400px';
2111
+ element.style.margin = '5em auto 0';
2112
+
2113
+ if (contexts[version]) {
2114
+ message = message.replace('$0', 'graphics card');
2115
+ } else {
2116
+ message = message.replace('$0', 'browser');
2117
+ }
2118
+
2119
+ message = message.replace('$1', names[version]);
2120
+ element.innerHTML = message;
2121
+ return element;
2122
+ }
2123
+ };
2124
+
2125
+ /***/ }),
2126
+
2127
+ /***/ "da60":
2237
2128
  /***/ (function(module, exports) {
2238
2129
 
2239
- module.exports = require("broadcast-channel");
2130
+ function _readOnlyError(name) {
2131
+ throw new Error("\"" + name + "\" is read-only");
2132
+ }
2133
+
2134
+ module.exports = _readOnlyError;
2240
2135
 
2241
2136
  /***/ }),
2242
2137
 
@@ -2288,12 +2183,12 @@ if (typeof window !== 'undefined') {
2288
2183
  // Indicate to webpack that this file can be concatenated
2289
2184
  /* harmony default export */ var setPublicPath = (null);
2290
2185
 
2291
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"d40804f2-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=03b672b7&scoped=true&
2292
- 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)}
2186
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"73d52850-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=226a06e2&scoped=true&
2187
+ 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)}
2293
2188
  var staticRenderFns = []
2294
2189
 
2295
2190
 
2296
- // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=03b672b7&scoped=true&
2191
+ // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=226a06e2&scoped=true&
2297
2192
 
2298
2193
  // EXTERNAL MODULE: external "core-js/modules/es.array.for-each"
2299
2194
  var es_array_for_each_ = __webpack_require__("139f");
@@ -2392,7 +2287,7 @@ var col_default = /*#__PURE__*/__webpack_require__.n(col_);
2392
2287
  var external_vue_ = __webpack_require__("8bbf");
2393
2288
  var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
2394
2289
 
2395
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"d40804f2-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&
2290
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"73d52850-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&
2396
2291
  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()}
2397
2292
  var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_staticRenderFns = []
2398
2293
 
@@ -2693,13 +2588,13 @@ var component = normalizeComponent(
2693
2588
  )
2694
2589
 
2695
2590
  /* harmony default export */ var OpacityControls = (component.exports);
2696
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"d40804f2-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&
2697
- 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,
2591
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"73d52850-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&
2592
+ 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,
2698
2593
  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"})])])}
2699
- var TraditionalControlsvue_type_template_id_318fd7c8_scoped_true_staticRenderFns = []
2594
+ var TraditionalControlsvue_type_template_id_335c5764_scoped_true_staticRenderFns = []
2700
2595
 
2701
2596
 
2702
- // CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=template&id=318fd7c8&scoped=true&
2597
+ // CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=template&id=335c5764&scoped=true&
2703
2598
 
2704
2599
  // EXTERNAL MODULE: external "core-js/modules/es.array.concat"
2705
2600
  var es_array_concat_ = __webpack_require__("18d2");
@@ -2971,7 +2866,6 @@ external_vue_default.a.use(row_default.a);
2971
2866
  tmpArray = uniq(tmpArray.concat(this.module.sceneData.pointset));
2972
2867
  this.sortedPrimitiveGroups = orderBy(tmpArray);
2973
2868
  this.module.addOrganPartAddedCallback(this.organsAdded);
2974
- this.module.graphicsHighlight.selectColour = 0x444444;
2975
2869
  },
2976
2870
  destroyed: function destroyed() {
2977
2871
  this.sortedPrimitiveGroups = undefined;
@@ -2997,55 +2891,47 @@ external_vue_default.a.use(row_default.a);
2997
2891
  /**
2998
2892
  * Select a region by its name.
2999
2893
  */
3000
- changeActiveByName: function changeActiveByName(name) {
2894
+ changeActiveByName: function changeActiveByName(name, propagate) {
3001
2895
  var targetObject = this.getFirstZincObjectWithGroupName(name);
3002
2896
 
3003
2897
  if (targetObject && targetObject.getVisibility()) {
3004
2898
  this.activeRegion = name;
3005
- /**
3006
- * Triggers when an item has been selected.
3007
- *
3008
- * @property {object} target selected object.
3009
- */
3010
-
3011
- this.$emit("object-selected", targetObject);
2899
+ this.$emit("object-selected", targetObject, propagate);
2900
+ } else {
2901
+ this.removeActive(propagate);
3012
2902
  }
3013
2903
 
3014
- this.removeHover();
2904
+ this.removeHover(propagate);
3015
2905
  },
3016
2906
 
3017
2907
  /**
3018
2908
  * Hover a region by its name.
3019
2909
  */
3020
- changeHoverByName: function changeHoverByName(name) {
2910
+ changeHoverByName: function changeHoverByName(name, propagate) {
3021
2911
  var targetObject = this.getFirstZincObjectWithGroupName(name);
3022
2912
 
3023
2913
  if (targetObject) {
3024
2914
  this.hoverRegion = name;
3025
- /**
3026
- * Triggers when an item has been hovered over.
3027
- *
3028
- * @property {object} target hovered object.
3029
- */
3030
-
3031
- this.$emit("object-hovered", targetObject);
2915
+ this.$emit("object-hovered", targetObject, propagate);
2916
+ } else {
2917
+ this.removeHover(propagate);
3032
2918
  }
3033
2919
  },
3034
2920
 
3035
2921
  /**
3036
2922
  * Unselect the current selected region.
3037
2923
  */
3038
- removeActive: function removeActive() {
2924
+ removeActive: function removeActive(propagate) {
3039
2925
  this.activeRegion = "";
3040
- this.$emit("object-selected", undefined);
2926
+ this.$emit("object-selected", undefined, propagate);
3041
2927
  },
3042
2928
 
3043
2929
  /**
3044
2930
  * Unselect the current hover region.
3045
2931
  */
3046
- removeHover: function removeHover() {
2932
+ removeHover: function removeHover(propagate) {
3047
2933
  this.hoverRegion = "";
3048
- this.$emit("object-hovered", undefined);
2934
+ this.$emit("object-hovered", undefined, propagate);
3049
2935
  },
3050
2936
 
3051
2937
  /**
@@ -3093,11 +2979,11 @@ external_vue_default.a.use(row_default.a);
3093
2979
  }
3094
2980
  },
3095
2981
  checkboxHover: function checkboxHover(name) {
3096
- this.changeHoverByName(name);
2982
+ this.changeHoverByName(name, true);
3097
2983
  },
3098
2984
  itemClicked: function itemClicked(name, event) {
3099
2985
  if (!(event.target.classList.contains("el-checkbox__inner") || event.target.classList.contains("el-checkbox__original"))) {
3100
- this.changeActiveByName(name);
2986
+ this.changeActiveByName(name, true);
3101
2987
  event.preventDefault();
3102
2988
  }
3103
2989
  },
@@ -3124,11 +3010,11 @@ external_vue_default.a.use(row_default.a);
3124
3010
 
3125
3011
  if (event == false) {
3126
3012
  if (this.activeRegion === item) {
3127
- this.removeActive();
3013
+ this.removeActive(true);
3128
3014
  }
3129
3015
 
3130
3016
  if (this.hoverRegion === item) {
3131
- this.removeHover();
3017
+ this.removeHover(true);
3132
3018
  }
3133
3019
  }
3134
3020
  },
@@ -3179,8 +3065,8 @@ external_vue_default.a.use(row_default.a);
3179
3065
  });
3180
3066
  // CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=script&lang=js&
3181
3067
  /* harmony default export */ var components_TraditionalControlsvue_type_script_lang_js_ = (TraditionalControlsvue_type_script_lang_js_);
3182
- // EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=0&id=318fd7c8&scoped=true&lang=scss&
3183
- var TraditionalControlsvue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss_ = __webpack_require__("73b5");
3068
+ // EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&
3069
+ var TraditionalControlsvue_type_style_index_0_id_335c5764_scoped_true_lang_scss_ = __webpack_require__("3a59");
3184
3070
 
3185
3071
  // EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=1&lang=css&
3186
3072
  var TraditionalControlsvue_type_style_index_1_lang_css_ = __webpack_require__("add8");
@@ -3197,11 +3083,11 @@ var TraditionalControlsvue_type_style_index_1_lang_css_ = __webpack_require__("a
3197
3083
 
3198
3084
  var TraditionalControls_component = normalizeComponent(
3199
3085
  components_TraditionalControlsvue_type_script_lang_js_,
3200
- TraditionalControlsvue_type_template_id_318fd7c8_scoped_true_render,
3201
- TraditionalControlsvue_type_template_id_318fd7c8_scoped_true_staticRenderFns,
3086
+ TraditionalControlsvue_type_template_id_335c5764_scoped_true_render,
3087
+ TraditionalControlsvue_type_template_id_335c5764_scoped_true_staticRenderFns,
3202
3088
  false,
3203
3089
  null,
3204
- "318fd7c8",
3090
+ "335c5764",
3205
3091
  null
3206
3092
 
3207
3093
  )
@@ -3504,9 +3390,9 @@ external_vue_default.a.use(slider_default.a);
3504
3390
  external_vue_default.a.use(tab_pane_default.a);
3505
3391
  external_vue_default.a.use(tabs_default.a);
3506
3392
 
3507
- var OrgansViewer = __webpack_require__("67b6").OrgansViewer;
3393
+ var OrgansViewer = __webpack_require__("53d7").OrgansViewer;
3508
3394
 
3509
- var EventNotifier = __webpack_require__("549c").EventNotifier;
3395
+ var EventNotifier = __webpack_require__("9b21").EventNotifier;
3510
3396
  /**
3511
3397
  * A vue component of the scaffold viewer.
3512
3398
  *
@@ -3519,8 +3405,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3519
3405
  name: "ScaffoldVuer",
3520
3406
  components: {
3521
3407
  OpacityControls: OpacityControls,
3522
- SvgIcon: svg_sprite_["SvgIcon"],
3523
- SvgSpriteColor: svg_sprite_["SvgSpriteColor"],
3408
+ MapSvgIcon: svg_sprite_["MapSvgIcon"],
3409
+ MapSvgSpriteColor: svg_sprite_["MapSvgSpriteColor"],
3524
3410
  TraditionalControls: TraditionalControls
3525
3411
  },
3526
3412
  props: {
@@ -3783,7 +3669,6 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3783
3669
  this.$module.addOrganPartAddedCallback(this.organsAdded);
3784
3670
  this.$module.initialiseRenderer(this.$refs.display);
3785
3671
  this.toggleRendering(this.render);
3786
- this.$module.toolTip = undefined;
3787
3672
  this.ro = new ResizeObserver(this.adjustLayout).observe(this.$refs.scaffoldContainer);
3788
3673
  this.defaultRate = this.$module.getPlayRate();
3789
3674
  },
@@ -3916,7 +3801,11 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3916
3801
  var box = this.$module.scene.getBoundingBoxOfZincObjects(objects);
3917
3802
 
3918
3803
  if (box) {
3919
- this.$module.scene.viewAllWithBoundingBox(box);
3804
+ if (this.$module.isSyncControl()) {
3805
+ this.$module.setSyncControlZoomToBox(box);
3806
+ } else {
3807
+ this.$module.scene.viewAllWithBoundingBox(box);
3808
+ }
3920
3809
  }
3921
3810
  }
3922
3811
  },
@@ -3943,6 +3832,13 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3943
3832
  }
3944
3833
  }
3945
3834
  },
3835
+ getRendererInfo: function getRendererInfo() {
3836
+ if (this.$module.zincRenderer) {
3837
+ return this.$module.zincRenderer.getThreeJSRenderer().info;
3838
+ }
3839
+
3840
+ return undefined;
3841
+ },
3946
3842
 
3947
3843
  /**
3948
3844
  * Function used to rotate the scene.
@@ -3969,9 +3865,9 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3969
3865
  if (this.$refs.traditionalControl) {
3970
3866
  if (event.identifiers[0]) {
3971
3867
  var id = event.identifiers[0].data.id ? event.identifiers[0].data.id : event.identifiers[0].data.group;
3972
- this.$refs.traditionalControl.changeActiveByName(id);
3868
+ this.$refs.traditionalControl.changeActiveByName(id, true);
3973
3869
  } else {
3974
- this.$refs.traditionalControl.removeActive();
3870
+ this.$refs.traditionalControl.removeActive(true);
3975
3871
  }
3976
3872
  }
3977
3873
  /**
@@ -3988,8 +3884,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3988
3884
  if (event.identifiers[0]) {
3989
3885
  var _id = event.identifiers[0].data.id ? event.identifiers[0].data.id : event.identifiers[0].data.group;
3990
3886
 
3991
- this.$refs.traditionalControl.changeHoverByName(_id);
3992
- } else this.$refs.traditionalControl.removeHover();
3887
+ this.$refs.traditionalControl.changeHoverByName(_id, true);
3888
+ } else this.$refs.traditionalControl.removeHover(true);
3993
3889
  }
3994
3890
  /**
3995
3891
  * Triggers when an object has been highlighted
@@ -4036,30 +3932,48 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
4036
3932
  },
4037
3933
 
4038
3934
  /**
4039
- * Set the selected zinc object
3935
+ * A callback used by children components. Set the selected zinc object
4040
3936
  *
4041
3937
  * @param {object} object Zinc object
4042
3938
  */
4043
- objectSelected: function objectSelected(object) {
3939
+ objectSelected: function objectSelected(object, propagate) {
4044
3940
  if (object !== this.selectedObject) {
4045
3941
  this.selectedObject = object;
4046
3942
  this.$refs.opacityControl.setObject(this.selectedObject);
4047
- if (object) this.$module.setSelectedByZincObject(object, true);else this.$module.setSelectedByObjects([], true);
3943
+ if (object) this.$module.setSelectedByZincObject(object, propagate);else this.$module.setSelectedByObjects([], propagate);
4048
3944
  }
4049
3945
  },
4050
3946
 
4051
3947
  /**
4052
- * Set the highlighted zinc object
3948
+ * A callback used by children components. Set the highlighted zinc object
4053
3949
  *
4054
3950
  * @param {object} object Zinc object
4055
3951
  */
4056
- objectHovered: function objectHovered(object) {
3952
+ objectHovered: function objectHovered(object, propagate) {
4057
3953
  if (object !== this.hoveredObject) {
4058
3954
  this.hoveredObject = object;
4059
- if (object) this.$module.setHighlightedByZincObject(object, true);else this.$module.setHighlightedByObjects([], true);
3955
+ if (object) this.$module.setHighlightedByZincObject(object, propagate);else this.$module.setHighlightedByObjects([], propagate);
4060
3956
  }
4061
3957
  },
4062
3958
 
3959
+ /**
3960
+ * Set the selected by name.
3961
+ *
3962
+ * @param {name} name Name of the region
3963
+ */
3964
+ changeActiveByName: function changeActiveByName(name, propagate) {
3965
+ if (name === undefined) this.$refs.traditionalControl.removeActive(propagate);else this.$refs.traditionalControl.changeActiveByName(name, propagate);
3966
+ },
3967
+
3968
+ /**
3969
+ * Set the highlighted by name.
3970
+ *
3971
+ * @param {name} name Name of the region
3972
+ */
3973
+ changeHighlightedByName: function changeHighlightedByName(name, propagate) {
3974
+ if (name === undefined) this.$refs.traditionalControl.removeHover(propagate);else this.$refs.traditionalControl.changeHoverByName(name, propagate);
3975
+ },
3976
+
4063
3977
  /**
4064
3978
  * Start the animation.
4065
3979
  *
@@ -4222,6 +4136,9 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
4222
4136
  }
4223
4137
  }
4224
4138
  },
4139
+ exportGLTF: function exportGLTF(binary) {
4140
+ return this.$module.scene.exportGLTF(binary);
4141
+ },
4225
4142
 
4226
4143
  /**
4227
4144
  * Function used for reading in new scaffold metadata and a custom
@@ -4272,7 +4189,6 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
4272
4189
 
4273
4190
  /**
4274
4191
  * Callback using ResizeObserver.
4275
-
4276
4192
  */
4277
4193
  adjustLayout: function adjustLayout() {
4278
4194
  var width = this.$refs.scaffoldContainer.clientWidth;
@@ -4297,13 +4213,21 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
4297
4213
  if (this.$module.zincRenderer) {
4298
4214
  this.$module.zincRenderer.onWindowResize();
4299
4215
  }
4216
+ },
4217
+ syncControlCallback: function syncControlCallback() {
4218
+ var payload = this.$module.NDCCameraControl.getPanZoom();
4219
+ this.$emit("scaffold-navigated", payload);
4220
+ },
4221
+ toggleSyncControl: function toggleSyncControl(flag) {
4222
+ this.$module.toggleSyncControl(flag);
4223
+ this.$module.setSyncControlCallback(this.syncControlCallback);
4300
4224
  }
4301
4225
  }
4302
4226
  });
4303
4227
  // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=script&lang=js&
4304
4228
  /* harmony default export */ var components_ScaffoldVuervue_type_script_lang_js_ = (ScaffoldVuervue_type_script_lang_js_);
4305
- // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=03b672b7&scoped=true&lang=scss&
4306
- var ScaffoldVuervue_type_style_index_0_id_03b672b7_scoped_true_lang_scss_ = __webpack_require__("382f");
4229
+ // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=226a06e2&scoped=true&lang=scss&
4230
+ var ScaffoldVuervue_type_style_index_0_id_226a06e2_scoped_true_lang_scss_ = __webpack_require__("a1d1");
4307
4231
 
4308
4232
  // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&
4309
4233
  var ScaffoldVuervue_type_style_index_1_lang_scss_ = __webpack_require__("642d");
@@ -4324,7 +4248,7 @@ var ScaffoldVuer_component = normalizeComponent(
4324
4248
  staticRenderFns,
4325
4249
  false,
4326
4250
  null,
4327
- "03b672b7",
4251
+ "226a06e2",
4328
4252
  null
4329
4253
 
4330
4254
  )