@abi-software/scaffoldvuer 0.1.5-1.beta.1 → 0.1.5-1.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.
@@ -129,107 +129,6 @@ module.exports = require("element-ui/lib/select");
129
129
 
130
130
  module.exports = require("element-ui/lib/theme-chalk/select.css");
131
131
 
132
- /***/ }),
133
-
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 ] ) {
213
-
214
- message = message.replace( '$0', 'graphics card' );
215
-
216
- } else {
217
-
218
- message = message.replace( '$0', 'browser' );
219
-
220
- }
221
-
222
- message = message.replace( '$1', names[ version ] );
223
-
224
- element.innerHTML = message;
225
-
226
- return element;
227
-
228
- }
229
-
230
- };
231
-
232
-
233
132
  /***/ }),
234
133
 
235
134
  /***/ "139f":
@@ -239,13 +138,6 @@ module.exports = require("core-js/modules/es.array.for-each");
239
138
 
240
139
  /***/ }),
241
140
 
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
141
  /***/ "18d2":
250
142
  /***/ (function(module, exports) {
251
143
 
@@ -290,6 +182,24 @@ module.exports = require("core-js/modules/es.object.keys");
290
182
  /* unused harmony reexport * */
291
183
 
292
184
 
185
+ /***/ }),
186
+
187
+ /***/ "22c1":
188
+ /***/ (function(module, exports, __webpack_require__) {
189
+
190
+ // extracted by mini-css-extract-plugin
191
+
192
+ /***/ }),
193
+
194
+ /***/ "27fc":
195
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
196
+
197
+ "use strict";
198
+ /* 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_3d37f502_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("22c1");
199
+ /* 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_3d37f502_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_3d37f502_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
200
+ /* unused harmony reexport * */
201
+
202
+
293
203
  /***/ }),
294
204
 
295
205
  /***/ "2a6f":
@@ -346,129 +256,6 @@ module.exports = require("element-ui/lib/theme-chalk/color-picker.css");
346
256
 
347
257
  module.exports = require("element-ui/lib/drawer");
348
258
 
349
- /***/ }),
350
-
351
- /***/ "3966":
352
- /***/ (function(module, exports, __webpack_require__) {
353
-
354
- var MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };
355
-
356
- var BaseModule = function() {
357
- this.typeName = "Base Module";
358
- this.instanceName = "default";
359
- this.onChangedCallbacks = [];
360
- this.messageFunction = undefined;
361
- /** Notifier handle for informing other modules of any changes **/
362
- this.eventNotifiers = [];
363
- this.broadcastChannels = {};
364
- }
365
-
366
- BaseModule.prototype.setName = function(name) {
367
- if (name && this.instanceName !== name) {
368
- this.instanceName = name;
369
- var callbackArray = this.onChangedCallbacks.slice();
370
- for (var i = 0; i < callbackArray.length; i++) {
371
- callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );
372
- }
373
- }
374
- }
375
-
376
- BaseModule.prototype.addBroadcastChannels = function(ChannelName) {
377
- if (ChannelName in this.broadcastChannels)
378
- return false;
379
- var newChannel = new (__webpack_require__("c45a")).default(ChannelName);
380
- this.broadcastChannels[ChannelName] = newChannel;
381
- return true;
382
- }
383
-
384
- BaseModule.prototype.removeBroadcastChannels = function(ChannelName) {
385
- if (ChannelName in this.broadcastChannels) {
386
- this.broadcastChannels[ChannelName].close();
387
- delete broadcastChannels[ChannelName];
388
- }
389
-
390
- }
391
-
392
- BaseModule.prototype.settingsChanged = function() {
393
- var callbackArray = this.onChangedCallbacks.slice();
394
- for (var i = 0; i < callbackArray.length; i++) {
395
- callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );
396
- }
397
- }
398
-
399
- BaseModule.prototype.exportSettings = function() {
400
- var settings = {};
401
- settings.dialog = this.typeName;
402
- settings.name = this.instanceName;
403
- return settings;
404
- }
405
-
406
- BaseModule.prototype.importSettings = function(settings) {
407
- if (settings.dialog == this.typeName) {
408
- this.setName(settings.name);
409
- return true;
410
- }
411
- return false;
412
- }
413
-
414
- BaseModule.prototype.publishChanges = function(annotations, eventType) {
415
- for (var i = 0; i < this.eventNotifiers.length; i++) {
416
- this.eventNotifiers[i].publish(this, eventType, annotations);
417
- }
418
- if (eventType === __webpack_require__("549c").EVENT_TYPE.SELECTED) {
419
- if (annotations && annotations[0]) {
420
- var annotation = annotations[0];
421
- var data = {action: "query-data", resource: annotation.data.id, data: annotation.data, sender: this.instanceName};
422
- for (var key in this.broadcastChannels) {
423
- this.broadcastChannels[key].postMessage(data);
424
- }
425
- }
426
- }
427
- }
428
-
429
- BaseModule.prototype.setMessageFunction = function(functionIn) {
430
- this.messageFunction = functionIn;
431
- }
432
-
433
- BaseModule.prototype.displayMessage = function(message) {
434
- if (this.messageFunction)
435
- this.messageFunction(message);
436
- }
437
-
438
- BaseModule.prototype.getName = function() {
439
- return this.instanceName;
440
- }
441
-
442
- BaseModule.prototype.destroy = function() {
443
- //Make a temorary copy as the array may be altered during the loop
444
- var callbackArray = this.onChangedCallbacks.slice();
445
- for (var i = 0; i < callbackArray.length; i++) {
446
- callbackArray[i]( this, MODULE_CHANGE.DESTROYED );
447
- }
448
-
449
- delete this;
450
- }
451
-
452
- BaseModule.prototype.addChangedCallback = function(callback) {
453
- if (this.onChangedCallbacks.includes(callback) == false)
454
- this.onChangedCallbacks.push(callback);
455
- }
456
-
457
- BaseModule.prototype.removeChangedCallback = function(callback) {
458
- var index = this.onChangedCallbacks.indexOf(callback);
459
- if (index > -1) {
460
- this.onChangedCallbacks.splice(index, 1);
461
- }
462
- }
463
-
464
- BaseModule.prototype.addNotifier = function(eventNotifier) {
465
- this.eventNotifiers.push(eventNotifier);
466
- }
467
-
468
- exports.BaseModule = BaseModule;
469
- exports.MODULE_CHANGE = MODULE_CHANGE;
470
-
471
-
472
259
  /***/ }),
473
260
 
474
261
  /***/ "429c":
@@ -497,24 +284,6 @@ module.exports = require("element-ui/lib/theme-chalk/drawer.css");
497
284
 
498
285
  module.exports = require("lodash/uniq");
499
286
 
500
- /***/ }),
501
-
502
- /***/ "4e8a":
503
- /***/ (function(module, exports) {
504
-
505
- module.exports = "precision highp float;\nuniform sampler2D myTex;\nvarying vec2 vUv;\n\nvoid main() {\n\tgl_FragColor = texture2D( myTex, vUv );\n\n}\n"
506
-
507
- /***/ }),
508
-
509
- /***/ "4ed7":
510
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
511
-
512
- "use strict";
513
- /* 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_cc8106d6_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("98e2");
514
- /* 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_cc8106d6_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_cc8106d6_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
515
- /* unused harmony reexport * */
516
-
517
-
518
287
  /***/ }),
519
288
 
520
289
  /***/ "51c7":
@@ -538,139 +307,31 @@ module.exports = require("core-js/modules/es.regexp.exec");
538
307
 
539
308
  /***/ }),
540
309
 
541
- /***/ "549c":
542
- /***/ (function(module, exports) {
543
-
544
- var EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };
545
-
546
- var SelectionEvent = function(eventTypeIn, identifiersIn) {
547
- this.eventType = eventTypeIn;
548
- this.identifiers = identifiersIn;
549
- }
550
-
551
- var returnFullID = function(sourceId) {
552
- //return full annotations with all different name
553
- }
554
-
555
- var Subscription = function(subscriberIn, callbackIn, eventType) {
556
- this.targetedID = [];
557
- var subscriber = subscriberIn;
558
- if (eventType === undefined)
559
- this.targetEventType = EVENT_TYPE.ALL;
560
- else
561
- this.targetEventType = eventType;
562
- var callback = callbackIn;
563
-
564
- var _this = this;
565
-
566
- this.getEventType = function() {
567
- return eventType;
568
- }
569
-
570
- this.notify = function(source, eventType, ids) {
571
- if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||
572
- _this.targetEventType === eventType)) {
573
- //should support different type of id e.g lyph, name, fmas...
574
- //need a function that finds all relavant ids
575
- var event = new SelectionEvent(eventType, ids);
576
- callback(event);
577
- }
578
- }
579
- }
580
-
581
- exports.EventNotifier = function() {
582
- var events = [];
583
- var subscriptions = [];
584
- var _this = this;
585
-
586
- this.publish = function(source, eventType, id) {
587
- for (var i = 0; i < subscriptions.length;i++) {
588
- subscriptions[i].notify(source, eventType, id);
589
- }
590
- }
591
-
592
- this.subscribe = function(subscriber, callbackFunction, eventType) {
593
- if (typeof callbackFunction === "function") {
594
- var subscription = new Subscription(subscriber, callbackFunction, eventType);
595
- subscriptions.push(subscription);
596
- return subscription;
597
- }
598
- return undefined;
599
- }
600
-
601
- this.unsubscribe = function(subscription) {
602
- for (var i = 0; i < subscriptions.length;i++) {
603
- if (subscription === subscriptions[i]) {
604
- subscriptions.splice(i, 1);
605
- return;
606
- }
607
- }
608
- }
609
- }
610
-
611
- exports.EVENT_TYPE = EVENT_TYPE;
612
-
613
-
614
- /***/ }),
615
-
616
- /***/ "55ee":
617
- /***/ (function(module, exports) {
618
-
619
- module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
620
-
621
- /***/ }),
622
-
623
- /***/ "5810":
310
+ /***/ "53d7":
624
311
  /***/ (function(module, exports, __webpack_require__) {
625
312
 
626
- // extracted by mini-css-extract-plugin
627
-
628
- /***/ }),
629
-
630
- /***/ "5fef":
631
- /***/ (function(module, exports) {
632
-
633
- module.exports = require("core-js/modules/es.regexp.to-string");
634
-
635
- /***/ }),
636
-
637
- /***/ "6049":
638
- /***/ (function(module, exports) {
639
-
640
- module.exports = require("core-js/modules/es.symbol");
641
-
642
- /***/ }),
643
-
644
- /***/ "642d":
645
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
646
-
647
- "use strict";
648
- /* 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");
649
- /* 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__);
650
- /* unused harmony reexport * */
651
-
313
+ __webpack_require__("ab7e");
652
314
 
653
- /***/ }),
315
+ __webpack_require__("7c81");
654
316
 
655
- /***/ "6579":
656
- /***/ (function(module, exports) {
317
+ __webpack_require__("bcd8");
657
318
 
658
- module.exports = require("core-js/modules/es.array.slice");
319
+ __webpack_require__("2175");
659
320
 
660
- /***/ }),
321
+ __webpack_require__("fd48");
661
322
 
