@abi-software/scaffoldvuer 0.1.50 → 0.1.51

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