diff --git a/.github/workflows/buildah.yml b/.github/workflows/buildah.yml new file mode 100644 index 0000000..a5259d5 --- /dev/null +++ b/.github/workflows/buildah.yml @@ -0,0 +1,18 @@ +name: Buildah via Dockerfile +on: [push] + +jobs: + build: + name: Build image + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Buildah Action + uses: redhat-actions/buildah-build@v2.2 + with: + image: eaglescope-edge + tags: v1 ${{ github.sha }} + dockerfiles: | + ./Dockerfile diff --git a/.gitignore b/.gitignore index dab2e77..9d067d2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ .vscode/ .cache/ node_modules/ +dist/ build .DS_Store *.tgz diff --git a/Dockerfile b/Dockerfile index 3caecf7..829ade2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,25 @@ from node:8-alpine - +RUN npm config set unsafe-perm true RUN npm install -g http-server RUN npm install -g parcel-bundler -EXPOSE 80 +EXPOSE 1180 RUN mkdir -p /source/ COPY ./ /source/ WORKDIR /source/ RUN rm -rf ./.git/ + +RUN npm install RUN npm run-script build RUN mkdir -p /var/www/html/ RUN mv /source/dist/* /var/www/html RUN mv /source/treemap /var/www/html RUN mv /source/data /var/www/html +RUN cp -r /source/config /var/www/html WORKDIR /var/www/html/ -CMD http-server -p 80 +RUN chgrp -R 0 /var/www/html/ +RUN chmod -R g+rwX /var/www/html/ + +USER 1001 + +CMD http-server -p 1180 diff --git a/config/vis-config.json b/config/vis-config.json index 6848333..e419a50 100644 --- a/config/vis-config.json +++ b/config/vis-config.json @@ -2,7 +2,7 @@ "HEIGHT_OF_VIS_HEADER": 30, "MARGIN_OF_VIS": [10, 10], - "UNIT_OF_GRID_VIEW": [220,200], + "UNIT_OF_GRID_VIEW": [224,200], "MARGIN_OF_GRID_VIEW": [10, 10], "DATA_RESOURCE_URL":"https://pathdb.cancerimagingarchive.net/pathdb/sparql?format=csv&query=prefix+%3A+%3Chttps%3A%2F%2Fbmi.stonybrookmedicine.edu%2Ftil%2Fns%2F%3E%0ASELECT+*+WHERE+{graph+%3Chttps%3A%2F%2Fbmi.stonybrookmedicine.edu%2Ftil%3E+{%0A++++%3Fsss+%3APathDBID+%3FPathDBID%3B+%3Aclinicaltrialsubjectid+%3FslideID+.+%3Fss+%3Asubmitter_id+%3Fsubmitter_id%3B+%3Apercent_pos+%3Fpercent_pos%3B+%3ATIL_classhalf+%3FTIL_classhalf%3B+%3Acollapsed_stage+%3Fcollapsed_stage%3B+%3AsurvivalB+%3FsurvivalB+.+%3Fs%0A++++++%3Asubmitter_id+%3Fsubmitter_id%3B%0A++++++%3Aajcc_pathologic_stage+%3Fajcc_pathologic_stage%3B%0A++++++%3Aprimary_diagnosis+%3Fprimary_diagnosis%3B%0A++++++%3Aprior_malignancy+%3Fprior_malignancy%3B%0A++++++%3Avital_status+%3Fvital_status%3B%0A++++++%3Avital_status+%3Fvital_status%3B%0A++++++%3ABreast_Tumor_Type+%3FBreast_Tumor_Type%3B%0A++++++%3AsurvivalA+%3FsurvivalA%3B%0A++++++%3AslideID+%3FslideID%3B%0A++++++%3APercent_TILs_in_tumor_region+%3FPercent_TILs_in_tumor_region%3B%0A++++++%3AImmune_Subtype+%3FImmune_Subtype%3B%0A++++++%3AMolwxular_Cybersort_Lymphocytes+%3FMolwxular_Cybersort_Lymphocytes%3B%0A++++++%3AGlobal_Pattern+%3FGlobal_Pattern}}", "DATA_FORMAT":"csv", @@ -155,8 +155,7 @@ "fields":[ { "dataKey":"submitter_id", - "label":"ID", - "width":0.1 + "label":"ID" }, { "dataKey":"slideID", @@ -164,44 +163,35 @@ "link":{ "url":"https://pathdb.cancerimagingarchive.net/caMicroscope/apps/viewer/viewer.html?mode=pathdb&slideId=", "field":"PathDBID" - }, - "width":0.1 + } }, { "dataKey":"ajcc_pathologic_stage", - "label":"Pathologic Stage", - "width":0.1 + "label":"Pathologic Stage" }, { "dataKey":"vital_status", - "label":"Vital Status", - "width":0.08 + "label":"Vital Status" }, { "dataKey":"Breast_Tumor_Type", - "label":"Breast Tumor Type", - "width":0.08 + "label":"Breast Tumor Type" }, { "dataKey":"survivalA", - "label":"Survival A", - "width":0.08 + "label":"Survival A" },{ "dataKey":"Percent_TILs_in_tumor_region", - "label":"TILs Percent", - "width":0.08 + "label":"TILs Percent" },{ "dataKey":"Immune_Subtype", - "label":"Immune Subtype", - "width":0.05 + "label":"Immune Subtype" },{ "dataKey":"Molwxular_Cybersort_Lymphocytes", - "label":"Lymphocytes", - "width":0.08 + "label":"Lymphocytes" },{ "dataKey":"Global_Pattern", - "label":"Global Pattern", - "width":0.15 + "label":"Global Pattern" }], "size": [4, 2], "priority": 70 diff --git a/package-lock.json b/package-lock.json index 909bf75..68163d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "datascope", + "name": "eaglescope", "version": "1.0.0", "lockfileVersion": 1, "requires": true, @@ -821,39 +821,69 @@ } }, "@fortawesome/fontawesome-svg-core": { - "version": "1.2.32", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.32.tgz", - "integrity": "sha512-XjqyeLCsR/c/usUpdWcOdVtWFVjPbDFBTQkn2fQRrWhhUoxriQohO2RWDxLyUM8XpD+Zzg5xwJ8gqTYGDLeGaQ==", + "version": "1.2.34", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.34.tgz", + "integrity": "sha512-0KNN0nc5eIzaJxlv43QcDmTkDY1CqeN6J7OCGSs+fwGPdtv0yOQqRjieopBCmw+yd7uD3N2HeNL3Zm5isDleLg==", "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.32" + "@fortawesome/fontawesome-common-types": "^0.2.34" }, "dependencies": { "@fortawesome/fontawesome-common-types": { - "version": "0.2.32", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz", - "integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w==" + "version": "0.2.34", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.34.tgz", + "integrity": "sha512-XcIn3iYbTEzGIxD0/dY5+4f019jIcEIWBiHc3KrmK/ROahwxmZ/s+tdj97p/5K0klz4zZUiMfUlYP0ajhSJjmA==" + } + } + }, + "@fortawesome/free-brands-svg-icons": { + "version": "5.15.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.15.2.tgz", + "integrity": "sha512-YPlVjE1cEO+OJ9I9ay3TQ3I88+XkxMTYwnnddqAboxLhPNGncsHV0DjWOVLCyuAY66yPfyndWwVn4v7vuqsO1g==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.34" + }, + "dependencies": { + "@fortawesome/fontawesome-common-types": { + "version": "0.2.34", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.34.tgz", + "integrity": "sha512-XcIn3iYbTEzGIxD0/dY5+4f019jIcEIWBiHc3KrmK/ROahwxmZ/s+tdj97p/5K0klz4zZUiMfUlYP0ajhSJjmA==" + } + } + }, + "@fortawesome/free-regular-svg-icons": { + "version": "5.15.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.2.tgz", + "integrity": "sha512-Uv5NQCYjyisNVTu/1Xjs+z8vwQjbfT6hiqYvQNfF0n8qdgfWLM581bAfVMQ3BCs1SPy+eEUKNcGkK4n0FihFHg==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.34" + }, + "dependencies": { + "@fortawesome/fontawesome-common-types": { + "version": "0.2.34", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.34.tgz", + "integrity": "sha512-XcIn3iYbTEzGIxD0/dY5+4f019jIcEIWBiHc3KrmK/ROahwxmZ/s+tdj97p/5K0klz4zZUiMfUlYP0ajhSJjmA==" } } }, "@fortawesome/free-solid-svg-icons": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.1.tgz", - "integrity": "sha512-EFMuKtzRMNbvjab/SvJBaOOpaqJfdSap/Nl6hst7CgrJxwfORR1drdTV6q1Ib/JVzq4xObdTDcT6sqTaXMqfdg==", + "version": "5.15.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.2.tgz", + "integrity": "sha512-ZfCU+QjaFsdNZmOGmfqEWhzI3JOe37x5dF4kz9GeXvKn/sTxhqMtZ7mh3lBf76SvcYY5/GKFuyG7p1r4iWMQqw==", "requires": { - "@fortawesome/fontawesome-common-types": "^0.2.32" + "@fortawesome/fontawesome-common-types": "^0.2.34" }, "dependencies": { "@fortawesome/fontawesome-common-types": { - "version": "0.2.32", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.32.tgz", - "integrity": "sha512-ux2EDjKMpcdHBVLi/eWZynnPxs0BtFVXJkgHIxXRl+9ZFaHPvYamAfCzeeQFqHRjuJtX90wVnMRaMQAAlctz3w==" + "version": "0.2.34", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.34.tgz", + "integrity": "sha512-XcIn3iYbTEzGIxD0/dY5+4f019jIcEIWBiHc3KrmK/ROahwxmZ/s+tdj97p/5K0klz4zZUiMfUlYP0ajhSJjmA==" } } }, "@fortawesome/react-fontawesome": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.12.tgz", - "integrity": "sha512-kV6HtqotM3K4YIXlTVvomuIi6QgGCvYm++ImyEx2wwgmSppZ6kbbA29ASwjAUBD63j2OFU0yoxeXpZkjrrX0qQ==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.14.tgz", + "integrity": "sha512-4wqNb0gRLVaBm/h+lGe8UfPPivcbuJ6ecI4hIgW0LjI7kzpYB9FkN0L9apbVzg+lsBdcTf0AlBtODjcSX5mmKA==", "requires": { "prop-types": "^15.7.2" } @@ -1012,9 +1042,9 @@ } }, "@popperjs/core": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.5.4.tgz", - "integrity": "sha512-ZpKr+WTb8zsajqgDkvCEWgp6d5eJT6Q63Ng2neTbzBO76Lbe91vX/iVIW9dikq+Fs3yEo+ls4cxeXABD2LtcbQ==" + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.8.6.tgz", + "integrity": "sha512-1oXH2bAFXz9SttE1v/0Jp+2ZVePsPEAPGIuPKrmljWZcS3FPBEn2Q4WcANozZC0YiCjTWOF55k0g6rbSZS39ew==" }, "@ranfdev/deepobj": { "version": "1.0.2", @@ -1027,12 +1057,12 @@ "integrity": "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==" }, "@restart/hooks": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.25.tgz", - "integrity": "sha512-m2v3N5pxTsIiSH74/sb1yW8D9RxkJidGW+5Mfwn/lHb2QzhZNlaU1su7abSyT9EGf0xS/0waLjrf7/XxQHUk7w==", + "version": "0.3.26", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.26.tgz", + "integrity": "sha512-7Hwk2ZMYm+JLWcb7R9qIXk1OoUg1Z+saKWqZXlrvFwT3w6UArVNWgxYOzf+PJoK9zZejp8okPAKTctthhXLt5g==", "requires": { - "lodash": "^4.17.15", - "lodash-es": "^4.17.15" + "lodash": "^4.17.20", + "lodash-es": "^4.17.20" } }, "@types/classnames": { @@ -1041,9 +1071,9 @@ "integrity": "sha512-2koNhpWm3DgWRp5tpkiJ8JGc1xTn2q0l+jUNUE7oMKXUf5NpI9AIdC4kbjGNFBdHtcxBD18LAksoudAVhFKCjw==" }, "@types/clone": { - "version": "0.1.30", - "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz", - "integrity": "sha1-5zZWSMG0ITalnH1QQGN7O1yDthQ=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/clone/-/clone-2.1.0.tgz", + "integrity": "sha512-d/aS/lPOnUSruPhgNtT8jW39fHRVTLQy9sodysP1kkG8EdAtdZu1vt8NJaYA8w/6Z9j8izkAsx1A/yJhcYR1CA==" }, "@types/fast-json-stable-stringify": { "version": "2.0.0", @@ -1111,6 +1141,11 @@ "@types/react": "*" } }, + "@types/sortablejs": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.10.6.tgz", + "integrity": "sha512-QRz8Z+uw2Y4Gwrtxw8hD782zzuxxugdcq8X/FkPsXUa1kfslhGzy13+4HugO9FXNo+jlWVcE6DYmmegniIQ30A==" + }, "@types/warning": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", @@ -1243,6 +1278,16 @@ "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, + "array-flat-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz", + "integrity": "sha512-hfJmKupmQN0lwi0xG6FQ5U8Rd97RnIERplymOv/qpq8AoNKPPAnxJadjFA23FNWm88wykh9HmpLJUUwUtNU/iw==" + }, + "array-move": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-move/-/array-move-3.0.1.tgz", + "integrity": "sha512-H3Of6NIn2nNU1gsVDqDnYKY/LCdWvCMMOWifNGhKcVQgiZ6nOek39aESOvro6zmueP07exSl93YLvkN4fZOkSg==" + }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -1486,9 +1531,9 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, "bootstrap": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.3.tgz", - "integrity": "sha512-o9ppKQioXGqhw8Z7mah6KdTYpNQY//tipnkxppWhPbiSWdD+1raYsnhwEZjkTHYbGee4cVQ0Rx65EhOY/HNLcQ==" + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz", + "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw==" }, "bootstrap-css-only": { "version": "4.4.1", @@ -1727,11 +1772,6 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -1795,14 +1835,14 @@ } }, "chokidar": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", - "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", "dev": true, "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.1.2", + "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -1821,9 +1861,9 @@ } }, "binary-extensions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true }, "braces": { @@ -1845,9 +1885,9 @@ } }, "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, "optional": true }, @@ -1944,26 +1984,26 @@ "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==" }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } } } @@ -2844,11 +2884,6 @@ "ms": "^2.1.1" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", @@ -3041,8 +3076,12 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "requires": { + "is-obj": "^1.0.0" + } }, "dotenv": { "version": "5.0.1", @@ -3096,9 +3135,9 @@ } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", @@ -3205,6 +3244,11 @@ "is-symbol": "^1.0.2" } }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3418,9 +3462,9 @@ } }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { "version": "2.2.7", @@ -3435,6 +3479,11 @@ "micromatch": "^3.1.10" } }, + "fast-json-patch": { + "version": "3.0.0-1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.0.0-1.tgz", + "integrity": "sha512-6pdFb07cknxvPzCeLsFHStEy+MysPJPgZQ9LbQ/2O67unQF93SNqfdSqnPPl71YMHX+AD8gbl7iuoGFzHEdDuw==" + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -3490,14 +3539,6 @@ } } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "requires": { - "locate-path": "^3.0.0" - } - }, "focus-trap": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-4.0.2.tgz", @@ -3559,482 +3600,19 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "optional": true, "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "bindings": "^1.5.0", + "nan": "^2.12.1" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "optional": true } } @@ -4465,6 +4043,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "internmap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.0.tgz", + "integrity": "sha512-SdoDWwNOTE2n4JWUsLn4KXZGuZPjPF9yyOGc8bnfWnBQh7BD/l80rzSznKc/r4Y0aQ7z3RTk9X+tV4tHBpu+dA==" + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -4593,9 +4176,9 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.1", @@ -4641,6 +4224,11 @@ } } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4975,24 +4563,15 @@ "json5": "^1.0.1" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash-es": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz", - "integrity": "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "lodash.clone": { "version": "4.5.0", @@ -5040,6 +4619,14 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, "magic-string": { "version": "0.22.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", @@ -5290,9 +4877,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", "optional": true }, "nanomatch": { @@ -5654,27 +5241,6 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -5753,6 +5319,16 @@ } } }, + "parcel-plugin-static-files-copy": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/parcel-plugin-static-files-copy/-/parcel-plugin-static-files-copy-2.5.1.tgz", + "integrity": "sha512-iDi04brJU10xZYSXlOCjBfILaaoWaA7k9E78t6QpQmLOly7RykNMb9UE3bQy1ZEQx3tJINteF4HcIHrDpIK15w==", + "dev": true, + "requires": { + "minimatch": "3.0.4", + "path": "0.12.7" + } + }, "parse-asn1": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", @@ -5790,6 +5366,33 @@ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dev": true, + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, "path-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", @@ -5800,11 +5403,6 @@ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -6516,9 +6114,9 @@ } }, "react-bootstrap": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.4.0.tgz", - "integrity": "sha512-0BMzgeUAxH126v7VYDzIXbHxQVHSnniPVKpz9fblumdQpWaiElMnnzk+u8h8DoELX0nCXwPlcUzgXqmpncdc2Q==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.5.0.tgz", + "integrity": "sha512-t1o4kP3coj2HIaBepJxGAc7HZ1fWGria/s0Yr9JUmNkCilyrnXtK209qn28vuZ4muhnA0uR0GMMXAMrLsLyiIw==", "requires": { "@babel/runtime": "^7.4.2", "@restart/context": "^2.1.4", @@ -6526,7 +6124,7 @@ "@types/classnames": "^2.2.10", "@types/invariant": "^2.2.33", "@types/prop-types": "^15.7.3", - "@types/react": "^16.9.35", + "@types/react": ">=16.9.35", "@types/react-transition-group": "^4.4.0", "@types/warning": "^3.0.0", "classnames": "^2.2.6", @@ -6534,24 +6132,24 @@ "invariant": "^2.2.4", "prop-types": "^15.7.2", "prop-types-extra": "^1.1.0", - "react-overlays": "^4.1.0", + "react-overlays": "^4.1.1", "react-transition-group": "^4.4.1", "uncontrollable": "^7.0.0", "warning": "^4.0.3" }, "dependencies": { "@types/react-transition-group": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz", - "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz", + "integrity": "sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ==", "requires": { "@types/react": "*" } }, "csstype": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", - "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", + "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" }, "dom-helpers": { "version": "5.2.0", @@ -6563,9 +6161,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.8.tgz", + "integrity": "sha512-CwQljpw6qSayc0fRG1soxHAKs1CnQMOChm4mlQP6My0kf9upVGizj/KhlTTgyUnETmHpcUXjaluNAkteRFuafg==", "requires": { "regenerator-runtime": "^0.13.4" } @@ -6692,17 +6290,17 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", - "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", + "version": "7.13.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.13.8.tgz", + "integrity": "sha512-CwQljpw6qSayc0fRG1soxHAKs1CnQMOChm4mlQP6My0kf9upVGizj/KhlTTgyUnETmHpcUXjaluNAkteRFuafg==", "requires": { "regenerator-runtime": "^0.13.4" } }, "csstype": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", - "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", + "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" }, "dom-helpers": { "version": "5.2.0", @@ -6783,6 +6381,25 @@ "prop-types": "^15.5.8" } }, + "react-sortable-hoc": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/react-sortable-hoc/-/react-sortable-hoc-1.11.0.tgz", + "integrity": "sha512-v1CDCvdfoR3zLGNp6qsBa4J1BWMEVH25+UKxF/RvQRh+mrB+emqtVHMgZ+WreUiKJoEaiwYoScaueIKhMVBHUg==", + "requires": { + "@babel/runtime": "^7.2.0", + "invariant": "^2.2.4", + "prop-types": "^15.5.7" + } + }, + "react-sortablejs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/react-sortablejs/-/react-sortablejs-6.0.0.tgz", + "integrity": "sha512-vzi+TWOnofcYg+dYnC/Iz/ZZkBGG76uM6KaLwuAqBk0349JQxIy3PZizbK0TJdLlK6NnLt4CiEyyQXSSnVYvEw==", + "requires": { + "classnames": "^2.2.6", + "tiny-invariant": "^1.1.0" + } + }, "react-text-mask": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/react-text-mask/-/react-text-mask-5.4.3.tgz", @@ -6845,9 +6462,9 @@ } }, "react-virtualized": { - "version": "9.22.2", - "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.2.tgz", - "integrity": "sha512-5j4h4FhxTdOpBKtePSs1yk6LDNT4oGtUwjT7Nkh61Z8vv3fTG/XeOf8J4li1AYaexOwTXnw0HFVxsV0GBUqwRw==", + "version": "9.22.3", + "resolved": "https://registry.npmjs.org/react-virtualized/-/react-virtualized-9.22.3.tgz", + "integrity": "sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==", "requires": { "@babel/runtime": "^7.7.2", "clsx": "^1.0.4", @@ -6866,9 +6483,9 @@ } }, "csstype": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz", - "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.6.tgz", + "integrity": "sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw==" }, "dom-helpers": { "version": "5.2.0", @@ -7148,11 +6765,6 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, "resolve": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", @@ -7241,9 +6853,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.29.0.tgz", - "integrity": "sha512-ZpwAUFgnvAUCdkjwPREny+17BpUj8nh5Yr6zKPGtLNTLrmtoRYIjm7njP24COhjJldjwW1dcv52Lpf4tNZVVRA==", + "version": "1.32.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.32.8.tgz", + "integrity": "sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" @@ -7381,11 +6993,6 @@ "send": "0.17.1" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -7587,6 +7194,11 @@ } } }, + "sortablejs": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.13.0.tgz", + "integrity": "sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg==" + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7737,26 +7349,26 @@ } }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } } } @@ -8167,12 +7779,12 @@ "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==" }, "uncontrollable": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz", - "integrity": "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", "requires": { "@babel/runtime": "^7.6.3", - "@types/react": "^16.9.11", + "@types/react": ">=16.9.11", "invariant": "^2.2.4", "react-lifecycles-compat": "^3.0.4" } @@ -8408,56 +8020,46 @@ "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" }, "vega": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/vega/-/vega-5.17.0.tgz", - "integrity": "sha512-2Rm9aS3cSMXE55YgjfkuOmvSBMtiM/85/qX/WHLc+YiJacKGiwY9yzeC+w2Ft50JUs3nKZc1KB90ePgf5mfo0Q==", + "version": "5.19.1", + "resolved": "https://registry.npmjs.org/vega/-/vega-5.19.1.tgz", + "integrity": "sha512-UE6/c9q9kzuz4HULFuU9HscBASoZa+zcXqGKdbQP545Nwmhd078QpcH+wZsq9lYfiTxmFtzLK/a0OH0zhkghvA==", "requires": { "vega-crossfilter": "~4.0.5", "vega-dataflow": "~5.7.3", "vega-encode": "~4.8.3", "vega-event-selector": "~2.0.6", - "vega-expression": "~3.0.0", + "vega-expression": "~4.0.1", "vega-force": "~4.0.7", "vega-format": "~1.0.4", - "vega-functions": "~5.8.0", - "vega-geo": "~4.3.7", + "vega-functions": "~5.12.0", + "vega-geo": "~4.3.8", "vega-hierarchy": "~4.0.9", "vega-label": "~1.0.0", "vega-loader": "~4.4.0", - "vega-parser": "~6.1.0", + "vega-parser": "~6.1.3", "vega-projection": "~1.4.5", "vega-regression": "~1.0.9", "vega-runtime": "~6.1.3", "vega-scale": "~7.1.1", - "vega-scenegraph": "~4.9.2", + "vega-scenegraph": "~4.9.3", "vega-statistics": "~1.7.9", "vega-time": "~2.0.4", "vega-transforms": "~4.9.3", - "vega-typings": "~0.19.0", + "vega-typings": "~0.19.2", "vega-util": "~1.16.0", - "vega-view": "~5.9.0", + "vega-view": "~5.9.2", "vega-view-transforms": "~4.5.8", "vega-voronoi": "~4.1.5", "vega-wordcloud": "~4.1.3" }, "dependencies": { - "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" - }, "vega-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-3.0.0.tgz", - "integrity": "sha512-/ObjIOK94MB+ziTuh8HZt2eWlKUPT/piRJLal5tx5QL1sQbfRi++7lHKTaKMLXLqc4Xqp9/DewE3PqQ6tYzaUA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", + "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", "requires": { - "vega-util": "^1.15.2" + "vega-util": "^1.16.0" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, @@ -8477,14 +8079,12 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } } } }, @@ -8496,39 +8096,32 @@ "vega-format": "^1.0.4", "vega-loader": "^4.3.2", "vega-util": "^1.15.2" - }, - "dependencies": { - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" - } } }, "vega-embed": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/vega-embed/-/vega-embed-4.2.5.tgz", - "integrity": "sha512-3iUv5oU5y/sa7jC+shw79hPmHMpWMhMTGSovtl3+O98hLq7LQgordWKgoxKcqwhSIHMIgj+cInTNPWM4kru7Ug==", - "requires": { - "d3-selection": "^1.4.0", - "json-stringify-pretty-compact": "^2.0.0", - "semver": "^6.3.0", - "vega-schema-url-parser": "^1.1.0", - "vega-themes": "^2.3.2", - "vega-tooltip": "^0.18.1" + "version": "6.15.2", + "resolved": "https://registry.npmjs.org/vega-embed/-/vega-embed-6.15.2.tgz", + "integrity": "sha512-/Qk+YdDP8hELbvtGzxnKbNzk1oi33k3qrdwE/bpSQdHoM2UoQoR7lePq6/uEgGQtIMEm34XcMte9/rWkmnUPWA==", + "requires": { + "fast-json-patch": "^3.0.0-1", + "json-stringify-pretty-compact": "^3.0.0", + "semver": "^7.3.4", + "vega-schema-url-parser": "^2.1.0", + "vega-themes": "^2.9.1", + "vega-tooltip": "^0.25.0" }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "json-stringify-pretty-compact": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", + "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" }, - "vega-tooltip": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.18.1.tgz", - "integrity": "sha512-g/i69QLTVhGeHNT8k646Qr8SFss9kbnt6XmU9ujjqgaW5B/p1FPUrMzFh/88rMF704EHYyBH7Aj3t0ds1cCHbQ==", + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "requires": { - "vega-util": "^1.10.0" + "lru-cache": "^6.0.0" } } } @@ -8546,9 +8139,12 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } }, "d3-interpolate": { "version": "2.0.1", @@ -8557,25 +8153,20 @@ "requires": { "d3-color": "1 - 2" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, "vega-event-selector": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.1.tgz", - "integrity": "sha512-FGU1PefYhW9An6zVs6TE5f/XGYsIispxFErG/p9KThxL22IC90WVZzMQXKN9M8OcARq5OyWjHg3qa9Qp/Z6OJw==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", + "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" }, "vega-expression": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-2.6.1.tgz", - "integrity": "sha512-LXyacmJCswaXfBKQbwUBYLzSuSYkygKwNNlZ+xHNQ2+Mab6/oAGlG1jfsJPo90qQefmlvL61ynCi7Bk0vUEafQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-3.0.1.tgz", + "integrity": "sha512-+UwOFEkBnAWo8Zud6i8O4Pd2W6QqmPUOaAhjNtj0OxRL+d+Duoy7M4edUDZ+YuoUcMnjjBFfDQu7oRAA1fIMEQ==", "requires": { - "vega-util": "^1.11.0" + "vega-util": "^1.15.2" } }, "vega-force": { @@ -8597,11 +8188,6 @@ "d3-quadtree": "1 - 2", "d3-timer": "1 - 2" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, @@ -8618,9 +8204,12 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } }, "d3-format": { "version": "2.0.0", @@ -8634,36 +8223,34 @@ "requires": { "d3-time": "1 - 2" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, "vega-functions": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.8.0.tgz", - "integrity": "sha512-xaUqWZHEX+EuJuKfN0Biux3rrCHDEHmMbW7LHYyyEqguR0i6+zhtOSUEWmYqDfzB/+BlIwCk5Vif6q6/mzJxbQ==", + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.12.0.tgz", + "integrity": "sha512-3hljmGs+gR7TbO/yYuvAP9P5laKISf1GKk4yRHLNdM61fWgKm8pI3f6LY2Hvq9cHQFTiJ3/5/Bx2p1SX5R4quQ==", "requires": { "d3-array": "^2.7.1", "d3-color": "^2.0.0", "d3-geo": "^2.0.1", "vega-dataflow": "^5.7.3", - "vega-expression": "^3.0.0", + "vega-expression": "^4.0.1", "vega-scale": "^7.1.1", - "vega-scenegraph": "^4.9.2", - "vega-selections": "^5.1.4", + "vega-scenegraph": "^4.9.3", + "vega-selections": "^5.3.0", "vega-statistics": "^1.7.9", "vega-time": "^2.0.4", - "vega-util": "^1.15.2" + "vega-util": "^1.16.0" }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } }, "d3-color": { "version": "2.0.0", @@ -8679,24 +8266,19 @@ } }, "vega-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-3.0.0.tgz", - "integrity": "sha512-/ObjIOK94MB+ziTuh8HZt2eWlKUPT/piRJLal5tx5QL1sQbfRi++7lHKTaKMLXLqc4Xqp9/DewE3PqQ6tYzaUA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", + "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", "requires": { - "vega-util": "^1.15.2" + "vega-util": "^1.16.0" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, "vega-geo": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.7.tgz", - "integrity": "sha512-5HC1D9Z/WYuM1Gmlk8PxuRKgeN8snNWsfKO4E9PTmR7wo7tuU/2SGlRoE27aTsgwMMpBIrpRbSgKtgh5l/fMUQ==", + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.8.tgz", + "integrity": "sha512-fsGxV96Q/QRgPqOPtMBZdI+DneIiROKTG3YDZvGn0EdV16OG5LzFhbNgLT5GPzI+kTwgLpAsucBHklexlB4kfg==", "requires": { "d3-array": "^2.7.1", "d3-color": "^2.0.0", @@ -8709,9 +8291,12 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } }, "d3-color": { "version": "2.0.0", @@ -8725,11 +8310,6 @@ "requires": { "d3-array": ">=2.5" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, @@ -8747,11 +8327,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", "integrity": "sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==" - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, @@ -8764,46 +8339,36 @@ "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" - }, - "dependencies": { - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" - } } }, "vega-lite": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-3.4.0.tgz", - "integrity": "sha512-RJg9uBNh5g0hA8xTzAcALUfNx0cEq7E7xx+vxPEGSMgI8z+A5KlE9u4jUx6nKu7Mjg1qZO8WOyWCmBS1kdFWPg==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-4.17.0.tgz", + "integrity": "sha512-MO2XsaVZqx6iWWmVA5vwYFamvhRUsKfVp7n0pNlkZ2/21cuxelSl92EePZ2YGmzL6z4/3K7r/45zaG8p+qNHeg==", "requires": { - "@types/clone": "~0.1.30", + "@types/clone": "~2.1.0", "@types/fast-json-stable-stringify": "^2.0.0", + "array-flat-polyfill": "^1.0.1", "clone": "~2.1.2", - "fast-deep-equal": "~2.0.1", - "fast-json-stable-stringify": "~2.0.0", + "fast-deep-equal": "~3.1.3", + "fast-json-stable-stringify": "~2.1.0", "json-stringify-pretty-compact": "~2.0.0", - "tslib": "~1.10.0", - "vega-event-selector": "~2.0.0", - "vega-expression": "~2.6.0", - "vega-typings": "0.7.2", - "vega-util": "~1.10.0", - "yargs": "~13.3.0" + "tslib": "~2.0.3", + "vega-event-selector": "~2.0.6", + "vega-expression": "~3.0.0", + "vega-util": "~1.16.0", + "yargs": "~16.0.3" }, "dependencies": { - "vega-typings": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.7.2.tgz", - "integrity": "sha512-BReB2qRERA/Ke+QoxKDQ7fES25A9Q3qKRm1CJxwvpLGhAl4k5cGDORx6yW+J3rFHMzpJlmdRM+kb489EuphxZQ==", - "requires": { - "vega-util": "^1.10.0" - } + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "vega-util": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.10.0.tgz", - "integrity": "sha512-fTGnTG7FhtTG9tiYDL3k5s8YHqB71Ml5+aC9B7eaBygeB8GKXBrcbTXLOzoCRxT3Jr5cRhr99PMBu0AkqmhBog==" + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" } } }, @@ -8833,36 +8398,19 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, "vega-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.1.0.tgz", - "integrity": "sha512-u14bHXV8vtcuMIJkMNoDAJ4Xu3lwKIkep+YEkPumWvlwl3fClWy26EAcwTneeM3rXu2F6ZJI6W3ddu/If8u13w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.1.3.tgz", + "integrity": "sha512-8oiVhhW26GQ4GZBvolId8FVFvhn3s1KGgPlD7Z+4P2wkV+xe5Nqu0TEJ20F/cn3b88fd0Vj48X3BH3dlSeKNFg==", "requires": { "vega-dataflow": "^5.7.3", "vega-event-selector": "^2.0.6", - "vega-functions": "^5.8.0", + "vega-functions": "^5.12.0", "vega-scale": "^7.1.1", - "vega-util": "^1.15.2" - }, - "dependencies": { - "vega-event-selector": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.6.tgz", - "integrity": "sha512-UwCu50Sqd8kNZ1X/XgiAY+QAyQUmGFAwyDu7y0T5fs6/TPQnDo/Bo346NgSgINBEhEKOAMY1Nd/rPOk4UEm/ew==" - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" - } + "vega-util": "^1.16.0" } }, "vega-projection": { @@ -8875,9 +8423,12 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } }, "d3-geo": { "version": "2.0.1", @@ -8901,14 +8452,12 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } } } }, @@ -8919,13 +8468,6 @@ "requires": { "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" - }, - "dependencies": { - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" - } } }, "vega-scale": { @@ -8941,9 +8483,12 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } }, "d3-interpolate": { "version": "2.0.1", @@ -8964,18 +8509,13 @@ "d3-time": "1 - 2", "d3-time-format": "2 - 3" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, "vega-scenegraph": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.2.tgz", - "integrity": "sha512-epm1CxcB8AucXQlSDeFnmzy0FCj+HV2k9R6ch2lfLRln5lPLEfgJWgFcFhVf5jyheY0FSeHH52Q5zQn1vYI1Ow==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.3.tgz", + "integrity": "sha512-lBvqLbXqrqRCTGJmSgzZC/tLR/o+TXfakbdhDzNdpgTavTaQ65S/67Gpj5hPpi77DvsfZUIY9lCEeO37aJhy0Q==", "requires": { "d3-path": "^2.0.0", "d3-shape": "^2.0.0", @@ -8997,40 +8537,30 @@ "requires": { "d3-path": "1 - 2" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, "vega-schema-url-parser": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vega-schema-url-parser/-/vega-schema-url-parser-1.1.0.tgz", - "integrity": "sha512-Tc85J2ofMZZOsxiqDM9sbvfsa+Vdo3GwNLjEEsPOsCDeYqsUHKAlc1IpbbhPLZ6jusyM9Lk0e1izF64GGklFDg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vega-schema-url-parser/-/vega-schema-url-parser-2.1.0.tgz", + "integrity": "sha512-JHT1PfOyVzOohj89uNunLPirs05Nf59isPT5gnwIkJph96rRgTIBJE7l7yLqndd7fLjr3P8JXHGAryRp74sCaQ==" }, "vega-selections": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.1.4.tgz", - "integrity": "sha512-L7CHwcIjVf90GoW2tS2x5O496O5Joaerp5A1KM6VJ1uo4z6KfqxY6M/328a/uaAs0LC5qbQgXT3htFbtUrPW/A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.3.0.tgz", + "integrity": "sha512-vC4NPsuN+IffruFXfH0L3i2A51RgG4PqpLv85TvrEAIYnSkyKDE4bf+wVraR3aPdnLLkc3+tYuMi6le5FmThIA==", "requires": { - "vega-expression": "^3.0.0", - "vega-util": "^1.15.2" + "vega-expression": "^4.0.1", + "vega-util": "^1.16.0" }, "dependencies": { "vega-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-3.0.0.tgz", - "integrity": "sha512-/ObjIOK94MB+ziTuh8HZt2eWlKUPT/piRJLal5tx5QL1sQbfRi++7lHKTaKMLXLqc4Xqp9/DewE3PqQ6tYzaUA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-4.0.1.tgz", + "integrity": "sha512-ZrDj0hP8NmrCpdLFf7Rd/xMUHGoSYsAOTaYp7uXZ2dkEH5x0uPy5laECMc8TiQvL8W+8IrN2HAWCMRthTSRe2Q==", "requires": { - "vega-util": "^1.15.2" + "vega-util": "^1.16.0" } - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, @@ -9043,16 +8573,19 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } } } }, "vega-themes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.5.0.tgz", - "integrity": "sha512-mkyYhcRhmMBWLfvCBPTVx0S/OnxeIfVY/TmFfYP5sPdW8X1kMyHtLI34bMhzosPrkhNyHsC8FNHJyU/dOQnX4A==" + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/vega-themes/-/vega-themes-2.10.0.tgz", + "integrity": "sha512-prePRUKFUFGWniuZsJOfkdb+27Gwrrm82yAlVuU+912kcknsx1DVmMSg2yF79f4jdtqnAFIGycZgxoj13SEIuQ==" }, "vega-time": { "version": "2.0.4", @@ -9065,28 +8598,26 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } }, "d3-time": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.0.0.tgz", "integrity": "sha512-2mvhstTFcMvwStWd9Tj3e6CEqtOivtD8AUiHT8ido/xmzrI9ijrUUihZ6nHuf/vsScRBonagOdj0Vv+SEL5G3Q==" - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, "vega-tooltip": { - "version": "0.17.2", - "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.17.2.tgz", - "integrity": "sha512-mQ/pXWUPd6Sirp7ZZ9Ov/fzSqAm5etM17RVNeHcKeY7t+JBjXbU0iGad6Yo9wNJ1smhaGfiDYf3iN5UXEmvFpA==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/vega-tooltip/-/vega-tooltip-0.25.1.tgz", + "integrity": "sha512-ugGwGi2/p3OpB8N15xieuzP8DyV5DreqMWcmJ9zpWT8GlkyKtef4dGRXnvHeHQ+iJFmWrq4oZJ+kLTrdiECjAg==", "requires": { - "vega-util": "^1.10.0" + "vega-util": "^1.16.0" } }, "vega-transforms": { @@ -9102,66 +8633,55 @@ }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } } } }, "vega-typings": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.19.1.tgz", - "integrity": "sha512-OSyNYwMJ8FayTTNU/gohprbt1EFQBpoiMPP9p2vqo1O9z45XVnotQ92jYHAhraI6gWiMIIfo4OjPbSe/GX7etg==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.19.2.tgz", + "integrity": "sha512-YU/S9rDk4d+t4+4eTa9fzuw87PMNteeVtpcL51kUO8H7HvGaoW7ll8RHKLkR0NYBEGPRoFDKUxnoyMvhgjsdYw==", "requires": { "vega-util": "^1.15.2" - }, - "dependencies": { - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" - } } }, "vega-util": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.11.0.tgz", - "integrity": "sha512-14pdEnGn6MUPvQhoh3mwq/3hznO0ByefOdkamI2sRRz8PaPGXQOXt16Z/hItY5dREpNlk8eqFO56JGeMvh8qWg==" + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", + "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" }, "vega-view": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.9.0.tgz", - "integrity": "sha512-HqRFuqO2OwoPHHK+CVt8vB8fu2L8GjQerLpmEpglWtCPDns5+gn5B6F7M8Ah8v24WlfqW7cLrY81t9OloPZOyw==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.9.2.tgz", + "integrity": "sha512-XAwKWyVjLClR3aCbTLCWdZj7aZozOULNg7078GxJIgVcBJOENCAidceI/H7JieyUZ96p3AiEHLQdWr167InBpg==", "requires": { "d3-array": "^2.7.1", "d3-timer": "^2.0.0", "vega-dataflow": "^5.7.3", "vega-format": "^1.0.4", - "vega-functions": "^5.8.0", + "vega-functions": "^5.10.0", "vega-runtime": "^6.1.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" }, "dependencies": { "d3-array": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.8.0.tgz", - "integrity": "sha512-6V272gsOeg7+9pTW1jSYOR1QE37g95I3my1hBmY+vOUNHRrk9yt4OTz/gK7PMkVAVDrYYq4mq3grTiZ8iJdNIw==" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.11.0.tgz", + "integrity": "sha512-26clcwmHQEdsLv34oNKq5Ia9tQ26Y/4HqS3dQzF42QBUqymZJ+9PORcN1G52bt37NsL2ABoX4lvyYZc+A9Y0zw==", + "requires": { + "internmap": "^1.0.0" + } }, "d3-timer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" - }, - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" } } }, @@ -9173,13 +8693,6 @@ "vega-dataflow": "^5.7.3", "vega-scenegraph": "^4.9.2", "vega-util": "^1.15.2" - }, - "dependencies": { - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" - } } }, "vega-voronoi": { @@ -9190,13 +8703,6 @@ "d3-delaunay": "^5.3.0", "vega-dataflow": "^5.7.3", "vega-util": "^1.15.2" - }, - "dependencies": { - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" - } } }, "vega-wordcloud": { @@ -9209,13 +8715,6 @@ "vega-scale": "^7.1.1", "vega-statistics": "^1.7.9", "vega-util": "^1.15.2" - }, - "dependencies": { - "vega-util": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.16.0.tgz", - "integrity": "sha512-6mmz6mI+oU4zDMeKjgvE2Fjz0Oh6zo6WGATcvCfxH2gXBzhBHmy5d25uW5Zjnkc6QBXSWPLV9Xa6SiqMsrsKog==" - } } }, "vendors": { @@ -9318,37 +8817,53 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } } } @@ -9382,35 +8897,33 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==" + }, + "yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yargs": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.0.3.tgz", + "integrity": "sha512-6+nLw8xa9uK1BOEOykaiYAJVh6/CjxWXK/q9b5FpRgNslt8s22F2xMBqVIKgCRjNgGvGPBy8Vog7WN7yh4amtA==", "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.0", + "escalade": "^3.0.2", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.1" + "string-width": "^4.2.0", + "y18n": "^5.0.1", + "yargs-parser": "^20.0.0" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" } } } diff --git a/package.json b/package.json index 87d5618..ed35d7b 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "datascope", + "name": "eaglescope", "version": "1.0.0", "description": "Data Cohort Visualization ", "main": "index.js", @@ -10,7 +10,7 @@ }, "repository": { "type": "git", - "url": "https://www.github.com/sharmalab/datascope.git" + "url": "https://www.github.com/sharmalab/eaglescope.git" }, "keywords": [ "data", @@ -18,32 +18,49 @@ "visualization", "cohort" ], - "author": "birm", + "author": "birm, Nan Li", "license": "BSD-3-Clause", "dependencies": { "@fortawesome/fontawesome": "^1.1.8", "@fortawesome/fontawesome-free-solid": "^5.0.13", - "@fortawesome/fontawesome-svg-core": "^1.2.28", - "@fortawesome/free-solid-svg-icons": "^5.13.0", - "@fortawesome/react-fontawesome": "^0.1.9", - "bootstrap": "^4.4.1", - "crossfilter2": "^1.5.2", + "@fortawesome/fontawesome-svg-core": "^1.2.34", + "@fortawesome/free-brands-svg-icons": "^5.15.1", + "@fortawesome/free-regular-svg-icons": "^5.15.1", + "@fortawesome/free-solid-svg-icons": "^5.15.2", + "@fortawesome/react-fontawesome": "^0.1.14", + "@types/sortablejs": "^1.10.6", + "array-move": "^3.0.1", + "bootstrap": "^4.6.0", + "crossfilter2": "^1.5.4", "d3": "^5.16.0", "jquery": "^3.5.1", + "lodash": "^4.17.20", "mdbreact": "^4.26.0", "parcel-bundler": "^1.12.4", - "react": "^16.13.1", - "react-bootstrap": "^1.0.1", - "react-dom": "^16.13.1", + "popper.js": "^1.16.1", + "react": "^16.14.0", + "react-bootstrap": "^1.4.3", + "react-dom": "^16.14.0", "react-grid-layout": "^0.16.6", - "react-virtualized": "^9.21.2", + "react-sortable-hoc": "^1.11.0", + "react-sortablejs": "^6.0.0", + "react-virtualized": "^9.22.3", + "sortablejs": "^1.13.0", "style": "0.0.3", - "vega": "^5.11.1", - "vega-embed": "^4.2.5", - "vega-lite": "^3.4.0", - "vega-tooltip": "^0.17.2" + "vega": "^5.19.1", + "vega-embed": "^6.15.0", + "vega-lite": "^4.17.0" }, "devDependencies": { - "sass": "^1.26.5" + "parcel-plugin-static-files-copy": "^2.5.1", + "sass": "^1.32.6" + }, + "staticFiles": { + "staticPath": [ + { + "staticPath": "config", + "staticOutDir": "config/" + } + ] } } diff --git a/source/component/BarChart.js b/source/component/BarChart.js deleted file mode 100644 index 01bba63..0000000 --- a/source/component/BarChart.js +++ /dev/null @@ -1,104 +0,0 @@ -import React from 'react'; -import BaseVisualization from './BaseVisualization.js' -import {View as vegaView, parse as vegaParse} from 'vega' -import { compile as vlCompile } from 'vega-lite' - -// should only have to worry about rendering -class BarChart extends BaseVisualization { - constructor(props, ctx) { - super(props, ctx); - } - componentDidMount(){ - let vlspec = { - "$schema": "https://vega.github.io/schema/vega-lite/v3.json", - "data": {"values": this.state.filteredData}, - "mark": "bar", - "selection":{ - "brush": { - "encodings": ['x','y'], - "type": "interval" - } - }, - "encoding": { - "y": { - "field": this.props.x, - "type": "ordinal" - }, - "x": { - "aggregate": "sum", - "field": this.props.y, - "type": "quantitative" - } - } - } - vlspec.height = this.props.h*100 || 100 - vlspec.width = this.props.w*100 || 100 - let spec = vlCompile(vlspec, {}).spec - let vl_view = new vegaView(vegaParse(spec)) - vl_view.initialize(document.querySelector("#" + this.id)) - vl_view.addDataListener('brush_store', (t,e)=> { - if (e.length >0 && e[0].fields.length > 0){ - window.clearTimeout(this.lastEvent) - this.lastEvent = window.setTimeout(x=>{ - console.log(e) - console.log("{FIELD}", e[0].fields[0].field) - console.log("{RANGE}", e[0].values[0]) - },this.bufferTime) - } - }) - vl_view.hover(); - vl_view.run(); - } - componentDidUpdate(){ - let vlspec = { - "$schema": "https://vega.github.io/schema/vega-lite/v3.json", - "data": {"values": this.state.filteredData}, - "mark": "bar", - "selection":{ - "brush": { - "encodings": ['x','y'], - "type": "interval" - } - }, - "encoding": { - "y": { - "field": this.props.x, - "type": "ordinal" - }, - "x": { - "aggregate": "sum", - "field": this.props.y, - "type": "quantitative" - } - } - } - vlspec.height = this.props.h*100 || 100 - vlspec.width = this.props.w*100 || 100 - let spec = vlCompile(vlspec, {}).spec - console.log(spec) - let vl_view = new vegaView(vegaParse(spec)) - vl_view.initialize(document.querySelector("#" + this.id)) - vl_view.addDataListener('brush_store', (t,e)=> { - if (e.length >0 && e[0].fields.length > 0){ - window.clearTimeout(this.lastEvent) - this.lastEvent = window.setTimeout(x=>{ - console.log(e) - console.log("{FIELD}", e[0].fields[0].field) - console.log("{RANGE}", e[0].values[0]) - },this.bufferTime) - } - }) - vl_view.hover() - vl_view.run(); - } - render() { - if(this.state.ready){ - return
- } else { - returnwaiting...
- } - - } -} - -export default BarChart diff --git a/source/component/DataTable.js b/source/component/DataTable.js deleted file mode 100644 index 6fd25ea..0000000 --- a/source/component/DataTable.js +++ /dev/null @@ -1,32 +0,0 @@ -import React from 'react'; -import BaseVisualization from './BaseVisualization.js' -import { MDBDataTable } from 'mdbreact'; - -// should only have to worry about rendering -class DataTable extends BaseVisualization { - constructor(props, ctx) { - super(props, ctx); - this.table_data = {} - } - - render() { - if(this.state.ready){ - this.table_data = {} - this.table_data.columns = [] - var columns = this.props.columns || [] - if (this.state.filteredData[0]){ - columns = Object.keys(this.state.filteredData[0]) - } - for (let i = 0; iwaiting...
waiting...
- } - - } -} - -export default Histogram diff --git a/source/component/HomeButton.js b/source/component/HomeButton.js new file mode 100644 index 0000000..39e1637 --- /dev/null +++ b/source/component/HomeButton.js @@ -0,0 +1,21 @@ +import React from 'react'; +import BaseVisualization from './BaseVisualization.js' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faHome } from '@fortawesome/free-solid-svg-icons' +import Button from 'react-bootstrap/Button' +class HomeButton extends BaseVisualization { + constructor(props, ctx) { + super(props, ctx); + } + goHome(){ + const query = new URLSearchParams(window.location.search); + const homeUrl = query.get("homeurl") || "../" + console.log(homeUrl) + window.location.href = homeUrl; + } + render() { + return + } +} + +export default HomeButton diff --git a/source/component/Layout/MyFirstGrid.js b/source/component/Layout/MyFirstGrid.js deleted file mode 100644 index 49aa25a..0000000 --- a/source/component/Layout/MyFirstGrid.js +++ /dev/null @@ -1,62 +0,0 @@ -import React from "react"; -//import { Responsive as ResponsiveGridLayout } from "react-grid-layout"; -import { Responsive, WidthProvider, GridItem } from "react-grid-layout"; - -// import GridLayout from 'react-grid-layout'; - -class ChartGridView extends React.Component { - - render() { - // {lg: layout1, md: layout2, ...} - var layouts = { lg: this.getLayoutsFromSomewhere() }; - return ( -waiting...
- } - - } -} - -export default PureVegaLitePlot diff --git a/source/component/ResetButton.js b/source/component/ResetButton.js deleted file mode 100644 index a7ed7b9..0000000 --- a/source/component/ResetButton.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from 'react'; -import BaseVisualization from './BaseVisualization.js' - -// should only have to worry about rendering -class ResetButton extends BaseVisualization { - constructor(props, ctx) { - super(props, ctx); - } - render() { - if(this.state.ready){ - return - } else { - returnwaiting...
Records: {this.state.filteredData.length} of {this.state.baseData.length}
waiting...
waiting...
- } - - } -} - -export default ScatterPlot diff --git a/source/component/SearchBar.js b/source/component/SearchBar.js deleted file mode 100644 index 3e989e4..0000000 --- a/source/component/SearchBar.js +++ /dev/null @@ -1,48 +0,0 @@ -import React from 'react'; -import BaseVisualization from './BaseVisualization.js' -import { MDBDataTable } from 'mdbreact'; - -// should only have to worry about rendering -class SearchBar extends BaseVisualization { - constructor(props, ctx) { - super(props, ctx); - this.table_data = {} - this.width = this.props.w * 100 || 100 - this.height = this.props.h * 100 || 100 - this.style = {width: this.width, height: this.height} - this.field = this.props.field || "__ALL" - this.field_text = "Search" - if (this.props.field){ - this.field_text = this.props.field - } - this.handleSearch = this.handleSearch.bind(this) - } - - handleSearch(e){ - if (e.target && e.target.value){ - var new_val = e.target.value - this.setState(x=>{x.value = new_val}) - let new_filter = {} - new_filter[this.field] = {"regex":new_val} - this.filterIn(new_filter) - } else { - this.setState(x=>{x.value = ""}) - let new_filter = {} - new_filter[this.field] = {"clear":""} - this.filterIn(new_filter) - } - } - - render() { - if(this.state.ready){ - return(waiting...
waiting...
-{JSON.stringify(VisTypes.keys())}
; - } - - } -} - -export default VisSelect diff --git a/source/component/VisTypes.js b/source/component/VisTypes.js deleted file mode 100644 index c5c712d..0000000 --- a/source/component/VisTypes.js +++ /dev/null @@ -1,25 +0,0 @@ -// so we can use our visualizations with one import -import SampleVisualization from './SampleVisualization.js' -import Histogram from './Histogram.js' -import BarChart from './BarChart.js' -import ScatterPlot from './ScatterPlot.js' -import VegaLitePlot from './VegaLitePlot.js' -import PureVegaLitePlot from './PureVegaLitePlot.js' -import DataTable from './DataTable.js' -import SearchBar from './SearchBar.js' -import ImageGrid from './ImageGrid.js' -import Placeholder from './Placeholder.js' - -var VisTypes = {} -VisTypes.Sample = SampleVisualization -VisTypes.Histogram = Histogram -VisTypes.BarChart = BarChart -VisTypes.ScatterPlot = ScatterPlot -VisTypes.VegaLitePlot = VegaLitePlot -VisTypes.PureVegaLitePlot = PureVegaLitePlot -VisTypes.DataTable = DataTable -VisTypes.SearchBar = SearchBar -VisTypes.ImageGrid = ImageGrid -VisTypes.Placeholder = Placeholder - -export default VisTypes diff --git a/source/component/VisualTools/Chart/BarChart.js b/source/component/VisualTools/Chart/BarChart.js index cd56de2..f6795c4 100644 --- a/source/component/VisualTools/Chart/BarChart.js +++ b/source/component/VisualTools/Chart/BarChart.js @@ -1,8 +1,8 @@ -import React, { Component } from 'react' +import React, { PureComponent } from 'react' import {isEquivalent} from '../../../common/utils.js' import * as d3 from "d3"; -export default class BarChart extends Component { +export default class BarChart extends PureComponent { constructor(props) { super(props); this.self = React.createRef(); @@ -47,14 +47,6 @@ export default class BarChart extends Component { .range([height, 0]); return yScale; } - shouldComponentUpdate ( nextProps, nextState ) { - // TODO LIST - console.log('bar shouldComponentUpdate') - //console.log(nextProps.filters, this.props.filters) - // const flag = isEquivalent(nextProps.filters, this.props.filters); - // console.log(flag) - return true; - } drawBar(selection, data, className='og') { const update_bars = selection.selectAll(`rect.${className}`).data(data,d=> d[this.state.fields.x]) @@ -101,7 +93,7 @@ export default class BarChart extends Component { } componentDidUpdate() { - console.log('bar update',this.props) + // console.log('bar update',this.props) let data = []; if(this.props.filters.length > 0){ data = this.transform(this.props.filterData, this.props.fields.x) @@ -111,71 +103,44 @@ export default class BarChart extends Component { this.filterbars= this.drawBar(this.viewer,data,'ft'); } componentDidMount() { + setTimeout(()=>{ + const rect = this.self.current.getBoundingClientRect(); + this.innerWidth = rect.width - this.state.margin.left - this.state.margin.right; + this.innerHeight = rect.height - this.state.margin.top - this.state.margin.bottom; + // create svg + const svg = d3.select(this.self.current) + .append("svg") + .attr("width", rect.width) + .attr("height", rect.height) + // create viewer + this.viewer = svg.append("g") + .attr("transform", "translate(" + this.state.margin.left + "," + this.state.margin.top + ")"); + // + this.xScale = this.createXScale(this.state.fields.x, this.innerWidth); + this.yScale = this.createYScale(this.state.fields.y, this.innerHeight); + + this.xAxis = d3.axisBottom(this.xScale) + //.tickSize(this.innerWidth) + this.viewer.append("g") + .attr("class", "x axis") + .attr("transform", `translate(0,${this.innerHeight})`) + .call(this.xAxis) + .selectAll(".tick text") + .call(this.wrap, this.xScale.bandwidth()); + + // add the y Axis + this.yAxis = d3.axisLeft(this.yScale) + .tickSize(-this.innerWidth) + this.viewer.append("g") + .call(this.yAxis); + + this.bars = this.drawBar(this.viewer, this.state.data,'og') + this.filterbars = this.drawBar(this.viewer, this.state.data,'ft') + + this.componentDidUpdate() + + }, 500) - console.log('bar',this.props) - const rect = this.self.current.getBoundingClientRect(); - this.innerWidth = rect.width - this.state.margin.left - this.state.margin.right; - this.innerHeight = rect.height - this.state.margin.top - this.state.margin.bottom; - // create svg - const svg = d3.select(this.self.current) - .append("svg") - .attr("width", rect.width) - .attr("height", rect.height) - // create viewer - this.viewer = svg.append("g") - .attr("transform", "translate(" + this.state.margin.left + "," + this.state.margin.top + ")"); - // - this.xScale = this.createXScale(this.state.fields.x, this.innerWidth); - this.yScale = this.createYScale(this.state.fields.y, this.innerHeight); - - this.xAxis = d3.axisBottom(this.xScale) - //.tickSize(this.innerWidth) - this.viewer.append("g") - .attr("class", "x axis") - .attr("transform", `translate(0,${this.innerHeight})`) - .call(this.xAxis) - .selectAll(".tick text") - .call(this.wrap, this.xScale.bandwidth()); - - // add the y Axis - this.yAxis = d3.axisLeft(this.yScale) - .tickSize(-this.innerWidth) - this.viewer.append("g") - .call(this.yAxis); - - - this.bars = this.drawBar(this.viewer, this.state.data,'og') - this.filterbars = this.drawBar(this.viewer, this.state.data,'ft') - //this.filterbars = this.drawBar(this.viewer, this.state.data,'ft') - // this.bars = this.viewer.selectAll(".bar").data(this.state.data) - // .enter().append("rect") - // .attr("class", "bar") - // .attr('fill','steelblue') - // .attr("x", function(d) { return this.xScale(d[this.state.fields.x])}.bind(this)) - // .attr("width", this.xScale.bandwidth()) - // .attr("y", function(d) { return this.yScale(d[this.state.fields.y])}.bind(this)) - // .attr("height", function(d) { return this.innerHeight - this.yScale(d[this.state.fields.y]); }.bind(this)) - // .on('click', (data,i) =>{ - // this.bars.attr('opacity',0.2) - // const selected = this.bars.filter(function(d){ - // return d === data - // }) - // selected.attr('opacity',1) - // const value = selected.data()[0].key - // const filter = { - // id:this.props.id, - // field:this.props.fields.x, - // operation:'eq', - // values:value - // } - // this.props.filterAdded([filter]) - // }) - // this.bars.append('title').text(d=> `${d.key}:${d.value}`) - - - - - } wrap(text, width) { text.each(function() { diff --git a/source/component/VisualTools/Chart/HorizontalBarChart.js b/source/component/VisualTools/Chart/HorizontalBarChart.js index e875749..7ee1c8d 100644 --- a/source/component/VisualTools/Chart/HorizontalBarChart.js +++ b/source/component/VisualTools/Chart/HorizontalBarChart.js @@ -1,8 +1,8 @@ -import React, { Component } from 'react' +import React, { PureComponent } from 'react' import {isEquivalent} from '../../../common/utils.js' import * as d3 from "d3"; -export default class HorizontalBarChart extends Component { +export default class HorizontalBarChart extends PureComponent { constructor(props) { super(props); this.self = React.createRef(); @@ -47,14 +47,6 @@ export default class HorizontalBarChart extends Component { .range([0, width]); return xScale; } - shouldComponentUpdate ( nextProps, nextState ) { - // TODO LIST - console.log('bar shouldComponentUpdate') - //console.log(nextProps.filters, this.props.filters) - // const flag = isEquivalent(nextProps.filters, this.props.filters); - // console.log(flag) - return true; - } drawBar(selection, data, className='og') { const update_bars = selection.selectAll(`rect.${className}`).data(data,d=> d[this.state.fields.y]) @@ -98,7 +90,7 @@ export default class HorizontalBarChart extends Component { } componentDidUpdate() { - console.log('bar update',this.props) + // console.log('bar update',this.props) let data = []; if(this.props.filters.length > 0){ data = this.transform(this.props.filterData, this.props.fields.y) @@ -108,31 +100,35 @@ export default class HorizontalBarChart extends Component { this.filterbars= this.drawBar(this.viewer,data,'ft'); this.createTextLabel(); } + componentDidMount() { + setTimeout(()=>{ + const rect = this.self.current.getBoundingClientRect(); + const innerWidth = rect.width - this.state.margin.left - this.state.margin.right; + this.innerHeight = rect.height - this.state.margin.top - this.state.margin.bottom; + // create svg + const svg = d3.select(this.self.current) + .append("svg") + .attr("width", rect.width) + .attr("height", rect.height) + // create viewer + this.viewer = svg.append("g") + .attr("transform", "translate(" + this.state.margin.left + "," + this.state.margin.top + ")"); + // + this.xScale = this.createXScale(this.state.fields.x, innerWidth); + this.yScale = this.createYScale(this.state.fields.y, this.innerHeight); + + this.viewer.append("g") + .attr("transform", `translate(0,${this.innerHeight})`) + .call(d3.axisBottom(this.xScale).tickSize(-this.innerHeight)) + + this.bars = this.drawBar(this.viewer, this.state.data,'og') + this.filterbars = this.drawBar(this.viewer, this.state.data,'ft') + this.createTextLabel(); + + this.componentDidUpdate() + }, 500); - console.log('bar',this.props) - const rect = this.self.current.getBoundingClientRect(); - const innerWidth = rect.width - this.state.margin.left - this.state.margin.right; - this.innerHeight = rect.height - this.state.margin.top - this.state.margin.bottom; - // create svg - const svg = d3.select(this.self.current) - .append("svg") - .attr("width", rect.width) - .attr("height", rect.height) - // create viewer - this.viewer = svg.append("g") - .attr("transform", "translate(" + this.state.margin.left + "," + this.state.margin.top + ")"); - // - this.xScale = this.createXScale(this.state.fields.x, innerWidth); - this.yScale = this.createYScale(this.state.fields.y, this.innerHeight); - - this.viewer.append("g") - .attr("transform", `translate(0,${this.innerHeight})`) - .call(d3.axisBottom(this.xScale).tickSize(-this.innerHeight)) - - this.bars = this.drawBar(this.viewer, this.state.data,'og') - this.filterbars = this.drawBar(this.viewer, this.state.data,'ft') - this.createTextLabel(); diff --git a/source/component/VisualTools/Chart/KMCurve.js b/source/component/VisualTools/Chart/KMCurve.js index de7dfc2..d3b00ea 100644 --- a/source/component/VisualTools/Chart/KMCurve.js +++ b/source/component/VisualTools/Chart/KMCurve.js @@ -1,16 +1,11 @@ -import React, { Component } from 'react' +import React, { PureComponent } from 'react' import {isEquivalent} from '../../../common/utils.js' import * as d3 from "d3"; -function getRandomIntInclusive(min, max) { - min = Math.ceil(min); - max = Math.floor(max); - return Math.floor(Math.random() * (max - min + 1) + min); //The maximum is inclusive and the minimum is inclusive -} function isUndefined(d){ return d==undefined||d==null||(typeof d === 'string' && d.toLowerCase()==`na`) } -export default class KMCurve extends Component { +export default class KMCurve extends PureComponent { constructor(props) { super(props); this.self = React.createRef(); @@ -75,14 +70,8 @@ export default class KMCurve extends Component { return rs; - } - shouldComponentUpdate ( nextProps, nextState ) { - // TODO LIST - //console.log(nextProps.filters, this.props.filters) - // const flag = isEquivalent(nextProps.filters, this.props.filters); - // console.log(flag) - return true; } + drawLine(viewer, points, color){ const line = d3.line() .curve(d3.curveStepAfter) @@ -129,91 +118,95 @@ export default class KMCurve extends Component { componentDidUpdate() { } + componentDidMount() { - const rect = this.self.current.getBoundingClientRect(); - const innerWidth = rect.width - this.state.margin.left - this.state.margin.right; - const innerHeight = rect.height - this.state.margin.top - this.state.margin.bottom; - // create svg - const svg = d3.select(this.self.current) - .append("svg") - .attr("width", rect.width) - .attr("height", rect.height) - // create viewer - const viewer = svg.append("g") - .attr("transform", "translate(" + this.state.margin.left + "," + this.state.margin.top + ")"); - // - this.xScale = d3.scaleLinear() - .domain([0, this.maxTime]) - .range([0, innerWidth]) - - this.yScale = d3.scaleLinear() - .domain([0, 1]) - .range([innerHeight, 0]) - - this.color = d3.scaleOrdinal() - .domain(this.state.data.map(d => d.key)) - .range(d3.quantize(t => d3.interpolateSpectral(t), this.state.data.length)) - - - - - const xaxisGroup = viewer.append("g") - .attr("transform", "translate(0," + innerHeight + ")") - .call(d3.axisBottom(this.xScale).ticks(4)); //.tickSize(-innerWidth)); - xaxisGroup.append('text') - .attr('y', 30) - .attr('x', innerWidth/2) - .attr('fill','black') - .attr('font-size',13) - .text(`Time ${this.props.fields.time.unit?`(${this.props.fields.time.unit})`:''}`) - - // add the y Axis - const yaxisGroup = viewer.append("g") - .call(d3.axisLeft(this.yScale).ticks(4)); // .tickSize(-innerWidth) - yaxisGroup.append('text') - .attr('y', -30) - .attr('x', -innerHeight/3) + setTimeout(()=>{ + const rect = this.self.current.getBoundingClientRect(); + const innerWidth = rect.width - this.state.margin.left - this.state.margin.right; + const innerHeight = rect.height - this.state.margin.top - this.state.margin.bottom; + // create svg + const svg = d3.select(this.self.current) + .append("svg") + .attr("width", rect.width) + .attr("height", rect.height) + // create viewer + const viewer = svg.append("g") + .attr("transform", "translate(" + this.state.margin.left + "," + this.state.margin.top + ")"); + // + this.xScale = d3.scaleLinear() + .domain([0, this.maxTime]) + .range([0, innerWidth]) + + this.yScale = d3.scaleLinear() + .domain([0, 1]) + .range([innerHeight, 0]) + + this.color = d3.scaleOrdinal() + .domain(this.state.data.map(d => d.key)) + .range(d3.quantize(t => d3.interpolateSpectral(t), this.state.data.length)) + + + + + const xaxisGroup = viewer.append("g") + .attr("transform", "translate(0," + innerHeight + ")") + .call(d3.axisBottom(this.xScale).ticks(4)); //.tickSize(-innerWidth)); + xaxisGroup.append('text') + .attr('y', 30) + .attr('x', innerWidth/2) .attr('fill','black') .attr('font-size',13) - .attr("transform", "rotate(-90)") - .text(`Survival Probability`) - - this.state.data.forEach(d=>this.drawKMCurve(viewer,d)) - - - const height = 0; - const width = 15; - var nodeWidth = (d) => d.getBBox().width; - const legend = svg.append('g') - .attr('class', 'legend') - .attr('transform', `translate(${this.state.margin.left+innerWidth/2},0)`); - - const lg = legend.selectAll('g') - .data(this.state.data) - .enter() - .append('g') - .attr('transform', (d,i) => `translate(${i * 100},${height + 15})`); - - lg.append('rect') - .style('fill', d => this.color(d.key)) - .attr('x', 0) - .attr('y', 0) - .attr('width', 10) - .attr('height', 10); - - lg.append('text') - .style('font-family', 'Georgia') - .style('font-size', '13px') - .attr('x', 17.5) - .attr('y', 10) - .text(d => d.key); - - let offset = 0; - lg.attr('transform', function(d, i) { - let x = offset; - offset += nodeWidth(this) + 10; - return `translate(${x},${height + 10})`; - }); + .text(`Time ${this.props.fields.time.unit?`(${this.props.fields.time.unit})`:''}`) + + // add the y Axis + const yaxisGroup = viewer.append("g") + .call(d3.axisLeft(this.yScale).ticks(4)); // .tickSize(-innerWidth) + yaxisGroup.append('text') + .attr('y', -30) + .attr('x', -innerHeight/3) + .attr('fill','black') + .attr('font-size',13) + .attr("transform", "rotate(-90)") + .text(`Survival Probability`) + + this.state.data.forEach(d=>this.drawKMCurve(viewer,d)) + + + const height = 0; + const width = 15; + var nodeWidth = (d) => d.getBBox().width; + const legend = svg.append('g') + .attr('class', 'legend') + .attr('transform', `translate(${this.state.margin.left+innerWidth/2},0)`); + + const lg = legend.selectAll('g') + .data(this.state.data) + .enter() + .append('g') + .attr('transform', (d,i) => `translate(${i * 100},${height + 15})`); + + lg.append('rect') + .style('fill', d => this.color(d.key)) + .attr('x', 0) + .attr('y', 0) + .attr('width', 10) + .attr('height', 10); + + lg.append('text') + .style('font-family', 'Georgia') + .style('font-size', '13px') + .attr('x', 17.5) + .attr('y', 10) + .text(d => d.key); + + let offset = 0; + lg.attr('transform', function(d, i) { + let x = offset; + offset += nodeWidth(this) + 10; + return `translate(${x},${height + 10})`; + }); + },500); + } render() { diff --git a/source/component/VisualTools/Chart/PieChart.js b/source/component/VisualTools/Chart/PieChart.js index 701631c..218d260 100644 --- a/source/component/VisualTools/Chart/PieChart.js +++ b/source/component/VisualTools/Chart/PieChart.js @@ -1,118 +1,123 @@ -import React, { Component } from "react"; +import React, { PureComponent } from "react"; import * as d3 from "d3"; -export default class PieChart extends Component { +export default class PieChart extends PureComponent { constructor(props) { super(props); this.self = React.createRef(); this.tooltip = React.createRef(); this.state = { - margin: {top: 5, right: 5, bottom: 5, left: 5}, + margin: { top: 5, right: 5, bottom: 5, left: 5 }, loading: true, error: null }; const data = d3.nest() - .key(function(d) { return d[props.fields.x]; }) + .key(function (d) { return d[props.fields.x]; }) - .rollup(function(v) { return v.length; }) - .entries(props.data) - data.forEach(d=>{ + .rollup(function (v) { return v.length; }) + .entries(props.data) + data.forEach(d => { d.selected = false; }) this.state.data = data; - this.sum = d3.sum(this.state.data,d=>d.value) - + this.sum = d3.sum(this.state.data, d => d.value) + } componentDidUpdate() { - console.log('pie did update') - const filters = this.props.filters.filter(f=>f.id==this.props.id) - if(filters.length > 0){ // has filters + // console.log('pie did update') + const filters = this.props.filters.filter(f => f.id == this.props.id) + if (filters.length > 0) { // has filters this.pies - .attr("fill",d=> d.data.selected?this.color(d.data.key):'#C0C0C0') - .attr('fill-opacity',d=> d.data.selected?1:.5) - .attr('stroke','#CCCCCC') - .attr('stroke-width',d=> d.data.selected?3:0) - }else{ - this.state.data.forEach(d=>d.selected = false) + .attr("fill", d => d.data.selected ? this.color(d.data.key) : '#C0C0C0') + .attr('fill-opacity', d => d.data.selected ? 1 : .5) + .attr('stroke', '#CCCCCC') + .attr('stroke-width', d => d.data.selected ? 3 : 0) + } else { + this.state.data.forEach(d => d.selected = false) this.pies.attr("fill", d => this.color(d.data.key)) - .attr('fill-opacity',1) - .attr('stroke','none') + .attr('fill-opacity', 1) + .attr('stroke', 'none') } } componentDidMount() { - - const rect = this.self.current.getBoundingClientRect(); - const innerWidth = rect.width - this.state.margin.left - this.state.margin.right; - const innerHeight = rect.height - this.state.margin.top - this.state.margin.bottom; - const radius = Math.min(innerWidth, innerHeight)/2 - const pie = d3.pie().sortValues((a,b)=>b-a).value(d => d.value) - - const arcs = pie(this.state.data); - - const arc = d3.arc().innerRadius(0).outerRadius(radius) - - const arcLabel = d3.arc().innerRadius(radius).outerRadius(radius); - - this.color = d3.scaleOrdinal() - .domain(this.state.data.map(d => d.key)) - .range(d3.quantize(t => d3.interpolateSpectral(t), this.state.data.length)) - - const svg = d3.select(this.self.current) - .append("svg") + setTimeout(() => { + + + const rect = this.self.current.getBoundingClientRect(); + const innerWidth = rect.width - this.state.margin.left - this.state.margin.right; + const innerHeight = rect.height - this.state.margin.top - this.state.margin.bottom; + const radius = Math.min(innerWidth, innerHeight) / 2 + const pie = d3.pie().sortValues((a, b) => b - a).value(d => d.value) + + const arcs = pie(this.state.data); + + const arc = d3.arc().innerRadius(0).outerRadius(radius) + + const arcLabel = d3.arc().innerRadius(radius).outerRadius(radius); + + this.color = d3.scaleOrdinal() + .domain(this.state.data.map(d => d.key)) + .range(d3.quantize(t => d3.interpolateSpectral(t), this.state.data.length)) + + const svg = d3.select(this.self.current) + .append("svg") .attr("width", rect.width) .attr("height", rect.height) - - const viewer = svg.append("g") + + const viewer = svg.append("g") //.attr("stroke", "white") - .attr("transform", `translate(${(innerWidth / 2 + this.state.margin.left)},${innerHeight/ 2 + this.state.margin.top})`) - - this.pies = viewer.selectAll("path") - .data(arcs) - .join("path") - .attr("class","slide") - // .attr("id",(d,i)=>i) + .attr("transform", `translate(${(innerWidth / 2 + this.state.margin.left)},${innerHeight / 2 + this.state.margin.top})`) + + this.pies = viewer.selectAll("path") + .data(arcs) + .join("path") + .attr("class", "slide") + // .attr("id",(d,i)=>i) .attr("fill", d => this.color(d.data.key)) .attr("d", arc) - .on('click', (d, i) =>{ + .on('click', (d, i) => { // viewer.selectAll(".slide").attr('opacity',0.2) // const selected = this.pies.filter(function(d){ // return d === data // }) console.log('click') d.data.selected = !d.data.selected; - const values = this.state.data.reduce((values,d)=>{ - if(d.selected) values.push(d.key) + const values = this.state.data.reduce((values, d) => { + if (d.selected) values.push(d.key) return values; - },[]) + }, []) - if(values.length > 0){ // has filters + if (values.length > 0) { // has filters this.pies - .attr("fill",d=> d.data.selected?this.color(d.data.key):'#C0C0C0') - .attr('fill-opacity',d=> d.data.selected?1:.5) - .attr('stroke','#CCCCCC') - .attr('stroke-width',d=> d.data.selected?3:0) + .attr("fill", d => d.data.selected ? this.color(d.data.key) : '#C0C0C0') + .attr('fill-opacity', d => d.data.selected ? 1 : .5) + .attr('stroke', '#CCCCCC') + .attr('stroke-width', d => d.data.selected ? 3 : 0) const filter = { - id:this.props.id, - title:this.props.title, - field:this.props.fields.x, - operation:'in', - values:values + id: this.props.id, + title: this.props.title, + field: this.props.fields.x, + operation: 'in', + values: values } this.props.filterAdded([filter]) - }else{ + } else { this.pies.attr("fill", d => this.color(d.data.key)) - .attr('fill-opacity',1) - .attr('stroke','none') + .attr('fill-opacity', 1) + .attr('stroke', 'none') this.props.filterRemove(this.props.id) } - }) - this.pies.append('title').text(d=> `${d.data.key}:${d.data.value}:${d3.format(".0%")(d.data.value/this.sum)}`) + }) + this.pies.append('title').text(d => `${d.data.key}:${d.data.value}:${d3.format(".0%")(d.data.value / this.sum)}`) + + //this.componentDidUpdate(); + }, 500) // .on("mousemove", function(d){ // console.log(this) // d3.select(this.tooltip.current) @@ -126,7 +131,7 @@ export default class PieChart extends Component { // .html( (d.data[this.state.fields.x]) + "