662
- /***/ "67b6":
663
- /***/ (function(module, exports, __webpack_require__) {
323
+ var _typeof = __webpack_require__("7037");
664
324
 
665
- var THREE = __webpack_require__("9206").THREE;
666
- // Current model's associate data, data fields, external link, nerve map
325
+ var THREE = __webpack_require__("9206").THREE; // Current model's associate data, data fields, external link, nerve map
667
326
  // informations,
668
327
  // these are proived in the organsFileMap array.
669
- var OrgansSceneData = function() {
328
+
329
+
330
+ var OrgansSceneData = function OrgansSceneData() {
670
331
  this.currentName = "";
671
332
  this.currentSystem = "";
672
333
  this.currentPart = "";
673
- this.currentSpecies = "";
334
+ this.currentSpecies = "";
674
335
  this.metaURL = "";
675
336
  this.viewURL = "";
676
337
  this.geometries = [];
@@ -679,12 +340,7 @@ var OrgansSceneData = function() {
679
340
  this.pointsets = [];
680
341
  this.currentTime = 0.0;
681
342
  this.timeVarying = false;
682
- // Current model's associate data, data fields, external link, nerve map
683
- // informations,
684
- this.nerveMap = undefined;
685
- this.nerveMapIsActive = false;
686
- }
687
-
343
+ };
688
344
  /**
689
345
  * Viewer of 3D-organs models. Users can toggle on/off different views. Data is
690
346
  * displayed instead if models are not available.
@@ -699,619 +355,870 @@ var OrgansSceneData = function() {
699
355
  * @author Alan Wu
700
356
  * @returns {PJP.OrgansViewer}
701
357
  */
702
- var OrgansViewer = function(ModelsLoaderIn) {
703
- (__webpack_require__("7a89").RendererModule).call(this);
704
- var pickerScene = undefined;
705
- var nerveMapScene = undefined;
706
- this.sceneData = new OrgansSceneData();
707
- var timeChangedCallbacks = new Array();
708
- var sceneChangedCallbacks = new Array();
358
+
359
+
360
+ var OrgansViewer = function OrgansViewer(ModelsLoaderIn) {
361
+ __webpack_require__("8278").RendererModule.call(this);
362
+
363
+ var _this = this;
364
+
365
+ var pickerScene = undefined;
366
+ this.sceneData = new OrgansSceneData();
367
+ var timeChangedCallbacks = new Array();
368
+ var sceneChangedCallbacks = new Array();
709
369
  var organPartAddedCallbacks = new Array();
710
370
  var finishDownloadCallback = undefined;
711
- var layoutUpdateRequiredCallbacks = new Array();
712
- var modelsLoader = ModelsLoaderIn;
713
- var _this = this;
714
- _this.typeName = "Organ Viewer";
715
-
716
- this.getSceneData = function() {
717
- return _this.sceneData;
718
- }
719
-
720
- /**
721
- * Used to update internal timer in scene when time slider has changed.
722
- */
723
- this.updateTime = function(value) {
724
- let duration = 6000;
725
- if (_this.scene)
726
- duration = _this.scene.getDuration();
371
+ var modelsLoader = ModelsLoaderIn;
372
+ _this.typeName = "Organ Viewer";
373
+
374
+ this.getSceneData = function () {
375
+ return _this.sceneData;
376
+ };
377
+ /**
378
+ * Used to update internal timer in scene when time slider has changed.
379
+ */
380
+
381
+
382
+ this.updateTime = function (value) {
383
+ var duration = 6000;
384
+ if (_this.scene) duration = _this.scene.getDuration();
727
385
  var actualTime = value / 100.0 * duration;
728
- if (!_this.sceneData.nerveMapIsActive) {
729
- if (pickerScene)
730
- pickerScene.setMorphsTime(actualTime);
731
- if (_this.scene)
732
- _this.scene.setMorphsTime(actualTime);
733
- } else if (nerveMapScene) {
734
- nerveMapScene.setMorphsTime(actualTime);
735
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
736
- _this.sceneData.nerveMap.additionalReader.setTime(value / 100.0);
737
- }
738
- _this.sceneData.currentTime = value;
739
- }
740
-
741
- /**
742
- * Update the time slider and other renderers/scenes when time has changed.
743
- */
744
- var preRenderTimeUpdate = function() {
745
- let duration = 3000;
746
- if (_this.scene)
747
- duration = _this.scene.getDuration();
748
- var currentTime = _this.zincRenderer.getCurrentTime();
749
- for (var i = 0; i < timeChangedCallbacks.length;i++) {
750
- timeChangedCallbacks[i](currentTime);
751
- }
752
- if (!_this.sceneData.nerveMapIsActive && pickerScene)
753
- pickerScene.setMorphsTime(currentTime);
754
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
755
- _this.sceneData.nerveMap.additionalReader.setTime(currentTime /
756
- duration);
757
- _this.sceneData.currentTime = currentTime / duration * 100.0;
758
- }
759
-
760
- var postRenderSelectedCoordinatesUpdate = function() {
386
+
387
+ if (!_this.sceneData.nerveMapIsActive) {
388
+ if (pickerScene) pickerScene.setMorphsTime(actualTime);
389
+ if (_this.scene) _this.scene.setMorphsTime(actualTime);
390
+ }
391
+
392
+ _this.sceneData.currentTime = value;
393
+ };
394
+ /**
395
+ * Update the time slider and other renderers/scenes when time has changed.
396
+ */
397
+
398
+
399
+ var preRenderTimeUpdate = function preRenderTimeUpdate() {
400
+ var duration = 3000;
401
+ if (_this.scene) duration = _this.scene.getDuration();
402
+
403
+ var currentTime = _this.zincRenderer.getCurrentTime();
404
+
405
+ for (var i = 0; i < timeChangedCallbacks.length; i++) {
406
+ timeChangedCallbacks[i](currentTime);
407
+ }
408
+
409
+ if (!_this.sceneData.nerveMapIsActive && pickerScene) pickerScene.setMorphsTime(currentTime);
410
+ if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setTime(currentTime / duration);
411
+ _this.sceneData.currentTime = currentTime / duration * 100.0;
412
+ };
413
+
414
+ var postRenderSelectedCoordinatesUpdate = function postRenderSelectedCoordinatesUpdate() {
761
415
  if (_this.selectedCenter) {
762
- const vector = new THREE.Vector3();
416
+ var vector = new THREE.Vector3();
763
417
  vector.copy(_this.selectedCenter);
418
+
764
419
  var coord = _this.scene.vectorToScreenXY(vector);
420
+
765
421
  _this.selectedScreenCoordinates.x = coord.x;
766
422
  _this.selectedScreenCoordinates.y = coord.y;
767
423
  }
424
+ };
425
+
426
+ var preRenderUpdateCallback = function preRenderUpdateCallback() {
427
+ return function () {
428
+ preRenderTimeUpdate();
429
+ };
430
+ };
431
+
432
+ var postRenderUpdateCallback = function postRenderUpdateCallback() {
433
+ return function () {
434
+ postRenderSelectedCoordinatesUpdate();
435
+ };
436
+ };
437
+ /**
438
+ * Add a callback which will be called when time has changed
439
+ */
440
+
441
+
442
+ this.addTimeChangedCallback = function (callback) {
443
+ if (_typeof(callback === "function")) timeChangedCallbacks.push(callback);
444
+ };
445
+
446
+ this.setTexturePos = function (value) {
447
+ if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setSliderPos(value);
448
+ };
449
+
450
+ this.addSceneChangedCallback = function (callback) {
451
+ if (_typeof(callback === "function")) {
452
+ sceneChangedCallbacks.push(callback);
453
+ }
454
+ };
455
+
456
+ this.addOrganPartAddedCallback = function (callback) {
457
+ if (_typeof(callback === "function")) organPartAddedCallbacks.push(callback);
458
+ };
459
+
460
+ this.setFinishDownloadCallback = function (callback) {
461
+ if (_typeof(callback === "function")) finishDownloadCallback = callback;
462
+ };
463
+
464
+ this.unsetFinishDownloadCallback = function () {
465
+ finishDownloadCallback = undefined;
466
+ };
467
+
468
+ this.getNamedObjectsToScreenCoordinates = function (name, camera) {
469
+ var vector = new THREE.Vector3();
470
+ vector.setFromMatrixPosition(obj.matrixWorld);
471
+ var widthHalf = width / 2;
472
+ var heightHalf = height / 2;
473
+ vector.project(camera);
474
+ vector.x = vector.x * widthHalf + widthHalf;
475
+ vector.y = -(vector.y * heightHalf) + heightHalf;
476
+ return vector;
477
+ };
478
+
479
+ var getIdObjectFromIntersect = function getIdObjectFromIntersect(intersected) {
480
+ var id = undefined;
481
+ var intersectedObject = undefined;
482
+
483
+ if (intersected !== undefined) {
484
+ if (intersected.object.userData && intersected.object.userData.isMarker) {
485
+ intersectedObject = intersected.object.userData.parent.morph;
486
+ } else {
487
+ intersectedObject = intersected.object;
488
+ }
489
+
490
+ if (intersectedObject) {
491
+ if (intersectedObject.name) {
492
+ id = intersectedObject.name;
493
+ } else {
494
+ var annotations = _this.getAnnotationsFromObjects([intersectedObject]);
495
+
496
+ if (annotations && annotations[0]) {
497
+ id = annotations[0].data.group;
498
+ }
499
+ }
500
+ }
501
+ }
502
+
503
+ return {
504
+ "id": id,
505
+ "object": intersectedObject
506
+ };
507
+ };
508
+ /**
509
+ * Callback function when a pickable object has been picked. It will then
510
+ * call functions in tissueViewer and cellPanel to show corresponding
511
+ * informations.
512
+ *
513
+ * @callback
514
+ */
515
+
516
+
517
+ var _pickingCallback = function _pickingCallback() {
518
+ return function (intersects, window_x, window_y) {
519
+ var intersected = _this.getIntersectedObject(intersects);
520
+
521
+ var idObject = getIdObjectFromIntersect(intersected);
522
+
523
+ if (idObject.id) {
524
+ if (idObject.object.userData.isGlyph) {
525
+ if (idObject.object.name) _this.setSelectedByObjects([idObject.object], true);else _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);
526
+ } else {
527
+ _this.setSelectedByObjects([idObject.object], true);
528
+ }
529
+
530
+ return;
531
+ } else {
532
+ _this.setSelectedByObjects([], true);
533
+ }
534
+ };
535
+ };
536
+ /**
537
+ * Callback function when a pickable object has been hovered over.
538
+ *
539
+ * @callback
540
+ */
541
+
542
+
543
+ var _hoverCallback = function _hoverCallback() {
544
+ return function (intersects, window_x, window_y) {
545
+ var intersected = _this.getIntersectedObject(intersects);
546
+
547
+ var idObject = getIdObjectFromIntersect(intersected);
548
+
549
+ if (idObject.id) {
550
+ _this.displayArea.style.cursor = "pointer";
551
+
552
+ _this.setHighlightedByObjects([idObject.object], true);
553
+
554
+ return;
555
+ } else {
556
+ _this.displayArea.style.cursor = "auto";
557
+
558
+ _this.setHighlightedByObjects([], true);
559
+ }
560
+ };
561
+ };
562
+
563
+ var changeOrganPartsVisibilityForScene = function changeOrganPartsVisibilityForScene(scene, name, value, type) {
564
+ if (type == "all" || type == "geometries") {
565
+ var geometries = scene.findGeometriesWithGroupName(name);
566
+
567
+ for (var i = 0; i < geometries.length; i++) {
568
+ geometries[i].setVisibility(value);
569
+ }
570
+ }
571
+
572
+ if (type == "all" || type == "glyphsets") {
573
+ var glyphsets = scene.findGlyphsetsWithGroupName(name);
574
+
575
+ for (var _i = 0; _i < glyphsets.length; _i++) {
576
+ glyphsets[_i].setVisibility(value);
577
+ }
578
+ }
579
+
580
+ if (type == "all" || type == "pointsets") {
581
+ var pointsets = scene.findPointsetsWithGroupName(name);
582
+
583
+ for (var _i2 = 0; _i2 < pointsets.length; _i2++) {
584
+ pointsets[_i2].setVisibility(value);
585
+ }
586
+ }
587
+
588
+ if (type == "all" || type == "lines") {
589
+ var lines = scene.findLinesWithGroupName(name);
590
+
591
+ for (var _i3 = 0; _i3 < lines.length; _i3++) {
592
+ lines[_i3].setVisibility(value);
593
+ }
594
+ }
595
+ };
596
+ /**
597
+ * Change visibility for parts of the current scene.
598
+ */
599
+
600
+
601
+ this.changeGeometriesVisibility = function (name, value) {
602
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
603
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
604
+ };
605
+ /**
606
+ * Change visibility for parts of the current scene.
607
+ */
608
+
609
+
610
+ this.changeGlyphsetsVisibility = function (name, value) {
611
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
612
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
613
+ };
614
+ /**
615
+ * Change visibility for parts of the current scene.
616
+ */
617
+
618
+
619
+ this.changeLinesVisibility = function (name, value) {
620
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
621
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
622
+ };
623
+ /**
624
+ * Change visibility for parts of the current scene.
625
+ */
626
+
627
+
628
+ this.changePointsetsVisibility = function (name, value) {
629
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
630
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
631
+ };
632
+ /**
633
+ * Change visibility for parts of the current scene.
634
+ */
635
+
636
+
637
+ this.changeOrganPartsVisibility = function (name, value, typeIn) {
638
+ var type = "all";
639
+ if (typeIn !== undefined) type = typeIn;
640
+ changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
641
+ if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
642
+ };
643
+
644
+ this.changeOrganPartsVisibilityCallback = function (name) {
645
+ return function (value) {
646
+ _this.changeOrganPartsVisibility(name, value);
647
+ };
648
+ };
649
+
650
+ this.changeBackgroundColour = function (backgroundColourString) {
651
+ var colour = new THREE.Color(backgroundColourString);
652
+
653
+ if (_this.zincRenderer) {
654
+ var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
655
+
656
+ internalRenderer.setClearColor(colour, 1);
657
+ }
658
+ };
659
+
660
+ var addOrganPartToSceneData = function addOrganPartToSceneData(zincObject) {
661
+ if (zincObject.groupName) {
662
+ if (zincObject.isGeometry) {
663
+ if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
664
+ _this.sceneData.geometries.push(zincObject.groupName);
665
+ }
666
+ } else if (zincObject.isGlyphset) {
667
+ if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
668
+ _this.sceneData.glyphsets.push(zincObject.groupName);
669
+ }
670
+ } else if (zincObject.isLines) {
671
+ if (!_this.sceneData.lines.includes(zincObject.groupName)) {
672
+ _this.sceneData.lines.push(zincObject.groupName);
673
+ }
674
+ } else if (zincObject.isPointset) {
675
+ if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
676
+ _this.sceneData.pointsets.push(zincObject.groupName);
677
+ }
678
+ }
679
+ }
680
+ };
681
+
682
+ var addOrganPart = function addOrganPart(systemName, partName, useDefautColour, zincObject) {
683
+ for (var i = 0; i < organPartAddedCallbacks.length; i++) {
684
+ organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
685
+ }
686
+
687
+ if (useDefautColour) modelsLoader.setGeometryColour(zincObject, systemName, partName);
688
+ addOrganPartToSceneData(zincObject);
689
+ var annotation = new (__webpack_require__("984d").annotation)();
690
+ annotation.data = {
691
+ species: _this.sceneData.currentSpecies,
692
+ system: systemName,
693
+ part: partName,
694
+ group: zincObject.groupName
695
+ };
696
+ zincObject.userData = [annotation];
697
+ };
698
+ /**
699
+ * New organs geometry has been added to the scene, add UIs and make
700
+ * sure the viewport is correct.
701
+ */
702
+
703
+
704
+ var _addOrganPartCallback = function _addOrganPartCallback(systemName, partName, useDefautColour) {
705
+ return function (zincObject) {
706
+ addOrganPart(systemName, partName, useDefautColour, zincObject);
707
+ };
708
+ };
709
+
710
+ var downloadCompletedCallback = function downloadCompletedCallback() {
711
+ return function () {
712
+ _this.settingsChanged();
713
+
714
+ _this.sceneData.timeVarying = _this.scene.isTimeVarying();
715
+ if (finishDownloadCallback) finishDownloadCallback();
716
+ };
717
+ };
718
+
719
+ var singleItemDownloadCompletedCallback = function singleItemDownloadCompletedCallback(systemName, partName, useDefautColour) {
720
+ return function (geometry) {
721
+ addOrganPart(systemName, partName, useDefautColour, geometry);
722
+
723
+ _this.settingsChanged();
724
+ };
725
+ };
726
+ /**
727
+ * Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
728
+ * other activities of the organs.
729
+ */
730
+
731
+
732
+ this.updateFieldvisibility = function (dataFields, value) {
733
+ for (var i = 0; i < dataFields.length; i++) {
734
+ if (value != i) {
735
+ var geometryName = dataFields[i].PartName;
736
+
737
+ _this.changeOrganPartsVisibility(geometryName, false);
738
+ }
739
+ }
740
+
741
+ if (value > -1) {
742
+ var partName = dataFields[value].PartName;
743
+
744
+ if (_this.scene.findGeometriesWithGroupName(partName).length > 0 || _this.scene.findGlyphsetsWithGroupName(partName).length > 0) {
745
+ _this.changeOrganPartsVisibility(partName, true);
746
+ } else {
747
+ var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
748
+
749
+ if (partDetails != undefined) {
750
+ _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
751
+ }
752
+ }
753
+ }
754
+ };
755
+ /**
756
+ * Return an array containing name(s) of species that also contains the
757
+ * currently displayed organs.
758
+ *
759
+ * @returns {Array} containing species name
760
+ */
761
+
762
+
763
+ this.getAvailableSpecies = function (currentSpecies, currentSystem, currentPart) {
764
+ var availableSpecies = new Array();
765
+ availableSpecies.push("none");
766
+ var keysArray = Object.keys(organsFileMap);
767
+
768
+ for (index in keysArray) {
769
+ var species = keysArray[index];
770
+
771
+ if (species != currentSpecies) {
772
+ if (organsFileMap[species].hasOwnProperty(currentSystem) && organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
773
+ availableSpecies.push(species);
774
+ }
775
+ }
776
+ }
777
+
778
+ return availableSpecies;
779
+ };
780
+
781
+ var setSceneData = function setSceneData(speciesName, systemName, partName, organsDetails) {
782
+ _this.sceneData.nerveMapIsActive = false;
783
+ _this.sceneData.nerveMap = undefined;
784
+ _this.sceneData.metaURL = "";
785
+ _this.sceneData.viewURL = "";
786
+ _this.sceneData.currentSpecies = speciesName;
787
+ _this.sceneData.currentSystem = systemName;
788
+ _this.sceneData.currentPart = partName;
789
+ _this.sceneData.currentTime = 0.0;
790
+
791
+ _this.sceneData.geometries.splice(0);
792
+
793
+ _this.sceneData.lines.splice(0);
794
+
795
+ _this.sceneData.glyphsets.splice(0);
796
+
797
+ _this.sceneData.pointsets.splice(0);
798
+
799
+ _this.sceneData.timeVarying = false; // This is used as title
800
+
801
+ var name = "";
802
+ if (speciesName) name = speciesName + "/";
803
+ if (systemName) name = systemName + "/";
804
+ if (partName) name = partName;
805
+ _this.sceneData.currentName = name;
806
+ };
807
+
808
+ this.loadOrgansFromURL = function (url, speciesName, systemName, partName, viewURL) {
809
+ if (_this.zincRenderer) {
810
+ if (partName && _this.sceneData.metaURL !== url) {
811
+ setSceneData(speciesName, systemName, partName, undefined);
812
+ var name = _this.sceneData.currentName;
813
+
814
+ var organScene = _this.zincRenderer.getSceneByName(name);
815
+
816
+ if (organScene) {
817
+ organScene.clearAll();
818
+ } else {
819
+ organScene = _this.zincRenderer.createScene(name);
820
+ }
821
+
822
+ for (var i = 0; i < sceneChangedCallbacks.length; i++) {
823
+ sceneChangedCallbacks[i](_this.sceneData);
824
+ }
825
+
826
+ if (viewURL && viewURL != "") {
827
+ _this.sceneData.viewURL = viewURL;
828
+ organScene.loadViewURL(_this.sceneData.viewURL);
829
+ } else {
830
+ _this.sceneData.viewURL = undefined;
831
+ }
832
+
833
+ _this.sceneData.metaURL = url;
834
+ organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false), downloadCompletedCallback());
835
+ _this.scene = organScene;
836
+
837
+ _this.zincRenderer.setCurrentScene(organScene);
838
+
839
+ _this.graphicsHighlight.reset();
840
+
841
+ var zincCameraControl = organScene.getZincCameraControls();
842
+ zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
843
+ zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
844
+ zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
845
+ }
846
+ }
847
+ };
848
+
849
+ this.alignCameraWithSelectedObject = function (transitionTime) {
850
+ var objects = _this.graphicsHighlight.getSelected();
851
+
852
+ if (objects && objects[0] && objects[0].userData) {
853
+ _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
854
+ }
855
+ };
856
+
857
+ this.exportSettings = function () {
858
+ var settings = {};
859
+ settings.name = _this.instanceName;
860
+ if (_this.sceneData.currentSystem) settings.system = _this.sceneData.currentSystem;
861
+ if (_this.sceneData.currentSpecies) settings.species = _this.sceneData.currentSpecies;
862
+ if (_this.sceneData.currentPart) settings.part = _this.sceneData.currentPart;
863
+ settings.metaURL = _this.sceneData.metaURL;
864
+ if (_this.sceneData.viewURL) settings.viewURL = _this.sceneData.viewURL;
865
+ settings.dialog = "Organ Viewer";
866
+ return settings;
867
+ };
868
+
869
+ this.importSettings = function (settings) {
870
+ if (settings && settings.dialog == this.typeName) {
871
+ _this.setName(settings.name);
872
+
873
+ if (settings.metaURL !== undefined && settings.metaURL != "") {
874
+ _this.loadOrgansFromURL(settings.metaURL, settings.species, settings.system, settings.part, settings.viewURL);
875
+ } else {
876
+ _this.loadOrgans(settings.species, settings.system, settings.part);
877
+ }
878
+
879
+ return true;
880
+ }
881
+
882
+ return false;
883
+ };
884
+ /**
885
+ * initialise loading of the html layout for the organs panel, this is
886
+ * called when the {@link PJP.OrgansViewer} is created.
887
+ *
888
+ * @async
889
+ */
890
+
891
+
892
+ var initialise = function initialise() {
893
+ _this.initialiseRenderer(undefined);
894
+
895
+ if (_this.zincRenderer) {
896
+ _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
897
+
898
+ _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
899
+ }
900
+ };
901
+
902
+ initialise();
903
+ };
904
+
905
+ OrgansViewer.prototype = Object.create(__webpack_require__("8278").RendererModule.prototype);
906
+ exports.OrgansViewer = OrgansViewer;
907
+
908
+ /***/ }),
909
+
910
+ /***/ "55ee":
911
+ /***/ (function(module, exports) {
912
+
913
+ module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
914
+
915
+ /***/ }),
916
+
917
+ /***/ "5810":
918
+ /***/ (function(module, exports, __webpack_require__) {
919
+
920
+ // extracted by mini-css-extract-plugin
921
+
922
+ /***/ }),
923
+
924
+ /***/ "5ec5":
925
+ /***/ (function(module, exports, __webpack_require__) {
926
+
927
+ var THREE = __webpack_require__("9206").THREE;
928
+ /**
929
+ * This module manages highlighted and selected objects in 3D modules.
930
+ *
931
+ * @class
932
+ * @returns {exports.GraphicsHighlight}
933
+ */
934
+
935
+
936
+ exports.GraphicsHighlight = function () {
937
+ var currentHighlightedObjects = [];
938
+ var currentSelectedObjects = [];
939
+ this.highlightColour = 0x0000FF;
940
+ this.selectColour = 0x00FF00;
941
+ this.originalColour = 0x000000;
942
+
943
+ var _this = this;
944
+
945
+ var isDifferent = function isDifferent(array1, array2) {
946
+ if (array1.length == 0 && array2.length == 0) return false;
947
+
948
+ for (var i = 0; i < array1.length; i++) {
949
+ var matched = false;
950
+
951
+ for (var j = 0; j < array2.length; j++) {
952
+ if (array1[i] === array2[j]) {
953
+ matched = true;
954
+ }
955
+ }
956
+
957
+ if (!matched) return true;
958
+ }
959
+
960
+ for (var _i = 0; _i < array2.length; _i++) {
961
+ var _matched = false;
962
+
963
+ for (var _j = 0; _j < array1.length; _j++) {
964
+ if (array2[_i] === array1[_j]) {
965
+ _matched = true;
966
+ }
967
+ }
968
+
969
+ if (!_matched) return true;
970
+ }
971
+
972
+ return false;
973
+ };
974
+
975
+ var getUnmatchingObjects = function getUnmatchingObjects(objectsArray1, objectsArray2) {
976
+ var unmatchingObjects = [];
977
+ if (objectsArray2.length == 0) return objectsArray1;
978
+
979
+ for (var i = 0; i < objectsArray1.length; i++) {
980
+ var matched = false;
981
+
982
+ for (var j = 0; j < objectsArray2.length; j++) {
983
+ if (objectsArray1[i] === objectsArray2[j]) {
984
+ matched = true;
985
+ }
986
+ }
987
+
988
+ if (!matched) unmatchingObjects.push(objectsArray1[i]);
989
+ }
990
+
991
+ return unmatchingObjects;
992
+ };
993
+
994
+ this.setHighlighted = function (objects) {
995
+ var previousHighlightedObjects = currentHighlightedObjects;
996
+
997
+ _this.resetHighlighted(); // Selected object cannot be highlighted
998
+
999
+
1000
+ var array = getUnmatchingObjects(objects, currentSelectedObjects);
1001
+ var fullList = getFullListOfObjects(array);
1002
+
1003
+ for (var i = 0; i < fullList.length; i++) {
1004
+ if (fullList[i] && fullList[i].material && fullList[i].material.emissive) fullList[i].material.emissive.setHex(_this.highlightColour);
1005
+ }
1006
+
1007
+ currentHighlightedObjects = array;
1008
+ return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
1009
+ };
1010
+
1011
+ this.setSelected = function (objects) {
1012
+ // first find highlighted object that are not selected
1013
+ var previousHSelectedObjects = currentSelectedObjects;
1014
+ var array = getUnmatchingObjects(currentHighlightedObjects, objects);
1015
+ currentHighlightedObjects = array;
1016
+
1017
+ _this.resetSelected();
1018
+
1019
+ var fullList = getFullListOfObjects(objects);
1020
+
1021
+ for (var i = 0; i < fullList.length; i++) {
1022
+ if (fullList[i] && fullList[i].material && fullList[i].material.emissive) fullList[i].material.emissive.setHex(_this.selectColour);
1023
+ }
1024
+
1025
+ currentSelectedObjects = objects;
1026
+ return isDifferent(currentSelectedObjects, previousHSelectedObjects);
1027
+ };
1028
+
1029
+ var getFullListOfObjects = function getFullListOfObjects(objects) {
1030
+ var fullList = [];
1031
+
1032
+ for (var i = 0; i < objects.length; i++) {
1033
+ if (objects[i].material) fullList.push(objects[i]);
1034
+ }
1035
+
1036
+ return fullList;
1037
+ };
1038
+
1039
+ this.resetHighlighted = function () {
1040
+ var fullList = getFullListOfObjects(currentHighlightedObjects);
1041
+
1042
+ for (var i = 0; i < fullList.length; i++) {
1043
+ if (fullList[i] && fullList[i].material) {
1044
+ if (fullList[i].material.emissive) fullList[i].material.emissive.setHex(_this.originalColour);
1045
+ if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
1046
+ }
1047
+ }
1048
+
1049
+ currentHighlightedObjects = [];
1050
+ };
1051
+
1052
+ this.resetSelected = function () {
1053
+ var fullList = getFullListOfObjects(currentSelectedObjects);
1054
+
1055
+ for (var i = 0; i < fullList.length; i++) {
1056
+ if (fullList[i] && fullList[i].material) {
1057
+ if (fullList[i].material.emissive) fullList[i].material.emissive.setHex(_this.originalColour);
1058
+ if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
1059
+ }
1060
+ }
1061
+
1062
+ currentSelectedObjects = [];
1063
+ };
1064
+
1065
+ this.getSelected = function () {
1066
+ return currentSelectedObjects;
1067
+ };
1068
+
1069
+ this.reset = function () {
1070
+ _this.resetSelected();
1071
+
1072
+ _this.resetHighlighted();
1073
+ };
1074
+ };
1075
+
1076
+ /***/ }),
1077
+
1078
+ /***/ "5fef":
1079
+ /***/ (function(module, exports) {
1080
+
1081
+ module.exports = require("core-js/modules/es.regexp.to-string");
1082
+
1083
+ /***/ }),
1084
+
1085
+ /***/ "6049":
1086
+ /***/ (function(module, exports) {
1087
+
1088
+ module.exports = require("core-js/modules/es.symbol");
1089
+
1090
+ /***/ }),
1091
+
1092
+ /***/ "642d":
1093
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
1094
+
1095
+ "use strict";
1096
+ /* 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");
1097
+ /* 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__);
1098
+ /* unused harmony reexport * */
1099
+
1100
+
1101
+ /***/ }),
1102
+
1103
+ /***/ "6579":
1104
+ /***/ (function(module, exports) {
1105
+
1106
+ module.exports = require("core-js/modules/es.array.slice");
1107
+
1108
+ /***/ }),
1109
+
1110
+ /***/ "6814":
1111
+ /***/ (function(module, exports) {
1112
+
1113
+ module.exports = require("lodash/orderBy");
1114
+
1115
+ /***/ }),
1116
+
1117
+ /***/ "6aa6":
1118
+ /***/ (function(module, exports, __webpack_require__) {
1119
+
1120
+ __webpack_require__("ab7e");
1121
+
1122
+ __webpack_require__("6bb1");
1123
+
1124
+ __webpack_require__("6579");
1125
+
1126
+ __webpack_require__("7c81");
1127
+
1128
+ __webpack_require__("bcd8");
1129
+
1130
+ __webpack_require__("fd48");
1131
+
1132
+ var MODULE_CHANGE = {
1133
+ ALL: 0,
1134
+ DESTROYED: 1,
1135
+ NAME_CHANGED: 2,
1136
+ SETTINGS_CHANGED: 3
1137
+ };
1138
+
1139
+ var BaseModule = function BaseModule() {
1140
+ this.typeName = "Base Module";
1141
+ this.instanceName = "default";
1142
+ this.onChangedCallbacks = [];
1143
+ /** Notifier handle for informing other modules of any changes **/
1144
+
1145
+ this.eventNotifiers = [];
1146
+ };
1147
+
1148
+ BaseModule.prototype.setName = function (name) {
1149
+ if (name && this.instanceName !== name) {
1150
+ this.instanceName = name;
1151
+ var callbackArray = this.onChangedCallbacks.slice();
1152
+
1153
+ for (var i = 0; i < callbackArray.length; i++) {
1154
+ callbackArray[i](this, MODULE_CHANGE.NAME_CHANGED);
1155
+ }
768
1156
  }
769
-
770
- var preRenderUpdateCallback = function() {
771
- return function() {
772
- preRenderTimeUpdate();
773
- }
774
- }
775
-
776
- var postRenderUpdateCallback = function() {
777
- return function() {
778
- postRenderSelectedCoordinatesUpdate();
779
- }
780
- }
781
-
782
- /**
783
- * Add a callback which will be called when time has changed
784
- */
785
- this.addTimeChangedCallback = function(callback) {
786
- if (typeof(callback === "function"))
787
- timeChangedCallbacks.push(callback);
788
- }
789
-
790
- this.setTexturePos = function(value) {
791
- if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
792
- _this.sceneData.nerveMap.additionalReader.setSliderPos(value);
793
- }
794
-
795
- this.addLayoutUpdateRequiredCallback = function(callback) {
796
- if (typeof(callback === "function")) {
797
- layoutUpdateRequiredCallbacks.push(callback);
798
- }
799
- }
800
-
801
- this.addSceneChangedCallback = function(callback) {
802
- if (typeof(callback === "function")) {
803
- sceneChangedCallbacks.push(callback);
804
- }
805
- }
806
-
807
- this.addOrganPartAddedCallback = function(callback) {
808
- if (typeof(callback === "function"))
809
- organPartAddedCallbacks.push(callback);
810
- }
1157
+ };
811
1158
 
812
- this.setFinishDownloadCallback = function(callback) {
813
- if (typeof(callback === "function"))
814
- finishDownloadCallback = callback;
815
- }
1159
+ BaseModule.prototype.settingsChanged = function () {
1160
+ var callbackArray = this.onChangedCallbacks.slice();
816
1161
 
817
- this.unsetFinishDownloadCallback = function() {
818
- finishDownloadCallback = undefined;
1162
+ for (var i = 0; i < callbackArray.length; i++) {
1163
+ callbackArray[i](this, MODULE_CHANGE.SETTINGS_CHANGED);
819
1164
  }
1165
+ };
820
1166
 
821
- this.getNamedObjectsToScreenCoordinates = function(name, camera) {
822
- var vector = new THREE.Vector3();
823
- vector.setFromMatrixPosition( obj.matrixWorld );
824
- var widthHalf = (width/2);
825
- var heightHalf = (height/2);
826
- vector.project(camera);
827
- vector.x = ( vector.x * widthHalf ) + widthHalf;
828
- vector.y = - ( vector.y * heightHalf ) + heightHalf;
829
- return vector;
830
- }
1167
+ BaseModule.prototype.exportSettings = function () {
1168
+ var settings = {};
1169
+ settings.dialog = this.typeName;
1170
+ settings.name = this.instanceName;
1171
+ return settings;
1172
+ };
831
1173
 
832
- var getIdObjectFromIntersect = function(intersected) {
833
- var id = undefined;
834
- var intersectedObject = undefined;
835
- if (intersected !== undefined) {
836
- if (intersected.object.userData &&
837
- intersected.object.userData.isMarker) {
838
- intersectedObject = intersected.object.userData.parent.morph;
839
- } else {
840
- intersectedObject = intersected.object;
841
- }
842
- if (intersectedObject) {
843
- if (intersectedObject.name) {
844
- id = intersectedObject.name;
845
- } else {
846
- var annotations = _this.getAnnotationsFromObjects(
847
- [intersectedObject]);
848
- if (annotations && annotations[0]) {
849
- id = annotations[0].data.group;
850
- }
851
- }
852
- }
853
- }
854
- return {"id":id, "object":intersectedObject};
1174
+ BaseModule.prototype.importSettings = function (settings) {
1175
+ if (settings.dialog == this.typeName) {
1176
+ this.setName(settings.name);
1177
+ return true;
855
1178
  }
856
-
857
- /**
858
- * Callback function when a pickable object has been picked. It will then
859
- * call functions in tissueViewer and cellPanel to show corresponding
860
- * informations.
861
- *
862
- * @callback
863
- */
864
- var _pickingCallback = function() {
865
- return function(intersects, window_x, window_y) {
866
- var intersected = _this.getIntersectedObject(intersects);
867
- var idObject = getIdObjectFromIntersect(intersected);
868
- if (idObject.id) {
869
- if (_this.toolTip !== undefined) {
870
- _this.toolTip.setText(idObject.id);
871
- _this.toolTip.show(window_x, window_y);
872
- }
873
- _this.displayMessage(idObject.object.name + " selected.");
874
1179
 
875
- if (idObject.object.userData.isGlyph) {
876
- if (idObject.object.name)
877
- _this.setSelectedByObjects([idObject.object], true);
878
- else
879
- _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);
880
- } else {
881
- _this.setSelectedByObjects([idObject.object], true);
882
- }
883
- return;
884
- } else {
885
- if (_this.toolTip !== undefined) {
886
- _this.toolTip.hide();
887
- }
888
- _this.setSelectedByObjects([], true);
889
- }
890
- }
891
- };
892
-
893
- /**
894
- * Callback function when a pickable object has been hovered over. It will
895
- * show objecty id/name as _this.toolTip text.
896
- *
897
- * @callback
898
- */
899
- var _hoverCallback = function() {
900
- return function(intersects, window_x, window_y) {
901
- var intersected = _this.getIntersectedObject(intersects);
902
- var idObject = getIdObjectFromIntersect(intersected);
903
- if (idObject.id) {
904
- _this.displayArea.style.cursor = "pointer";
905
- if (_this.toolTip !== undefined) {
906
- _this.toolTip.setText(idObject.id);
907
- _this.toolTip.show(window_x, window_y);
908
- }
909
- _this.setHighlightedByObjects([idObject.object], true);
910
- return;
911
- }
912
- else {
913
- if (_this.toolTip !== undefined) {
914
- _this.toolTip.hide();
915
- }
916
- _this.displayArea.style.cursor = "auto";
917
- _this.setHighlightedByObjects([], true);
918
- }
919
- }
920
- };
921
-
922
- var changeOrganPartsVisibilityForScene = function(scene, name, value, type) {
923
- if (type == "all" || type == "geometries") {
924
- var geometries = scene.findGeometriesWithGroupName(name);
925
- for (var i = 0; i < geometries.length; i ++ ) {
926
- geometries[i].setVisibility(value);
927
- }
928
- }
929
- if (type == "all" || type == "glyphsets") {
930
- var glyphsets = scene.findGlyphsetsWithGroupName(name);
931
- for (var i = 0; i < glyphsets.length; i ++ ) {
932
- glyphsets[i].setVisibility(value);
933
- }
934
- }
935
- if (type == "all" || type == "pointsets") {
936
- var pointsets = scene.findPointsetsWithGroupName(name);
937
- for (var i = 0; i < pointsets.length; i ++ ) {
938
- pointsets[i].setVisibility(value);
939
- }
940
- }
941
- if (type == "all" || type == "lines") {
942
- var lines = scene.findLinesWithGroupName(name);
943
- for (var i = 0; i < lines.length; i ++ ) {
944
- lines[i].setVisibility(value);
945
- }
946
- }
947
- }
948
-
949
- /**
950
- * Change visibility for parts of the current scene.
951
- */
952
- this.changeGeometriesVisibility = function(name, value) {
953
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
954
- if (pickerScene)
955
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
956
- }
957
-
958
- /**
959
- * Change visibility for parts of the current scene.
960
- */
961
- this.changeGlyphsetsVisibility = function(name, value) {
962
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
963
- if (pickerScene)
964
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
965
- }
966
-
967
- /**
968
- * Change visibility for parts of the current scene.
969
- */
970
- this.changeLinesVisibility = function(name, value) {
971
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
972
- if (pickerScene)
973
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
974
- }
975
-
976
- /**
977
- * Change visibility for parts of the current scene.
978
- */
979
- this.changePointsetsVisibility = function(name, value) {
980
- changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
981
- if (pickerScene)
982
- changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
1180
+ return false;
1181
+ };
1182
+
1183
+ BaseModule.prototype.publishChanges = function (annotations, eventType) {
1184
+ for (var i = 0; i < this.eventNotifiers.length; i++) {
1185
+ this.eventNotifiers[i].publish(this, eventType, annotations);
983
1186
  }
984
-
985
- /**
986
- * Change visibility for parts of the current scene.
987
- */
988
- this.changeOrganPartsVisibility = function(name, value, typeIn) {
989
- var type = "all";
990
- if (typeIn !== undefined)
991
- type = typeIn;
992
- changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
993
- if (pickerScene)
994
- changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
995
- }
996
-
997
- this.changeOrganPartsVisibilityCallback = function(name) {
998
- return function(value) {
999
- _this.changeOrganPartsVisibility(name, value);
1000
- }
1001
- }
1002
-
1003
- /**
1004
- * Change some of the ZincGeometry property for never map geometry
1005
- *
1006
- * @callback
1007
- */
1008
- var _addNerveMapGeometryCallback = function(GroupName) {
1009
- return function(geometry) {
1010
- geometry.groupName = GroupName;
1011
- if (imageCombiner && geometry.morph && geometry.morph.material.map) {
1012
- geometry.morph.material.map = new THREE.Texture(imageCombiner.getCombinedImage());
1013
- geometry.morph.material.map.needsUpdate = true;
1014
- geometry.morph.material.needsUpdate = true;
1015
- }
1016
- }
1017
- }
1018
-
1019
- /**
1020
- * Read in the nerve map models onto the primary renderer when nerve map has
1021
- * been toggled on.
1022
- */
1023
- var setupNerveMapPrimaryRenderer = function() {
1024
- var sceneName = _this.sceneData.currentName + "_nervemap";
1025
- nerveMapScene = _this.zincRenderer.getSceneByName(sceneName);
1026
- if (nerveMapScene == undefined) {
1027
- var downloadPath = modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.meta;
1028
- nerveMapScene = _this.zincRenderer.createScene(sceneName);
1029
- nerveMapScene.loadMetadataURL(downloadPath, _addNerveMapGeometryCallback("threed"));
1030
- if (_this.sceneData.nerveMap.threed.view !== undefined)
1031
- nerveMapScene.loadViewURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.view);
1032
- else {
1033
- nerveMapScene.loadViewURL(modelsLoader.getBodyDirectoryPrefix() + "/body_view.json");
1034
- }
1035
- nerveMapScene.ambient.intensity = 8.0;
1036
- nerveMapScene.directionalLight.intensity = 0;
1037
- var zincCameraControl = nerveMapScene.getZincCameraControls();
1038
- zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
1039
- zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
1040
- _this.sceneData.nerveMap.additionalReader = new (__webpack_require__("6fd2").VaryingTexCoordsReader)(nerveMapScene);
1041
- var urlsArray = [ modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_0.json",
1042
- modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_1.json",
1043
- modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi0_time_0.json"];
1044
- _this.sceneData.nerveMap.additionalReader.loadURLsIntoBufferGeometry(urlsArray);
1045
- }
1046
- _this.zincRenderer.setCurrentScene(nerveMapScene);
1047
- _this.graphicsHighlight.reset();
1048
- }
1049
-
1050
- var activateAdditionalNerveMapRenderer = function() {
1051
- for (var i = 0; i < layoutUpdateRequiredCallbacks.length;i++) {
1052
- layoutUpdateRequiredCallbacks[i](false, true);
1053
- }
1054
- }
1055
-
1056
- /**
1057
- * Nerve map has been toggled on/off, change organs renderer layput.
1058
- */
1059
- this.changeNerveMapVisibility = function() {
1060
- _this.sceneData.nerveMapIsActive = !_this.sceneData.nerveMapIsActive;
1061
- if (_this.sceneData.nerveMapIsActive)
1062
- setupNerveMapPrimaryRenderer();
1063
- else {
1064
- _this.zincRenderer.setCurrentScene(_this.scene);
1065
- _this.graphicsHighlight.reset();
1066
- }
1067
- activateAdditionalNerveMapRenderer();
1068
- }
1069
-
1070
- this.changeBackgroundColour = function(backgroundColourString) {
1071
- var colour = new THREE.Color(backgroundColourString);
1072
- if (_this.zincRenderer) {
1073
- var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
1074
- internalRenderer.setClearColor( colour, 1 );
1075
- }
1076
- }
1077
-
1078
- var addOrganPartToSceneData = function(zincObject) {
1079
- if (zincObject.groupName) {
1080
- if (zincObject.isGeometry) {
1081
- if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
1082
- _this.sceneData.geometries.push(zincObject.groupName);
1083
- }
1084
- } else if (zincObject.isGlyphset) {
1085
- if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
1086
- _this.sceneData.glyphsets.push(zincObject.groupName);
1087
- }
1088
- } else if (zincObject.isLines) {
1089
- if (!_this.sceneData.lines.includes(zincObject.groupName)) {
1090
- _this.sceneData.lines.push(zincObject.groupName);
1091
- }
1092
- } else if (zincObject.isPointset) {
1093
- if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
1094
- _this.sceneData.pointsets.push(zincObject.groupName);
1095
- }
1096
- }
1097
- }
1098
- }
1099
-
1100
- var addOrganPart = function(systemName, partName, useDefautColour, zincObject) {
1101
- for (var i = 0; i < organPartAddedCallbacks.length;i++) {
1102
- organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
1103
- }
1104
- if (useDefautColour)
1105
- modelsLoader.setGeometryColour(zincObject, systemName, partName);
1106
- addOrganPartToSceneData(zincObject);
1107
- if (zincObject.groupName) {
1108
- _this.displayMessage(zincObject.groupName + " loaded.");
1109
- } else {
1110
- _this.displayMessage("Resource loaded.");
1111
- }
1112
- var annotation = new (__webpack_require__("a0d7").annotation)();
1113
- annotation.data = {species:_this.sceneData.currentSpecies, system:systemName, part:partName, group:zincObject.groupName};
1114
- zincObject.userData = [annotation];
1115
- }
1116
-
1117
- /**
1118
- * New organs geometry has been added to the scene, add UIs and make
1119
- * sure the viewport is correct.
1120
- */
1121
- var _addOrganPartCallback = function(systemName, partName, useDefautColour) {
1122
- return function(zincObject) {
1123
- addOrganPart(systemName, partName, useDefautColour, zincObject);
1124
- }
1125
- }
1126
-
1127
- var downloadCompletedCallback = function() {
1128
- return function() {
1129
- _this.settingsChanged();
1130
- _this.sceneData.timeVarying = _this.scene.isTimeVarying();
1131
- _this.displayMessage("All resources loaded.");
1132
- if (finishDownloadCallback)
1133
- finishDownloadCallback();
1134
- }
1135
- }
1136
-
1137
- var singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {
1138
- return function(geometry) {
1139
- addOrganPart(systemName, partName, useDefautColour, geometry);
1140
- _this.settingsChanged();
1141
- }
1142
- }
1143
-
1144
- /**
1145
- * Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
1146
- * other activities of the organs.
1147
- */
1148
- this.updateFieldvisibility = function(dataFields, value) {
1149
- for ( var i = 0; i < dataFields.length; i ++ ) {
1150
- if (value != i) {
1151
- var geometryName = dataFields[i].PartName;
1152
- _this.changeOrganPartsVisibility(geometryName, false);
1153
- }
1154
- }
1155
- if (value > -1) {
1156
- var partName = dataFields[value].PartName;
1157
- if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||
1158
- (_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {
1159
- _this.changeOrganPartsVisibility(partName, true);
1160
- } else {
1161
- var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
1162
- if (partDetails != undefined) {
1163
- _this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
1164
- }
1165
- }
1166
- }
1167
- }
1168
-
1169
- /**
1170
- * Return an array containing name(s) of species that also contains the
1171
- * currently displayed organs.
1172
- *
1173
- * @returns {Array} containing species name
1174
- */
1175
- this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {
1176
- var availableSpecies = new Array();
1177
- availableSpecies.push("none");
1178
- var keysArray = Object.keys(organsFileMap);
1179
- for (index in keysArray) {
1180
- var species = keysArray[index];
1181
- if (species != currentSpecies) {
1182
- if (organsFileMap[species].hasOwnProperty(currentSystem) &&
1183
- organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
1184
- availableSpecies.push(species);
1185
- }
1186
- }
1187
- }
1188
- return availableSpecies;
1189
- }
1190
-
1191
- var setSceneData = function(speciesName, systemName, partName, organsDetails) {
1192
- _this.sceneData.nerveMapIsActive = false;
1193
- _this.sceneData.nerveMap = undefined;
1194
- _this.sceneData.metaURL = "";
1195
- _this.sceneData.viewURL = "";
1196
- _this.sceneData.currentSpecies = speciesName;
1197
- _this.sceneData.currentSystem = systemName;
1198
- _this.sceneData.currentPart = partName;
1199
- _this.sceneData.currentTime = 0.0;
1200
- _this.sceneData.geometries.splice(0);
1201
- _this.sceneData.lines.splice(0);
1202
- _this.sceneData.glyphsets.splice(0);
1203
- _this.sceneData.pointsets.splice(0);
1204
- _this.sceneData.timeVarying = false;
1205
- // This is used as title
1206
- var name = "";
1207
- if (speciesName)
1208
- name = speciesName + "/";
1209
- if (systemName)
1210
- name = systemName + "/";
1211
- if (partName)
1212
- name = partName;
1213
- _this.sceneData.currentName = name;
1214
- }
1215
-
1216
- this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {
1217
- if (_this.zincRenderer) {
1218
- if (partName && (_this.sceneData.metaURL !== url)) {
1219
- setSceneData(speciesName, systemName, partName, undefined);
1220
- var name = _this.sceneData.currentName;
1221
- var organScene = _this.zincRenderer.getSceneByName(name);
1222
- if (organScene) {
1223
- organScene.clearAll();
1224
- } else {
1225
- organScene = _this.zincRenderer.createScene(name);
1226
- }
1227
- for (var i = 0; i < sceneChangedCallbacks.length;i++) {
1228
- sceneChangedCallbacks[i](_this.sceneData);
1229
- }
1230
- if (viewURL && viewURL != "") {
1231
- _this.sceneData.viewURL = viewURL;
1232
- organScene.loadViewURL(_this.sceneData.viewURL);
1233
- } else
1234
- _this.sceneData.viewURL = undefined;
1235
- _this.sceneData.metaURL = url;
1236
- _this.displayMessage("Downloading...");
1237
- organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),
1238
- downloadCompletedCallback());
1239
- _this.scene = organScene;
1240
- _this.zincRenderer.setCurrentScene(organScene);
1241
- _this.graphicsHighlight.reset();
1242
- var zincCameraControl = organScene.getZincCameraControls();
1243
- zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
1244
- zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
1245
- zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
1246
- }
1247
- }
1248
- }
1249
-
1250
- this.alignCameraWithSelectedObject = function(transitionTime) {
1251
- var objects = _this.graphicsHighlight.getSelected();
1252
- if (objects && objects[0] && objects[0].userData) {
1253
- _this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
1254
- }
1255
- }
1256
-
1257
- this.exportSettings = function() {
1258
- var settings = {};
1259
- settings.name = _this.instanceName;
1260
- if (_this.sceneData.currentSystem)
1261
- settings.system = _this.sceneData.currentSystem;
1262
- if (_this.sceneData.currentSpecies)
1263
- settings.species = _this.sceneData.currentSpecies;
1264
- if (_this.sceneData.currentPart)
1265
- settings.part = _this.sceneData.currentPart;
1266
- settings.metaURL = _this.sceneData.metaURL;
1267
- if (_this.sceneData.viewURL)
1268
- settings.viewURL = _this.sceneData.viewURL;
1269
- settings.dialog = "Organ Viewer";
1270
- return settings;
1271
- }
1272
-
1273
- this.importSettings = function(settings) {
1274
- if (settings && (settings.dialog == this.typeName)) {
1275
- _this.setName(settings.name);
1276
- if (settings.metaURL !== undefined && settings.metaURL != "") {
1277
- _this.loadOrgansFromURL(settings.metaURL, settings.species,
1278
- settings.system, settings.part, settings.viewURL);
1279
- } else {
1280
- _this.loadOrgans(settings.species, settings.system, settings.part);
1281
- }
1282
- return true;
1283
- }
1284
- return false;
1285
- }
1286
-
1287
- /**
1288
- * initialise loading of the html layout for the organs panel, this is
1289
- * called when the {@link PJP.OrgansViewer} is created.
1290
- *
1291
- * @async
1292
- */
1293
- var initialise = function() {
1294
- _this.initialiseRenderer(undefined);
1295
- if (_this.zincRenderer) {
1296
- _this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
1297
- _this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
1298
- }
1187
+ };
1188
+
1189
+ BaseModule.prototype.getName = function () {
1190
+ return this.instanceName;
1191
+ };
1192
+
1193
+ BaseModule.prototype.destroy = function () {
1194
+ //Make a temorary copy as the array may be altered during the loop
1195
+ var callbackArray = this.onChangedCallbacks.slice();
1196
+
1197
+ for (var i = 0; i < callbackArray.length; i++) {
1198
+ callbackArray[i](this, MODULE_CHANGE.DESTROYED);
1299
1199
  }
1300
-
1301
- initialise();
1302
1200
 
1303
- }
1201
+ delete this;
1202
+ };
1304
1203
 
