carta-frontend 2.0.0 → 3.0.0-beta.1c

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.
@@ -0,0 +1 @@
1
+ src/static/gitInfo.ts
@@ -0,0 +1,18 @@
1
+ {
2
+ "arrowParens": "avoid",
3
+ "bracketSpacing": false,
4
+ "embeddedLanguageFormatting": "auto",
5
+ "htmlWhitespaceSensitivity": "css",
6
+ "insertPragma": false,
7
+ "jsxBracketSameLine": false,
8
+ "jsxSingleQuote": false,
9
+ "proseWrap": "preserve",
10
+ "quoteProps": "as-needed",
11
+ "requirePragma": false,
12
+ "semi": true,
13
+ "singleQuote": false,
14
+ "trailingComma": "none",
15
+ "useTabs": false,
16
+ "printWidth": 240,
17
+ "tabWidth": 4
18
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,42 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [3.0.0-beta.1b]
8
+
9
+ ### Fixed
10
+ * Fixed crash caused by missing region length calculation.
11
+
12
+ ## [3.0.0-beta.1]
13
+
14
+ ### Added
15
+ * The image view toolbar can be minimized to prevent it from hiding the image view.
16
+ * The last used directory can now be preserved across CARTA sessions.
17
+ * The ability to view multiple images at once in a multi-panel view has been added.
18
+ * Boolean columns are now supported in FITS and VOTable catalogs.
19
+ * Line and poly-line regions can be created. They currently do not have any associated analytic features, but will be used for upcoming PV image features.
20
+ * Additional preferences added: smooth updates of the overlay and adjusting the visibility of the cursor overlay.
21
+ * The image, region and Stokes value can now be changed on the spatial profiler.
22
+ * Multiple images can now be loaded via query parameters, using `?files=[a,b,c]`.
23
+ * The Stokes value can be changed on statistics and histogram widgets.
24
+ * A cursor widget has been added, which displays the cursor position and value for all open images.
25
+ * An experimental JavaScript-based code snippets feature has been added, for scripting CARTA from the frontend. Snippets can be saved, edited and re-executed. The feature can be enabled in the preferences dialog.
26
+ * Added a customizable colorbar to the image view widget, with an interactive mode that highlights pixels above a threshold.
27
+ * A pixel grid is now displayed at high zoom levels. This can be disabled in the image view settings.
28
+ ### Changed
29
+ * The image overlay title can now be customised on a per-image basis.
30
+ * The polarization string (e.g. "Stokes I") is shown instead of the index (e.g. 0).
31
+ * The spectral line query widget now checks the Splatalogue server before displaying.
32
+ * Optimisations to catalog rendering with a large number of data points.
33
+ * Directories displayed in the file browser now have item count and modified date entries.
34
+ ### Fixed
35
+ * Fixed issue with spectral-matched images not being refreshed [(#1571)](https://github.com/CARTAvis/carta-frontend/issues/1571).
36
+ * Fixed issue with image tiles smaller than 4x4 pixels ([#1365](https://github.com/CARTAvis/carta-frontend/issues/1365) and [#1485](https://github.com/CARTAvis/carta-frontend/issues/1485)).
37
+ * Fixed crash when region list is initially too small [(#1598)](https://github.com/CARTAvis/carta-frontend/issues/1598).
38
+ * Fixed region offset errors when matching and unmatching images [(#1293)](https://github.com/CARTAvis/carta-frontend/issues/1293).
39
+ * Fixes progress indicator when displaying multiple spectral profiles [(#1429)](https://github.com/CARTAvis/carta-frontend/issues/1429)
40
+ * Fixed minor input issues with the catalog widget ([#1505](https://github.com/CARTAvis/carta-frontend/issues/1505) and [#1544](https://github.com/CARTAvis/carta-frontend/issues/1544)).
41
+ * Fixed minor rendering issues on image edges [(#666)](https://github.com/CARTAvis/carta-frontend/issues/666).
42
+ * Fixed anchor rendering issue with rotated regions [(#1208)](https://github.com/CARTAvis/carta-frontend/issues/1208).
package/Jenkinsfile ADDED
@@ -0,0 +1,70 @@
1
+ pipeline {
2
+ agent none
3
+ stages {
4
+ stage('Format check') {
5
+ agent {
6
+ label "ubuntu-1"
7
+ }
8
+ steps {
9
+ catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
10
+ sh "git submodule update --init --recursive"
11
+ sh "n 12"
12
+ sh "n 14"
13
+ sh "n 16"
14
+ sh "n exec 14 npm install"
15
+ sh "n exec 14 npm run checkformat"
16
+ }
17
+ }
18
+ }
19
+ stage('WebAssembly compilation') {
20
+ agent {
21
+ label "ubuntu-1"
22
+ }
23
+ steps {
24
+ catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
25
+ sh "git submodule update --init --recursive"
26
+ sh "n exec 14 npm run build-libs-docker"
27
+ }
28
+ }
29
+ }
30
+ stage('Build with node v12') {
31
+ agent {
32
+ label "ubuntu-1"
33
+ }
34
+ steps {
35
+ catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
36
+ sh 'rm -rf node_modules build'
37
+ sh 'n exec 12 node -v'
38
+ sh 'n exec 12 npm install'
39
+ sh 'n exec 12 npm run build-docker'
40
+ }
41
+ }
42
+ }
43
+ stage('Build with node v14') {
44
+ agent {
45
+ label "ubuntu-1"
46
+ }
47
+ steps {
48
+ catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
49
+ sh 'rm -rf node_modules build'
50
+ sh 'n exec 14 node -v'
51
+ sh 'n exec 14 npm install'
52
+ sh 'n exec 14 npm run build-docker'
53
+ }
54
+ }
55
+ }
56
+ stage('Build with node v16') {
57
+ agent {
58
+ label "ubuntu-1"
59
+ }
60
+ steps {
61
+ catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
62
+ sh 'rm -rf node_modules build'
63
+ sh 'n exec 16 node -v'
64
+ sh 'n exec 16 npm install'
65
+ sh 'n exec 16 npm run build-docker'
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
package/README.md CHANGED
@@ -1,10 +1,86 @@
1
1
  # CARTA Frontend
2
+ The CARTA frontend is used in conjunction with the [CARTA backend](https://github.com/CARTAvis/carta-backend), and for general use a pre-built production frontend is usually installed alongside the backend automatically. However, a user may wish to install the frontend component separately in order to test beta versions, for example, or to develop it.
3
+
4
+ ## Pre-built production packages
5
+ The simplest way to install the frontend component is to use the pre-built production packages from NPM (for any OS with Node.js installed), our PPA (Debian packages for Ubuntu), or our RPM repository (for RHEL based systems).
6
+
7
+ ### NPM
8
+
9
+ Pre-built production frontends can be obtained from the [npmjs.com carta-frontend repository](https://www.npmjs.com/package/carta-frontend?activeTab=explore).
10
+
11
+ If you have Node.js and `npm` already installed on your system, you can install a production frontend using the following command:
12
+
13
+ ```
14
+ npm i carta-frontend
15
+ ```
16
+ The files will be installed to your `node-modules` directory. For a system-wide 'global' installation (using the `-g` flag) this is located at `/usr/lib/node_modules`, whereas for a local user installation, it is located at `$PWD/node_modules`.
17
+
18
+ You can install specific frontend versions by appending `@` plus the version number. For example,
19
+ ```
20
+ npm i carta-frontend@1.4.0
21
+ npm i carta-frontend@2.0.0-beta.0
22
+ ```
23
+ The available versions are listed in the [npmjs.com carta-frontend versions tab](https://www.npmjs.com/package/carta-frontend?activeTab=versions).
24
+
25
+ Alternatively, the pre-built production frontend can be downloaded directly without npm. For example,
26
+ ```
27
+ wget https://registry.npmjs.org/carta-frontend/-/carta-frontend-2.0.0.tgz
28
+ ```
29
+ The standalone `tgz` archive file extracts as `package/build` in your current directory.
30
+
31
+ You can start the CARTA backend with a non-default frontend by specifying its location with the `--frontend_folder` flag. For example,
32
+ ```
33
+ ./carta-backend --frontend_folder $HOME/package/build
34
+ ```
35
+
36
+ ### PPA
37
+
38
+ A Personal Package Archive (PPA) is a third-party package repository for Ubuntu. We supply pre-built production frontends at the [CARTAvis-team PPA on the Ubuntu Lauchpad](https://launchpad.net/~cartavis-team/+archive/ubuntu/carta).
39
+
40
+ To install the latest release version:
41
+ ```
42
+ sudo add-apt-repository ppa:cartavis-team/carta
43
+ sudo apt-get update
44
+ sudo apt-get install carta-frontend
45
+ ```
46
+
47
+ The Ubuntu package install location for the frontend is `/usr/share/carta/frontend/`.
48
+
49
+ The PPA also provides a `carta` metapackage which automatically installs the CARTA frontend and backend packages. In addition to the latest release versions, beta versions are provided in a parallel set of packages.
50
+
51
+
52
+ ### RPM
53
+
54
+ RPMs are for users of Red Hat Enterprise Linux (RHEL) and other Red Hat-based Linux distributions, e.g. CentOS.
55
+ To install the latest release version, add the appropriate repository file depending on whether you are using RHEL7 (**el7**) or RHEL8 (**el8**):
56
+
57
+ ```
58
+ sudo curl https://packages.cartavis.org/cartavis-el7.repo --output /etc/yum.repos.d/cartavis.repo
59
+ ```
60
+ or
61
+ ```
62
+ sudo curl https://packages.cartavis.org/cartavis-el8.repo --output /etc/yum.repos.d/cartavis.repo
63
+ ```
64
+ Then the frontend component can be installed using `yum` or `dnf` :
65
+ ```
66
+ sudo yum install carta-frontend
67
+ ```
68
+ The RPM package install location for the frontend is `/usr/share/carta/frontend/`.
69
+
70
+ The RPM repo also provides a `carta` metapackage which automatically installs the CARTA frontend and backend packages. In addition to the latest release versions, beta versions are provided in a parallel set of packages.
71
+
72
+
73
+ ## Development
74
+
75
+ If you wish to modify or develop the CARTA frontend, you may build a production or non-production frontend from source. Here are the instructions to do so:
76
+
77
+ ### Prerequisites
2
78
 
3
- ## Prerequisites
4
79
  The build process relies heavily on `npm` and `nodejs`, so make sure they are installed and accessible.
80
+
5
81
  We recommend using [Docker](https://www.docker.com) or [Singularity](https://singularity.lbl.gov/index.html) to perform WebAssembly compilation. If neither is available, the Emscripten compiler (`emcc` version 2.0.14 recommended) needs to be available in the build environment. Installation instructions are available on the [Emscripten homepage](https://emscripten.org/docs/getting_started/downloads.html).
6
82
 
7
- ## Build process (using Docker/Singularity)
83
+ ### Build process (using Docker/Singularity)
8
84
  Initialise submodules and install package dependencies:
9
85
  ```
10
86
  git submodule update --init --recursive
@@ -15,7 +91,7 @@ Additional build steps (building WebAssembly wrappers, protocol buffer modules a
15
91
 
16
92
  To run a development build server, simply run `npm run start`.
17
93
 
18
- ## Build process (without Docker/Singularity)
94
+ ### Build process (without Docker/Singularity)
19
95
  If your build environment does not have access to Docker or Singularity, WebAssembly compilation must be performed in an environment with access to the Emscripten compiler.
20
96
 
21
97
  Initialise submodules and install package dependencies:
@@ -1,15 +1,19 @@
1
1
  {
2
2
  "files": {
3
- "main.css": "./static/css/main.446f8759.chunk.css",
4
- "main.js": "./static/js/main.71a39348.chunk.js",
5
- "runtime-main.js": "./static/js/runtime-main.0687ce34.js",
6
- "static/css/2.88a55659.chunk.css": "./static/css/2.88a55659.chunk.css",
7
- "static/js/2.7eab14dd.chunk.js": "./static/js/2.7eab14dd.chunk.js",
3
+ "main.css": "./static/css/main.c396310f.chunk.css",
4
+ "main.js": "./static/js/main.c0f6fe84.chunk.js",
5
+ "runtime-main.js": "./static/js/runtime-main.c4bb6207.js",
6
+ "static/css/2.d176c5ad.chunk.css": "./static/css/2.d176c5ad.chunk.css",
7
+ "static/js/2.e697545c.chunk.js": "./static/js/2.e697545c.chunk.js",
8
+ "static/css/3.1d71649c.chunk.css": "./static/css/3.1d71649c.chunk.css",
9
+ "static/js/3.37b03226.chunk.js": "./static/js/3.37b03226.chunk.js",
10
+ "static/css/4.0a1702fa.chunk.css": "./static/css/4.0a1702fa.chunk.css",
11
+ "static/js/4.b06369bf.chunk.js": "./static/js/4.b06369bf.chunk.js",
12
+ "static/js/5.cc89868a.chunk.js": "./static/js/5.cc89868a.chunk.js",
8
13
  "index.html": "./index.html",
9
- "static/js/2.7eab14dd.chunk.js.LICENSE.txt": "./static/js/2.7eab14dd.chunk.js.LICENSE.txt",
10
- "static/js/index.a2da4ca9.worker.js": "./static/js/index.a2da4ca9.worker.js",
11
- "static/media/allmaps.png": "./static/media/allmaps.ac43eb19.png",
12
- "static/media/carta_logo.png": "./static/media/carta_logo.5ec2e273.png",
14
+ "static/js/2.e697545c.chunk.js.LICENSE.txt": "./static/js/2.e697545c.chunk.js.LICENSE.txt",
15
+ "static/js/index.4b3485c5.worker.js": "./static/js/index.4b3485c5.worker.js",
16
+ "static/media/allmaps.ac43eb19.png": "./static/media/allmaps.ac43eb19.png",
13
17
  "static/media/catalogue_selection_button.6c5c75ad.png": "./static/media/catalogue_selection_button.6c5c75ad.png",
14
18
  "static/media/catalogue_selection_button_d.d60042bc.png": "./static/media/catalogue_selection_button_d.d60042bc.png",
15
19
  "static/media/contour_button.57f566f7.png": "./static/media/contour_button.57f566f7.png",
@@ -24,7 +28,7 @@
24
28
  "static/media/demo_image_overlay_orientation_mapping_d.aaadbb04.png": "./static/media/demo_image_overlay_orientation_mapping_d.aaadbb04.png",
25
29
  "static/media/export_png_button.ad3d7040.png": "./static/media/export_png_button.ad3d7040.png",
26
30
  "static/media/export_png_button_d.3314b4ac.png": "./static/media/export_png_button_d.3314b4ac.png",
27
- "static/media/gamma.png": "./static/media/gamma.90eaaa41.png",
31
+ "static/media/gamma.90eaaa41.png": "./static/media/gamma.90eaaa41.png",
28
32
  "static/media/head_animator_button.cfa001f3.png": "./static/media/head_animator_button.cfa001f3.png",
29
33
  "static/media/head_animator_button_d.5f3989e8.png": "./static/media/head_animator_button_d.5f3989e8.png",
30
34
  "static/media/head_catalogue_button.89097734.png": "./static/media/head_catalogue_button.89097734.png",
@@ -62,9 +66,9 @@
62
66
  "static/media/image_overlay_demo_d.c9072eba.png": "./static/media/image_overlay_demo_d.c9072eba.png",
63
67
  "static/media/image_tools.3b0bc13d.png": "./static/media/image_tools.3b0bc13d.png",
64
68
  "static/media/image_tools_d.86185081.png": "./static/media/image_tools_d.86185081.png",
65
- "static/media/linear.png": "./static/media/linear.a0a2adc3.png",
66
- "static/media/log.png": "./static/media/log.1b868671.png",
67
- "static/media/power.png": "./static/media/power.67af1163.png",
69
+ "static/media/linear.a0a2adc3.png": "./static/media/linear.a0a2adc3.png",
70
+ "static/media/log.1b868671.png": "./static/media/log.1b868671.png",
71
+ "static/media/power.67af1163.png": "./static/media/power.67af1163.png",
68
72
  "static/media/region_button.a95e8b71.png": "./static/media/region_button.a95e8b71.png",
69
73
  "static/media/region_button_d.7533887d.png": "./static/media/region_button_d.7533887d.png",
70
74
  "static/media/smoothing_SG.51c7ccc2.png": "./static/media/smoothing_SG.51c7ccc2.png",
@@ -79,8 +83,9 @@
79
83
  "static/media/smoothing_gaussian_d.1d6a6c39.png": "./static/media/smoothing_gaussian_d.1d6a6c39.png",
80
84
  "static/media/smoothing_hanning.a9ee32b3.png": "./static/media/smoothing_hanning.a9ee32b3.png",
81
85
  "static/media/smoothing_hanning_d.068e1feb.png": "./static/media/smoothing_hanning_d.068e1feb.png",
82
- "static/media/sqrt.png": "./static/media/sqrt.c22078c4.png",
83
- "static/media/squared.png": "./static/media/squared.c3b27aed.png",
86
+ "static/media/splatalogue_logo.3ba0579e.png": "./static/media/splatalogue_logo.3ba0579e.png",
87
+ "static/media/sqrt.c22078c4.png": "./static/media/sqrt.c22078c4.png",
88
+ "static/media/squared.c3b27aed.png": "./static/media/squared.c3b27aed.png",
84
89
  "static/media/under_construction.b72aea0a.png": "./static/media/under_construction.b72aea0a.png",
85
90
  "static/media/wcs_match_button.0c2c1335.png": "./static/media/wcs_match_button.0c2c1335.png",
86
91
  "static/media/wcs_match_button_d.9bf58e92.png": "./static/media/wcs_match_button_d.9bf58e92.png",
@@ -88,10 +93,10 @@
88
93
  "static/media/zoom_button_d.5312a073.png": "./static/media/zoom_button_d.5312a073.png"
89
94
  },
90
95
  "entrypoints": [
91
- "static/js/runtime-main.0687ce34.js",
92
- "static/css/2.88a55659.chunk.css",
93
- "static/js/2.7eab14dd.chunk.js",
94
- "static/css/main.446f8759.chunk.css",
95
- "static/js/main.71a39348.chunk.js"
96
+ "static/js/runtime-main.c4bb6207.js",
97
+ "static/css/2.d176c5ad.chunk.css",
98
+ "static/js/2.e697545c.chunk.js",
99
+ "static/css/main.c396310f.chunk.css",
100
+ "static/js/main.c0f6fe84.chunk.js"
96
101
  ]
97
102
  }
Binary file
Binary file
package/build/index.html CHANGED
@@ -1 +1,5 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#000000"><link rel="manifest" href="./manifest.json"><link rel="shortcut icon" href="./carta_icon_128px.png"><title>CARTA</title><link href="./static/css/2.88a55659.chunk.css" rel="stylesheet"><link href="./static/css/main.446f8759.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,a,f=r[0],l=r[1],i=r[2],p=0,s=[];p<f.length;p++)a=f[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(c&&c(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,f=1;f<t.length;f++){var l=t[f];0!==o[l]&&(n=!1)}n&&(u.splice(r--,1),e=a(a.s=t[0]))}return e}var n={},o={1:0},u=[];function a(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.m=e,a.c=n,a.d=function(e,r,t){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)a.d(t,n,function(r){return e[r]}.bind(null,n));return t},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="./";var f=this["webpackJsonpcarta-frontend"]=this["webpackJsonpcarta-frontend"]||[],l=f.push.bind(f);f.push=r,f=f.slice();for(var i=0;i<f.length;i++)r(f[i]);var c=l;t()}([])</script><script src="./static/js/2.7eab14dd.chunk.js"></script><script src="./static/js/main.71a39348.chunk.js"></script></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#000000"><link rel="manifest" href="./manifest.json"><link rel="shortcut icon" href="./carta_icon_128px.png"><title>CARTA</title><style>.static-text{font-size:14px;font-weight:400;letter-spacing:0;line-height:1.28581;text-transform:none;color:#182026;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Open Sans","Helvetica Neue",Icons16,sans-serif}.static-pre{color:#182026;font-size:14px;white-space:pre-line}.static-overlay{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;height:400px;width:650px}.loading-div{width:650px;height:400px;background:#f5f8fa;text-align:center;padding:15px;box-shadow:0 0 0 1px rgba(16,22,26,.1),0 4px 8px rgba(16,22,26,.1),0 18px 46px 6px rgba(16,22,26,.1);border-radius:6px;border:2px solid #5480b7;box-sizing:border-box}.static-spinner{align-items:center;display:flex;justify-content:center;vertical-align:middle;margin:20px}.static-spinner-animation{width:30px;height:30px;animation:static-spinner-animation .5s linear infinite}@keyframes static-spinner-animation{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.static-spinner-track{fill-opacity:0;stroke:rgba(92,112,128,.2);stroke-width:8px}.static-spinner-head{fill-opacity:0;stroke:rgba(43,149,214,.8);stroke-width:13px}.loading-text{animation:cssAnimation 5s forwards;opacity:0}@keyframes cssAnimation{0%{opacity:0}90%{opacity:0}100%{opacity:1}}</style><link href="./static/css/2.d176c5ad.chunk.css" rel="stylesheet"><link href="./static/css/main.c396310f.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"><div class="static-overlay"><div class="loading-div"><img src="carta_logo.png" width="150" height="175" alt="CARTA"><div class="static-spinner"><div class="static-spinner-animation"><svg width="30" height="30" viewBox="-1.67 -1.67 103.33 103.33"><path class="static-spinner-track" d="M 50,50 m 0,-45 a 45,45 0 1 1 0,90 a 45,45 0 1 1 0,-90"/><path class="static-spinner-head" d="M 50,50 m 0,-45 a 45,45 0 1 1 0,90 a 45,45 0 1 1 0,-90" pathLength="280" stroke-dasharray="280 280" stroke-dashoffset="210"/></svg></div></div><div class="loading-text"><p class="static-text">Loading CARTA. If this message does not disappear, please <a href="https://refreshyourcache.com/en/cache/">hard-reload</a> this site in your browser using the shortcut below:</p><pre class="static-pre">
2
+ MacOS: Cmd + R
3
+ Linux: Ctrl + Shift + R
4
+ Windows: Ctrl + F5
5
+ </pre></div></div></div></div><script>!function(e){function t(t){for(var n,o,i=t[0],c=t[1],l=t[2],s=0,p=[];s<i.length;s++)o=i[s],Object.prototype.hasOwnProperty.call(a,o)&&a[o]&&p.push(a[o][0]),a[o]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(t);p.length;)p.shift()();return u.push.apply(u,l||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var c=r[o];0!==a[c]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={1:0},a={1:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{3:1,4:1}[e]&&t.push(o[e]=new Promise((function(t,r){for(var n="static/css/"+({}[e]||e)+"."+{3:"1d71649c",4:"0a1702fa",5:"31d6cfe0"}[e]+".chunk.css",a=i.p+n,u=document.getElementsByTagName("link"),c=0;c<u.length;c++){var l=(f=u[c]).getAttribute("data-href")||f.getAttribute("href");if("stylesheet"===f.rel&&(l===n||l===a))return t()}var s=document.getElementsByTagName("style");for(c=0;c<s.length;c++){var f;if((l=(f=s[c]).getAttribute("data-href"))===n||l===a)return t()}var p=document.createElement("link");p.rel="stylesheet",p.type="text/css",p.onload=t,p.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.code="CSS_CHUNK_LOAD_FAILED",u.request=n,delete o[e],p.parentNode.removeChild(p),r(u)},p.href=a,document.getElementsByTagName("head")[0].appendChild(p)})).then((function(){o[e]=0})));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=a[e]=[t,n]}));t.push(r[2]=n);var u,c=document.createElement("script");c.charset="utf-8",c.timeout=120,i.nc&&c.setAttribute("nonce",i.nc),c.src=function(e){return i.p+"static/js/"+({}[e]||e)+"."+{3:"37b03226",4:"b06369bf",5:"cc89868a"}[e]+".chunk.js"}(e);var l=new Error;u=function(t){c.onerror=c.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",l.name="ChunkLoadError",l.type=n,l.request=o,r[1](l)}a[e]=void 0}};var s=setTimeout((function(){u({type:"timeout",target:c})}),12e4);c.onerror=c.onload=u,document.head.appendChild(c)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="./",i.oe=function(e){throw console.error(e),e};var c=this["webpackJsonpcarta-frontend"]=this["webpackJsonpcarta-frontend"]||[],l=c.push.bind(c);c.push=t,c=c.slice();for(var s=0;s<c.length;s++)t(c[s]);var f=l;r()}([])</script><script src="./static/js/2.e697545c.chunk.js"></script><script src="./static/js/main.c0f6fe84.chunk.js"></script></body></html>