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