1305
- OrgansViewer.prototype = Object.create((__webpack_require__("7a89").RendererModule).prototype);
1306
- exports.OrgansViewer = OrgansViewer;
1204
+ BaseModule.prototype.addChangedCallback = function (callback) {
1205
+ if (this.onChangedCallbacks.includes(callback) == false) this.onChangedCallbacks.push(callback);
1206
+ };
1307
1207
 
1208
+ BaseModule.prototype.removeChangedCallback = function (callback) {
1209
+ var index = this.onChangedCallbacks.indexOf(callback);
1308
1210
 
1309
- /***/ }),
1211
+ if (index > -1) {
1212
+ this.onChangedCallbacks.splice(index, 1);
1213
+ }
1214
+ };
1310
1215
 
1311
- /***/ "6814":
1312
- /***/ (function(module, exports) {
1216
+ BaseModule.prototype.addNotifier = function (eventNotifier) {
1217
+ this.eventNotifiers.push(eventNotifier);
1218
+ };
1313
1219
 
1314
- module.exports = require("lodash/orderBy");
1220
+ exports.BaseModule = BaseModule;
1221
+ exports.MODULE_CHANGE = MODULE_CHANGE;
1315
1222
 
1316
1223
  /***/ }),
1317
1224
 
@@ -1336,160 +1243,40 @@ module.exports = require("element-ui/lib/row");
1336
1243
 
