diff --git a/.env b/.env
index fbd00bd..90e15a7 100644
--- a/.env
+++ b/.env
@@ -2,6 +2,8 @@ REACT_APP_DATA_API=kDTQ7dXUWgRDc9rrbOuXq4ErfSt7PKraPhJGeyGEplbWKKt2scpFD3dQmlxNQ
REACT_APP_DATA_URL=https://hwsrv-1060272.hostwindsdns.com:5000
REACT_APP_DATA_URL_2=https://dead-lime-barnacle-tie.cyclic.app
REACT_APP_DATA_URL_LOCAL_2=https://mirage-mc-backend.onrender.com
-REACT_APP_DATA_URL_LOCAL=http://localhost:5000
+REACT_APP_DATA_URL_LOCAL_3=http://localhost:5000
+REACT_APP_DATA_URL_LOCAL=https://hwsrv-1060272.hostwindsdns.com:5000
REACT_APP_DATA_URL_LOCAL_dev=https://hwsrv-1060272.hostwindsdns.com:5000
-REACT_APP_DATA_DOWNLOAD=https://texastechuniversity-my.sharepoint.com/:x:/g/personal/ngan_v_t_nguyen_ttu_edu/EWEu7l96MQ1Jgu8OBKspIR0BjmY1i0t6XlV6ROPCYcPkkA?download=1
\ No newline at end of file
+REACT_APP_DATA_DOWNLOAD=https://texastechuniversity-my.sharepoint.com/:x:/g/personal/ngan_v_t_nguyen_ttu_edu/EWEu7l96MQ1Jgu8OBKspIR0BjmY1i0t6XlV6ROPCYcPkkA?download=1
+REACT_APP_DATA_APP_VERSION=0.1
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 947d6ff..e743986 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "mirage-mc",
- "version": "0.4.0",
+ "version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mirage-mc",
- "version": "0.4.0",
+ "version": "1.0.0",
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
@@ -32,9 +32,11 @@
"intl": "^1.2.5",
"lodash": "^4.17.21",
"lp-react-virtualized-auto-sizer-react-18": "^1.0.7",
+ "lz-string": "^1.5.0",
"material-react-table": "^2.0.1",
"moment": "^2.29.4",
"notistack": "^2.0.8",
+ "pako": "^2.1.0",
"plotly.js": "^2.18.2",
"react": "^18.2.0",
"react-custom-scrollbars-2": "^4.5.0",
@@ -53,6 +55,7 @@
"react-window": "^1.8.8",
"redux": "^4.2.1",
"redux-undo": "^1.0.1",
+ "shrink-string": "^3.1.9",
"web-vitals": "^2.1.4"
},
"devDependencies": {
@@ -2524,6 +2527,21 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/@eslint/eslintrc/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
"node_modules/@eslint/eslintrc/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -2554,6 +2572,11 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
"node_modules/@eslint/eslintrc/node_modules/type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
@@ -5593,6 +5616,16 @@
"@types/node": "*"
}
},
+ "node_modules/@types/debug": {
+ "version": "4.1.12",
+ "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz",
+ "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/ms": "*"
+ }
+ },
"node_modules/@types/eslint": {
"version": "8.44.2",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.2.tgz",
@@ -5646,6 +5679,16 @@
"@types/node": "*"
}
},
+ "node_modules/@types/hast": {
+ "version": "2.3.10",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz",
+ "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2"
+ }
+ },
"node_modules/@types/hoist-non-react-statics": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
@@ -5945,11 +5988,28 @@
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
"integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
},
+ "node_modules/@types/mdast": {
+ "version": "3.0.15",
+ "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
+ "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2"
+ }
+ },
"node_modules/@types/mime": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
},
+ "node_modules/@types/ms": {
+ "version": "0.7.34",
+ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
+ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/@types/node": {
"version": "18.11.18",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
@@ -6087,6 +6147,13 @@
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz",
"integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g=="
},
+ "node_modules/@types/unist": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
+ "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/@types/use-sync-external-store": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz",
@@ -6607,13 +6674,13 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dependencies": {
"fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
@@ -6637,34 +6704,6 @@
}
}
},
- "node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ajv-formats/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
- "node_modules/ajv-keywords": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
- "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
- "peerDependencies": {
- "ajv": "^6.9.1"
- }
- },
"node_modules/almost-equal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/almost-equal/-/almost-equal-1.1.0.tgz",
@@ -7160,6 +7199,34 @@
"webpack": ">=2"
}
},
+ "node_modules/babel-loader/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/babel-loader/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/babel-loader/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
"node_modules/babel-loader/node_modules/schema-utils": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
@@ -7337,6 +7404,17 @@
"babel-plugin-transform-react-remove-prop-types": "^0.4.24"
}
},
+ "node_modules/bail": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
+ "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -7698,6 +7776,17 @@
"node": ">=10"
}
},
+ "node_modules/character-entities": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz",
+ "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/check-types": {
"version": "11.2.2",
"resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz",
@@ -7933,6 +8022,17 @@
"node": ">= 0.8"
}
},
+ "node_modules/comma-separated-tokens": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
+ "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/commander": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz",
@@ -8322,21 +8422,6 @@
}
}
},
- "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
"node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -8348,11 +8433,6 @@
"ajv": "^8.8.2"
}
},
- "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
"node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -9129,6 +9209,20 @@
"resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
"integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA=="
},
+ "node_modules/decode-named-character-reference": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz",
+ "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "character-entities": "^2.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/dedent": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
@@ -9325,6 +9419,16 @@
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
},
+ "node_modules/diff": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
+ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/diff-sequences": {
"version": "27.5.1",
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz",
@@ -10312,21 +10416,6 @@
"webpack": "^5.0.0"
}
},
- "node_modules/eslint-webpack-plugin/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
"node_modules/eslint-webpack-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -10359,11 +10448,6 @@
"node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0"
}
},
- "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
"node_modules/eslint-webpack-plugin/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -10396,6 +10480,21 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
+ "node_modules/eslint/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
"node_modules/eslint/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -10490,6 +10589,11 @@
"js-yaml": "bin/js-yaml.js"
}
},
+ "node_modules/eslint/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
"node_modules/eslint/node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -10788,6 +10892,13 @@
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
},
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/falafel": {
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz",
@@ -11208,6 +11319,29 @@
}
}
},
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
"node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -11290,6 +11424,11 @@
"node": ">=8"
}
},
+ "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
"node_modules/fork-ts-checker-webpack-plugin/node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -12174,6 +12313,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/hast-util-whitespace": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz",
+ "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
@@ -12586,6 +12736,13 @@
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
},
+ "node_modules/inline-style-parser": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz",
+ "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/internal-slot": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
@@ -12900,6 +13057,13 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-in-browser": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz",
+ "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/is-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
@@ -15376,9 +15540,9 @@
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
"node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/json-stable-stringify-without-jsonify": {
"version": "1.0.1",
@@ -15413,6 +15577,36 @@
"node": ">=0.10.0"
}
},
+ "node_modules/jss": {
+ "version": "10.10.0",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz",
+ "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.3.1",
+ "csstype": "^3.0.2",
+ "is-in-browser": "^1.1.3",
+ "tiny-warning": "^1.0.2"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/jss"
+ }
+ },
+ "node_modules/jss-rtl": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/jss-rtl/-/jss-rtl-0.3.0.tgz",
+ "integrity": "sha512-rg9jJmP1bAyhNOAp+BDZgOP/lMm4+oQ76qGueupDQ68Wq+G+6SGvCZvhIEg8OHSONRWOwFT6skCI+APGi8DgmA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "rtl-css-js": "^1.13.1"
+ },
+ "peerDependencies": {
+ "jss": "^10.0.0"
+ }
+ },
"node_modules/jsx-ast-utils": {
"version": "3.3.5",
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz",
@@ -15647,9 +15841,9 @@
}
},
"node_modules/lz-string": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
- "integrity": "sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==",
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
+ "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==",
"bin": {
"lz-string": "bin/bin.js"
}
@@ -15803,13 +15997,89 @@
"node": ">=0.10.0"
}
},
- "node_modules/mdn-data": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
- "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA=="
+ "node_modules/mdast-util-definitions": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz",
+ "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "unist-util-visit": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
},
- "node_modules/media-typer": {
- "version": "0.3.0",
+ "node_modules/mdast-util-from-markdown": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz",
+ "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "@types/unist": "^2.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "mdast-util-to-string": "^3.1.0",
+ "micromark": "^3.0.0",
+ "micromark-util-decode-numeric-character-reference": "^1.0.0",
+ "micromark-util-decode-string": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "uvu": "^0.5.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-hast": {
+ "version": "12.3.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz",
+ "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-definitions": "^5.0.0",
+ "micromark-util-sanitize-uri": "^1.1.0",
+ "trim-lines": "^3.0.0",
+ "unist-util-generated": "^2.0.0",
+ "unist-util-position": "^4.0.0",
+ "unist-util-visit": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdast-util-to-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz",
+ "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/mdast": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA=="
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
"engines": {
@@ -15858,6 +16128,469 @@
"node": ">= 0.6"
}
},
+ "node_modules/micromark": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz",
+ "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "@types/debug": "^4.0.0",
+ "debug": "^4.0.0",
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-core-commonmark": "^1.0.1",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-combine-extensions": "^1.0.0",
+ "micromark-util-decode-numeric-character-reference": "^1.0.0",
+ "micromark-util-encode": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-resolve-all": "^1.0.0",
+ "micromark-util-sanitize-uri": "^1.0.0",
+ "micromark-util-subtokenize": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.1",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-core-commonmark": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz",
+ "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-factory-destination": "^1.0.0",
+ "micromark-factory-label": "^1.0.0",
+ "micromark-factory-space": "^1.0.0",
+ "micromark-factory-title": "^1.0.0",
+ "micromark-factory-whitespace": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-classify-character": "^1.0.0",
+ "micromark-util-html-tag-name": "^1.0.0",
+ "micromark-util-normalize-identifier": "^1.0.0",
+ "micromark-util-resolve-all": "^1.0.0",
+ "micromark-util-subtokenize": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.1",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-factory-destination": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz",
+ "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-factory-label": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz",
+ "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-factory-space": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz",
+ "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-factory-title": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz",
+ "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-factory-whitespace": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz",
+ "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-factory-space": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-character": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz",
+ "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-chunked": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz",
+ "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-classify-character": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz",
+ "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-combine-extensions": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz",
+ "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-numeric-character-reference": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz",
+ "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-decode-string": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz",
+ "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "decode-named-character-reference": "^1.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-decode-numeric-character-reference": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz",
+ "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true
+ },
+ "node_modules/micromark-util-html-tag-name": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz",
+ "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true
+ },
+ "node_modules/micromark-util-normalize-identifier": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz",
+ "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-resolve-all": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz",
+ "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-types": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-sanitize-uri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz",
+ "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-encode": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0"
+ }
+ },
+ "node_modules/micromark-util-subtokenize": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz",
+ "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true,
+ "dependencies": {
+ "micromark-util-chunked": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0",
+ "micromark-util-types": "^1.0.0",
+ "uvu": "^0.5.0"
+ }
+ },
+ "node_modules/micromark-util-symbol": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz",
+ "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true
+ },
+ "node_modules/micromark-util-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz",
+ "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "peer": true
+ },
"node_modules/micromatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
@@ -15934,21 +16667,6 @@
"webpack": "^5.0.0"
}
},
- "node_modules/mini-css-extract-plugin/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
"node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -15960,11 +16678,6 @@
"ajv": "^8.8.2"
}
},
- "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
"node_modules/mini-css-extract-plugin/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -16054,6 +16767,16 @@
"to-px": "^1.0.1"
}
},
+ "node_modules/mri": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -16261,6 +16984,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/normalize-wheel": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+ "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/notistack": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.8.tgz",
@@ -16603,6 +17333,11 @@
"node": ">=6"
}
},
+ "node_modules/pako": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
+ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
+ },
"node_modules/param-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
@@ -18346,6 +19081,17 @@
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
},
+ "node_modules/property-information": {
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.1.tgz",
+ "integrity": "sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/protobufjs": {
"version": "6.11.4",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz",
@@ -18738,6 +19484,28 @@
"react-dom": ">= 16.3.0"
}
},
+ "node_modules/react-easy-crop": {
+ "version": "4.7.5",
+ "resolved": "https://registry.npmjs.org/react-easy-crop/-/react-easy-crop-4.7.5.tgz",
+ "integrity": "sha512-qKfI4PuhaH1jOLC3DQfQB0cE0z+3N7bfyPkPejQmylXNb8nstfPMH+oHj3gKgpBHLFUiQp/C1rY7sVCVgtjn3Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "normalize-wheel": "^1.0.1",
+ "tslib": "2.0.1"
+ },
+ "peerDependencies": {
+ "react": ">=16.4.0",
+ "react-dom": ">=16.4.0"
+ }
+ },
+ "node_modules/react-easy-crop/node_modules/tslib": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz",
+ "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/react-error-overlay": {
"version": "6.0.11",
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
@@ -18851,6 +19619,45 @@
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
+ "node_modules/react-markdown": {
+ "version": "8.0.7",
+ "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz",
+ "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "@types/prop-types": "^15.0.0",
+ "@types/unist": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-whitespace": "^2.0.0",
+ "prop-types": "^15.0.0",
+ "property-information": "^6.0.0",
+ "react-is": "^18.0.0",
+ "remark-parse": "^10.0.0",
+ "remark-rehype": "^10.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "style-to-object": "^0.4.0",
+ "unified": "^10.0.0",
+ "unist-util-visit": "^4.0.0",
+ "vfile": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "@types/react": ">=16",
+ "react": ">=16"
+ }
+ },
+ "node_modules/react-markdown/node_modules/react-is": {
+ "version": "18.2.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/react-plotly.js": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/react-plotly.js/-/react-plotly.js-2.6.0.tgz",
@@ -19373,6 +20180,39 @@
"node": ">= 0.10"
}
},
+ "node_modules/remark-parse": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz",
+ "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-from-markdown": "^1.0.0",
+ "unified": "^10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/remark-rehype": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz",
+ "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/hast": "^2.0.0",
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-hast": "^12.1.0",
+ "unified": "^10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/remove-accents": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz",
@@ -19633,6 +20473,16 @@
"node": ">=8"
}
},
+ "node_modules/rtl-css-js": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz",
+ "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@babel/runtime": "^7.1.2"
+ }
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -19660,6 +20510,19 @@
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
"integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
},
+ "node_modules/sade": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
+ "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "mri": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/safe-array-concat": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz",
@@ -19797,6 +20660,34 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/schema-utils/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/schema-utils/node_modules/ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "peerDependencies": {
+ "ajv": "^6.9.1"
+ }
+ },
+ "node_modules/schema-utils/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
"node_modules/select-hose": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
@@ -20013,6 +20904,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/shrink-string": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/shrink-string/-/shrink-string-3.1.9.tgz",
+ "integrity": "sha512-fk1x3ovK1kaUotGCGO5Npv/7bKL8Qw7jkPUlqqPK/5U7vCr021SGkrkSu8BuBZxG0f/j4SqR2BN8gJcAtapfIg==",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
@@ -20128,6 +21027,17 @@
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
"deprecated": "Please use @jridgewell/sourcemap-codec instead"
},
+ "node_modules/space-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/spdy": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
@@ -20492,6 +21402,16 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/style-to-object": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz",
+ "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "inline-style-parser": "0.1.1"
+ }
+ },
"node_modules/stylehacks": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz",
@@ -20996,6 +21916,13 @@
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
},
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
+ "dev": true,
+ "peer": true
+ },
"node_modules/tinycolor2": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.5.2.tgz",
@@ -21145,6 +22072,17 @@
"node": ">=8"
}
},
+ "node_modules/trim-lines": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
+ "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/trim-repeated": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz",
@@ -21157,6 +22095,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/trough": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz",
+ "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/tryer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
@@ -21351,6 +22300,19 @@
"is-typedarray": "^1.0.0"
}
},
+ "node_modules/typescript": {
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
"node_modules/unbox-primitive": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
@@ -21401,6 +22363,39 @@
"node": ">=4"
}
},
+ "node_modules/unified": {
+ "version": "10.1.2",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz",
+ "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "bail": "^2.0.0",
+ "extend": "^3.0.0",
+ "is-buffer": "^2.0.0",
+ "is-plain-obj": "^4.0.0",
+ "trough": "^2.0.0",
+ "vfile": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unified/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/unique-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
@@ -21412,6 +22407,90 @@
"node": ">=8"
}
},
+ "node_modules/unist-util-generated": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz",
+ "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==",
+ "dev": true,
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-is": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz",
+ "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-position": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz",
+ "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-stringify-position": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
+ "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz",
+ "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^5.1.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/unist-util-visit-parents": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz",
+ "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -21585,6 +22664,35 @@
"uuid": "dist/bin/uuid"
}
},
+ "node_modules/uvu": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz",
+ "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "dequal": "^2.0.0",
+ "diff": "^5.0.0",
+ "kleur": "^4.0.3",
+ "sade": "^1.7.3"
+ },
+ "bin": {
+ "uvu": "bin.js"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/uvu/node_modules/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "dev": true,
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/v8-to-istanbul": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
@@ -21690,6 +22798,38 @@
"node": ">= 0.8"
}
},
+ "node_modules/vfile": {
+ "version": "5.3.7",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz",
+ "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/vfile-message": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz",
+ "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==",
+ "dev": true,
+ "peer": true,
+ "dependencies": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/vt-pbf": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz",
@@ -21842,21 +22982,6 @@
"webpack": "^4.0.0 || ^5.0.0"
}
},
- "node_modules/webpack-dev-middleware/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
"node_modules/webpack-dev-middleware/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -21868,11 +22993,6 @@
"ajv": "^8.8.2"
}
},
- "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
"node_modules/webpack-dev-middleware/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -21949,21 +23069,6 @@
}
}
},
- "node_modules/webpack-dev-server/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
"node_modules/webpack-dev-server/node_modules/ajv-keywords": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
@@ -21975,11 +23080,6 @@
"ajv": "^8.8.2"
}
},
- "node_modules/webpack-dev-server/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
"node_modules/webpack-dev-server/node_modules/schema-utils": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
@@ -22294,21 +23394,6 @@
"node": ">=10.0.0"
}
},
- "node_modules/workbox-build/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
"node_modules/workbox-build/node_modules/fs-extra": {
"version": "9.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz",
@@ -22323,11 +23408,6 @@
"node": ">=10"
}
},
- "node_modules/workbox-build/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
- },
"node_modules/workbox-build/node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
diff --git a/package.json b/package.json
index bc11c93..16a414c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "mirage-mc",
- "version": "0.4.0",
+ "version": "1.0.0",
"private": true,
"dependencies": {
"@emotion/react": "^11.11.1",
@@ -27,9 +27,11 @@
"intl": "^1.2.5",
"lodash": "^4.17.21",
"lp-react-virtualized-auto-sizer-react-18": "^1.0.7",
+ "lz-string": "^1.5.0",
"material-react-table": "^2.0.1",
"moment": "^2.29.4",
"notistack": "^2.0.8",
+ "pako": "^2.1.0",
"plotly.js": "^2.18.2",
"react": "^18.2.0",
"react-custom-scrollbars-2": "^4.5.0",
@@ -48,6 +50,7 @@
"react-window": "^1.8.8",
"redux": "^4.2.1",
"redux-undo": "^1.0.1",
+ "shrink-string": "^3.1.9",
"web-vitals": "^2.1.4"
},
"scripts": {
diff --git a/src/Providers/Database/Provider.js b/src/Providers/Database/Provider.js
index bfe3660..51b188e 100644
--- a/src/Providers/Database/Provider.js
+++ b/src/Providers/Database/Provider.js
@@ -5,9 +5,18 @@ import {isArray, uniq} from 'lodash';
import full_countries from './data/mirage-mc-v1.countries.json';
import full_location from './data/mirage-mc-v1.locs.json';
import axios from 'axios';
+import lzString from "lz-string";
+import {useDispatch,useSelector} from "react-redux";
+import {
+ setFilters,
+ selectFilters
+} from "../../reducer/streamfilters";
+import {actionCreators} from "../../reducer/actions/selectedList";
+import exportVariable from './data/MIRAGE_exportvariables.csv';
const APIKey = process.env.REACT_APP_DATA_API;
const APIUrl = ((process.env.NODE_ENV === 'production') ? process.env.REACT_APP_DATA_URL : process.env.REACT_APP_DATA_URL_LOCAL);
+const HOMEURL = ((process.env.NODE_ENV === 'production') ? process.env.REACT_APP_DATA_HOMEPAGE : process.env.REACT_APP_DATA_HOMEPAGE_LOCAL);
axios.defaults.headers.common = {
"api-key": APIKey,
@@ -43,6 +52,7 @@ const init = {fields: {value:{stationData:[],
locs_full: {value:full_location},
countries_full: {value:full_countries},
events: {},
+ event_export_list: {value:{}},
loading:false,
error:false,
isInit:false
@@ -51,6 +61,9 @@ const init = {fields: {value:{stationData:[],
const emptyFunc = ()=>{}
const Provider = ({ children }) => {
const [state, dispatch] = useReducer(reducer, init);
+ const filters = useSelector(selectFilters);
+ const eventSelectedData = useSelector(state => Array.from(state.seletedList.items.values( ) ));
+ const dispatchEvent = useDispatch();
useEffect(() => {
const controllerS = new AbortController();
const controllerL = new AbortController();
@@ -62,6 +75,7 @@ const Provider = ({ children }) => {
dispatch({type: 'LOADING_CHANGED', path: 'locs', isLoading: true});
dispatch({type: 'LOADING_CHANGED', path: 'countries', isLoading: true});
dispatch({type: 'LOADING_CHANGED', path: 'fields', isLoading: true});
+ dispatch({type: 'LOADING_CHANGED', path: 'event_export_list', isLoading: true}); // for export
// load data
Promise.all([
axios.get(`${APIUrl}/station/city`,{
@@ -145,6 +159,15 @@ const Provider = ({ children }) => {
// console.timeEnd('-filterdata-');
console.timeEnd('Load and process data');
});
+ // load export list
+ d3csv(exportVariable,(data)=>{
+ const event_export_list={};
+ data.forEach(d=>{
+ if (d["cut from export?"]==="N")
+ event_export_list[d["metadata variables"]]=true;
+ });
+ dispatch({type: 'VALUE_CHANGE', path: 'event_export_list', value: event_export_list, isLoading: false});
+ });
} catch (error) {
dispatch({
type: "ERROR",
@@ -195,9 +218,9 @@ const Provider = ({ children }) => {
},
[state]
);
- const searchByStream = (path,query)=>{
+ const searchByStream = (path,query,cat='stream')=>{
dispatch({type: 'LOADING_CHANGED', path: `search-${path}`, isLoading: true});
- return axios.post(`${APIUrl}/stream/search`,{[path]:query}).then(({data})=> {
+ return axios.post(`${APIUrl}/${cat}/search`,{[path]:query}).then(({data})=> {
dispatch({type: 'VALUE_CHANGE', path: `search-${path}`, value: data.map(d=>d._id), isLoading: false});
}).catch ((error)=> {
dispatch({
@@ -216,9 +239,12 @@ const Provider = ({ children }) => {
[state.events.value]
);
const requestEvents = useCallback(
- (filter,limit) => {
+ (filter,limit,isid) => {
dispatch({type: 'LOADING_CHANGED', path: 'events', isLoading: true});
- axios.post(`${APIUrl}/meta/`, {filter}).then(({data})=> {
+ let query = {filter};
+ if (isid)
+ query={id:filter};
+ axios.post(`${APIUrl}/meta/`, query).then(({data})=> {
dispatch({type: 'VALUE_CHANGE', path: 'events', value:data??[], isLoading: false});
}).catch(error=>{
dispatch({
@@ -289,10 +315,40 @@ const Provider = ({ children }) => {
}
}
const getDownloadData = useCallback((listids)=>{
- return axios.post(`${APIUrl}/meta/`,{id:listids.map(d=>d._id)}).then(({data})=> {
+ return axios.post(`${APIUrl}/meta/`,{id:listids.map(d=>d._id),download:true}).then(({data})=> {
return data;
})
},[state]);
+
+ const getShortenLink = useCallback(()=>{
+ // get filter, ID and seleted event
+ const _data = {filters,ids:eventSelectedData.map(d=>d._id),id:getDetail()};
+ const compressed = lzString.compressToEncodedURIComponent(JSON.stringify(_data));
+ return axios.post(`${APIUrl}/url/`,{data:compressed}).then(({data})=> {
+ return HOMEURL+"?selected="+data._id;
+ })
+ },[state,filters,eventSelectedData]);
+
+ const getDataFromShortenLink = useCallback((id)=>{
+ return axios.get(`${APIUrl}/url/${id}`).then(({data})=> {
+ if (data&&data.data){
+ try{
+ let _data = lzString.decompressFromEncodedURIComponent(data.data);
+ _data = JSON.parse(_data);
+ dispatchEvent(setFilters({value:_data.filters}));
+ if (_data.id)
+ requestDetail(_data.id);
+ requestEvents(_data.filters, 1000);
+ axios.post(`${APIUrl}/meta/`, {id:_data.ids}).then(({data})=> {
+ dispatchEvent(actionCreators.addsToBasket(data));
+ });
+ }catch(e){
+ return null;
+ }
+ }else
+ return null;
+ })
+ },[state]);
const setFuncCollection = useCallback((path,func=emptyFunc)=>{
dispatch({type: 'VALUE_CHANGE', path, value: func, isLoading: false});
@@ -324,6 +380,8 @@ const Provider = ({ children }) => {
requestDetail,
getListError,
getDownloadData,
+ getShortenLink,
+ getDataFromShortenLink,
isLoading
}}>
{children}
diff --git a/src/Providers/Database/data/MIRAGE_exportvariables.csv b/src/Providers/Database/data/MIRAGE_exportvariables.csv
new file mode 100644
index 0000000..0152cc8
--- /dev/null
+++ b/src/Providers/Database/data/MIRAGE_exportvariables.csv
@@ -0,0 +1,85 @@
+metadata variables,cut from export?
+apiVersion,N
+city_id,N
+latitude,N
+longitude,N
+city,N
+country,N
+utcOffset,N
+station,N
+station_id,N
+url,N
+station_name,N
+station_description,N
+station_genre,N
+station_language,N
+station_url,N
+station_format,N
+station_form,N
+station_frequency,N
+annotator,N
+event_id,N
+time_station,N
+stream_title,N
+stream_codec,N
+stream_bitrate,N
+stream_framerate,N
+stream_channels,N
+artist_name,N
+artist_id,N
+artist_followers,Y
+artist_popularity,Y
+artist_genres,Y
+artist_image_url,Y
+track_name,N
+track_id,N
+track_duration,Y
+track_year_released,Y
+track_popularity,Y
+track_loudness,Y
+track_tempo,Y
+track_key,Y
+track_mode,Y
+track_beatsperbar,Y
+track_danceability,Y
+track_speechiness,Y
+track_acousticness,Y
+track_instrumentalness,Y
+track_liveness,Y
+track_energy,Y
+track_valence,Y
+metadata_editdist,N
+artist_qid,N
+wd_artist_name,N
+artist_type,N
+artist_description,N
+wd_artist_genres,N
+artist_startyear,N
+artist_country,N
+artist_coordinates,N
+artist_members,N
+artist_genders,N
+artist_sexualorientations,N
+artist_ethnicities,N
+artist_instruments,N
+artist_voicetypes,N
+artist_website,N
+artist_YouTubeID,N
+artist_MusixmatchID,N
+artist_AZlyricsID,N
+artist_MusicBrainzID,N
+track_qid,N
+wd_track_name,N
+track_description,N
+track_opus,N
+track_form,N
+track_tonality,N
+track_instrumentation,N
+score_url,N
+track_language,N
+track_yearreleased,N
+track_composers,N
+track_lyricists,N
+track_geniusID,N
+track_MusicBrainzID,N
+track_YouTubeID,N
diff --git a/src/Providers/Database/data/mirage-mc-export.json b/src/Providers/Database/data/mirage-mc-export.json
new file mode 100644
index 0000000..3be5ac3
--- /dev/null
+++ b/src/Providers/Database/data/mirage-mc-export.json
@@ -0,0 +1 @@
+[{"variable":"apiVersion","export":true},{"variable":"city_id","export":true},{"variable":"latitude","export":true},{"variable":"longitude","export":true},{"variable":"city","export":true},{"variable":"country","export":true},{"variable":"utcOffset","export":true},{"variable":"station","export":true},{"variable":"station_id","export":true},{"variable":"url","export":true},{"variable":"station_name","export":true},{"variable":"station_description","export":true},{"variable":"station_genre","export":true},{"variable":"station_language","export":true},{"variable":"station_url","export":true},{"variable":"station_format","export":true},{"variable":"station_form","export":true},{"variable":"station_frequency","export":true},{"variable":"annotator","export":true},{"variable":"event_id","export":true},{"variable":"time_station","export":true},{"variable":"stream_title","export":true},{"variable":"stream_codec","export":true},{"variable":"stream_bitrate","export":true},{"variable":"stream_framerate","export":true},{"variable":"stream_channels","export":true},{"variable":"artist_name","export":true},{"variable":"artist_id","export":true},{"variable":"artist_followers","export":false},{"variable":"artist_popularity","export":false},{"variable":"artist_genres","export":false},{"variable":"artist_image_url","export":false},{"variable":"track_name","export":true},{"variable":"track_id","export":true},{"variable":"track_duration","export":false},{"variable":"track_year_released","export":false},{"variable":"track_popularity","export":false},{"variable":"track_loudness","export":false},{"variable":"track_tempo","export":false},{"variable":"track_key","export":false},{"variable":"track_mode","export":false},{"variable":"track_beatsperbar","export":false},{"variable":"track_danceability","export":false},{"variable":"track_speechiness","export":false},{"variable":"track_acousticness","export":false},{"variable":"track_instrumentalness","export":false},{"variable":"track_liveness","export":false},{"variable":"track_energy","export":false},{"variable":"track_valence","export":false},{"variable":"metadata_editdist","export":true},{"variable":"artist_qid","export":true},{"variable":"wd_artist_name","export":true},{"variable":"artist_type","export":true},{"variable":"artist_description","export":true},{"variable":"wd_artist_genres","export":true},{"variable":"artist_startyear","export":true},{"variable":"artist_country","export":true},{"variable":"artist_coordinates","export":true},{"variable":"artist_members","export":true},{"variable":"artist_genders","export":true},{"variable":"artist_sexualorientations","export":true},{"variable":"artist_ethnicities","export":true},{"variable":"artist_instruments","export":true},{"variable":"artist_voicetypes","export":true},{"variable":"artist_website","export":true},{"variable":"artist_YouTubeID","export":true},{"variable":"artist_MusixmatchID","export":true},{"variable":"artist_AZlyricsID","export":true},{"variable":"artist_MusicBrainzID","export":true},{"variable":"track_qid","export":true},{"variable":"wd_track_name","export":true},{"variable":"track_description","export":true},{"variable":"track_opus","export":true},{"variable":"track_form","export":true},{"variable":"track_tonality","export":true},{"variable":"track_instrumentation","export":true},{"variable":"score_url","export":true},{"variable":"track_language","export":true},{"variable":"track_yearreleased","export":true},{"variable":"track_composers","export":true},{"variable":"track_lyricists","export":true},{"variable":"track_geniusID","export":true},{"variable":"track_MusicBrainzID","export":true},{"variable":"track_YouTubeID","export":true}]
\ No newline at end of file
diff --git a/src/Providers/Query/index.js b/src/Providers/Query/index.js
index 1c0e7ed..fab5330 100644
--- a/src/Providers/Query/index.js
+++ b/src/Providers/Query/index.js
@@ -4,12 +4,18 @@ import {useMemo} from "react";
export default function useQuery() {
const { search } = useLocation();
- const {requestDetail} = useDatabase();
+ const {requestDetail, getDataFromShortenLink} = useDatabase();
return useMemo(() => {
- const queryObject = new URLSearchParams(search);
+ const queryObject = new URLSearchParams(window.location.href.split('?')[1]);
+ if (queryObject.get("selected")) {
+ getDataFromShortenLink(queryObject.get("selected"));
+
+ return queryObject;
+ }
if (queryObject.get("id")) {
requestDetail({_id: queryObject.get("id")});
return queryObject;
}
}, [search]);
+
}
\ No newline at end of file
diff --git a/src/assets/logo.png b/src/assets/logo.png
index e90f72e..d83c255 100644
Binary files a/src/assets/logo.png and b/src/assets/logo.png differ
diff --git a/src/assets/logo_mc.png b/src/assets/logo_mc.png
new file mode 100644
index 0000000..e90f72e
Binary files /dev/null and b/src/assets/logo_mc.png differ
diff --git a/src/components/AppHeader/index.js b/src/components/AppHeader/index.js
index 7a19ba4..7ff1e92 100644
--- a/src/components/AppHeader/index.js
+++ b/src/components/AppHeader/index.js
@@ -36,8 +36,10 @@ export default function ({layoutItems,layoutItemsOnChange=()=>{}}){
const handleCloseUserMenu = () => {
setAnchorElUser(null);
};
+
return <>
+ v{process.env.REACT_APP_DATA_APP_VERSION}
dispatch({ type: SET_MENU, opened: true })}>
diff --git a/src/components/Earth/index.js b/src/components/Earth/index.js
index 0de51cd..41a5965 100644
--- a/src/components/Earth/index.js
+++ b/src/components/Earth/index.js
@@ -63,7 +63,6 @@ const Earth3D = forwardRef(({locs,countries,width,height,onSelect,onSelectLegend
},[]);
function handleData({locs,countries}) {
- console.log(locs,countries)
const contriesMap = {};
const range = d3.extent(locs, d => d?.count);
@@ -260,7 +259,7 @@ const Earth3D = forwardRef(({locs,countries,width,height,onSelect,onSelectLegend
getSwitchView(!current);
}}
>
- {getSwitchView()?'Full data':'Demo data'}
+ {getSwitchView()?'All Data':'Reviewed Data'}
semicolor(theme.palette.background.paper)}}>
- Song Info & Visualizations
+ Event Info & Visualizations
{},onDownloadSelectedList=()=>
diff --git a/src/components/EventTable/ShareButton.js b/src/components/EventTable/ShareButton.js
new file mode 100644
index 0000000..2f4c9b0
--- /dev/null
+++ b/src/components/EventTable/ShareButton.js
@@ -0,0 +1,49 @@
+import {Button, TextField, Stack} from "@mui/material";
+import React, {Fragment, useState} from "react";
+import QuestionDialog from '../../components/Dialog';
+
+export default function ShareButton({getUrl}){
+ const [dialogOpen,setDialogOpen] = useState(false);
+ const [url,setUrl] = useState('');
+ const [isProcessing, setIsProcessing] = useState(false)
+
+ const closeDialog = () => {
+ setDialogOpen(false);
+ }
+ const openDialog = () => {
+ setIsProcessing(true);
+ getUrl().then(d=>{
+ setUrl(d);
+ setDialogOpen(true);
+ setIsProcessing(false);
+ }).catch((e)=>{
+ setUrl('');
+ setIsProcessing(false);
+ })
+ }
+ return
+
+
+
+
+ }
+ />
+
+}
\ No newline at end of file
diff --git a/src/components/EventTable/fields.js b/src/components/EventTable/fields.js
index 54e8a19..0841d5c 100644
--- a/src/components/EventTable/fields.js
+++ b/src/components/EventTable/fields.js
@@ -44,11 +44,12 @@ export const fields = [
{
accessorKey: 'artist_name',
header: 'Artist',
+ cat:'artist',
dynamic:true,
},
{
accessorKey: 'track_name',
- header: 'Song',
+ header: 'Event',
dynamic:true,
}
// ,
@@ -61,4 +62,36 @@ export const fields = [
// }
];
export const fieldsWithoutSelected = fields.filter((d,i)=>i);
-export const filterSearch = fields.filter(f=>!f.filterDisable);
\ No newline at end of file
+export const filterSearch = [
+ ...fields.filter(f=>!f.filterDisable),
+ {
+ accessorKey: 'artist_country',
+ header: 'Artist Country ',
+ cat:'artist',
+ dynamic:true,
+ },
+ {
+ accessorKey: 'artist_genres',
+ header: 'Artist Genre ',
+ cat:'artist',
+ dynamic:true,
+ },
+ {
+ accessorKey: 'artist_genders',
+ header: 'Artist Gender',
+ cat:'artist',
+ dynamic:true,
+ },
+ {
+ accessorKey: 'artist_sexualorientations',
+ header: 'Artist Sexualorientations ',
+ cat:'artist',
+ dynamic:true,
+ },
+ {
+ accessorKey: 'artist_ethnicities',
+ header: 'Artist Ethnicities ',
+ cat:'artist',
+ dynamic:true,
+ },
+];
\ No newline at end of file
diff --git a/src/components/EventTable/index.js b/src/components/EventTable/index.js
index 2ca62d7..a96abb2 100644
--- a/src/components/EventTable/index.js
+++ b/src/components/EventTable/index.js
@@ -1,4 +1,4 @@
-import React, {useEffect, useMemo, useRef, useState} from 'react';
+import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
import {MaterialReactTable, MRT_ToolbarAlertBanner} from 'material-react-table';
import Scrollbar from "material-ui-shell/lib/components/Scrollbar";
// import {fields} from "./fields";
@@ -10,11 +10,12 @@ import SaveIcon from '@mui/icons-material/Save';
import {ExportToCsv} from 'export-to-csv';
import {useDatabase} from "../../Providers/Database";
import DownloadOption from "./DownloadOption";
-
+import ShareButton from "./ShareButton";
const EventTable = ({
id = 'tableevent', columns, data, totalData, selectedData, disableAdding,
- isLoadingData, onSelectRow, highlightId, onSendToList, onRemoveFromList
+ isLoadingData, onSelectRow, highlightId, onSendToList, onRemoveFromList,
+ mainurl
}) => {
const [rowSelection, setRowSelection] = useState({});
@@ -24,7 +25,8 @@ const EventTable = ({
// const [data, setData] = useState([]);
const [isLoading, setIsLoading] = useState(false);
const [sorting, setSorting] = useState([]);
- const {getDownloadData} = useDatabase();
+ const {getDownloadData,getShortenLink, getList} = useDatabase();
+ const event_export_list = getList('event_export_list');
useEffect(() => {
//scroll to the top of the table when the sorting changes
@@ -42,14 +44,14 @@ const EventTable = ({
setIsLoading(true)
getDownloadData(rows).then((datadownload) => {
const csvOptions = {
- fieldSeparator: ',',
+ fieldSeparator: '|',
quoteStrings: '"',
decimalSeparator: '.',
showLabels: true,
filename: `mirage-mc-${new Date().toDateString()}`,
useBom: true,
useKeysAsHeaders: true,
- // headers: fields.map((c) => c.accessorKey),
+ headers: Object.keys(event_export_list),
};
const csvExporter = new ExportToCsv(csvOptions);
csvExporter.generateCsv(datadownload);
@@ -96,6 +98,9 @@ const EventTable = ({
csvExporter.generateCsv(datadownload);
setIsLoading(false)
};
+ const handleUrl = useCallback(async() => {
+ return getShortenLink();
+ },[data,mainurl])
// console.log(data)
return (
handleExportRows(totalData)}
onDownloadSelectedList={() => handleExportRows(selectedData)}
/>
+
)
}}
diff --git a/src/components/EventTable/wrapper.js b/src/components/EventTable/wrapper.js
index 0b5c049..a5516ed 100644
--- a/src/components/EventTable/wrapper.js
+++ b/src/components/EventTable/wrapper.js
@@ -6,7 +6,7 @@ import EventTable from "./index";
export default function ({data,isLoadingData,onTogleWin,onSelectRow,highlightId}) {
return semicolor(theme.palette.background.paper),height:'100%',position:'relative'}}>
- Song List
+ Event List
{},...props}) {
+ const [input, setInput] = React.useState('');
+ return {
+ setInput(newValue);
+ onInputChange(event,newValue,reason)
+ }}
+ onBlur={()=>{setInput('')}}
+ {...props}
+ />
+}
\ No newline at end of file
diff --git a/src/components/FilterPanel/SelectionWithOption.js b/src/components/FilterPanel/SelectionWithOption.js
new file mode 100644
index 0000000..50a14e5
--- /dev/null
+++ b/src/components/FilterPanel/SelectionWithOption.js
@@ -0,0 +1,86 @@
+import React, { useEffect } from "react";
+import {Stack, MenuItem, Select,FormControl, TextField, IconButton} from "@mui/material";
+import CancelIcon from '@mui/icons-material/Cancel';
+import CusAutocomplete from "./CusAutocomplete";
+import ListboxComponent from "../ListboxComponent";
+import { useSelector, useDispatch } from "react-redux";
+import {
+ setFilter,
+ deleteFilter,
+ selectFilters
+} from "../../reducer/streamfilters";
+
+const emptyArray = [];
+const emptyObj = {};
+const emptyFunc = ()=>{};
+export default function SelectionWithOption({options=emptyArray,
+ enabled=emptyObj, filterOptionsFunc,
+ cat='',
+ filterOptions,searchByStream,
+ getList, isLoading, logEvents}) {
+ const [f, setF] = React.useState({});
+ const dispatch = useDispatch();
+ const filters = useSelector(selectFilters);
+
+ useEffect(()=>{
+ if (cat!=='')
+ setF(options.find(d=>d.accessorKey===cat));
+ },[cat])
+
+ const handleChange = (event) => {
+ dispatch(setFilter({key:event.target.value,value:[],prekey:cat}));
+ };
+
+ const onDelete = () =>{
+ dispatch(deleteFilter({key:cat}));
+ }
+ return
+
+
+
+
+ d}
+ value={filters[f.accessorKey]??[]}
+ onChange={(event, value) => {
+ if (value!=='' && value && value.length)
+ logEvents('search',{'search_term':value,key:f.accessorKey,})
+ dispatch(setFilter({key:f.accessorKey,value}));
+ }}
+ onInputChange={f.dynamic?((event, newInputValue) => {
+ if (newInputValue&&newInputValue!=='')
+ searchByStream(f.accessorKey,newInputValue,f.cat);
+ }):undefined}
+ renderInput={(params) => (
+
+ )}
+ />
+ {(cat!=='')&&
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/components/FilterPanel/index.js b/src/components/FilterPanel/index.js
index 7d410d4..de28b08 100644
--- a/src/components/FilterPanel/index.js
+++ b/src/components/FilterPanel/index.js
@@ -1,16 +1,16 @@
-import React, {useEffect, useMemo, useState} from "react";
+import React, {useCallback, useEffect, useMemo, useState} from "react";
import { useSelector, useDispatch } from "react-redux";
import {
setFilter,
- setFilters,
- selectFilters
+ selectFiltersList,
+ selectHasEmpty
} from "../../reducer/streamfilters";
import { ActionCreators } from "redux-undo";
-import {Autocomplete, createFilterOptions, Stack, TextField} from "@mui/material";
+import {Button, createFilterOptions, Stack, TextField} from "@mui/material";
import {filterSearch} from "../EventTable/fields";
import {useDatabase} from "../../Providers/Database";
-import ListboxComponent from "../ListboxComponent";
import {useLog} from "../../Providers/Firebase";
+import SelectionWithOption from "./SelectionWithOption";
const OPTIONS_LIMIT = 50;
const defaultFilterOptions = createFilterOptions();
@@ -21,12 +21,21 @@ const filterOptionsFunc = (options, state) => {
export default function FilterPanel() {
- const filters = useSelector(selectFilters);
- const dispatch = useDispatch();
const [filterOptions,setFilterOptions] = useState({});
const {isLoading,searchByStream,getList} = useDatabase();
+ const [categoryOption,setCategoryOption] = useState({});
+ const categoryOptionList = useSelector(selectFiltersList);
+ const hasEmpty = useSelector(selectHasEmpty);
+ const dispatch = useDispatch();
const {logEvents} = useLog();
+ useEffect(()=>{
+ const obj = {};
+ categoryOptionList.forEach(element => {
+ obj[element] = true;
+ });
+ setCategoryOption(obj);
+ },[categoryOptionList])
// useEffect(()=>{
// if (!Object.keys(filters).length) {
// // const newfilters = {};
@@ -42,9 +51,31 @@ export default function FilterPanel() {
useEffect(()=>{
setFilterOptions({...fields});
},[fields])
-
return
- {filterSearch.map(f=>)}
+ {(categoryOptionList.length{
+ debugger
+ dispatch(setFilter({key:''}));
+ }}
+ >
+ Add filter
+ }
+ {/* {filterSearch.map(f=>
)}
- />)}
+ />)} */}
{/**/}
-}
-
-function CusAutocomplete ({onInputChange=()=>{},...props}) {
- const [input, setInput] = React.useState('');
- return {
- setInput(newValue);
- onInputChange(event,newValue,reason)
- }}
- onBlur={()=>{setInput('')}}
- {...props}
- />
}
\ No newline at end of file
diff --git a/src/components/FilterPanel/index_list.js b/src/components/FilterPanel/index_list.js
new file mode 100644
index 0000000..7d410d4
--- /dev/null
+++ b/src/components/FilterPanel/index_list.js
@@ -0,0 +1,101 @@
+import React, {useEffect, useMemo, useState} from "react";
+import { useSelector, useDispatch } from "react-redux";
+import {
+ setFilter,
+ setFilters,
+ selectFilters
+} from "../../reducer/streamfilters";
+import { ActionCreators } from "redux-undo";
+import {Autocomplete, createFilterOptions, Stack, TextField} from "@mui/material";
+import {filterSearch} from "../EventTable/fields";
+import {useDatabase} from "../../Providers/Database";
+import ListboxComponent from "../ListboxComponent";
+import {useLog} from "../../Providers/Firebase";
+
+const OPTIONS_LIMIT = 50;
+const defaultFilterOptions = createFilterOptions();
+
+const filterOptionsFunc = (options, state) => {
+ return defaultFilterOptions(options, state).slice(0, OPTIONS_LIMIT);
+};
+
+
+export default function FilterPanel() {
+ const filters = useSelector(selectFilters);
+ const dispatch = useDispatch();
+ const [filterOptions,setFilterOptions] = useState({});
+ const {isLoading,searchByStream,getList} = useDatabase();
+
+ const {logEvents} = useLog();
+ // useEffect(()=>{
+ // if (!Object.keys(filters).length) {
+ // // const newfilters = {};
+ // // filterSearch.forEach(f=>{
+ // // newfilters[f.accessorKey] = null;
+ // // })
+ // // dispatch(setFilters({value: newfilters}));
+ // ActionCreators.clearHistory();
+ // }
+ // },[]);
+ const fields = getList('fields');
+
+ useEffect(()=>{
+ setFilterOptions({...fields});
+ },[fields])
+
+ return
+ {filterSearch.map(f=> d}
+ value={filters[f.accessorKey]??[]}
+ onChange={(event, value) => {
+ if (value!=='' && value && value.length)
+ logEvents('search',{'search_term':value,key:f.accessorKey,})
+ dispatch(setFilter({key:f.accessorKey,value}));
+ }}
+ onInputChange={f.dynamic?((event, newInputValue) => {
+ if (newInputValue&&newInputValue!=='')
+ searchByStream(f.accessorKey,newInputValue);
+ }):undefined}
+ renderInput={(params) => (
+
+ )}
+ />)}
+ {/* {*/}
+ {/* const val = {...(filters["time_station"] ?? {})};*/}
+ {/* if (value)*/}
+ {/* val[key] = value;*/}
+ {/* else*/}
+ {/* delete val[key];*/}
+ {/* dispatch(setFilter({key:"time_station",value:val}));*/}
+ {/* }}*/}
+ {/*/>*/}
+
+}
+
+function CusAutocomplete ({onInputChange=()=>{},...props}) {
+ const [input, setInput] = React.useState('');
+ return {
+ setInput(newValue);
+ onInputChange(event,newValue,reason)
+ }}
+ onBlur={()=>{setInput('')}}
+ {...props}
+ />
+}
\ No newline at end of file
diff --git a/src/components/MenuHeader/MenuHeader.js b/src/components/MenuHeader/MenuHeader.js
index 62c15b3..65869a4 100644
--- a/src/components/MenuHeader/MenuHeader.js
+++ b/src/components/MenuHeader/MenuHeader.js
@@ -45,7 +45,6 @@ const MenuHeader = () => {
...theme.mixins.toolbar,
},
}
-
return (
{
isOpen={dialogOpen}
handleClose={closeDialog}
isProcessing={isProcessing}
- title={'About us'}
+ title={''}
maxWidth={"md"}
message={<>
- Welcome to the Music Informatics for Radio Across the GlobE (MIRAGE) project! This online dashboard allows you to access, interact with, and export meta data and musicological features from the music found on internet radio.
+ Welcome to the Music Informatics for Radio Across the GlobE (MIRAGE) project! The first development release (v{process.env.REACT_APP_DATA_APP_VERSION}) of this online dashboard allows you to access, interact with, and export meta data and musicological features from the music found on internet radio.
+
+
- The MIRAGE dashboard consists of meta data (e.g., artist name, song title, etc.) for one million songs or events that were streaming on the Radio Garden streaming service during the months October-January 2022-2023. Each of 86 meta data variables pertaining to the location, station, stream, artist, and track was obtained from the Radio Garden API, the Internet Radio Station Stream Encoder, Annotator review, or the Spotify or Wikidata APIs.
+ The MIRAGE dashboard (v{process.env.REACT_APP_DATA_APP_VERSION}) consists of meta data (e.g., artist name, event title, etc.) for one million songs or events that were streaming on the Radio Garden streaming service during the months October-January 2022-2023. Each of 86 meta data variables pertaining to the location, station, stream, artist, and track was obtained from either the Radio Garden API, the internet radio station stream encoder, review by human annotators, or the Spotify and Wikidata APIs.
- If you plan to use any of the data or visualizations available on the MIRAGE dashboard, please cite the following publication:
+ If you are a copyright owner for any of the metadata that appears in MIRAGE and would like us to remove your metadata, please contact the developer team at the following email address: {""}
-
- Sears, David R. W., Goh, Ting Ting, Nguyen, Ngan V. T., and Tommy Dang. (2023). Developing corpora for musical traditions across the globe: Music analysis with the MIRAGE-MetaCorpus. Paper presented at the 46th annual meeting of the Society for Music Theory (SMT), Denver, CO, November 11.
+
+ If you plan to use any of the data or visualizations available on the MIRAGE dashboard, please cite the following publication:
-
- The source code for the MIRAGE dashboard is also available on Github: https://github.com/iDataVisualizationLab/mirage-mc
+
+ {""}
{
const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());
const [layoutItems,setLayoutItems] = useState({
Earth:{key:"Earth View",val:true,disable:true},
- eventList:{key:"Song List",val:true},
- eventDetail:{key:"Song Details",val:true},
- eventMap:{key:"Song List Map",val:true},
+ eventList:{key:"Event List",val:true},
+ eventDetail:{key:"Event Details",val:true},
+ eventMap:{key:"Event List Map",val:true},
mediaDetail:{key:"Listen",val:true},
- eventSelectedList:{key:"Selected Songs",val:true},
- eventListDetail:{key:"Song List Details",val:true},
+ eventSelectedList:{key:"Selected Events",val:true},
+ eventListDetail:{key:"Event List Details",val:true},
});
const toolbarRef = useRef(null);
const layoutRef = useRef(null);
@@ -77,6 +78,7 @@ const LandingPage = () => {
const eventSelectedData = useSelector(state => Array.from(state.seletedList.items.values( ) ));
const {setlocation, logEvents} = useLog();
const query = useQuery();
+ const location = useLocation();
useEffect(()=>{
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition((position)=>{
@@ -97,11 +99,18 @@ const LandingPage = () => {
const isLoadingInit = isLoading('rawData');
const isLoadingEvent = isLoading('events');
const isLoadingLocs = isLoading('locs');
+ const [firstLoad,setFirstLoad] = useState(true);
useEffect(()=>{
if (!isLoadingInit) {
- requestEvents(filters, 1000)
+ if (firstLoad){
+ setFirstLoad(false);
+ if (!(query && query.get("selected")))
+ requestEvents(filters, 1000);
+ } else{
+ requestEvents(filters, 1000);
}
- },[isLoadingInit,filters])
+ }
+ },[isLoadingInit,filters,firstLoad])
const onSelectStream = useCallback((data)=>{
requestDetail(data);
},[getEvents])
@@ -179,25 +188,29 @@ const LandingPage = () => {
children: [
{"type": "row",
children: [
- {
- type: "tabset",
- weight: 50,
+ {"type": "row",
children: [
{
- type: "tab",
- name: "Song List",
- component: "eventList",
- }
- ]
- },
- {
- type: "tabset",
- weight: 50,
- children: [
+ type: "tabset",
+ weight: 50,
+ children: [
+ {
+ type: "tab",
+ name: "Event List",
+ component: "eventList",
+ }
+ ]
+ },
{
- type: "tab",
- name: "Selected Songs",
- component: "eventSelectedList",
+ type: "tabset",
+ weight: 50,
+ children: [
+ {
+ type: "tab",
+ name: "Selected Events",
+ component: "eventSelectedList",
+ }
+ ]
}
]
},
@@ -207,7 +220,7 @@ const LandingPage = () => {
children: [
{
type: "tab",
- name: "Song Detail",
+ name: "Event Detail",
component: "eventDetail",
},{
type: "tab",
@@ -215,17 +228,17 @@ const LandingPage = () => {
component: "mediaDetail",
},{
type: "tab",
- name: "Song List Map",
+ name: "Event List Map",
component: "eventMap",
},
{
type: "tab",
- name: "Song List Detail",
+ name: "Event List Detail",
component: "eventListDetail",
}
]
}
- ]
+ ]
}
]
}
@@ -255,6 +268,7 @@ const LandingPage = () => {
onSendToList={(l)=>dispatch(actionCreators.addsToBasket(l))}
onRemoveFromList={(l)=>dispatch(actionCreators.removeItems(l))}
// onTogleWin={()=>onTogleWin("eventList")}
+ mainurl={location}
/>;
case 'eventListDetail':
return ;
@@ -271,6 +285,7 @@ const LandingPage = () => {
onSendToList={(l)=>dispatch(actionCreators.addsToBasket(l))}
onRemoveFromList={(l)=>dispatch(actionCreators.removeItems(l))}
// onTogleWin={()=>onTogleWin("eventList")}
+ mainurl={location}
/>
case 'eventMap':
return {
+ state.orderList = state.orderList.filter(d=>d!==action.payload.key);
+ state.value[action.payload.key] = [];
+ },
setFilter: (state,action) =>{
- state.value[action.payload.key] = action.payload.value;
-
+ let oindex = state.orderList.indexOf(action.payload.key);
+ if (action.payload.key!==''){
+ // check if filter existed in list
+ if (oindex!=-1){
+ state.value[action.payload.key] = action.payload.value;
+ }else{
+ // check if need to replace
+ let preindex = state.orderList.indexOf(action.payload.prekey);
+ if (preindex!=-1){
+ state.orderList[preindex] = action.payload.key;
+ if(action.payload.prekey !=='')
+ state.value[action.payload.prekey] = []; // remove oldfilter
+ }else{
+ state.orderList.push(action.payload.key);
+ }
+ }
+ state.value[action.payload.key] = action.payload.value;
+ }else{
+ if (oindex==-1){
+ state.orderList.push(action.payload.key);
+ }
+ }
+ state.hasEmpty = state.orderList.indexOf('')!==-1;
},
setFilters: (state,action) => {
state.value = {...action.payload.value};
+ state.orderList = Object.keys(action.payload.value);
+ state.hasEmpty = state.orderList.indexOf('')!==-1;
}
}
});
-export const { setFilter, setFilters } = streamFilters.actions;
+export const { deleteFilter, setFilter, setFilters } = streamFilters.actions;
export const selectFilters = (state) => state.streamFilters.present.value;
+export const selectFiltersList = (state) => state.streamFilters.present.orderList;
+export const selectHasEmpty = (state) => state.streamFilters.present.hasEmpty;
export default streamFilters.reducer
\ No newline at end of file