1337
1244
  /***/ }),
1338
1245
 
1339
- /***/ "6fd2":
1246
+ /***/ "7037":
1340
1247
  /***/ (function(module, exports, __webpack_require__) {
1341
1248
 
1342
- var THREE = __webpack_require__("9206").THREE;
1249
+ __webpack_require__("6049");
1250
+
1251
+ __webpack_require__("51e9");
1252
+
1253
+ __webpack_require__("02ac");
1254
+
1255
+ __webpack_require__("8c84");
1256
+
1257
+ __webpack_require__("850c");
1258
+
1259
+ __webpack_require__("907b");
1260
+
1261
+ __webpack_require__("1ce0");
1262
+
1263
+ function _typeof(obj) {
1264
+ "@babel/helpers - typeof";
1343
1265
 
1344
- exports.VaryingTexCoordsReader = function(sceneIn) {
1345
-
1346
- var _this = this;
1347
- var finishCallbackFunction = undefined;
1348
- var bufferGeometry = undefined;
1349
- var zincGeometry = undefined;
1350
- var numberOfInputs = 0;
1351
- var completedInputs = 0;
1352
- var scene = sceneIn;
1353
- var currentMap = undefined;
1354
- var textureLoader = new THREE.TextureLoader();
1355
- var texture = new textureLoader.load( 'models/organsViewerModels/digestive/stomach/nerve_map/texture/ratstomach_innervation_square.png' );
1356
- texture.wrapS = THREE.RepeatWrapping;
1357
- texture.wrapT = THREE.RepeatWrapping;
1358
- texture.format = THREE.RGBFormat;
1359
-
1360
- var shadersUniforms = THREE.UniformsUtils.merge( [
1361
- {
1362
- ambient : { type: "c", value: new THREE.Color( 0x000000 ) },
1363
- diffuse : { type: "c", value: new THREE.Color( 0xffffff ) },
1364
- emissive : { type: "c", value: new THREE.Color( 0xbbbbbb ) },
1365
- specular : { type: "c", value: new THREE.Color( 0x111111 ) },
1366
- shininess: { type: "f", value: 100 },
1367
- opacity: { type: "f", value: 1.0 },
1368
- ambientLightColor: { type: "c", value: new THREE.Color( 0xF0F0F0 ) },
1369
- directionalLightColor: { type: "c", value: new THREE.Color( 0x555555) },
1370
- directionalLightDirection: { type: "v3", value: new THREE.Vector3() },
1371
- offsetRepeat: { value: new THREE.Vector4( 0, 0, 1, 1 ) },
1372
- time: { type: "f", value: 0.0 },
1373
- slide_pos: { type: "f", value: 1.0 },
1374
- myTex: {type: 't', value: null}
1375
- } ] );
1376
-
1377
- var addGeometryIntoBufferGeometry = function(order, geometry)
1378
- {
1379
- var arrayLength = geometry.faces.length * 3 * 3;
1380
- var positions = new Float32Array( arrayLength );
1381
- var colors = new Float32Array( arrayLength );
1382
- var normals = new Float32Array( arrayLength );
1383
- var texCoords = new Float32Array( geometry.faces.length * 3 * 2 );
1384
- if (bufferGeometry === undefined)
1385
- bufferGeometry = new THREE.BufferGeometry();
1386
-
1387
- geometry.faces.forEach( function ( face, index ) {
1388
- positions[ index * 9 + 0 ] = geometry.vertices[ face.a ].x;
1389
- positions[ index * 9 + 1 ] = geometry.vertices[ face.a ].y;
1390
- positions[ index * 9 + 2 ] = geometry.vertices[ face.a ].z;
1391
- positions[ index * 9 + 3 ] = geometry.vertices[ face.b ].x;
1392
- positions[ index * 9 + 4 ] = geometry.vertices[ face.b ].y;
1393
- positions[ index * 9 + 5 ] = geometry.vertices[ face.b ].z;
1394
- positions[ index * 9 + 6 ] = geometry.vertices[ face.c ].x;
1395
- positions[ index * 9 + 7 ] = geometry.vertices[ face.c ].y;
1396
- positions[ index * 9 + 8 ] = geometry.vertices[ face.c ].z;
1397
-
1398
- normals[ index * 9 + 0 ] = face.vertexNormals[0].x;
1399
- normals[ index * 9 + 1 ] = face.vertexNormals[0].y;
1400
- normals[ index * 9 + 2 ] = face.vertexNormals[0].z;
1401
- normals[ index * 9 + 3 ] = face.vertexNormals[1].x;
1402
- normals[ index * 9 + 4 ] = face.vertexNormals[1].y;
1403
- normals[ index * 9 + 5 ] = face.vertexNormals[1].z;
1404
- normals[ index * 9 + 6 ] = face.vertexNormals[2].x;
1405
- normals[ index * 9 + 7 ] = face.vertexNormals[2].y;
1406
- normals[ index * 9 + 8 ] = face.vertexNormals[2].z;
1407
-
1408
- texCoords[ index * 6 + 0] = geometry.faceVertexUvs[ 0 ][index][0].x;
1409
- texCoords[ index * 6 + 1] = geometry.faceVertexUvs[ 0 ][index][0].y;
1410
- texCoords[ index * 6 + 2] = geometry.faceVertexUvs[ 0 ][index][1].x;
1411
- texCoords[ index * 6 + 3] = geometry.faceVertexUvs[ 0 ][index][1].y;
1412
- texCoords[ index * 6 + 4] = geometry.faceVertexUvs[ 0 ][index][2].x;
1413
- texCoords[ index * 6 + 5] = geometry.faceVertexUvs[ 0 ][index][2].y;
1414
- } );
1415
-
1416
-
1417
- if (order == 0) {
1418
- bufferGeometry.addAttribute( "position", new THREE.BufferAttribute( positions, 3) );
1419
- bufferGeometry.addAttribute( "normal", new THREE.BufferAttribute( normals, 3 ) );
1420
- bufferGeometry.addAttribute( "uv", new THREE.BufferAttribute( texCoords, 2 ) );
1421
- } else {
1422
- var positionStr = "position_" + order;
1423
- var normalStr = "normal_" + order;
1424
- var uvsStr = "uv_" + order;
1425
- bufferGeometry.addAttribute( positionStr, new THREE.BufferAttribute( positions, 3) );
1426
- bufferGeometry.addAttribute( normalStr, new THREE.BufferAttribute( normals, 3 ) );
1427
- bufferGeometry.addAttribute( uvsStr, new THREE.BufferAttribute( texCoords, 2 ) );
1428
- }
1429
-
1430
- }
1431
-
1432
- var meshReady = function(bufferGeometryIn, shaderText, material){
1433
- var shaderMaterial = new THREE.RawShaderMaterial( {
1434
- vertexShader: shaderText[0],
1435
- fragmentShader: shaderText[1],
1436
- uniforms: shadersUniforms
1437
- } );
1438
- shaderMaterial.uniforms.myTex.value = texture;
1439
- shaderMaterial.side = THREE.DoubleSide;
1440
- shaderMaterial.depthTest = true;
1441
- shaderMaterial.needsUpdate = true;
1442
- shaderMaterial.map = texture;
1443
- shaderMaterial.uniforms.myTex.value.needsUpdate = true;
1444
- shaderMaterial.opacity = 1.0;
1445
- zincGeometry = scene.addZincGeometry(bufferGeometryIn, 30001, undefined, undefined, false, false, true, undefined, shaderMaterial);
1446
- zincGeometry.groupName = "varyingTexture";
1447
- }
1448
-
1449
- var myLoader = function(order, shaderText) {
1450
- return function(geometry, materials){
1451
- var material = 0;
1452
- addGeometryIntoBufferGeometry(order, geometry);
1453
- completedInputs++;
1454
- if (completedInputs == numberOfInputs) {
1455
- meshReady(bufferGeometry, shaderText, material);
1456
- if (finishCallbackFunction != undefined && (typeof finishCallbackFunction == 'function'))
1457
- finishCallbackFunction(bufferGeometry);
1458
- }
1459
- }
1460
- }
1461
-
1462
- this.setSliderPos = function(pos) {
1463
- if (zincGeometry)
1464
- zincGeometry.morph.material.uniforms.slide_pos.value = pos;
1465
- }
1466
-
1467
- this.setTime = function(time) {
1468
- if (zincGeometry) {
1469
- zincGeometry.morph.material.uniforms.time.value = time;
1470
- }
1471
- }
1472
-
1473
- this.setTexture = function(textureIn) {
1474
- if (zincGeometry) {
1475
- zincGeometry.morph.material.uniforms.myTex.value = textureIn;
1476
- zincGeometry.morph.material.uniforms.myTex.value.needsUpdate = true;
1477
- }
1478
- }
1479
-
1480
- this.loadURLsIntoBufferGeometry = function(urls, finishCallback, progressCallback, errorCallback) {
1481
- var loader = new THREE.JSONLoader( true );
1482
- numberOfInputs = urls.length;
1483
- finishCallbackFunction = finishCallback;
1484
- var shaderText = [
1485
- __webpack_require__("1823"),
1486
- __webpack_require__("4e8a")
1487
- ];
1488
- for (var i = 0; i < numberOfInputs; i++)
1489
- loader.load( urls[i], myLoader(i, shaderText), progressCallback, errorCallback);
1490
- }
1266
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
1267
+ module.exports = _typeof = function _typeof(obj) {
1268
+ return typeof obj;
1269
+ };
1270
+ } else {
1271
+ module.exports = _typeof = function _typeof(obj) {
1272
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
1273
+ };
1274
+ }
1275
+
1276
+ return _typeof(obj);
1491
1277
  }
1492
1278
 
1279
+ module.exports = _typeof;
1493
1280
 
1494
1281
  /***/ }),
1495
1282
 
@@ -1507,87 +1294,61 @@ module.exports = require("element-ui/lib/theme-chalk/main.css");
1507
1294
 
1508
1295
  /***/ }),
1509
1296
 
1510
- /***/ "76bf":
1297
+ /***/ "7c81":
1298
+ /***/ (function(module, exports) {
1299
+
1300
+ module.exports = require("core-js/modules/es.array.splice");
1301
+
1302
+ /***/ }),
1303
+
1304
+ /***/ "7d9b":
1511
1305
  /***/ (function(module, exports, __webpack_require__) {
1512
1306
 
1513
- __webpack_require__("b723");
1307
+ // extracted by mini-css-extract-plugin
1514
1308
 
1515
- exports.ToolTip = function(container) {
1516
- var tooltipcontainerElement = undefined;
1517
- var tipElement = undefined;
1518
- var tiptextElement = undefined;
1519
- var template = '<div class="mptooltip" id="tip"><span class="mptooltiptext" id="tiptext"> Tooltip text</span></div>';
1520
- var _this = this;
1521
-
1522
- /**
1523
- * Show tool tip on the specified windows coordinates.
1524
- * @param {Number} x - Style sheet with the same title.
1525
- * @param {Number} y - selector string to match.
1526
- */
1527
- this.show = function(x, y) {
1528
- tooltipcontainerElement.style.left = x +"px";
1529
- tooltipcontainerElement.style.top = (y - 20) + "px";
1530
- tipElement.style.visibility = "visible";
1531
- tipElement.style.opacity = 1;
1532
- tiptextElement.style.visibility = "visible";
1533
- tiptextElement.style.opacity = 1;
1534
- }
1535
-
1536
- this.hide = function() {
1537
- tipElement.style.visibility = "hidden";
1538
- tipElement.style.opacity = 0;
1539
- tiptextElement.style.visibility = "hidden";
1540
- tiptextElement.style.opacity = 0;
1541
- }
1542
-
1543
- /**
1544
- * Change the tooltip text.
1545
- * @param {String} text - Text to update the tooltip to.
1546
- */
1547
- this.setText = function(text) {
1548
- tiptextElement.innerHTML = text;
1549
- }
1309
+ /***/ }),
1550
1310
 
1551
- var setupToolTipContainer = function() {
1552
- tooltipcontainerElement = document.createElement("div");
1553
- tooltipcontainerElement.id = "tooltipcontainer";
1554
- tooltipcontainerElement.innerHTML = template;
1555
- /*
1556
- for (i = 0; i < childNodes.length; i++) {
1557
- parent[0].appendChild(childNodes[i]);
1558
- }
1559
- */
1560
- tipElement = tooltipcontainerElement.querySelector("#tip");
1561
- tiptextElement = tooltipcontainerElement.querySelector("#tiptext");
1562
- container.appendChild(tooltipcontainerElement);
1563
-
1564
- }
1565
-
1566
- setupToolTipContainer();
1567
- }
1311
+ /***/ "7f9f":
1312
+ /***/ (function(module, exports) {
1313
+
1314
+ module.exports = require("element-ui/lib/locale");
1315
+
1316
+ /***/ }),
1568
1317
 
1318
+ /***/ "80c4":
1319
+ /***/ (function(module, exports) {
1569
1320
 
1321
+ module.exports = require("element-ui/lib/theme-chalk/option.css");
1570
1322
 
1571
1323
  /***/ }),
1572
1324
 
1573
- /***/ "7a89":
1325
+ /***/ "8278":
1574
1326
  /***/ (function(module, exports, __webpack_require__) {
1575
1327
 
1576
- var THREE = __webpack_require__("9206").THREE;
1328
+ __webpack_require__("bcd8");
1329
+
1330
+ var _readOnlyError = __webpack_require__("da60");
1577
1331
 
1332
+ var THREE = __webpack_require__("9206").THREE;
1578
1333
  /**
1579
1334
  * Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.
1580
1335
  * @param {String} elementID - id of the target dom element.
1581
1336
  * @returns {Zinc.Renderer}
1582
1337
  */
1583
- var createRenderer = function () {
1584
- var WEBGL = __webpack_require__("10c9").WEBGL;
1585
- var localContainer = document.createElement( 'div' );
1586
- var localRenderer = undefined;;
1338
+
1339
+
1340
+ var createRenderer = function createRenderer() {
1341
+ var WEBGL = __webpack_require__("cf41").WEBGL;
1342
+
1343
+ var localContainer = document.createElement('div');
1344
+ var localRenderer = undefined;
1345
+ ;
1587
1346
  localContainer.style.height = "100%";
1347
+
1588
1348
  if (WEBGL.isWebGLAvailable()) {
1589
1349
  var Zinc = __webpack_require__("9206");
1590
- var localRenderer = new Zinc.Renderer(localContainer, window);
1350
+
1351
+ localRenderer = new Zinc.Renderer(localContainer, window);
1591
1352
  Zinc.defaultMaterialColor = 0xFFFF9C;
1592
1353
  localRenderer.initialiseVisualisation();
1593
1354
  localRenderer.playAnimation = false;
@@ -1595,278 +1356,252 @@ var createRenderer = function () {
1595
1356
  var warning = WEBGL.getWebGLErrorMessage();
1596
1357
  localContainer.appendChild(warning);
1597
1358
  }
1598
- return {"renderer":localRenderer, "container":localContainer};
1599
- }
1600
1359
 
1601
- var RendererModule = function() {
1602
- (__webpack_require__("3966").BaseModule).call(this);
1360
+ return {
1361
+ "renderer": localRenderer,
1362
+ "container": localContainer
1363
+ };
1364
+ };
1365
+
1366
+ var RendererModule = function RendererModule() {
1367
+ __webpack_require__("6aa6").BaseModule.call(this);
1368
+
1603
1369
  this.scene = undefined;
1604
- this.toolTip = undefined;
1605
1370
  this.rendererContainer = undefined;
1606
1371
  this.displayArea = undefined;
1607
- this.graphicsHighlight = new (__webpack_require__("8cec").GraphicsHighlight)();
1372
+ this.graphicsHighlight = new (__webpack_require__("5ec5").GraphicsHighlight)();
1608
1373
  this.zincRenderer = null;
1609
1374
  this.selectedScreenCoordinates = new THREE.Vector3();
1610
1375
  this.selectedCenter = undefined;
1611
- }
1612
-
1613
- RendererModule.prototype = Object.create((__webpack_require__("3966").BaseModule).prototype);
1376
+ };
1614
1377
 
1378
+ RendererModule.prototype = Object.create(__webpack_require__("6aa6").BaseModule.prototype);
1615
1379
  /**
1616
1380
  * This function will get the the first intersected object with name or
1617
1381
  * the first glyph object with name.
1618
1382
  */
1619
- RendererModule.prototype.getIntersectedObject = function(intersects) {
1620
- if (intersects) {
1621
- for (var i = 0; i < intersects.length; i++) {
1622
- if (intersects[i] !== undefined) {
1623
- if (intersects[i].object &&
1624
- intersects[i].object.userData &&
1625
- intersects[i].object.userData.isZincObject &&
1626
- (intersects[i].object.name ||
1627
- intersects[i].object.userData.isMarker))
1628
- return intersects[i];
1629
- }
1630
- }
1631
- }
1632
- return undefined;
1633
- }
1634
1383
 
1635
- RendererModule.prototype.getAnnotationsFromObjects = function(objects) {
1636
- var annotations = [];
1637
- for (var i = 0; i < objects.length; i++) {
1638
- var zincObject = objects[i].userData;
1639
- var annotation = undefined;
1640
- if (zincObject) {
1641
- if (zincObject.isGlyph || zincObject.isGlyphset) {
1642
- var glyphset = zincObject;
1643
- if (zincObject.isGlyph)
1644
- glyphset = zincObject.getGlyphset();
1645
- annotation = glyphset.userData ? glyphset.userData[0] : undefined;
1646
- if (annotation && annotation.data) {
1647
- if (objects[i].name && objects[i].name != "")
1648
- annotation.data.id = objects[i].name;
1649
- else
1650
- annotation.data.id = glyphset.groupName;
1651
- }
1652
- } else {
1653
- annotation = zincObject.userData ? zincObject.userData[0] : undefined;
1654
- if (annotation && annotation.data){
1655
- annotation.data.id = objects[i].name;
1656
- }
1384
+ RendererModule.prototype.getIntersectedObject = function (intersects) {
1385
+ if (intersects) {
1386
+ for (var i = 0; i < intersects.length; i++) {
1387
+ if (intersects[i] !== undefined) {
1388
+ 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];
1389
+ }
1390
+ }
1391
+ }
1392
+
1393
+ return undefined;
1394
+ };
1395
+
1396
+ RendererModule.prototype.getAnnotationsFromObjects = function (objects) {
1397
+ var annotations = [];
1398
+
1399
+ for (var i = 0; i < objects.length; i++) {
1400
+ var zincObject = objects[i].userData;
1401
+ var annotation = undefined;
1402
+
1403
+ if (zincObject) {
1404
+ if (zincObject.isGlyph || zincObject.isGlyphset) {
1405
+ var glyphset = zincObject;
1406
+ if (zincObject.isGlyph) glyphset = (_readOnlyError("glyphset"), zincObject.getGlyphset());
1407
+ annotation = glyphset.userData ? glyphset.userData[0] : undefined;
1408
+
1409
+ if (annotation && annotation.data) {
1410
+ if (objects[i].name && objects[i].name != "") annotation.data.id = objects[i].name;else annotation.data.id = glyphset.groupName;
1411
+ }
1412
+ } else {
1413
+ annotation = zincObject.userData ? zincObject.userData[0] : undefined;
1414
+
1415
+ if (annotation && annotation.data) {
1416
+ annotation.data.id = objects[i].name;
1657
1417
  }
1658
1418
  }
1659
- annotations[i] = annotation;
1660
1419
  }
1661
- return annotations;
1662
- }
1663
1420
 
1664
- RendererModule.prototype.setHighlightedByObjects = function(objects, propagateChanges) {
1421
+ annotations[i] = annotation;
1422
+ }
1423
+
1424
+ return annotations;
1425
+ };
1426
+
1427
+ RendererModule.prototype.setHighlightedByObjects = function (objects, propagateChanges) {
1665
1428
  var changed = this.graphicsHighlight.setHighlighted(objects);
1429
+
1666
1430
  if (changed && propagateChanges) {
1667
- var eventType = __webpack_require__("549c").EVENT_TYPE.HIGHLIGHTED;
1431
+ var eventType = __webpack_require__("9b21").EVENT_TYPE.HIGHLIGHTED;
1432
+
1668
1433
  var annotations = this.getAnnotationsFromObjects(objects);
1669
1434
  this.publishChanges(annotations, eventType);
1670
1435
  }
1671
- return changed;
1672
- }
1673
1436
 
1437
+ return changed;
1438
+ };
1674
1439
 
1675
- RendererModule.prototype.setHighlightedByZincObject = function(
1676
- zincObject, propagateChanges) {
1677
- return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1678
- }
1440
+ RendererModule.prototype.setHighlightedByZincObject = function (zincObject, propagateChanges) {
1441
+ return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1442
+ };
1679
1443
 
1680
- RendererModule.prototype.setupLiveCoordinates = function(zincObjects) {
1681
- if (zincObjects && (zincObjects.length > 0)) {
1444
+ RendererModule.prototype.setupLiveCoordinates = function (zincObjects) {
1445
+ if (zincObjects && zincObjects.length > 0) {
1682
1446
  var boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);
1683
- let newSelectedCenter = new THREE.Vector3();
1447
+ var newSelectedCenter = new THREE.Vector3();
1684
1448
  boundingBox.getCenter(newSelectedCenter);
1685
- if (this.selectedCenter == undefined)
1686
- this.selectedCenter = newSelectedCenter;
1687
- else {
1449
+ if (this.selectedCenter == undefined) this.selectedCenter = newSelectedCenter;else {
1688
1450
  this.selectedCenter.x = newSelectedCenter.x;
1689
1451
  this.selectedCenter.y = newSelectedCenter.y;
1690
1452
  }
1691
1453
  } else {
1692
1454
  this.selectedCenter = undefined;
1693
1455
  }
1694
- }
1456
+ };
1695
1457
 
1696
- RendererModule.prototype.objectsToZincObjects = function(objects) {
1458
+ RendererModule.prototype.objectsToZincObjects = function (objects) {
1697
1459
  var zincObjects = [];
1460
+
1698
1461
  for (var i = 0; i < objects.length; i++) {
1699
1462
  var zincObject = objects[i].userData;
1463
+
1700
1464
  if (zincObject) {
1701
1465
  if (zincObject.isGlyph || zincObject.isGlyphset) {
1702
1466
  var glyphset = zincObject;
1703
- if (zincObject.isGlyph)
1704
- glyphset = zincObject.getGlyphset();
1705
- zincObjects. push(glyphset);
1467
+ if (zincObject.isGlyph) glyphset = zincObject.getGlyphset();
1468
+ zincObjects.push(glyphset);
1706
1469
  } else {
1707
- zincObjects. push(zincObject);
1470
+ zincObjects.push(zincObject);
1708
1471
  }
1709
1472
  }
1710
1473
  }
1711
- return zincObjects;
1712
- }
1713
1474
 
1475
+ return zincObjects;
1476
+ };
1714
1477
 
1715
- RendererModule.prototype.setSelectedByObjects = function(
1716
- objects, propagateChanges) {
1478
+ RendererModule.prototype.setSelectedByObjects = function (objects, propagateChanges) {
1717
1479
  var changed = this.graphicsHighlight.setSelected(objects);
1480
+
1718
1481
  if (changed) {
1719
1482
  var zincObjects = this.objectsToZincObjects(objects);
1720
1483
  this.setupLiveCoordinates(zincObjects);
1484
+
1721
1485
  if (propagateChanges) {
1722
- var eventType = __webpack_require__("549c").EVENT_TYPE.SELECTED;
1486
+ var eventType = __webpack_require__("9b21").EVENT_TYPE.SELECTED;
1487
+
1723
1488
  var annotations = this.getAnnotationsFromObjects(objects);
1724
1489
  this.publishChanges(annotations, eventType);
1725
1490
  }
1726
1491
  }
1492
+
1727
1493
  return changed;
1728
- }
1494
+ };
1729
1495
 
1730
- RendererModule.prototype.setSelectedByZincObject = function(
1731
- zincObject, propagateChanges) {
1496
+ RendererModule.prototype.setSelectedByZincObject = function (zincObject, propagateChanges) {
1732
1497
  return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
1733
- }
1498
+ };
1734
1499
 
1735
- var addGlyphToArray = function(objects) {
1736
- return function(glyph) {
1500
+ var addGlyphToArray = function addGlyphToArray(objects) {
1501
+ return function (glyph) {
1737
1502
  objects.push(glyph.getMesh());
1738
- }
1739
- }
1503
+ };
1504
+ };
1740
1505
 
1741
- RendererModule.prototype.findObjectsByGroupName = function(groupName) {
1506
+ RendererModule.prototype.findObjectsByGroupName = function (groupName) {
1742
1507
  var geometries = this.scene.findGeometriesWithGroupName(groupName);
1743
1508
  var objects = [];
1744
- for (var i = 0; i < geometries.length; i ++ ) {
1509
+
1510
+ for (var i = 0; i < geometries.length; i++) {
1745
1511
  objects.push(geometries[i].morph);
1746
1512
  }
1513
+
1747
1514
  var glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);
1748
- for (var i = 0; i < glyphsets.length; i ++ ) {
1749
- glyphsets[i].forEachGlyph(addGlyphToArray(objects));
1515
+
1516
+ for (var _i = 0; _i < glyphsets.length; _i++) {
1517
+ glyphsets[_i].forEachGlyph(addGlyphToArray(objects));
1750
1518
  }
1751
-
1519
+
1752
1520
  return objects;
1753
- }
1521
+ };
1754
1522
 
1755
- RendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {
1523
+ RendererModule.prototype.setHighlightedByGroupName = function (groupName, propagateChanges) {
1756
1524
  var objects = this.findObjectsByGroupName(groupName);
1757
1525
  return this.setHighlightedByObjects(objects, propagateChanges);
1758
- }
1526
+ };
1759
1527
 
1760
- RendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {
1528
+ RendererModule.prototype.setSelectedByGroupName = function (groupName, propagateChanges) {
1761
1529
  var objects = this.findObjectsByGroupName(groupName);
1762
1530
  return this.setSelectedByObjects(objects, propagateChanges);
1763
- }
1531
+ };
1764
1532
 
1765
- RendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {
1533
+ RendererModule.prototype.changeBackgroundColour = function (backgroundColourString) {
1766
1534
  var colour = new THREE.Color(backgroundColourString);
1535
+
1767
1536
  if (this.zincRenderer) {
1768
1537
  var internalRenderer = this.zincRenderer.getThreeJSRenderer();
1769
- internalRenderer.setClearColor( colour, 1 );
1538
+ internalRenderer.setClearColor(colour, 1);
1770
1539
  }
1771
- }
1772
-
1773
- RendererModule.prototype.resetView = function() {
1774
- if (this.zincRenderer)
1775
- this.zincRenderer.resetView();
1776
- }
1777
-
1778
- RendererModule.prototype.viewAll = function() {
1779
- if (this.zincRenderer)
1780
- this.zincRenderer.viewAll();
1781
- }
1540
+ };
1782
1541
 
1542
+ RendererModule.prototype.resetView = function () {
1543
+ if (this.zincRenderer) this.zincRenderer.resetView();
1544
+ };
1545
+
1546
+ RendererModule.prototype.viewAll = function () {
1547
+ if (this.zincRenderer) this.zincRenderer.viewAll();
1548
+ };
1783
1549
  /**
1784
1550
  * Start the animation and let the renderer to processs with
1785
1551
  * time progression
1786
1552
  */
1787
- RendererModule.prototype.playAnimation = function(flag) {
1788
- if (this.zincRenderer)
1789
- this.zincRenderer.playAnimation = flag;
1790
- }
1791
1553
 
1554
+
1555
+ RendererModule.prototype.playAnimation = function (flag) {
1556
+ if (this.zincRenderer) this.zincRenderer.playAnimation = flag;
1557
+ };
1792
1558
  /**
1793
1559
  * Set the speed of playback
1794
1560
  */
1795
- RendererModule.prototype.setPlayRate = function(value) {
1796
- if (this.zincRenderer)
1797
- this.zincRenderer.setPlayRate(value);
1798
- }
1799
1561
 
1562
+
1563
+ RendererModule.prototype.setPlayRate = function (value) {
1564
+ if (this.zincRenderer) this.zincRenderer.setPlayRate(value);
1565
+ };
1800
1566
  /**
1801
1567
  * Get the speed of playback
1802
1568
  */
1803
- RendererModule.prototype.getPlayRate = function(value) {
1804
- if (this.zincRenderer)
1805
- return this.zincRenderer.getPlayRate();
1806
- else
1807
- return 0.0;
1808
- }
1809
-
1810
- /** Initialise everything in the renderer, including the 3D renderer,
1811
- * and picker for the 3D renderer.
1812
- *
1813
- */
1814
- RendererModule.prototype.initialiseRenderer = function(displayAreaIn) {
1569
+
1570
+
1571
+ RendererModule.prototype.getPlayRate = function (value) {
1572
+ if (this.zincRenderer) return this.zincRenderer.getPlayRate();else return 0.0;
1573
+ };
1574
+ /** Initialise everything in the renderer, including the 3D renderer,
1575
+ * and picker for the 3D renderer.
1576
+ *
1577
+ */
1578
+
1579
+
1580
+ RendererModule.prototype.initialiseRenderer = function (displayAreaIn) {
1815
1581
  if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
1816
1582
  var returnedValue = createRenderer();
1817
1583
  this.zincRenderer = returnedValue["renderer"];
1818
1584
  this.rendererContainer = returnedValue["container"];
1819
1585
  }
1586
+
1820
1587
  if (displayAreaIn) {
1821
1588
  this.displayArea = displayAreaIn;
1822
- this.displayArea.appendChild( this.rendererContainer );
1823
- if (this.zincRenderer) {
1824
- this.zincRenderer.animate();
1825
- if (this.toolTip === undefined)
1826
- this.toolTip = new (__webpack_require__("76bf").ToolTip)(this.displayArea);
1827
- }
1828
- }
1829
- }
1589
+ this.displayArea.appendChild(this.rendererContainer);
1590
+ if (this.zincRenderer) this.zincRenderer.animate();
1591
+ }
1592
+ };
1830
1593
 
1831
- RendererModule.prototype.destroy = function() {
1594
+ RendererModule.prototype.destroy = function () {
1832
1595
  if (this.zincRenderer) {
1833
1596
  this.zincRenderer.dispose();
1834
1597
  this.zincRenderer.getThreeJSRenderer().dispose();
1835
1598
  this.zincRenderer = undefined;
1836
1599
  }
1837
- (__webpack_require__("3966").BaseModule).prototype.destroy.call( this );
1838
- }
1839
-
1840
- exports.RendererModule = RendererModule;
1841
-
1842
-
1843
- /***/ }),
1844
-
1845
- /***/ "7c81":
1846
- /***/ (function(module, exports) {
1847
1600
 
1848
- module.exports = require("core-js/modules/es.array.splice");
1849
-
1850
- /***/ }),
1851
-
1852
- /***/ "7d9b":
1853
- /***/ (function(module, exports, __webpack_require__) {
1854
-
1855
- // extracted by mini-css-extract-plugin
1856
-
1857
- /***/ }),
1858
-
1859
- /***/ "7f9f":
1860
- /***/ (function(module, exports) {
1861
-
1862
- module.exports = require("element-ui/lib/locale");
1863
-
1864
- /***/ }),
1865
-
1866
- /***/ "80c4":
1867
- /***/ (function(module, exports) {
1601
+ __webpack_require__("6aa6").BaseModule.prototype.destroy.call(this);
1602
+ };
1868
1603
 
1869
- module.exports = require("element-ui/lib/theme-chalk/option.css");
1604
+ exports.RendererModule = RendererModule;
1870
1605
 
1871
1606
  /***/ }),
1872
1607
 
@@ -1896,146 +1631,6 @@ module.exports = require("element-ui/lib/tabs");
1896
1631
 
1897
1632
  module.exports = require("core-js/modules/es.array.iterator");
1898
1633
 
1899
- /***/ }),
1900
-
1901
- /***/ "8cec":
1902
- /***/ (function(module, exports, __webpack_require__) {
1903
-
1904
- var THREE = __webpack_require__("9206").THREE;
1905
-
1906
- /**
1907
- * This module manages highlighted and selected objects in 3D modules.
1908
- *
1909
- * @class
1910
- * @returns {exports.GraphicsHighlight}
1911
- */
1912
- exports.GraphicsHighlight = function() {
1913
- var currentHighlightedObjects = [];
1914
- var currentSelectedObjects = [];
1915
- this.highlightColour = 0x0000FF;
1916
- this.selectColour = 0x00FF00;
1917
- this.originalColour = 0x000000;
1918
- var _this = this;
1919
-
1920
- var isDifferent = function(array1, array2) {
1921
- if ((array1.length == 0) && (array2.length == 0))
1922
- return false;
1923
-
1924
- for (var i = 0; i < array1.length; i++) {
1925
- var matched = false;
1926
- for (var j = 0; j < array2.length; j++) {
1927
- if (array1[i] === array2[j]) {
1928
- matched = true;
1929
- }
1930
- }
1931
- if (!matched)
1932
- return true;
1933
- }
1934
- for (var i = 0; i < array2.length; i++) {
1935
- var matched = false;
1936
- for (var j = 0; j < array1.length; j++) {
1937
- if (array2[i] === array1[j]) {
1938
- matched = true;
1939
- }
1940
- }
1941
- if (!matched)
1942
- return true;
1943
- }
1944
- return false;
1945
- }
1946
-
1947
- var getUnmatchingObjects = function(objectsArray1, objectsArray2) {
1948
- var unmatchingObjects = [];
1949
- if (objectsArray2.length == 0)
1950
- return objectsArray1;
1951
- for (var i = 0; i < objectsArray1.length; i++) {
1952
- var matched = false;
1953
- for (var j = 0; j < objectsArray2.length; j++) {
1954
- if (objectsArray1[i] === objectsArray2[j]) {
1955
- matched = true;
1956
- }
1957
- }
1958
- if (!matched)
1959
- unmatchingObjects.push(objectsArray1[i]);
1960
- }
1961
- return unmatchingObjects;
1962
- }
1963
-
1964
- this.setHighlighted = function(objects) {
1965
- var previousHighlightedObjects = currentHighlightedObjects;
1966
- _this.resetHighlighted();
1967
- // Selected object cannot be highlighted
1968
- var array = getUnmatchingObjects(objects, currentSelectedObjects);
1969
- var fullList = getFullListOfObjects(array);
1970
- for (var i = 0; i < fullList.length; i++) {
1971
- if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
1972
- fullList[i].material.emissive.setHex(_this.highlightColour);
1973
- }
1974
- currentHighlightedObjects = array;
1975
- return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
1976
- }
1977
-
1978
- this.setSelected = function(objects) {
1979
- // first find highlighted object that are not selected
1980
- var previousHSelectedObjects = currentSelectedObjects;
1981
- var array = getUnmatchingObjects(currentHighlightedObjects, objects);
1982
- currentHighlightedObjects = array;
1983
- _this.resetSelected();
1984
- var fullList = getFullListOfObjects(objects);
1985
- for (var i = 0; i < fullList.length; i++) {
1986
- if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
1987
- fullList[i].material.emissive.setHex(_this.selectColour);
1988
- }
1989
- currentSelectedObjects = objects;
1990
- return isDifferent(currentSelectedObjects, previousHSelectedObjects);
1991
- }
1992
-
1993
- var getFullListOfObjects = function(objects) {
1994
- let fullList = [];
1995
- for (var i = 0; i < objects.length; i++) {
1996
- if (objects[i].material)
1997
- fullList.push(objects[i]);
1998
- }
1999
- return fullList;
2000
- }
2001
-
2002
- this.resetHighlighted = function() {
2003
- let fullList = getFullListOfObjects(currentHighlightedObjects);
2004
- for (var i = 0; i < fullList.length; i++) {
2005
- if (fullList[i] && fullList[i].material) {
2006
- if (fullList[i].material.emissive)
2007
- fullList[i].material.emissive.setHex(_this.originalColour);
2008
- if (fullList[i].material.depthFunc)
2009
- fullList[i].material.depthFunc = THREE.LessEqualDepth;
2010
- }
2011
- }
2012
- currentHighlightedObjects = [];
2013
- }
2014
-
2015
- this.resetSelected = function() {
2016
- let fullList = getFullListOfObjects(currentSelectedObjects);
2017
- for (var i = 0; i < fullList.length; i++) {
2018
- if (fullList[i] && fullList[i].material) {
2019
- if (fullList[i].material.emissive)
2020
- fullList[i].material.emissive.setHex(_this.originalColour);
2021
- if (fullList[i].material.depthFunc)
2022
- fullList[i].material.depthFunc = THREE.LessEqualDepth;
2023
- }
2024
- }
2025
- currentSelectedObjects = [];
2026
- }
2027
-
2028
- this.getSelected = function() {
2029
- return currentSelectedObjects;
2030
- }
2031
-
2032
- this.reset = function() {
2033
- _this.resetSelected();
2034
- _this.resetHighlighted();
2035
- }
2036
- }
2037
-
2038
-
2039
1634
  /***/ }),
2040
1635
 
2041
1636
  /***/ "8f11":
@@ -2084,10 +1679,14 @@ module.exports = require("element-ui/lib/theme-chalk/slider.css");
2084
1679
 
2085
1680
  /***/ }),
2086
1681
 
2087
- /***/ "98e2":
2088
- /***/ (function(module, exports, __webpack_require__) {
1682
+ /***/ "984d":
1683
+ /***/ (function(module, exports) {
2089
1684
 
2090
- // extracted by mini-css-extract-plugin
1685
+ exports.annotation = function () {
1686
+ this.type = "anatomical";
1687
+ this.data = undefined;
1688
+ this.isAnnotation = true;
1689
+ };
2091
1690
 
2092
1691
  /***/ }),
2093
1692
 
@@ -2105,22 +1704,86 @@ module.exports = require("element-ui/lib/theme-chalk/base.css");
2105
1704
 
2106
1705
  /***/ }),
2107
1706
 
2108
- /***/ "9bb0":
2109
- /***/ (function(module, exports) {
1707
+ /***/ "9b21":
1708
+ /***/ (function(module, exports, __webpack_require__) {
2110
1709
 
2111
- module.exports = require("@soda/get-current-script");
1710
+ __webpack_require__("7c81");
1711
+
1712
+ var EVENT_TYPE = {
1713
+ ALL: 0,
1714
+ SELECTED: 1,
1715
+ HIGHLIGHTED: 2
1716
+ };
1717
+
1718
+ var SelectionEvent = function SelectionEvent(eventTypeIn, identifiersIn) {
1719
+ this.eventType = eventTypeIn;
1720
+ this.identifiers = identifiersIn;
1721
+ };
1722
+
1723
+ var returnFullID = function returnFullID(sourceId) {//return full annotations with all different name
1724
+ };
1725
+
1726
+ var Subscription = function Subscription(subscriberIn, callbackIn, eventType) {
1727
+ this.targetedID = [];
1728
+ var subscriber = subscriberIn;
1729
+ var callback = callbackIn;
1730
+ this.targetEventType = eventType;
1731
+
1732
+ var _this = this;
1733
+
1734
+ if (eventType === undefined) this.targetEventType = EVENT_TYPE.ALL;
1735
+
1736
+ this.getEventType = function () {
1737
+ return eventType;
1738
+ };
1739
+
1740
+ this.notify = function (source, eventType, ids) {
1741
+ if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL || _this.targetEventType === eventType)) {
1742
+ //should support different type of id e.g lyph, name, fmas...
1743
+ //need a function that finds all relavant ids
1744
+ var event = new SelectionEvent(eventType, ids);
1745
+ callback(event);
1746
+ }
1747
+ };
1748
+ };
1749
+
1750
+ exports.EventNotifier = function () {
1751
+ var subscriptions = [];
1752
+
1753
+ this.publish = function (source, eventType, id) {
1754
+ for (var i = 0; i < subscriptions.length; i++) {
1755
+ subscriptions[i].notify(source, eventType, id);
1756
+ }
1757
+ };
1758
+
1759
+ this.subscribe = function (subscriber, callbackFunction, eventType) {
1760
+ if (typeof callbackFunction === "function") {
1761
+ var subscription = new Subscription(subscriber, callbackFunction, eventType);
1762
+ subscriptions.push(subscription);
1763
+ return subscription;
1764
+ }
1765
+
1766
+ return undefined;
1767
+ };
1768
+
1769
+ this.unsubscribe = function (subscription) {
1770
+ for (var i = 0; i < subscriptions.length; i++) {
1771
+ if (subscription === subscriptions[i]) {
1772
+ subscriptions.splice(i, 1);
1773
+ return;
1774
+ }
1775
+ }
1776
+ };
1777
+ };
1778
+
1779
+ exports.EVENT_TYPE = EVENT_TYPE;
2112
1780
 
2113
1781
  /***/ }),
2114
1782
 
2115
- /***/ "a0d7":
1783
+ /***/ "9bb0":
2116
1784
  /***/ (function(module, exports) {
2117
1785
 
2118
- exports.annotation = function() {
2119
- this.type = "anatomical";
2120
- this.data = undefined;
2121
- this.isAnnotation = true;
2122
- }
2123
-
1786
+ module.exports = require("@soda/get-current-script");
2124
1787
 
2125
1788
  /***/ }),
2126
1789
 
@@ -2184,13 +1847,6 @@ module.exports = require("element-ui/lib/icon");
2184
1847
 
2185
1848
  /***/ }),
2186
1849
 
2187
- /***/ "b723":
2188
- /***/ (function(module, exports, __webpack_require__) {
2189
-
2190
- // extracted by mini-css-extract-plugin
2191
-
2192
- /***/ }),
2193
-
2194
1850
  /***/ "b777":
2195
1851
  /***/ (function(module, exports) {
2196
1852
 
@@ -2226,10 +1882,84 @@ module.exports = require("element-ui/lib/option");
2226
1882
 
2227
1883
  /***/ }),
2228
1884
 
2229
- /***/ "c45a":
1885
+ /***/ "cf41":
1886
+ /***/ (function(module, exports, __webpack_require__) {
1887
+
1888
+ __webpack_require__("51f7");
1889
+
1890
+ __webpack_require__("bfab");
1891
+
1892
+ /**
1893
+ * @author alteredq / http://alteredqualia.com/
1894
+ * @author mr.doob / http://mrdoob.com/
1895
+ */
1896
+ exports.WEBGL = {
1897
+ isWebGLAvailable: function isWebGLAvailable() {
1898
+ try {
1899
+ var canvas = document.createElement('canvas');
1900
+ return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));
1901
+ } catch (e) {
1902
+ return false;
1903
+ }
1904
+ },
1905
+ isWebGL2Available: function isWebGL2Available() {
1906
+ try {
1907
+ var canvas = document.createElement('canvas');
1908
+ return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2'));
1909
+ } catch (e) {
1910
+ return false;
1911
+ }
1912
+ },
1913
+ getWebGLErrorMessage: function getWebGLErrorMessage() {
1914
+ return this.getErrorMessage(1);
1915
+ },
1916
+ getWebGL2ErrorMessage: function getWebGL2ErrorMessage() {
1917
+ return this.getErrorMessage(2);
1918
+ },
1919
+ getErrorMessage: function getErrorMessage(version) {
1920
+ var names = {
1921
+ 1: 'WebGL',
1922
+ 2: 'WebGL 2'
1923
+ };
1924
+ var contexts = {
1925
+ 1: window.WebGLRenderingContext,
1926
+ 2: window.WebGL2RenderingContext
1927
+ };
1928
+ 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.';
1929
+ var element = document.createElement('div');
1930
+ element.id = 'webglmessage';
1931
+ element.style.fontFamily = 'monospace';
1932
+ element.style.fontSize = '20px';
1933
+ element.style.fontWeight = 'normal';
1934
+ element.style.textAlign = 'center';
1935
+ element.style.background = '#fff';
1936
+ element.style.color = '#000';
1937
+ element.style.padding = '1.5em';
1938
+ element.style.width = '400px';
1939
+ element.style.margin = '5em auto 0';
1940
+
1941
+ if (contexts[version]) {
1942
+ message = message.replace('$0', 'graphics card');
1943
+ } else {
1944
+ message = message.replace('$0', 'browser');
1945
+ }
1946
+
1947
+ message = message.replace('$1', names[version]);
1948
+ element.innerHTML = message;
1949
+ return element;
1950
+ }
1951
+ };
1952
+
1953
+ /***/ }),
1954
+
1955
+ /***/ "da60":
2230
1956
  /***/ (function(module, exports) {
2231
1957
 
2232
- module.exports = require("broadcast-channel");
1958
+ function _readOnlyError(name) {
1959
+ throw new Error("\"" + name + "\" is read-only");
1960
+ }
1961
+
1962
+ module.exports = _readOnlyError;
2233
1963
 
2234
1964
  /***/ }),
2235
1965
 
@@ -2288,12 +2018,12 @@ if (typeof window !== 'undefined') {
2288
2018
  // Indicate to webpack that this file can be concatenated
2289
2019
  /* harmony default export */ var setPublicPath = (null);
2290
2020
 
2291
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1ffffadc-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=cc8106d6&scoped=true&
2021
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"643474d0-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=3d37f502&scoped=true&
2292
2022
  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)}
2293
2023
  var staticRenderFns = []
2294
2024
 
2295
2025
 
2296
- // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=cc8106d6&scoped=true&
2026
+ // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=3d37f502&scoped=true&
2297
2027
 
2298
2028
  // EXTERNAL MODULE: external "core-js/modules/es.array.for-each"
2299
2029
  var es_array_for_each_ = __webpack_require__("139f");
@@ -2392,7 +2122,7 @@ var col_default = /*#__PURE__*/__webpack_require__.n(col_);
2392
2122
  var external_vue_ = __webpack_require__("8bbf");
2393
2123
  var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
2394
2124
 
2395
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1ffffadc-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&
2125
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"643474d0-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
2126
  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
2127
  var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_staticRenderFns = []
2398
2128
 
@@ -2693,7 +2423,7 @@ var component = normalizeComponent(
2693
2423
  )
2694
2424
 
2695
2425
  /* harmony default export */ var OpacityControls = (component.exports);
2696
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1ffffadc-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=b0ace276&scoped=true&
2426
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"643474d0-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=b0ace276&scoped=true&
2697
2427
  var TraditionalControlsvue_type_template_id_b0ace276_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
2428
  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
2429
  var TraditionalControlsvue_type_template_id_b0ace276_scoped_true_staticRenderFns = []
@@ -3496,9 +3226,9 @@ external_vue_default.a.use(slider_default.a);
3496
3226
  external_vue_default.a.use(tab_pane_default.a);
3497
3227
  external_vue_default.a.use(tabs_default.a);
3498
3228
 
3499
- var OrgansViewer = __webpack_require__("67b6").OrgansViewer;
3229
+ var OrgansViewer = __webpack_require__("53d7").OrgansViewer;
3500
3230
 
3501
- var EventNotifier = __webpack_require__("549c").EventNotifier;
3231
+ var EventNotifier = __webpack_require__("9b21").EventNotifier;
3502
3232
  /**
3503
3233
  * A vue component of the scaffold viewer.
3504
3234
  *
@@ -3775,7 +3505,6 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3775
3505
  this.$module.addOrganPartAddedCallback(this.organsAdded);
3776
3506
  this.$module.initialiseRenderer(this.$refs.display);
3777
3507
  this.toggleRendering(this.render);
3778
- this.$module.toolTip = undefined;
3779
3508
  this.ro = new ResizeObserver(this.adjustLayout).observe(this.$refs.scaffoldContainer);
3780
3509
  this.defaultRate = this.$module.getPlayRate();
3781
3510
  },
@@ -3935,6 +3664,13 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
3935
3664
  }
3936
3665
  }
3937
3666
  },
3667
+ getRendererInfo: function getRendererInfo() {
3668
+ if (this.$module.zincRenderer) {
3669
+ return this.$module.zincRenderer.getThreeJSRenderer().info;
3670
+ }
3671
+
3672
+ return undefined;
3673
+ },
3938
3674
 
3939
3675
  /**
3940
3676
  * Function used to rotate the scene.
@@ -4315,8 +4051,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
4315
4051
  });
4316
4052
  // CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=script&lang=js&
4317
4053
  /* harmony default export */ var components_ScaffoldVuervue_type_script_lang_js_ = (ScaffoldVuervue_type_script_lang_js_);
4318
- // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=cc8106d6&scoped=true&lang=scss&
4319
- var ScaffoldVuervue_type_style_index_0_id_cc8106d6_scoped_true_lang_scss_ = __webpack_require__("4ed7");
4054
+ // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=3d37f502&scoped=true&lang=scss&
4055
+ var ScaffoldVuervue_type_style_index_0_id_3d37f502_scoped_true_lang_scss_ = __webpack_require__("27fc");
4320
4056
 
4321
4057
  // EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&
4322
4058
  var ScaffoldVuervue_type_style_index_1_lang_scss_ = __webpack_require__("642d");
@@ -4337,7 +4073,7 @@ var ScaffoldVuer_component = normalizeComponent(
4337
4073
  staticRenderFns,
4338
4074
  false,
4339
4075
  null,
4340
- "cc8106d6",
4076
+ "3d37f502",
4341
4077
  null
4342
4078
 
4343
4079
  )